From 7d77d485fd9721a99fd7c9980a59fd8fcc026c5a Mon Sep 17 00:00:00 2001 From: Bassem Girgis Date: Sun, 11 Aug 2019 02:07:38 -0500 Subject: [PATCH] mac swig --- macx64/bin/swig/bin/ccache-swig | Bin 0 -> 62524 bytes macx64/bin/swig/bin/swig | Bin 0 -> 1889116 bytes macx64/bin/swig/share/swig/4.0.0/allkw.swg | 33 + macx64/bin/swig/share/swig/4.0.0/attribute.i | 21 + macx64/bin/swig/share/swig/4.0.0/carrays.i | 116 + macx64/bin/swig/share/swig/4.0.0/cdata.i | 104 + macx64/bin/swig/share/swig/4.0.0/cmalloc.i | 110 + .../bin/swig/share/swig/4.0.0/constraints.i | 224 ++ macx64/bin/swig/share/swig/4.0.0/cpointer.i | 180 ++ .../share/swig/4.0.0/csharp/arrays_csharp.i | 139 ++ .../swig/4.0.0/csharp/boost_intrusive_ptr.i | 517 +++++ .../swig/4.0.0/csharp/boost_shared_ptr.i | 323 +++ .../swig/share/swig/4.0.0/csharp/complex.i | 5 + .../swig/share/swig/4.0.0/csharp/csharp.swg | 1078 +++++++++ .../share/swig/4.0.0/csharp/csharphead.swg | 339 +++ .../swig/share/swig/4.0.0/csharp/csharpkw.swg | 97 + .../swig/share/swig/4.0.0/csharp/director.swg | 50 + .../swig/share/swig/4.0.0/csharp/enums.swg | 86 + .../share/swig/4.0.0/csharp/enumsimple.swg | 88 + .../share/swig/4.0.0/csharp/enumtypesafe.swg | 130 ++ .../swig/share/swig/4.0.0/csharp/std_array.i | 227 ++ .../share/swig/4.0.0/csharp/std_auto_ptr.i | 25 + .../swig/share/swig/4.0.0/csharp/std_common.i | 5 + .../share/swig/4.0.0/csharp/std_complex.i | 95 + .../swig/share/swig/4.0.0/csharp/std_deque.i | 1 + .../swig/share/swig/4.0.0/csharp/std_except.i | 32 + .../swig/share/swig/4.0.0/csharp/std_list.i | 519 +++++ .../swig/share/swig/4.0.0/csharp/std_map.i | 312 +++ .../swig/share/swig/4.0.0/csharp/std_pair.i | 36 + .../swig/share/swig/4.0.0/csharp/std_set.i | 311 +++ .../share/swig/4.0.0/csharp/std_shared_ptr.i | 2 + .../swig/share/swig/4.0.0/csharp/std_string.i | 111 + .../swig/share/swig/4.0.0/csharp/std_vector.i | 418 ++++ .../share/swig/4.0.0/csharp/std_wstring.i | 114 + macx64/bin/swig/share/swig/4.0.0/csharp/stl.i | 10 + .../share/swig/4.0.0/csharp/swiginterface.i | 63 + .../share/swig/4.0.0/csharp/swigtype_inout.i | 34 + .../swig/share/swig/4.0.0/csharp/typemaps.i | 253 +++ .../bin/swig/share/swig/4.0.0/csharp/wchar.i | 102 + macx64/bin/swig/share/swig/4.0.0/cstring.i | 12 + macx64/bin/swig/share/swig/4.0.0/cwstring.i | 11 + .../share/swig/4.0.0/d/boost_shared_ptr.i | 293 +++ macx64/bin/swig/share/swig/4.0.0/d/carrays.i | 111 + macx64/bin/swig/share/swig/4.0.0/d/cpointer.i | 171 ++ macx64/bin/swig/share/swig/4.0.0/d/d.swg | 46 + .../bin/swig/share/swig/4.0.0/d/dclassgen.swg | 142 ++ .../swig/share/swig/4.0.0/d/ddirectives.swg | 11 + macx64/bin/swig/share/swig/4.0.0/d/denums.swg | 60 + .../swig/share/swig/4.0.0/d/dexception.swg | 30 + macx64/bin/swig/share/swig/4.0.0/d/dhead.swg | 298 +++ .../bin/swig/share/swig/4.0.0/d/director.swg | 49 + macx64/bin/swig/share/swig/4.0.0/d/dkw.swg | 128 ++ .../swig/4.0.0/d/dmemberfunctionpointers.swg | 94 + .../swig/share/swig/4.0.0/d/doperators.swg | 259 +++ .../swig/share/swig/4.0.0/d/dprimitives.swg | 171 ++ .../bin/swig/share/swig/4.0.0/d/dstrings.swg | 80 + .../bin/swig/share/swig/4.0.0/d/dswigtype.swg | 197 ++ macx64/bin/swig/share/swig/4.0.0/d/dvoid.swg | 18 + .../bin/swig/share/swig/4.0.0/d/std_common.i | 5 + .../bin/swig/share/swig/4.0.0/d/std_deque.i | 1 + .../bin/swig/share/swig/4.0.0/d/std_except.i | 32 + macx64/bin/swig/share/swig/4.0.0/d/std_map.i | 62 + macx64/bin/swig/share/swig/4.0.0/d/std_pair.i | 36 + .../swig/share/swig/4.0.0/d/std_shared_ptr.i | 2 + .../bin/swig/share/swig/4.0.0/d/std_string.i | 98 + .../bin/swig/share/swig/4.0.0/d/std_vector.i | 605 +++++ macx64/bin/swig/share/swig/4.0.0/d/stl.i | 10 + macx64/bin/swig/share/swig/4.0.0/d/typemaps.i | 261 +++ .../swig/share/swig/4.0.0/d/wrapperloader.swg | 308 +++ .../swig/share/swig/4.0.0/director_common.swg | 15 + macx64/bin/swig/share/swig/4.0.0/exception.i | 322 +++ macx64/bin/swig/share/swig/4.0.0/go/cdata.i | 97 + .../bin/swig/share/swig/4.0.0/go/director.swg | 80 + .../bin/swig/share/swig/4.0.0/go/exception.i | 7 + macx64/bin/swig/share/swig/4.0.0/go/go.swg | 705 ++++++ macx64/bin/swig/share/swig/4.0.0/go/gokw.swg | 33 + .../swig/share/swig/4.0.0/go/goruntime.swg | 402 ++++ .../bin/swig/share/swig/4.0.0/go/gostring.swg | 29 + .../bin/swig/share/swig/4.0.0/go/std_common.i | 4 + .../bin/swig/share/swig/4.0.0/go/std_deque.i | 1 + .../bin/swig/share/swig/4.0.0/go/std_except.i | 31 + .../bin/swig/share/swig/4.0.0/go/std_list.i | 41 + macx64/bin/swig/share/swig/4.0.0/go/std_map.i | 66 + .../bin/swig/share/swig/4.0.0/go/std_pair.i | 36 + .../bin/swig/share/swig/4.0.0/go/std_string.i | 91 + .../bin/swig/share/swig/4.0.0/go/std_vector.i | 92 + macx64/bin/swig/share/swig/4.0.0/go/stl.i | 10 + .../bin/swig/share/swig/4.0.0/go/typemaps.i | 298 +++ .../swig/share/swig/4.0.0/guile/common.scm | 70 + .../swig/share/swig/4.0.0/guile/cplusplus.i | 22 + .../bin/swig/share/swig/4.0.0/guile/guile.i | 33 + .../swig/share/swig/4.0.0/guile/guile_scm.swg | 46 + .../share/swig/4.0.0/guile/guile_scm_run.swg | 507 +++++ .../swig/share/swig/4.0.0/guile/guilemain.i | 39 + .../swig/share/swig/4.0.0/guile/interpreter.i | 59 + .../swig/share/swig/4.0.0/guile/list-vector.i | 488 +++++ .../share/swig/4.0.0/guile/pointer-in-out.i | 102 + .../bin/swig/share/swig/4.0.0/guile/ports.i | 50 + .../swig/share/swig/4.0.0/guile/std_common.i | 25 + .../swig/share/swig/4.0.0/guile/std_deque.i | 1 + .../swig/share/swig/4.0.0/guile/std_except.i | 13 + .../bin/swig/share/swig/4.0.0/guile/std_map.i | 1370 ++++++++++++ .../swig/share/swig/4.0.0/guile/std_pair.i | 867 ++++++++ .../swig/share/swig/4.0.0/guile/std_string.i | 86 + .../swig/share/swig/4.0.0/guile/std_vector.i | 424 ++++ macx64/bin/swig/share/swig/4.0.0/guile/stl.i | 10 + .../bin/swig/share/swig/4.0.0/guile/swigrun.i | 49 + .../swig/share/swig/4.0.0/guile/typemaps.i | 480 ++++ .../bin/swig/share/swig/4.0.0/intrusive_ptr.i | 80 + macx64/bin/swig/share/swig/4.0.0/inttypes.i | 85 + .../swig/share/swig/4.0.0/java/arrays_java.i | 392 ++++ .../swig/4.0.0/java/boost_intrusive_ptr.i | 484 ++++ .../share/swig/4.0.0/java/boost_shared_ptr.i | 337 +++ .../swig/share/swig/4.0.0/java/director.swg | 496 +++++ .../bin/swig/share/swig/4.0.0/java/enums.swg | 116 + .../swig/share/swig/4.0.0/java/enumsimple.swg | 71 + .../share/swig/4.0.0/java/enumtypesafe.swg | 117 + .../share/swig/4.0.0/java/enumtypeunsafe.swg | 72 + .../bin/swig/share/swig/4.0.0/java/java.swg | 1427 ++++++++++++ .../swig/share/swig/4.0.0/java/javahead.swg | 101 + .../bin/swig/share/swig/4.0.0/java/javakw.swg | 70 + .../swig/share/swig/4.0.0/java/std_array.i | 44 + .../swig/share/swig/4.0.0/java/std_auto_ptr.i | 27 + .../swig/share/swig/4.0.0/java/std_common.i | 5 + .../swig/share/swig/4.0.0/java/std_deque.i | 1 + .../swig/share/swig/4.0.0/java/std_except.i | 32 + .../bin/swig/share/swig/4.0.0/java/std_list.i | 225 ++ .../bin/swig/share/swig/4.0.0/java/std_map.i | 224 ++ .../bin/swig/share/swig/4.0.0/java/std_pair.i | 37 + .../bin/swig/share/swig/4.0.0/java/std_set.i | 199 ++ .../share/swig/4.0.0/java/std_shared_ptr.i | 2 + .../swig/share/swig/4.0.0/java/std_string.i | 121 + .../share/swig/4.0.0/java/std_unordered_map.i | 211 ++ .../share/swig/4.0.0/java/std_unordered_set.i | 199 ++ .../swig/share/swig/4.0.0/java/std_vector.i | 184 ++ .../swig/share/swig/4.0.0/java/std_wstring.i | 174 ++ macx64/bin/swig/share/swig/4.0.0/java/stl.i | 10 + .../share/swig/4.0.0/java/swiginterface.i | 74 + .../bin/swig/share/swig/4.0.0/java/typemaps.i | 529 +++++ .../bin/swig/share/swig/4.0.0/java/various.i | 194 ++ .../4.0.0/javascript/jsc/arrays_javascript.i | 123 ++ .../swig/4.0.0/javascript/jsc/ccomplex.i | 26 + .../share/swig/4.0.0/javascript/jsc/cdata.i | 1 + .../share/swig/4.0.0/javascript/jsc/complex.i | 6 + .../swig/4.0.0/javascript/jsc/exception.i | 1 + .../swig/4.0.0/javascript/jsc/javascript.swg | 19 + .../4.0.0/javascript/jsc/javascriptcode.swg | 429 ++++ .../javascript/jsc/javascriptcomplex.swg | 146 ++ .../javascript/jsc/javascriptfragments.swg | 23 + .../javascript/jsc/javascripthelpers.swg | 69 + .../4.0.0/javascript/jsc/javascriptinit.swg | 67 + .../4.0.0/javascript/jsc/javascriptkw.swg | 40 + .../javascript/jsc/javascriptprimtypes.swg | 192 ++ .../4.0.0/javascript/jsc/javascriptrun.swg | 334 +++ .../javascript/jsc/javascriptruntime.swg | 19 + .../javascript/jsc/javascriptstrings.swg | 185 ++ .../javascript/jsc/javascripttypemaps.swg | 54 + .../swig/4.0.0/javascript/jsc/std_common.i | 5 + .../swig/4.0.0/javascript/jsc/std_complex.i | 26 + .../swig/4.0.0/javascript/jsc/std_deque.i | 1 + .../swig/4.0.0/javascript/jsc/std_except.i | 1 + .../share/swig/4.0.0/javascript/jsc/std_map.i | 81 + .../swig/4.0.0/javascript/jsc/std_pair.i | 36 + .../swig/4.0.0/javascript/jsc/std_string.i | 1 + .../swig/4.0.0/javascript/jsc/std_vector.i | 99 + .../share/swig/4.0.0/javascript/jsc/stl.i | 10 + .../swig/4.0.0/javascript/jsc/typemaps.i | 148 ++ .../4.0.0/javascript/v8/arrays_javascript.i | 125 ++ .../share/swig/4.0.0/javascript/v8/ccomplex.i | 26 + .../share/swig/4.0.0/javascript/v8/cdata.i | 1 + .../share/swig/4.0.0/javascript/v8/complex.i | 6 + .../swig/4.0.0/javascript/v8/exception.i | 1 + .../swig/4.0.0/javascript/v8/javascript.swg | 19 + .../4.0.0/javascript/v8/javascriptcode.swg | 509 +++++ .../4.0.0/javascript/v8/javascriptcomplex.swg | 124 ++ .../javascript/v8/javascriptfragments.swg | 23 + .../4.0.0/javascript/v8/javascripthelpers.swg | 112 + .../4.0.0/javascript/v8/javascriptinit.swg | 129 ++ .../swig/4.0.0/javascript/v8/javascriptkw.swg | 40 + .../javascript/v8/javascriptprimtypes.swg | 206 ++ .../4.0.0/javascript/v8/javascriptrun.swg | 675 ++++++ .../4.0.0/javascript/v8/javascriptruntime.swg | 68 + .../4.0.0/javascript/v8/javascriptstrings.swg | 59 + .../javascript/v8/javascripttypemaps.swg | 43 + .../swig/4.0.0/javascript/v8/std_common.i | 5 + .../swig/4.0.0/javascript/v8/std_complex.i | 26 + .../swig/4.0.0/javascript/v8/std_deque.i | 1 + .../swig/4.0.0/javascript/v8/std_except.i | 1 + .../share/swig/4.0.0/javascript/v8/std_map.i | 80 + .../share/swig/4.0.0/javascript/v8/std_pair.i | 35 + .../swig/4.0.0/javascript/v8/std_string.i | 1 + .../swig/4.0.0/javascript/v8/std_vector.i | 99 + .../swig/share/swig/4.0.0/javascript/v8/stl.i | 10 + .../share/swig/4.0.0/javascript/v8/typemaps.i | 148 ++ .../swig/share/swig/4.0.0/lua/_std_common.i | 93 + .../bin/swig/share/swig/4.0.0/lua/carrays.i | 8 + .../bin/swig/share/swig/4.0.0/lua/factory.i | 23 + macx64/bin/swig/share/swig/4.0.0/lua/lua.swg | 236 ++ .../bin/swig/share/swig/4.0.0/lua/lua_fnptr.i | 124 ++ .../bin/swig/share/swig/4.0.0/lua/luakw.swg | 67 + .../bin/swig/share/swig/4.0.0/lua/luarun.swg | 1939 +++++++++++++++++ .../swig/share/swig/4.0.0/lua/luaruntime.swg | 104 + .../swig/share/swig/4.0.0/lua/luatypemaps.swg | 412 ++++ .../swig/share/swig/4.0.0/lua/std_common.i | 5 + .../bin/swig/share/swig/4.0.0/lua/std_deque.i | 1 + .../swig/share/swig/4.0.0/lua/std_except.i | 42 + .../bin/swig/share/swig/4.0.0/lua/std_map.i | 66 + .../bin/swig/share/swig/4.0.0/lua/std_pair.i | 26 + .../swig/share/swig/4.0.0/lua/std_string.i | 125 ++ .../swig/share/swig/4.0.0/lua/std_vector.i | 140 ++ macx64/bin/swig/share/swig/4.0.0/lua/stl.i | 10 + .../bin/swig/share/swig/4.0.0/lua/typemaps.i | 564 +++++ macx64/bin/swig/share/swig/4.0.0/lua/wchar.i | 42 + macx64/bin/swig/share/swig/4.0.0/math.i | 82 + .../swig/share/swig/4.0.0/mzscheme/mzrun.swg | 499 +++++ .../share/swig/4.0.0/mzscheme/mzscheme.swg | 56 + .../share/swig/4.0.0/mzscheme/std_common.i | 23 + .../share/swig/4.0.0/mzscheme/std_deque.i | 1 + .../swig/share/swig/4.0.0/mzscheme/std_map.i | 1388 ++++++++++++ .../swig/share/swig/4.0.0/mzscheme/std_pair.i | 874 ++++++++ .../share/swig/4.0.0/mzscheme/std_string.i | 57 + .../share/swig/4.0.0/mzscheme/std_vector.i | 451 ++++ .../bin/swig/share/swig/4.0.0/mzscheme/stl.i | 10 + .../swig/share/swig/4.0.0/mzscheme/typemaps.i | 376 ++++ .../bin/swig/share/swig/4.0.0/ocaml/carray.i | 131 ++ .../bin/swig/share/swig/4.0.0/ocaml/class.swg | 67 + .../bin/swig/share/swig/4.0.0/ocaml/cstring.i | 268 +++ .../swig/share/swig/4.0.0/ocaml/director.swg | 101 + .../bin/swig/share/swig/4.0.0/ocaml/ocaml.i | 54 + .../bin/swig/share/swig/4.0.0/ocaml/ocaml.swg | 607 ++++++ .../swig/share/swig/4.0.0/ocaml/ocamldec.swg | 212 ++ .../swig/share/swig/4.0.0/ocaml/ocamlkw.swg | 72 + .../swig/share/swig/4.0.0/ocaml/preamble.swg | 17 + .../swig/share/swig/4.0.0/ocaml/std_common.i | 23 + .../swig/share/swig/4.0.0/ocaml/std_complex.i | 65 + .../swig/share/swig/4.0.0/ocaml/std_deque.i | 28 + .../swig/share/swig/4.0.0/ocaml/std_except.i | 23 + .../swig/share/swig/4.0.0/ocaml/std_list.i | 217 ++ .../bin/swig/share/swig/4.0.0/ocaml/std_map.i | 79 + .../swig/share/swig/4.0.0/ocaml/std_pair.i | 36 + .../swig/share/swig/4.0.0/ocaml/std_string.i | 124 ++ .../swig/share/swig/4.0.0/ocaml/std_vector.i | 98 + macx64/bin/swig/share/swig/4.0.0/ocaml/stl.i | 10 + .../bin/swig/share/swig/4.0.0/ocaml/swig.ml | 166 ++ .../bin/swig/share/swig/4.0.0/ocaml/swig.mli | 62 + .../bin/swig/share/swig/4.0.0/ocaml/swigp4.ml | 135 ++ .../swig/share/swig/4.0.0/ocaml/typecheck.i | 197 ++ .../swig/share/swig/4.0.0/ocaml/typemaps.i | 321 +++ .../share/swig/4.0.0/ocaml/typeregister.swg | 2 + .../swig/share/swig/4.0.0/octave/attribute.i | 1 + .../swig/4.0.0/octave/boost_shared_ptr.i | 401 ++++ .../swig/share/swig/4.0.0/octave/carrays.i | 5 + .../bin/swig/share/swig/4.0.0/octave/cdata.i | 1 + .../swig/share/swig/4.0.0/octave/cmalloc.i | 1 + .../swig/share/swig/4.0.0/octave/director.swg | 148 ++ .../swig/share/swig/4.0.0/octave/exception.i | 14 + .../swig/share/swig/4.0.0/octave/factory.i | 1 + .../swig/share/swig/4.0.0/octave/implicit.i | 7 + .../swig/share/swig/4.0.0/octave/octave.swg | 8 + .../share/swig/4.0.0/octave/octcomplex.swg | 92 + .../share/swig/4.0.0/octave/octcontainer.swg | 627 ++++++ .../share/swig/4.0.0/octave/octfragments.swg | 1 + .../share/swig/4.0.0/octave/octiterators.swg | 357 +++ .../swig/share/swig/4.0.0/octave/octopers.swg | 86 + .../share/swig/4.0.0/octave/octprimtypes.swg | 254 +++ .../swig/share/swig/4.0.0/octave/octrun.swg | 1557 +++++++++++++ .../share/swig/4.0.0/octave/octruntime.swg | 505 +++++ .../share/swig/4.0.0/octave/octstdcommon.swg | 222 ++ .../share/swig/4.0.0/octave/octtypemaps.swg | 92 + .../share/swig/4.0.0/octave/octuserdir.swg | 72 + .../swig/share/swig/4.0.0/octave/std_alloc.i | 1 + .../swig/4.0.0/octave/std_basic_string.i | 64 + .../swig/share/swig/4.0.0/octave/std_carray.i | 0 .../share/swig/4.0.0/octave/std_char_traits.i | 1 + .../swig/share/swig/4.0.0/octave/std_common.i | 72 + .../share/swig/4.0.0/octave/std_complex.i | 29 + .../share/swig/4.0.0/octave/std_container.i | 2 + .../swig/share/swig/4.0.0/octave/std_deque.i | 25 + .../swig/share/swig/4.0.0/octave/std_except.i | 1 + .../swig/share/swig/4.0.0/octave/std_list.i | 26 + .../swig/share/swig/4.0.0/octave/std_map.i | 157 ++ .../swig/share/swig/4.0.0/octave/std_pair.i | 147 ++ .../share/swig/4.0.0/octave/std_shared_ptr.i | 2 + .../swig/share/swig/4.0.0/octave/std_string.i | 1 + .../swig/share/swig/4.0.0/octave/std_vector.i | 26 + .../share/swig/4.0.0/octave/std_wstring.i | 1 + macx64/bin/swig/share/swig/4.0.0/octave/stl.i | 10 + .../swig/share/swig/4.0.0/octave/typemaps.i | 1 + .../swig/share/swig/4.0.0/perl5/Makefile.pl | 19 + .../swig/share/swig/4.0.0/perl5/attribute.i | 1 + .../bin/swig/share/swig/4.0.0/perl5/carrays.i | 2 + .../bin/swig/share/swig/4.0.0/perl5/cdata.i | 1 + .../bin/swig/share/swig/4.0.0/perl5/cmalloc.i | 1 + .../swig/share/swig/4.0.0/perl5/cpointer.i | 1 + .../bin/swig/share/swig/4.0.0/perl5/cstring.i | 1 + .../swig/share/swig/4.0.0/perl5/director.swg | 317 +++ .../swig/share/swig/4.0.0/perl5/exception.i | 5 + .../bin/swig/share/swig/4.0.0/perl5/factory.i | 1 + .../bin/swig/share/swig/4.0.0/perl5/noembed.h | 116 + .../bin/swig/share/swig/4.0.0/perl5/perl5.swg | 42 + .../share/swig/4.0.0/perl5/perlerrors.swg | 34 + .../share/swig/4.0.0/perl5/perlfragments.swg | 23 + .../swig/share/swig/4.0.0/perl5/perlhead.swg | 102 + .../swig/share/swig/4.0.0/perl5/perlinit.swg | 82 + .../swig/share/swig/4.0.0/perl5/perlkw.swg | 251 +++ .../share/swig/4.0.0/perl5/perlmacros.swg | 2 + .../swig/share/swig/4.0.0/perl5/perlmain.i | 82 + .../swig/share/swig/4.0.0/perl5/perlopers.swg | 54 + .../share/swig/4.0.0/perl5/perlprimtypes.swg | 364 ++++ .../swig/share/swig/4.0.0/perl5/perlrun.swg | 520 +++++ .../share/swig/4.0.0/perl5/perlruntime.swg | 8 + .../share/swig/4.0.0/perl5/perlstrings.swg | 59 + .../share/swig/4.0.0/perl5/perltypemaps.swg | 102 + .../share/swig/4.0.0/perl5/perluserdir.swg | 2 + .../swig/share/swig/4.0.0/perl5/reference.i | 261 +++ .../swig/share/swig/4.0.0/perl5/std_common.i | 28 + .../swig/share/swig/4.0.0/perl5/std_deque.i | 1 + .../swig/share/swig/4.0.0/perl5/std_except.i | 1 + .../swig/share/swig/4.0.0/perl5/std_list.i | 377 ++++ .../bin/swig/share/swig/4.0.0/perl5/std_map.i | 80 + .../swig/share/swig/4.0.0/perl5/std_pair.i | 36 + .../swig/share/swig/4.0.0/perl5/std_string.i | 2 + .../swig/share/swig/4.0.0/perl5/std_vector.i | 592 +++++ macx64/bin/swig/share/swig/4.0.0/perl5/stl.i | 10 + .../swig/share/swig/4.0.0/perl5/typemaps.i | 371 ++++ macx64/bin/swig/share/swig/4.0.0/php/const.i | 47 + .../swig/share/swig/4.0.0/php/director.swg | 170 ++ .../bin/swig/share/swig/4.0.0/php/factory.i | 109 + .../bin/swig/share/swig/4.0.0/php/globalvar.i | 293 +++ macx64/bin/swig/share/swig/4.0.0/php/php.swg | 539 +++++ .../bin/swig/share/swig/4.0.0/php/phpinit.swg | 25 + .../bin/swig/share/swig/4.0.0/php/phpkw.swg | 876 ++++++++ .../swig/share/swig/4.0.0/php/phppointers.i | 46 + .../bin/swig/share/swig/4.0.0/php/phprun.swg | 246 +++ .../swig/share/swig/4.0.0/php/std_common.i | 10 + .../bin/swig/share/swig/4.0.0/php/std_deque.i | 1 + .../bin/swig/share/swig/4.0.0/php/std_map.i | 82 + .../bin/swig/share/swig/4.0.0/php/std_pair.i | 36 + .../swig/share/swig/4.0.0/php/std_string.i | 94 + .../swig/share/swig/4.0.0/php/std_vector.i | 116 + macx64/bin/swig/share/swig/4.0.0/php/stl.i | 10 + .../bin/swig/share/swig/4.0.0/php/typemaps.i | 305 +++ macx64/bin/swig/share/swig/4.0.0/php/utils.i | 110 + macx64/bin/swig/share/swig/4.0.0/pointer.i | 11 + .../swig/share/swig/4.0.0/python/argcargv.i | 92 + .../swig/share/swig/4.0.0/python/attribute.i | 1 + .../swig/4.0.0/python/boost_shared_ptr.i | 411 ++++ .../swig/share/swig/4.0.0/python/builtin.swg | 740 +++++++ .../swig/share/swig/4.0.0/python/carrays.i | 13 + .../swig/share/swig/4.0.0/python/ccomplex.i | 26 + .../bin/swig/share/swig/4.0.0/python/cdata.i | 1 + .../swig/share/swig/4.0.0/python/cmalloc.i | 1 + .../swig/share/swig/4.0.0/python/complex.i | 6 + .../swig/share/swig/4.0.0/python/cpointer.i | 1 + .../swig/share/swig/4.0.0/python/cstring.i | 1 + .../swig/share/swig/4.0.0/python/cwstring.i | 3 + .../swig/share/swig/4.0.0/python/defarg.swg | 37 + .../swig/share/swig/4.0.0/python/director.swg | 429 ++++ .../bin/swig/share/swig/4.0.0/python/embed.i | 106 + .../swig/share/swig/4.0.0/python/exception.i | 6 + .../swig/share/swig/4.0.0/python/factory.i | 1 + .../bin/swig/share/swig/4.0.0/python/file.i | 41 + .../swig/share/swig/4.0.0/python/implicit.i | 7 + .../bin/swig/share/swig/4.0.0/python/pyabc.i | 10 + .../swig/share/swig/4.0.0/python/pyapi.swg | 30 + .../share/swig/4.0.0/python/pybackward.swg | 45 + .../swig/share/swig/4.0.0/python/pybuffer.i | 121 + .../share/swig/4.0.0/python/pyclasses.swg | 157 ++ .../share/swig/4.0.0/python/pycomplex.swg | 86 + .../share/swig/4.0.0/python/pycontainer.swg | 1089 +++++++++ .../swig/share/swig/4.0.0/python/pydocs.swg | 45 + .../swig/share/swig/4.0.0/python/pyerrors.swg | 104 + .../share/swig/4.0.0/python/pyfragments.swg | 23 + .../swig/share/swig/4.0.0/python/pyhead.swg | 87 + .../swig/share/swig/4.0.0/python/pyinit.swg | 512 +++++ .../share/swig/4.0.0/python/pyiterators.swg | 458 ++++ .../swig/share/swig/4.0.0/python/pymacros.swg | 4 + .../share/swig/4.0.0/python/pyname_compat.i | 85 + .../swig/share/swig/4.0.0/python/pyopers.swg | 264 +++ .../share/swig/4.0.0/python/pyprimtypes.swg | 353 +++ .../swig/share/swig/4.0.0/python/pyrun.swg | 1573 +++++++++++++ .../share/swig/4.0.0/python/pyruntime.swg | 27 + .../share/swig/4.0.0/python/pystdcommon.swg | 256 +++ .../share/swig/4.0.0/python/pystrings.swg | 137 ++ .../swig/share/swig/4.0.0/python/python.swg | 59 + .../swig/share/swig/4.0.0/python/pythonkw.swg | 140 ++ .../share/swig/4.0.0/python/pythreads.swg | 64 + .../share/swig/4.0.0/python/pytuplehlp.swg | 8 + .../share/swig/4.0.0/python/pytypemaps.swg | 105 + .../share/swig/4.0.0/python/pyuserdir.swg | 242 ++ .../share/swig/4.0.0/python/pywstrings.swg | 85 + .../swig/share/swig/4.0.0/python/std_alloc.i | 1 + .../swig/share/swig/4.0.0/python/std_array.i | 91 + .../share/swig/4.0.0/python/std_auto_ptr.i | 17 + .../swig/4.0.0/python/std_basic_string.i | 89 + .../swig/share/swig/4.0.0/python/std_carray.i | 54 + .../share/swig/4.0.0/python/std_char_traits.i | 1 + .../swig/share/swig/4.0.0/python/std_common.i | 74 + .../share/swig/4.0.0/python/std_complex.i | 27 + .../share/swig/4.0.0/python/std_container.i | 2 + .../swig/share/swig/4.0.0/python/std_deque.i | 27 + .../swig/share/swig/4.0.0/python/std_except.i | 1 + .../swig/share/swig/4.0.0/python/std_ios.i | 3 + .../share/swig/4.0.0/python/std_iostream.i | 8 + .../swig/share/swig/4.0.0/python/std_list.i | 28 + .../swig/share/swig/4.0.0/python/std_map.i | 310 +++ .../share/swig/4.0.0/python/std_multimap.i | 93 + .../share/swig/4.0.0/python/std_multiset.i | 41 + .../swig/share/swig/4.0.0/python/std_pair.i | 206 ++ .../swig/share/swig/4.0.0/python/std_set.i | 67 + .../share/swig/4.0.0/python/std_shared_ptr.i | 2 + .../share/swig/4.0.0/python/std_sstream.i | 1 + .../share/swig/4.0.0/python/std_streambuf.i | 1 + .../swig/share/swig/4.0.0/python/std_string.i | 1 + .../swig/4.0.0/python/std_unordered_map.i | 296 +++ .../4.0.0/python/std_unordered_multimap.i | 100 + .../4.0.0/python/std_unordered_multiset.i | 48 + .../swig/4.0.0/python/std_unordered_set.i | 67 + .../swig/share/swig/4.0.0/python/std_vector.i | 34 + .../share/swig/4.0.0/python/std_vectora.i | 31 + .../swig/share/swig/4.0.0/python/std_wios.i | 1 + .../share/swig/4.0.0/python/std_wiostream.i | 10 + .../share/swig/4.0.0/python/std_wsstream.i | 1 + .../share/swig/4.0.0/python/std_wstreambuf.i | 1 + .../share/swig/4.0.0/python/std_wstring.i | 3 + macx64/bin/swig/share/swig/4.0.0/python/stl.i | 10 + .../swig/share/swig/4.0.0/python/typemaps.i | 148 ++ .../bin/swig/share/swig/4.0.0/python/wchar.i | 21 + .../share/swig/4.0.0/r/boost_shared_ptr.i | 401 ++++ macx64/bin/swig/share/swig/4.0.0/r/cdata.i | 1 + .../bin/swig/share/swig/4.0.0/r/exception.i | 8 + macx64/bin/swig/share/swig/4.0.0/r/r.swg | 277 +++ .../swig/share/swig/4.0.0/r/rcontainer.swg | 198 ++ .../swig/share/swig/4.0.0/r/rfragments.swg | 195 ++ macx64/bin/swig/share/swig/4.0.0/r/rkw.swg | 36 + macx64/bin/swig/share/swig/4.0.0/r/ropers.swg | 32 + macx64/bin/swig/share/swig/4.0.0/r/rrun.swg | 379 ++++ .../swig/share/swig/4.0.0/r/rstdcommon.swg | 205 ++ macx64/bin/swig/share/swig/4.0.0/r/rtype.swg | 323 +++ macx64/bin/swig/share/swig/4.0.0/r/srun.swg | 150 ++ .../bin/swig/share/swig/4.0.0/r/std_alloc.i | 1 + .../bin/swig/share/swig/4.0.0/r/std_common.i | 73 + .../swig/share/swig/4.0.0/r/std_container.i | 2 + .../bin/swig/share/swig/4.0.0/r/std_deque.i | 1 + .../bin/swig/share/swig/4.0.0/r/std_except.i | 1 + macx64/bin/swig/share/swig/4.0.0/r/std_list.i | 5 + macx64/bin/swig/share/swig/4.0.0/r/std_map.i | 5 + macx64/bin/swig/share/swig/4.0.0/r/std_pair.i | 5 + .../swig/share/swig/4.0.0/r/std_shared_ptr.i | 2 + .../bin/swig/share/swig/4.0.0/r/std_string.i | 1 + .../bin/swig/share/swig/4.0.0/r/std_vector.i | 1073 +++++++++ macx64/bin/swig/share/swig/4.0.0/r/stl.i | 9 + macx64/bin/swig/share/swig/4.0.0/r/typemaps.i | 1 + .../swig/share/swig/4.0.0/ruby/Makefile.swig | 42 + .../bin/swig/share/swig/4.0.0/ruby/argcargv.i | 48 + .../swig/share/swig/4.0.0/ruby/attribute.i | 1 + .../share/swig/4.0.0/ruby/boost_shared_ptr.i | 401 ++++ .../bin/swig/share/swig/4.0.0/ruby/carrays.i | 6 + macx64/bin/swig/share/swig/4.0.0/ruby/cdata.i | 1 + .../bin/swig/share/swig/4.0.0/ruby/cmalloc.i | 1 + .../bin/swig/share/swig/4.0.0/ruby/cpointer.i | 1 + .../bin/swig/share/swig/4.0.0/ruby/cstring.i | 1 + .../swig/share/swig/4.0.0/ruby/director.swg | 348 +++ macx64/bin/swig/share/swig/4.0.0/ruby/embed.i | 16 + .../swig/share/swig/4.0.0/ruby/exception.i | 5 + .../bin/swig/share/swig/4.0.0/ruby/extconf.rb | 9 + .../bin/swig/share/swig/4.0.0/ruby/factory.i | 1 + macx64/bin/swig/share/swig/4.0.0/ruby/file.i | 39 + .../swig/share/swig/4.0.0/ruby/progargcargv.i | 34 + .../bin/swig/share/swig/4.0.0/ruby/ruby.swg | 72 + .../swig/share/swig/4.0.0/ruby/rubyapi.swg | 36 + .../share/swig/4.0.0/ruby/rubyautodoc.swg | 105 + .../share/swig/4.0.0/ruby/rubyclasses.swg | 404 ++++ .../share/swig/4.0.0/ruby/rubycomplex.swg | 148 ++ .../share/swig/4.0.0/ruby/rubycontainer.swg | 1121 ++++++++++ .../4.0.0/ruby/rubycontainer_extended.swg | 134 ++ .../swig/share/swig/4.0.0/ruby/rubydef.swg | 1 + .../swig/share/swig/4.0.0/ruby/rubyerrors.swg | 154 ++ .../share/swig/4.0.0/ruby/rubyfragments.swg | 23 + .../swig/share/swig/4.0.0/ruby/rubyhead.swg | 160 ++ .../swig/share/swig/4.0.0/ruby/rubyinit.swg | 1 + .../share/swig/4.0.0/ruby/rubyiterators.swg | 932 ++++++++ .../bin/swig/share/swig/4.0.0/ruby/rubykw.swg | 72 + .../swig/share/swig/4.0.0/ruby/rubymacros.swg | 13 + .../swig/share/swig/4.0.0/ruby/rubyopers.swg | 55 + .../share/swig/4.0.0/ruby/rubyprimtypes.swg | 227 ++ .../swig/share/swig/4.0.0/ruby/rubyrun.swg | 456 ++++ .../share/swig/4.0.0/ruby/rubyruntime.swg | 9 + .../share/swig/4.0.0/ruby/rubystdautodoc.swg | 33 + .../share/swig/4.0.0/ruby/rubystdcommon.swg | 199 ++ .../swig/4.0.0/ruby/rubystdcommon_forward.swg | 15 + .../share/swig/4.0.0/ruby/rubystdfunctors.swg | 162 ++ .../share/swig/4.0.0/ruby/rubystrings.swg | 57 + .../share/swig/4.0.0/ruby/rubytracking.swg | 132 ++ .../share/swig/4.0.0/ruby/rubytypemaps.swg | 62 + .../share/swig/4.0.0/ruby/rubyuserdir.swg | 20 + .../share/swig/4.0.0/ruby/rubywstrings.swg | 58 + .../swig/share/swig/4.0.0/ruby/std_alloc.i | 1 + .../swig/share/swig/4.0.0/ruby/std_array.i | 102 + .../share/swig/4.0.0/ruby/std_basic_string.i | 92 + .../share/swig/4.0.0/ruby/std_char_traits.i | 1 + .../swig/share/swig/4.0.0/ruby/std_common.i | 74 + .../swig/share/swig/4.0.0/ruby/std_complex.i | 29 + .../share/swig/4.0.0/ruby/std_container.i | 2 + .../swig/share/swig/4.0.0/ruby/std_deque.i | 30 + .../swig/share/swig/4.0.0/ruby/std_except.i | 1 + .../swig/share/swig/4.0.0/ruby/std_functors.i | 29 + .../bin/swig/share/swig/4.0.0/ruby/std_ios.i | 14 + .../swig/share/swig/4.0.0/ruby/std_iostream.i | 12 + .../bin/swig/share/swig/4.0.0/ruby/std_list.i | 42 + .../bin/swig/share/swig/4.0.0/ruby/std_map.i | 424 ++++ .../swig/share/swig/4.0.0/ruby/std_multimap.i | 226 ++ .../swig/share/swig/4.0.0/ruby/std_multiset.i | 50 + .../bin/swig/share/swig/4.0.0/ruby/std_pair.i | 212 ++ .../swig/share/swig/4.0.0/ruby/std_queue.i | 33 + .../bin/swig/share/swig/4.0.0/ruby/std_set.i | 231 ++ .../share/swig/4.0.0/ruby/std_shared_ptr.i | 141 ++ .../swig/share/swig/4.0.0/ruby/std_sstream.i | 2 + .../swig/share/swig/4.0.0/ruby/std_stack.i | 35 + .../share/swig/4.0.0/ruby/std_streambuf.i | 1 + .../swig/share/swig/4.0.0/ruby/std_string.i | 7 + .../share/swig/4.0.0/ruby/std_unordered_map.i | 83 + .../swig/4.0.0/ruby/std_unordered_multimap.i | 100 + .../swig/4.0.0/ruby/std_unordered_multiset.i | 50 + .../share/swig/4.0.0/ruby/std_unordered_set.i | 50 + .../swig/share/swig/4.0.0/ruby/std_vector.i | 52 + .../swig/share/swig/4.0.0/ruby/std_vectora.i | 36 + .../swig/share/swig/4.0.0/ruby/std_wstring.i | 52 + macx64/bin/swig/share/swig/4.0.0/ruby/stl.i | 10 + .../bin/swig/share/swig/4.0.0/ruby/timeval.i | 69 + .../bin/swig/share/swig/4.0.0/ruby/typemaps.i | 314 +++ macx64/bin/swig/share/swig/4.0.0/runtime.swg | 38 + .../swig/4.0.0/scilab/boost_shared_ptr.i | 401 ++++ .../swig/share/swig/4.0.0/scilab/carrays.i | 5 + .../swig/share/swig/4.0.0/scilab/cmalloc.i | 1 + .../swig/share/swig/4.0.0/scilab/cpointer.i | 1 + .../swig/share/swig/4.0.0/scilab/exception.i | 6 + .../bin/swig/share/swig/4.0.0/scilab/matrix.i | 11 + .../swig/share/swig/4.0.0/scilab/sciarray.swg | 115 + .../swig/share/swig/4.0.0/scilab/scibool.swg | 156 ++ .../swig/share/swig/4.0.0/scilab/scichar.swg | 292 +++ .../share/swig/4.0.0/scilab/scicontainer.swg | 445 ++++ .../share/swig/4.0.0/scilab/scidouble.swg | 108 + .../swig/share/swig/4.0.0/scilab/scienum.swg | 31 + .../share/swig/4.0.0/scilab/sciexception.swg | 60 + .../swig/share/swig/4.0.0/scilab/scifloat.swg | 83 + .../swig/share/swig/4.0.0/scilab/sciint.swg | 202 ++ .../share/swig/4.0.0/scilab/sciiterators.swg | 363 +++ .../swig/share/swig/4.0.0/scilab/scilab.swg | 6 + .../swig/share/swig/4.0.0/scilab/scilist.swg | 91 + .../swig/share/swig/4.0.0/scilab/scilong.swg | 123 ++ .../share/swig/4.0.0/scilab/scilonglong.swg | 54 + .../share/swig/4.0.0/scilab/scimacros.swg | 5 + .../share/swig/4.0.0/scilab/scimatrixbool.swg | 170 ++ .../share/swig/4.0.0/scilab/scimatrixchar.swg | 199 ++ .../swig/4.0.0/scilab/scimatrixdouble.swg | 170 ++ .../share/swig/4.0.0/scilab/scimatrixint.swg | 175 ++ .../share/swig/4.0.0/scilab/scimisctypes.swg | 69 + .../share/swig/4.0.0/scilab/scipointer.swg | 32 + .../share/swig/4.0.0/scilab/sciprimtypes.swg | 23 + .../swig/share/swig/4.0.0/scilab/scirun.swg | 534 +++++ .../share/swig/4.0.0/scilab/sciruntime.swg | 47 + .../share/swig/4.0.0/scilab/scisequence.swg | 195 ++ .../swig/4.0.0/scilab/scisequencebool.swg | 98 + .../swig/4.0.0/scilab/scisequencedouble.swg | 99 + .../swig/4.0.0/scilab/scisequencefloat.swg | 98 + .../swig/4.0.0/scilab/scisequenceint.swg | 104 + .../swig/4.0.0/scilab/scisequencepointer.swg | 123 ++ .../swig/4.0.0/scilab/scisequencestring.swg | 97 + .../swig/share/swig/4.0.0/scilab/scishort.swg | 188 ++ .../share/swig/4.0.0/scilab/scisignedchar.swg | 185 ++ .../share/swig/4.0.0/scilab/scistdcommon.swg | 218 ++ .../share/swig/4.0.0/scilab/scitypemaps.swg | 259 +++ .../swig/4.0.0/scilab/sciunsignedchar.swg | 190 ++ .../swig/4.0.0/scilab/sciunsignedint.swg | 204 ++ .../swig/4.0.0/scilab/sciunsignedlong.swg | 53 + .../swig/4.0.0/scilab/sciunsignedshort.swg | 189 ++ .../swig/share/swig/4.0.0/scilab/std_alloc.i | 2 + .../swig/4.0.0/scilab/std_basic_string.i | 45 + .../share/swig/4.0.0/scilab/std_char_traits.i | 1 + .../swig/share/swig/4.0.0/scilab/std_common.i | 72 + .../share/swig/4.0.0/scilab/std_container.i | 3 + .../swig/share/swig/4.0.0/scilab/std_deque.i | 31 + .../swig/share/swig/4.0.0/scilab/std_except.i | 1 + .../swig/share/swig/4.0.0/scilab/std_list.i | 30 + .../swig/share/swig/4.0.0/scilab/std_map.i | 79 + .../share/swig/4.0.0/scilab/std_multiset.i | 30 + .../swig/share/swig/4.0.0/scilab/std_pair.i | 36 + .../swig/share/swig/4.0.0/scilab/std_set.i | 32 + .../share/swig/4.0.0/scilab/std_shared_ptr.i | 2 + .../swig/share/swig/4.0.0/scilab/std_string.i | 39 + .../swig/share/swig/4.0.0/scilab/std_vector.i | 31 + macx64/bin/swig/share/swig/4.0.0/scilab/stl.i | 10 + .../swig/share/swig/4.0.0/scilab/typemaps.i | 62 + macx64/bin/swig/share/swig/4.0.0/shared_ptr.i | 69 + .../swig/share/swig/4.0.0/std/_std_deque.i | 139 ++ .../bin/swig/share/swig/4.0.0/std/std_alloc.i | 77 + .../bin/swig/share/swig/4.0.0/std/std_array.i | 85 + .../share/swig/4.0.0/std/std_basic_string.i | 267 +++ .../swig/share/swig/4.0.0/std/std_carray.swg | 64 + .../share/swig/4.0.0/std/std_char_traits.i | 140 ++ .../swig/share/swig/4.0.0/std/std_common.i | 250 +++ .../swig/share/swig/4.0.0/std/std_container.i | 169 ++ .../bin/swig/share/swig/4.0.0/std/std_deque.i | 127 ++ .../swig/share/swig/4.0.0/std/std_except.i | 73 + .../bin/swig/share/swig/4.0.0/std/std_ios.i | 262 +++ .../swig/share/swig/4.0.0/std/std_iostream.i | 339 +++ .../bin/swig/share/swig/4.0.0/std/std_list.i | 148 ++ .../bin/swig/share/swig/4.0.0/std/std_map.i | 125 ++ .../swig/share/swig/4.0.0/std/std_multimap.i | 100 + .../swig/share/swig/4.0.0/std/std_multiset.i | 83 + .../bin/swig/share/swig/4.0.0/std/std_pair.i | 163 ++ .../bin/swig/share/swig/4.0.0/std/std_queue.i | 129 ++ .../bin/swig/share/swig/4.0.0/std/std_set.i | 122 ++ .../swig/share/swig/4.0.0/std/std_sstream.i | 195 ++ .../bin/swig/share/swig/4.0.0/std/std_stack.i | 128 ++ .../swig/share/swig/4.0.0/std/std_streambuf.i | 94 + .../swig/share/swig/4.0.0/std/std_string.i | 13 + .../share/swig/4.0.0/std/std_unordered_map.i | 122 ++ .../swig/4.0.0/std/std_unordered_multimap.i | 85 + .../swig/4.0.0/std/std_unordered_multiset.i | 85 + .../share/swig/4.0.0/std/std_unordered_set.i | 119 + .../swig/share/swig/4.0.0/std/std_vector.i | 225 ++ .../swig/share/swig/4.0.0/std/std_vectora.i | 7 + .../bin/swig/share/swig/4.0.0/std/std_wios.i | 7 + .../swig/share/swig/4.0.0/std/std_wiostream.i | 7 + .../swig/share/swig/4.0.0/std/std_wsstream.i | 7 + .../share/swig/4.0.0/std/std_wstreambuf.i | 7 + .../swig/share/swig/4.0.0/std/std_wstring.i | 14 + macx64/bin/swig/share/swig/4.0.0/std_except.i | 57 + macx64/bin/swig/share/swig/4.0.0/stdint.i | 106 + macx64/bin/swig/share/swig/4.0.0/stl.i | 7 + macx64/bin/swig/share/swig/4.0.0/swig.swg | 701 ++++++ macx64/bin/swig/share/swig/4.0.0/swigarch.i | 62 + .../bin/swig/share/swig/4.0.0/swigerrors.swg | 16 + .../swig/share/swig/4.0.0/swigfragments.swg | 86 + macx64/bin/swig/share/swig/4.0.0/swiginit.swg | 230 ++ .../bin/swig/share/swig/4.0.0/swiglabels.swg | 123 ++ macx64/bin/swig/share/swig/4.0.0/swigrun.i | 8 + macx64/bin/swig/share/swig/4.0.0/swigrun.swg | 573 +++++ macx64/bin/swig/share/swig/4.0.0/swigwarn.swg | 301 +++ .../swig/share/swig/4.0.0/swigwarnings.swg | 129 ++ .../bin/swig/share/swig/4.0.0/tcl/attribute.i | 1 + .../bin/swig/share/swig/4.0.0/tcl/carrays.i | 4 + macx64/bin/swig/share/swig/4.0.0/tcl/cdata.i | 1 + .../bin/swig/share/swig/4.0.0/tcl/cmalloc.i | 1 + .../bin/swig/share/swig/4.0.0/tcl/cpointer.i | 1 + .../bin/swig/share/swig/4.0.0/tcl/cstring.i | 1 + .../bin/swig/share/swig/4.0.0/tcl/cwstring.i | 2 + .../bin/swig/share/swig/4.0.0/tcl/exception.i | 6 + .../bin/swig/share/swig/4.0.0/tcl/factory.i | 1 + .../swig/share/swig/4.0.0/tcl/std_common.i | 17 + .../bin/swig/share/swig/4.0.0/tcl/std_deque.i | 1 + .../swig/share/swig/4.0.0/tcl/std_except.i | 1 + .../bin/swig/share/swig/4.0.0/tcl/std_map.i | 79 + .../bin/swig/share/swig/4.0.0/tcl/std_pair.i | 36 + .../swig/share/swig/4.0.0/tcl/std_string.i | 2 + .../swig/share/swig/4.0.0/tcl/std_vector.i | 435 ++++ .../swig/share/swig/4.0.0/tcl/std_wstring.i | 2 + macx64/bin/swig/share/swig/4.0.0/tcl/stl.i | 10 + macx64/bin/swig/share/swig/4.0.0/tcl/tcl8.swg | 42 + .../bin/swig/share/swig/4.0.0/tcl/tclapi.swg | 108 + .../swig/share/swig/4.0.0/tcl/tclerrors.swg | 76 + .../share/swig/4.0.0/tcl/tclfragments.swg | 22 + .../bin/swig/share/swig/4.0.0/tcl/tclinit.swg | 141 ++ .../bin/swig/share/swig/4.0.0/tcl/tclinterp.i | 17 + .../bin/swig/share/swig/4.0.0/tcl/tclkw.swg | 10 + .../swig/share/swig/4.0.0/tcl/tclmacros.swg | 4 + .../swig/share/swig/4.0.0/tcl/tclopers.swg | 43 + .../share/swig/4.0.0/tcl/tclprimtypes.swg | 247 +++ .../bin/swig/share/swig/4.0.0/tcl/tclresult.i | 27 + .../bin/swig/share/swig/4.0.0/tcl/tclrun.swg | 691 ++++++ .../swig/share/swig/4.0.0/tcl/tclruntime.swg | 15 + macx64/bin/swig/share/swig/4.0.0/tcl/tclsh.i | 85 + .../swig/share/swig/4.0.0/tcl/tclstrings.swg | 31 + .../swig/share/swig/4.0.0/tcl/tcltypemaps.swg | 91 + .../swig/share/swig/4.0.0/tcl/tcluserdir.swg | 5 + .../swig/share/swig/4.0.0/tcl/tclwstrings.swg | 67 + .../bin/swig/share/swig/4.0.0/tcl/typemaps.i | 464 ++++ macx64/bin/swig/share/swig/4.0.0/tcl/wish.i | 146 ++ .../share/swig/4.0.0/typemaps/attribute.swg | 286 +++ .../share/swig/4.0.0/typemaps/carrays.swg | 114 + .../swig/share/swig/4.0.0/typemaps/cdata.swg | 76 + .../share/swig/4.0.0/typemaps/cmalloc.swg | 110 + .../share/swig/4.0.0/typemaps/cpointer.swg | 157 ++ .../share/swig/4.0.0/typemaps/cstring.swg | 9 + .../share/swig/4.0.0/typemaps/cstrings.swg | 288 +++ .../share/swig/4.0.0/typemaps/cwstring.swg | 10 + .../share/swig/4.0.0/typemaps/enumint.swg | 39 + .../share/swig/4.0.0/typemaps/exception.swg | 86 + .../share/swig/4.0.0/typemaps/factory.swg | 88 + .../share/swig/4.0.0/typemaps/fragments.swg | 235 ++ .../share/swig/4.0.0/typemaps/implicit.swg | 208 ++ .../share/swig/4.0.0/typemaps/inoutlist.swg | 296 +++ .../share/swig/4.0.0/typemaps/misctypes.swg | 21 + .../share/swig/4.0.0/typemaps/primtypes.swg | 367 ++++ .../share/swig/4.0.0/typemaps/ptrtypes.swg | 208 ++ .../share/swig/4.0.0/typemaps/std_except.swg | 37 + .../share/swig/4.0.0/typemaps/std_string.swg | 25 + .../share/swig/4.0.0/typemaps/std_strings.swg | 78 + .../share/swig/4.0.0/typemaps/std_wstring.swg | 26 + .../swig/share/swig/4.0.0/typemaps/string.swg | 35 + .../share/swig/4.0.0/typemaps/strings.swg | 651 ++++++ .../share/swig/4.0.0/typemaps/swigmacros.swg | 238 ++ .../share/swig/4.0.0/typemaps/swigobject.swg | 37 + .../share/swig/4.0.0/typemaps/swigtype.swg | 725 ++++++ .../swig/4.0.0/typemaps/swigtypemaps.swg | 167 ++ .../share/swig/4.0.0/typemaps/typemaps.swg | 157 ++ .../share/swig/4.0.0/typemaps/valtypes.swg | 215 ++ .../swig/share/swig/4.0.0/typemaps/void.swg | 84 + .../share/swig/4.0.0/typemaps/wstring.swg | 37 + macx64/bin/swig/share/swig/4.0.0/wchar.i | 11 + macx64/bin/swig/share/swig/4.0.0/windows.i | 152 ++ .../bin/swig/share/swig/4.0.0/xml/typemaps.i | 3 + macx64/bin/swig/share/swig/4.0.0/xml/xml.swg | 1 + 715 files changed, 94411 insertions(+) create mode 100755 macx64/bin/swig/bin/ccache-swig create mode 100755 macx64/bin/swig/bin/swig create mode 100644 macx64/bin/swig/share/swig/4.0.0/allkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/attribute.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/carrays.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/cmalloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/constraints.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/cpointer.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/arrays_csharp.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/boost_intrusive_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/boost_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/csharp.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/csharphead.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/csharpkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/enums.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/enumsimple.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/enumtypesafe.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_array.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_auto_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/std_wstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/swiginterface.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/swigtype_inout.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/csharp/wchar.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/cstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/cwstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/boost_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/carrays.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/cpointer.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/d.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/dclassgen.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/ddirectives.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/denums.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/dexception.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/dhead.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/dkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/dmemberfunctionpointers.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/doperators.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/dprimitives.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/dstrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/dswigtype.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/dvoid.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/std_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/d/wrapperloader.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/director_common.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/go.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/gokw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/goruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/gostring.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/go/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/common.scm create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/cplusplus.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/guile.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/guile_scm.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/guile_scm_run.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/guilemain.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/interpreter.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/list-vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/pointer-in-out.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/ports.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/swigrun.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/guile/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/intrusive_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/inttypes.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/arrays_java.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/boost_intrusive_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/boost_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/enums.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/enumsimple.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/enumtypesafe.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/enumtypeunsafe.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/java.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/javahead.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/javakw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_array.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_auto_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_unordered_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_unordered_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/std_wstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/swiginterface.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/java/various.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/arrays_javascript.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/ccomplex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascript.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptcode.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptcomplex.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptfragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascripthelpers.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptinit.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptprimtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptstrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascripttypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/jsc/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/arrays_javascript.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/ccomplex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascript.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptcode.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptcomplex.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptfragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascripthelpers.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptinit.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptprimtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptstrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascripttypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/javascript/v8/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/_std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/carrays.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/factory.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/lua.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/lua_fnptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/luakw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/luarun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/luaruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/luatypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/lua/wchar.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/math.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/mzrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/mzscheme.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/mzscheme/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/carray.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/class.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/cstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/ocaml.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/ocaml.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/ocamldec.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/ocamlkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/preamble.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/std_complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/swig.ml create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/swig.mli create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/swigp4.ml create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/typecheck.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ocaml/typeregister.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/attribute.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/boost_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/carrays.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/cmalloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/factory.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/implicit.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octave.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octcomplex.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octcontainer.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octfragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octiterators.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octopers.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octprimtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octstdcommon.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octtypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/octuserdir.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_alloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_basic_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_carray.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_char_traits.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_container.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/std_wstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/octave/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/Makefile.pl create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/attribute.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/carrays.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/cmalloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/cpointer.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/cstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/factory.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/noembed.h create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perl5.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlerrors.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlfragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlhead.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlinit.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlmacros.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlmain.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlopers.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlprimtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perlstrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perltypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/perluserdir.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/reference.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/perl5/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/const.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/factory.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/globalvar.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/php.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/phpinit.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/phpkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/phppointers.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/phprun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/php/utils.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/pointer.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/argcargv.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/attribute.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/boost_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/builtin.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/carrays.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/ccomplex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/cmalloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/cpointer.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/cstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/cwstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/defarg.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/embed.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/factory.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/file.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/implicit.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyabc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyapi.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pybackward.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pybuffer.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyclasses.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pycomplex.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pycontainer.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pydocs.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyerrors.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyfragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyhead.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyinit.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyiterators.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pymacros.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyname_compat.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyopers.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyprimtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pystdcommon.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pystrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/python.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pythonkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pythreads.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pytuplehlp.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pytypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pyuserdir.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/pywstrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_alloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_array.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_auto_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_basic_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_carray.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_char_traits.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_container.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_ios.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_iostream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_multimap.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_multiset.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_sstream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_streambuf.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_unordered_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_unordered_multimap.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_unordered_multiset.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_unordered_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_vectora.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_wios.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_wiostream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_wsstream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_wstreambuf.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/std_wstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/python/wchar.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/boost_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/r.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/rcontainer.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/rfragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/rkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/ropers.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/rrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/rstdcommon.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/rtype.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/srun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_alloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_container.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/r/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/Makefile.swig create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/argcargv.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/attribute.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/boost_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/carrays.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/cmalloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/cpointer.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/cstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/director.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/embed.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/extconf.rb create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/factory.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/file.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/progargcargv.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/ruby.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyapi.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyautodoc.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyclasses.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubycomplex.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubycontainer.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubycontainer_extended.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubydef.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyerrors.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyfragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyhead.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyinit.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyiterators.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubykw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubymacros.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyopers.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyprimtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubystdautodoc.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubystdcommon.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubystdcommon_forward.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubystdfunctors.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubystrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubytracking.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubytypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubyuserdir.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/rubywstrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_alloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_array.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_basic_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_char_traits.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_complex.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_container.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_functors.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_ios.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_iostream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_multimap.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_multiset.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_queue.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_sstream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_stack.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_streambuf.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_multimap.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_multiset.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_vectora.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/std_wstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/timeval.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/ruby/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/runtime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/boost_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/carrays.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/cmalloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/cpointer.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/matrix.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciarray.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scibool.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scichar.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scicontainer.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scidouble.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scienum.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciexception.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scifloat.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciint.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciiterators.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scilab.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scilist.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scilong.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scilonglong.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scimacros.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixbool.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixchar.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixdouble.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixint.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scimisctypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scipointer.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciprimtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scirun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scisequence.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scisequencebool.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scisequencedouble.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scisequencefloat.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scisequenceint.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scisequencepointer.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scisequencestring.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scishort.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scisignedchar.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scistdcommon.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/scitypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciunsignedchar.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciunsignedint.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciunsignedlong.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/sciunsignedshort.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_alloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_basic_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_char_traits.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_container.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_multiset.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/scilab/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/shared_ptr.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/_std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_alloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_array.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_basic_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_carray.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_char_traits.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_container.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_ios.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_iostream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_list.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_multimap.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_multiset.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_queue.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_sstream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_stack.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_streambuf.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_unordered_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_unordered_multimap.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_unordered_multiset.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_unordered_set.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_vectora.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_wios.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_wiostream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_wsstream.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_wstreambuf.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std/std_wstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/stdint.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/swig.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/swigarch.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/swigerrors.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/swigfragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/swiginit.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/swiglabels.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/swigrun.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/swigrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/swigwarn.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/swigwarnings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/attribute.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/carrays.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/cdata.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/cmalloc.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/cpointer.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/cstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/cwstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/exception.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/factory.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/std_common.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/std_deque.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/std_except.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/std_map.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/std_pair.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/std_string.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/std_vector.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/std_wstring.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/stl.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tcl8.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclapi.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclerrors.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclfragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclinit.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclinterp.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclkw.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclmacros.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclopers.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclprimtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclresult.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclrun.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclruntime.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclsh.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclstrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tcltypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tcluserdir.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/tclwstrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/tcl/wish.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/attribute.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/carrays.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/cdata.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/cmalloc.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/cpointer.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/cstring.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/cstrings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/cwstring.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/enumint.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/exception.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/factory.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/fragments.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/implicit.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/inoutlist.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/misctypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/primtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/ptrtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/std_except.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/std_string.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/std_strings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/std_wstring.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/string.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/strings.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/swigmacros.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/swigobject.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/swigtype.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/swigtypemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/typemaps.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/valtypes.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/void.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/typemaps/wstring.swg create mode 100644 macx64/bin/swig/share/swig/4.0.0/wchar.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/windows.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/xml/typemaps.i create mode 100644 macx64/bin/swig/share/swig/4.0.0/xml/xml.swg diff --git a/macx64/bin/swig/bin/ccache-swig b/macx64/bin/swig/bin/ccache-swig new file mode 100755 index 0000000000000000000000000000000000000000..772fb8d554dfacf4c7e82b52731b4e756ed8b3ba GIT binary patch literal 62524 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 literal 0 HcmV?d00001 diff --git a/macx64/bin/swig/bin/swig b/macx64/bin/swig/bin/swig new file mode 100755 index 0000000000000000000000000000000000000000..4740ece19b26da943f15cb5ed81d68b04827a07b GIT binary patch literal 1889116 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 z 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%0A)LHB^V7c*5ax!V{3LvCqyQQ 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 z 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�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
YD_P2H?HZ;Hw2bA^`uL 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 z YM&^9gi3Xl4oP=7r@byP_y+ym(m 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

U%0)G~O_f6)0i$TY| zAAs%gIHRN)R^3euz%Cg+yXg{gM*{GlN$@iQ-{!%Un@x&x?i!Wi;)A4%L!ll%vUc&d z>>#q1_xqNn1`QAJwAf0tn$eS=w!lY+{S=1kC+J=L)9+iENwg4dtbevU?<$FqUdzcJ zpm<$2SdpL2TnLpPSspJ%*lOpOtpHngd^i7NrGC`(u&JYpd`8}QFMZAB3n73nS@Dwv zc-sT`ofX%89#(tF?)j>D@s-J%2gNH~zou-iKdMkx#R2Vsm=-WcZ%dWvJ+kq%0-5h| zhDF(*_rH$uzv5b(eD7cDG-n;F)?PYmi+>tk>am^ZkG^(GTJShMzOT3G70#+TOOe8? z4>=sm`O7m=L}}eLV==Ej5T=lGy4h8n>b2~ncBXam>Yiy%T*?PI65}O{Ha<3WRHA)} z_(7sR+hXW86mD11uE~n_4Jx{Tioi~&4eM8@`noX%`QPhnsfOLReSOam1n>=em4$j4 zogem6A2s)NHC6RPZ*hW;wS};NfF9dpxh#q0+5pRVut1}@85HWd%YUW%@A~6IqxYMF z?fA2F|6ke zKu<7{S4&-L*q#*RdhM(&i5)gp>ZUV9kM?c`B7Z;80QvAsZT}Xex&^sN2A8}U!rbZ{ z{8xKhZjHO*K)v{d+cm}N3_nkrA}NpUD<#pMk-SI+hH-I!{nijZ=m^NE<)_~~!Sqmz zd@tREv+u8lzg(43>4jEl`10O13z>7QwjOYQtPtyQ3;f9tty{rVLGXcs^JamsU;28X zhm2)!g{I}rJz=K;RsIcoFa?5F>O5vz$AO;WSLqLRk2@;Kt`TQi4Cfrss9{H0`L*t% zgM9qp4RQ((Xt22VmGP&hhZgpd3*BkUxT*KcE(&7ldLVWg*PyEx1EE-WiA7F>PJHqh zBkXDZxMtMlGg-ubXpz>0GuO)le-E=J%-Qc`!&Tk+^Mlafk2LKKo8*8sKq6||0z!j& zzv{I`v9|ul`G$77+3~1NHn=!2yp?r z*9dR@Ab*0Roj4}`GLF@@7|))mXaYx9dD|T1xY-J|Ur?w%Yu)ceNQt!`iU8Su4ao|J zF1Th?CpgY`&k9fZ+z#4WZ{F4S?jeC<;jZAp6TpRX5zoc2Tp=Ha<7G6E6uWtZ_H1G&>->n-&PkQx^(%rP$3zsIG1+ zO-TOk$21|lZ!d(zwu3ghr!n%#h!+fq_{?oRUilL&Y0*{s+`22rgaWnL?3P-NL=8Q_ zxQUq>RLoL*154|sl7pLCRzO3F7B1nB4(q|46{vDiw1^2%Zo|SC8vCD9^^4`J4myX`P5G&@=7YzoPhatHPkUvvkEJLC?(VfM4xe*Vz1joPX0TqUew z)w!0W>+c(+6CPIwg$lR0Tjp8crB}?7A2mt5)+>^BBq37u#kCns>#(dNMdVPHWPAmt8R(>!gu`*-7a;ytsxWkh;m*KUl`aP~eM4Ri7z3Ur%0 z2wYVz+7=6UumDM&`xo-#!!?>M?2hFxwxx;5m|Hu<0dM}2`La`c{$lg|^1Fw$Eai>o znUWKQ({}EMipgupz1f>-0Utfrbmcv!te6JO^eXnxh-+)z$!|C3{li1FlfCpTsqV*} zg24U#)ncK=G)(v2oU8=x@LG(0W$4s=E%LEia!5Bs2=dmn_T9*iLi z+6Q?j;|_gbsQeb32HRJTvXN~K`{on1x|^vosKazVmb;wQX|FYF+(dRW#D^9~FYZUV z_tMK9Z{=p140Hbf6h9EJb~BEqL_UN6U;hqvZse@xt03CJ4!2jk)^Awnq2>D`vojZE zYd<|Pr-H~TjyQ6Ej=PKvSJsU4_iCQ>a?@Rl)Z8U~erNL+>_|~@OtS{-MhLRwoklO>Yr6>r7uitHv0jajz&W;I z8yrM*m%0NWFvxNcSr{Ptv-BQ7Cb4bQg`}-Mh*%=tcH-jCmDIS;S8APPzcq!`X>SjK1=Q(0@2dBmMHE;P8GlG?gVw@4BWGcp^COt z=ffH1O~9(3-QeRSfoTz+QD&Od9S>_MfMMa|maODa4ZExFKE!0ES~BxP2b;6PyW2M; zW#)SuLPknvnmU{5KZ*tRz*e8G85} zD2voIOqa;Ta=!mu!AR*xEx#7>E1DH4e9er+IOkqY7>S!`i&X78%shHvU6-r3Q_XpbS~8(W1cvtfzX zDgkMb>o%BHTM zNLHw#lK;}~`>7HFmWHjtPkRDR{Y6$2W5L2mFRq^8q>vpOm!XjkaV~6fQc^jxtPWI2mU5})}pkfL$v>rCD!0`4>W7F z15|xj-wH={7!`s8yzv9t~yzRhGgK%jr}T&_*`` zP)*@fnuAsRm2tGX{H`G_LKV;M5_p~A&#~@8dw~ka!Vz;`xj(sujhfVjnw1`| zEJJiw48MMV^1ZR%Q?nn%{NuX{4OE^DUQ(~>>XB~4maD{Gk^TurnKuhnw*9eWkjuJ7`yX@%E#GVH+b{g`bA?Zu z;?DXM3+2zyeQ_{yMwKmgvcMEa;c|OC5R7N)yM<^llzkLrTaN1ky~=hQlgoq&axaig z+57KfBhonb;OUBEV`sCH6D=Q&8K>y#okE#N+FzqTjhVp1mu~ijjFoZ zE_K1$;2*;mQr%wDaTN+b(&tn5xlo_a%oKDYMJ6%>QKOEAS{{Umo`Dr?uHAf%ZYx1Z z7&mqnz<4u_aU;s!%I5N-&svmk%PDCV`M4nT-sVb%|JUuh(+Z71lnzyBJ+FLYvry$q zKKv+umj>1s5mlR%J=00;GT0LbNz+}O7Ud0+`-&i%T^bX%xsp`ogU+{+P4kd87Ro7IfJnFQ|OP#H^Ct zU`C!boB`=amfGWcMtgr$&}9?w776%5;3Cr7qha#(_D-Zt(eivkFplU}U2eD4W%1am zCm#_ILY}nf9cgGPUDU_@<80c)RNvBnRwUki!e+kYPwqE5ho3QRcz^-q7^__n?hxjW zl7{bhG-;@~*Ru$GTlBiAT|8V8T%249Q?FfAIs{6W>~BLum!qYN_3pPNwyxPxjW`Av z{qXBSG=b~C`Gtz;k22PzGUomhaWQppx1w@7MZM75hj<%m4(e2mCbiADmi{BwGthX1 zke3}6@_v~O=8f*nr?eayev>IY$~;jv?+vqg3b8Nm=S|5|2ALijg|fR$3N_)_6{^_?fhvofP{leiDaz9<<2J81%gTTn%W1C?ya>1- zEe;ia>y~jo+-B8zhcb3cu((^}V>br;Oyjkwt)C1<#nUnrOuqA0Azl`@78!#@hRx`I z773%da6!2*vfOjrNRa!>oZh!m3?`J)o`n*&)zIv>(!g$jhrPLvwP~XHW8Qd$C#L7? zPCj+hkS)kPwGGl=nk;q~Ry37x3lcAxfc>?LO#xeZylvuUWstgYt~6UHFj7Ce4<|S3 z)6K>*p=d%-K-qJHX0m>z4Jonkz$9R*2Rw;mDn`_~mpowMz6rpi0%&aQ|E!`L9ZD_@ zMxN#+eHgwF2uVWD{@#{%Zy~cc*Y$~7SMc~psNw=SJzULpgbC)3)J@E*4Sy`=rAk*( zhgz)@t@~Juz12pUYi!`GbLZ0W7%&8en}$oP)L|b@X>7`mo+Sets(2SV%tUHH6%X1x zAqsd8WaE1ALPK3E)isbub*M*8LTI)mnt*fBD>|T^tFg#Tjk{&5iYY>~@c=KVx}FK) z{Mc347BSx~xyDI%YZ|DN2mK=rbO}fO(9oWML_+x{-vnlRaY7|w|8rL&_^7vJbzK z_m9LqEKsr^)T1Ml8giuYsbk_Te7>9a4)Xn>P@_jNg;eUjh$BC7@w~{bj6RLfm8R@Fp+y1zbzL%_vV)ffG1&~&%J-5 z6&Ix{+$}-f>Hm$oE~(7>dpx7s1+8q8O1gVbaoF`zEH!BNQOU^WDmMn#GJtmhiC4tv z;4(R^!$>QRzMq)iU;l;KeRt1F@9ytzx}wY0vHKfvZpz{l?bI)x!L11;u5`U{U8Hk@}5wIQe{+SxI&!&Y1o%rp6RI{60)oj z@%9`OeJ*$k)hiAi)4u}@7T`WQ9))K7p_MRYYIQ2 zj2}8RG+b|SMQ`b@``&u}qBPJziEgz!BMr3c9+s0Mlovq zOtCg>MZddstAb ziLPm_YT*4G{!(SN7pk;~P{WbGZ_bdA)cztn|I1AX67a_+NWka1TRsvCp=g*U<{M1W z)o!k&)BY`NxEd*)Z%Ru-F(7zYB)ZPlq~@UHs|qDTJ`ZIp2m?IHs8r+Kl~h zMfd#DikVtbB-Tm`>ydxk;?ndE`Vq}Juzw zCW?zO5v09A6ofl3fINxNM=Ete0l?`D)QmNE5Oq}U19<8yQhA|Id&j3;{hcSVxux~+ zX#Q)jgoC+DP32Q0(6?FfeL#Dt;cIlaSaN7gb;QzpMPBdf%Z~_{KN172foOhM z91-EQ%wt8$HA<;OFUE_{C5MpollB>qRBVN0KbAY$QB+yO&U%I5qtmO&jz6e|3=b;f zH763pE4LhZid24N33=;SBIR(1_h*Nm5Ll(WHp_(-AzEQw`x!xtGL=1#96q3V0vJWf zOxfZ}2za3%8A=s^=^7+GPZBNa6?wOcB+Lg?av!~@W7ihr8gKPXv>z*7kvAK>9;Z$Z z7KB2?I=mw9O~a(6=lvpPvA)6Igf*Bh>>vziMALdl{&0=sy&Z~$r(yi4J8F!_n8+|J zu+`Bzmo0p;u)j>>+yoAp>IO|tV|mAj)Gy_W3}XI9EXLoz7O4aOQEcUK z=OvI&Mb3CC5PnIV0!lr`Sl%f%_u1?oN!3DFV6!XdH=D~jhhv%*9iWLYV_050k-p9S zj;!iLQjOaiKZ@~5UB(hnVCcC!2uT(Y1% zUGp=mNQGKO`q=eJmgo)|cMm0GEj0q=5*3T*f$PPuq;5^_8YOD(mgt7{Y#*>Tsteyk zi4!c;?-%)<$ha@T*JQ?6GGm4a+zvSC^XPbK!_MQSEZj8Af3xyKW9(U7dOvpxK_tWG zPNxiji}y%&CHr52aUJkZv8Swb50x(IP_dw7zkr(DvOR)uTRxlLnix*WZcn~vu>{=f3~sCa7Q+* zZ;BTw>(%F}bg4pV4`7EYwoh2O=B3r)=di zX7TgOr_0ic+t}y4-&-LPGuXj_u{WiTzV7YATDMW^%xk=DXe~!b*SNFTY5}0cmMbtO zt6bPazB0pWkb{8~c4*8Gy;o-sVBA5yXyPp8h;^E8fASU?dDJ)xN=)C-YYk;T{p!W9 zEdm@rH8tE4b0U44o2T^hjoIbP5OLixdC=Z4G?sfLf84iRoJq&&9mWIrO$IlX{K1Bu z@eO}+93V2@-;txT<5`Y!LxmBq(y&d!&v#cEq;d+R%_MG)XqYW^5ectl>je4kBxTdg zMT@Mqc0X3FiJhJuu~8iXiH%t}64#0`GpD!-kDyrS*y~6ZGf;!ek&Q7H*}P z5IVM=YSX|M(;GDS6wHTPEY(2HCjX2LVUYo`7(j(EiX11`)4CkiTzsT2I$fruDE6+A z6w4j>m(Z_cn->AWYj?%3y>kxZkA;KGx=R@6vx*4qS3qIZ8WnU|)N_#=*-2^G)52YK z)GnTpzg%W!wbK|Ks?fzqL6ST398(UxX|JsA_;bC2?8Rf)gcrA`AyMPK8&m7~dlYpS#fCL=KOJd;J;=BMW2U!NwWq-^ z^%$&s$0#bXx7jF?+n%Vp`fDa{8!%}3 zFQ4EH+2hD9F<`2tv29oa~HA!2x0^7jGv^|$?KJbUt)PS!KXoh5#veNW%m}> ztS5roMX{Jk3G9#MmTZ;@%DJ-*vK}Lo+B#nP0zz7IsA0oDN^sq^BjidZOFfoUx=Z^om?yc9)a)sV_*2G>PZr_~_+ z2b9$HefJRy%w#vg75hl^=aEpyw@|qQ_08+ZyL%J78@h-I_R~l&85$TWcOu>tzm-LY zFDYyAjD&o!D3Y^@n$~8FV0%~JrS$V)|5M}^MBdflm0!NC*>HBag-_{CiCFHOo&79K^K~C5JNMQ^oa`OayaeJ0 z7Fj&gyD;xtf(xgC`a%HgKL}9y^pB_rkE4R|&t(Z6yIr|Qz%0{jLJ^u- zZNM9Cm~CV5_=!-&tcm5LP~{Pri3ZLgK~~O(FDK%jukl6PQ&THh;vp1pbIX0~CUBT? z?oF7&GNo>~$J;*qu)eHO%;c#YSU@8!IBMO_3v2APalcGb5Ds~&rW|%d)EFtxKwZOg zlyggN5u3t&S|`HD5}4WU7}_AZxmfC1F%bLllPSn0{1p4x3ZL7TZ`%%j4Of#VoA2Wz zzOGn!R}ho+9jtCL$Jfj&gYAetncI5C%Jp|Ui?`Z3sYk$j#q#do1yB^h=~s~FsBVSyKUXNzd3`}&8#`SHmA*xBd$ zeoaF2i~D=|^<(7Q{wj13pX643-IDqUPa4SVV~9z5Y;CKBt{tEeoFo zM0{KCYFV=jQWOT<^qr_UnJmlxl09>iY)vokN`AQ`*w~>eycKbIPV4uf3T?oW2o0{+ zzBYD9L~RPxYF4OHi?A|8n(*VR?@YI#w3pi65t>m(1LV>*Khy@)K!S*1uuMPO#pKM! z!t1$%0TDX^=Q5GO-9}Pi4>$|5{$&vQ*+tUVTs2a{I2Y23)Qp2iWLUU8>}QLP zSh%?i$TPnVES#Q+>m6Ak)3z&zDg7YdP{*2uyO!8!mExQI8_q=RQtJ!-8*Yzp_xtDc z-|QH?DE~qhMjPGhlI_Tx2Xyo9?L|#?1^|1Yl zLNi$SEV%!af&*93^T);aO{IrsY@DGIZW>`q688$d*Aw5WY*t;_rc>`|7kY0&ap<|v zhK54#HK)3Y>e4rC&`(5f=UBX!`zB*~%{HT6pC0JdE0%YnLi#i2W987`_Rt)}H_(jP zZaxzQN$ojHFl5ZSbNZhpNnnvJ+=g=K>>uoz0_nlRGVH%#DGRW)N?_S5iDmN+hUE>9 zWmjQ2=D%P$DZn!O+kloYV56sHwa23UThP*6SbmxJ_bvKEV-GDFp1=}KVp;659OSXY z`Q={xFIe6PupFPjQkcXt(_{JWFKN(kb|qqB|0cA}A+>+QxokN}>)Hc?^`8s+u%pvm zg?G)3nWGRE*t}QFhLghIWcX`b&i9ZXofahCcZ?-=CDFyrjwezMQvO)(!AkieBV`Yt zvZqqs&q!(IQ(7x!d`3!hpK|s$q?Bi*tY2&O{LUYDeMU;?TT9urOcjFg9cnRjsBT)mAb2_AgnQwFQdrx_^&ead{5c{?NJ zLZ9+EOK$G*jFi)T%1D*DJ0m6JY1>`(T$_>7+^6iIl%5$WTf16ICu`8|mXWgBr<|sG z_R2_^v&PD_RLWmwtP?GL)29?E<%f)v4?MPKF&%C}M#_sm|!)Gd3gT z8lTcfW$wyI`Qd1z?L?(qnUT`P({`j%&dNwR(5D=vlp`}zcJnE_D`oeLlomcEM=6_@ zrt3oEuSUUU{D?yjbcfs$#KsKvrpMg)E=_x1833jsx`LT3V^rEPp3x&02RpAX-B&bo#}6 zVr$${?EX<1jstT)nI2?>!H<6_6Wr+j#oz6=i~Q$%EA4m|j#W$lB->>cJ>`7>wXG7D zqp()ztJ%-@m6)C%nlMk-wf>5IzQ$(x_3j9tmCfHA=N%;%uHH>Tba7J0uov>z(jDWc zc3Z|r$qDpWt$PqmW!>*8?V{r?rHcyL;tp87bx>V$jiISfi&tzCZv(7inV$5~R!bex zI)W=RG-B@oaf?LSC$P;(n;+j%UQ*#ACS8S*wS}!3^UIpDOL1NEHm*iFzGM>zvdAXz zWd)Jnj^jG{hO%|pr6cee?kuWl(UEaS1J71=`v^~+KU2THm+o7LtSjc|;S|EI+TN+% z@TYKqE?D)bbB}3s;vsvgv1q|k*LSf&{^cQ>1e_rV{$s}7Sab4QeO7Wneye$^tRxJn zm#;%K5A~!{SLvAeixy?TjpTrnI}#F?~Y?^nxWJ+s0f38BD0F53aP;5jQI*ZBBO}8pYOvD!PDu3wA4AHGd~cin#nPRKfj8u;d7_z;b11-R@=ttz?T72RQwaw3vp@FirkLk#$Z05pY)FEA z#nBcWi=(|*1{Dt@V2&1aL;*bmD_7v>$6I=yp-hY1z`_z8)D}Yyt7&Pl}m^TWTmlrfsom@zwH?;b7g3nsYPKzeD4-n8lIDNBiJLpR`S)qmffq&%$RC@L;SQ??1dgAAx|4zJ5*1?Y@2zl zkGLaI7bE)90rZaVr13(A0;_X`@FMrLH=$kWRqObO3RYTQMhYo!+QrOF!veolBZ1W- z{fT%1h*Wyq2|`1aH;~$}QA$J=4ZoW<Bl2PP;^1U{z%F)<&!x<*N)=zK;VxYkzncAJ zexa-N2c(~uNY^1;(9l;`GaR`S1FY*7TKST}qM2IWq)Rnsb$NqF^jKJHbQ6G#Vh-Q_ zFG7^@1A_RIDEku?SDDwrq2jcuQX@jWq7duhMFDdr1ITuszz^Y@`HB82NL0X@m74+* zALc2YfM7B@p}3H(&r59>N>BKuPjmt-K_clug}@WOt?H#LM!u7 zVGQL&Gmz0?eRS9GVeW+8)$zQZ$9W|ff_u{mJ{-+Z5cG4sJC1QS9zw}Z=7gYY=?es@ z*G_?PQV;QJXAQ`_DaK@8+W8=@fx&DA8>cH;Z2}dU?@HB3n4X&eN>2t@UWRy`LX}yW zz)lbfTQ&5SzX)};n}j~)pZHWqDQYPz@9%VUe2MxsM!hNvRSaX+o*(hKls5ZgQBq-f zX~)pjwBuAN;D`to4io!sclv;3RmufhJbOp}swtccZm#qT;)nFNCkOinkIwlRIgoy< zhKUQ-<5zJ^OcF9@C&v8I*bj->o(WMU)WEHT3x>5Riss%E-XUv4!2@|MO7|lVMXEyIsrWa0<{WKEtxys57LtTM(lvUh%wN$yr zT{zIzxO3s$n{U$Q7Hq1CpFXe(XD5EDGR_HcQy8W8_K2b%lIbDgr|?-YCZ6j9Rj+c_ zS!%$olJa41wDG;PTltn9?l=M;g#ndLNH&ZS$G9DCxr#9}+II@ZbCO$6e6VapbylcC zj=CY(Etzw7a=Jz2h@J5l%oTovWx z-BZNMen4WVk|xMUgD6`JNEUuKDC{nxBtC~)7OLz*?uHYCBDOn}zHZ^OPH~5m6--s` zUYLaD<$?`oD;92CVU$$49mx@>0Px(Ycz*5$jcH&v22?g_VD6M8V~#I5#eM!uz@p0K zyZ1vf9^twZ^)>l#B0~OnNFv za(Tc-w;ZxcT}aT-f&V1)^&nrvKC)4!Lp@tV!r2S`xd^|+BN4+Rsc{!r^`XiY2s&}f z?p1c^Jyg*$9pCZ3-YE@sQb;nE5|Q8PK>oT``#EEVb32LmiFC#`y}6_D_A!h+c+eIT z=jv+IWPguYlICn*2gYxu`-h?HUmNdDq}p#Irzh`IO=pm#@HHb$cnkpKc#=B`pe|_M8x-1V3&m>@&pFZNOvR2*7QmFmX@LW?2sD=E^Ny5d*B(kbp=sz~SeM){8_cQ+p*;SM7q@3$W@Hq+SZ(Lf{^ zWZ@sbr?6J|f6>R@d^GB#Eg#K=cLzRp=fe}Tj=fJ9?@-0bl*a8kF9)v1+CR?(Jf*XY zK^j_e&~pvd2+jlZ5oz1OFFsa$tahYX<@nLtS>?kRNZh;^|HdkR`2vUIs+*N>%(>%| z57=sz6?$%#$9&rzf!Y0_s|Vk9Rr0a zHY*d<8?td=-Wl*H=nBZCYSl)zHaPJ14W3!7p!h5`>!Aslh>s)i}g}VPqZe+%S;jSI2T-(5CzRgB5{UQ5 z!n|>um}mBj38A8;OzWGfhS7I6T~THQ^yiUZ?$C%?epjZjY;d;-3)U1wFEOwl#m*^q zgi@JY)brU@2C(%u?Sc~^UjSMXIY0^FM;kS7;r&&+aRH}}2?%Zi(Fqn`pWuVV*PgTi z%Gl*!tnCNCM*Dx2QjK8$8cfY7pKcURJWdwQCd?WtX1Wa6A^k&lhQ=+@9vNG_z~4rI97RXKVl~90h+4=YXGG zwXNL)wr$W>ts{1OzAS$0lWn7zjp2S+p2`^xcOUv7KCOyCJv?f+f-G<2 z%qBuhFVX98_ME_9MuT%JH3O<+Xp>ajPdb6W>N8@!UeB7fvPGBL@{Q*WKR{+q+CG#S z7De7vXlCn=CO~$dosA5m0QMLUma|+SHj0 z&ixYeYq7gCrQJ%bGVHcZGMi8}-xHtbvmP_wlIAt60-WC6J+k0)!v+{&b0zoLRkrJ) zY{ZzX5;-!2*1+D3XuFQ1^nmt+^IWS9Ep-fLj6h{{0oz`qBPKB&0b!};8GV+}-%qnA zga)XqNhHt&P_wHIEU*WC?B~9;^eX6;HyI0Gswv9ukSqy6&!m9QTPMwus&y2tjqWz~ zzp=eQOxn#eY4K#3v}}$Ts4aA!_=P3(DVtczsgiNnO`C3bM{$0}cbcLwEHv6Al0Y@~ zOG7(hX{n@?8Gi+h5*iJL(+q!|8>-@w-gi5MG9CghUVhPH<&j?#IK^) zkh#&bytuj9{C*%SGOKLXqOwgp-PY=qLrYqma!~29YTHGf{Qkzrls6W>pTLML#{{-j zfugd^zW?-h(az)Q1sUpo=`HAD}@&t}{HS5YT!A zRk^x)kWQnY736B~LEXA7OFSMYa$o8wa^&@}Y$Al&{^5^vgV#l~f zvD+fyFD2Gj;gMKoZ;*v%oNPD0zeLmEUyq8WVeI_O*|qZySp&<5Pdz2;&fOcLq|L}G zV_|pIcw5*VffJx&!%ixSw*L9h9k_O=ZC2L71s|LOWyg``z98eM=J-6-m0AEL5}xxG zUv_S8E1DngJVQm?zdXW)q(7R>IVzF!Pjb#Y5X0Gxt9*acI{1#23SfO}OP0R>{d#tB zWFgdBpll2A(YCJaBZ=N!Z38p1*-g-x#^F+T$TXkg@>pl*iMe(_Te&_yf2$z>DtC*| z-@zSkDHjkeysHDfGZdOwQ=Z8B1CY*cuT*kpk_Y2Iw~@U&rl~W# zSN*1oZHbldhGwkBY!~nEVgUTQ+?5YkuO{ zvzmMibIqw#O2%ic$fH+UW5^Zo>Hd^DMk_2drhUt0NFVo)RbUWfM~(qMhJJ$m$%(K8 zN~pDPk@q22v-456m0qltajl1Ks&h*|Fv`vsW$kVI$Se`pPGKB&HGT?W8Klptxk*0cL0;_=mVb zcdOw|urx3<6}2QtcY4AXnFSpZA+k#-hWD0cfFiMsH9;A9HBF{7Hh5IJ`7S_Ocee5) zdF`p9W0`R18b-Tcwf9sFK-*kIs|!ACxrmuJHtlcTgZV>d(Jx0a0mM@bBJUPxA}+yS zLYKX({^K#2yJ(!+arIO~&@asx{vE#t*?TT}fAD*3kqREB#)@CZw}5&-H$5KV66jz+ z1a>Su3UA~^#Z9(@CBEiLXF&`5*eg~#%KYnXZjc|YulVncZuFtLCgJ+u8(sQD!vk{E z5f@(_w}tTDosM@{55J3x!-Alc7tz+7@_OfJquR8Bzd^v%eWmaJD)d39wn;YZfA4>0 z6>sCBlw5D}w!v*gf-z^8{vYdm=>M+1(kJ9(>B%$oi1jPaj4*Sq9L?;iK~AiVmvVy9 zhP|N8YXkN{2B4qOS9%wB8gd3r$^^IQnn&^L+^f)Jo$S8g%?wn(%;cJ*Kv-oLOQya} zs(0qyAn(P4gjtDuf?ttYGY_&M5f_%-XtCCpeoYre3(I;FRB0H&nD$@0B2dK=$@l-> z6`{&~X$}R`ov@TZrN%Ei->&1o(bL?wM=*8<<1(CwJHapb;Ux+}z zbhG3XkV$TbZK3VVc=dgg|DKc|J$Fd?rsgs!rMpY(hYs==k+IY5T-`*b&<`a>jCw1( zd_jxyO}dM0w(cTRE9T#(tIgh_kB?reJ70BXRMuc5!F|0_Q@~pWq0!pY$Jq5E`?Kk? z4WDtKj97X|>(#xhpl{m`5~RExG1Sb-n6gY9i2bi)gwk$@XQx?2`6veI1~LZmbxU94 z`f4;VlN97GvD~FANQbJ+nBTf?mM3xBoM>GQbYFuOj)O-uZ>{V3HjC!WFAiaA_2GRN zX-HEH=1Xp;b(0C)Z#RGSJ2bg)y|l{pptYcxBs48R0}IBvo^*b2+EIA=LAs^~*MO?v zh&HjUgx_T#zTk0M+~s}yJqnp)XeJubyH-@#2J%_1XB#>xGDoxx=bq~k z?aZpK{DS6B0a1R_T#~*DRbI{1t{__amBa$fBge@_QnfBZw(=40WQ8i;h9Da`f=R)pwsJ{ErV`{ZRPSd&$*0v%GZ z{U}EA1dmxWw+BG(x0;8K`&@{G<bqmQTye*~}lO|=V zdc&`iGj}AV&ihOMSRP|eQErXWGz?+>=Ss>hVHwL#>7sPtX75ZzgDf*|7OUV_K6l2e!u+#t}@~F2Im*@BQPb>xc zk`WKXzt-C@(ENmY$_QRgFam<#vp+^s%Dg4wS;T*kYK5wx|NJ0Mx*m?9d_a15rCY>> zGVUWXrZwl2?|gIS;j|`#iawHgoF>!TzA_wYO1bHcH6^-TQ&I$_?5%(A2Sei9qo_W& zP*{_W{O;d!W%KTW9@!K4wN#`Xs2Vu`QwK@%h-O&7X}3Jk-Ib#WoePN9_|+yLz7@o$ zft#2>NDZ!l}w7IPZj2ZF^n*)J~wp~{dStJ3Bbet&V={Uy9dvbZQxTFsjzMUllWk9B)L zH1Pg3-;BUm?49rMHw0^ycj@OSx>mm3dGan|xu39YBH^UDJYf0dBZg#^U^^1e_PP3v zI-zf<^h!!XX^GWx?u7xy!NEcj-@Jxij%12wpzXR_?C-(n^OPz_Ng(!&efL zoHb*-?IFs!31`CYz#XIw1h|e3M=DI~{mx#|9v$Rlfad{^=XAr<`h>;OpVp56lnrYX zhWra%M~|aJ(rvX@8y0>-7~s~#TM}t$%ubMCD(T$NO`@D|c8fYt;cU*G(&JyqG{kau zrzQx$MrKVFatm;+k^QFjEZ8iyvP|l&Nm?v?4pjzHy5612grs3ZW(CSeCGUJGwC%rt zM3scE^>w*Vt*&OZE&MIZ9J90+39bK4$Tz!_Y(Qmy%xeq-8*@SrYPm&SnE$%EP`lvj z+&mJCH1x12K0I5~v-*A2=WG&sAm(FH--_l~_$$F#Id!*rc;zpGgW_IL#D;ABka0-* z#d!o>W<+9I*R1`*8nL%;#6;;Y=R?1?9?Gi;8sU2=|APFB-AID4u&istD)88|C9&LB zJ&vy*Hbz`-IC2*oFlW>J00(>zZcNUAcFHTTs0SAd9;r80NnnmuQwe>PUu$!&!_a^a zD_JaeH!xovST&m1W@ly$XY=oCzU%0z)qLyktNi_M^L2LDgS(mTS^xC6z$S!ur79c@ zZ8VGZ{Yux|v0rD{R_w!Ew^u2Ln`{qP0gj$h3g3V}yJfh>T|ZkkZ8qb4E6EwL9E4y! ze}XNDT#tF5HXd*z&uzxKZyuH9UhAe*$fWk465P+*PKYn>AGpOvNwjcElq<|@TOjBq zJC$)QUZ~;~Vg%8?Uo~m%?Cl_M)Z|J&wHh8*TuD2A*nbGu&ruDm?>;7)a>tNc^>!EZ z?@)8SXI4`oOCfQc+6o+(Ypo8qI~4?wd7#6U$qpb8LmlV&Y`?IC5M;a5Lzbo>H+o2I z3etd*fa*OU;8@4=3()yI*#Z;7{XphTayl&cwwDr))wNYx^XlfC{EO}EX>@PBMih|8 zEU@|n3EO`Sn4b(Jin5F)QDY6}pI`U$i+tLz#~w}Y0B1bVh;xhJ9L;=M{Ziw)BBN}b z2C@&=j&dQr^7Qn17LM_GB+m>RvAnlY1UGUG2$=a4L`vrtvW|W#EA=N){sls?T3Bi0 zE4J%&Ha+GsY(`IYpf;BK7EW;BwA8u_7D`bDPo(tcYnuTQ^}b;>)QVMO{7jI2x@atkQ!zGL9D#ognv zdE)YA)ad8a_Y~V{Kkp|XV)7H(AIfUXq))s~cYT4ZcJfYYU+b!X6OgfJmpMIueur1F z6A0BweKqoCNa5}h@RAEs?w7?QY(4PnS46+xc_pjDZZQ05cNEkT^(pPspu0=9Yfo$C z*o7SNJJVX(h|lge;MK?XRsKw*cfSmQOGrc&)%brJ;j_wWwK& zeRRb$iE`WAAo%UJkUg*@<;00_sg@{n;U$WR~+AAm10AI+F=;4ooCd$V^z z8N72I1*pG$ilVpQ>VeD+eWkRyQ5QNf*!Qsi(IVq?|^6QB(*|1>oU-Jul1DV_XoO|AC>Pn_b zj86aG*Fx6H9HBQCPcQ`iGS)(TJZO9UD?@TmZdZ4iFsKUi=(Ty7M z3a7dn{~<2@UL{4WcYlaRiC^BBk7XM)ydb=`AILV((U2B zX`@>WdS$Ej;CT=E1{|vf0I#f*@I|kks>M4wgufzWGS+?B|2RkX&VyGcz_o5FV1)8F zDFjyxega9coIm(wcbY(+4zT?2PsWOo+zSJj-0k+4)77~zyrkhz$G*5Vcjqb14 zJ;!{M@O;Yn?MO>qIfW7}9GE0=ut6bFJ(cyeghY)y0sqSy$8fkgt>DQjsB!S8G~n4Y z1K^?rP+1`G>}TkLX#l~vmq>|)S22k&H(y4PUdp=@5s&5WU#UOgW@JiFJ%H5W=-uM# z8am8szR@Z%*hax5DHGib7Q#2^HiH%r>8T2UcK6=37(neJ1=p|195*X!$!+lhEVFo^ zsxxhhEM;l`9MYTSxh~uyLIfGCBM$`I2LUtdbPhk-dtzb4G3B4+ zcB8C4qxqS|0F_>r;>*&&4UoV;;5MEXYqm zubQUO(j5)Nm^*mt$UOq2V^lzN&L$Dzt161VJ&`78%)H`uxkACude?`alDp1NC?~P` z1N_GnwPp_da%?E0gE&4fj|>TplBX#nkeejIoNnz5IjJj$wx9DA*z_bF`;ro9AZa z+wBo%eH%jDh%h$tpFfPL>RY#Sbu@{{T1Nfa~274|y{M zsWC`ihpCVsuT$w+@OT)6k29=n7I9}lJKU|hk~=8MPerY08axSqM&BUq9c`T+Pxohc z;=s+sT+^}~2VSydD@*h)p&e>y-CDwZnN8p3UhM$A(Ys)0_$r@kfp#f)NPi%~On%1>5ID{a4l9&@3fn>ZS)F~ohsfs#bmbmvs%Z}bPWPW(*lckPYVX->fC+e))q-%EkrNsp@0){n_Pyy#$~ zw4ZBFBBTv)d-#t*ZfE~7#5MCDecYz8$}?>u$lb60dy>9a`tK?F{+e&Q$OF@n9&S&q z&+5LB-~F-WyPzGGxvprPJQa&*a##&dMc~MjfzE~}e&`{07(_el>!*6iwLnnGk`8*X z<_!6OKRgBm8#MS1aztAfG~XdBk{utZt&(?=sgyfw@+QA4eOd0&M{_!mC)&1YcBF0m zSmk4PZM}Okz|#ply`r7AHbefnb&t}ws`M$obbfRXK;ahU5=K=&hQL3737mj1Y1r(V zi9|g5S>`oNVbh8l_lsFtW)bXLah+Jbr$X zVPgs^G1LEmO7QeQ@Jqt70qK;A{>Nvl;4{B`E0>Jzq}2#sa4U@bG))Q2u^ycv+c~&4 zH3BFk-YeR1iS06;jSGv_mxoD|iLQ5p8Nwtow)MimXE5V-7X{#E;Ptt~0-qLu{U&80 zIZEKp0hqhag4~A)ylVh1OM(v&cr(FORXI5m{6hf#FbUpQxfcdtE@TOCw-xwZ1G9fM zRQW3@YGqOR@FlIXLKVxEGj?@0!ZG1?S#V8&hJV}2Jy)W;1gz5=o+guDKaJ)@vg|$? zbNLn!D8Zjw%A$tbbt>M=gJc9#Uog=p5|iwpZ?YQHUPE6FdZ_y?R53uHSkG*2GmF&0 zYqxJY4a{=f>5wi}JC^w5z^dNS$rC}UkuZCVISuNcRjvSC?uHM+yN={nD3bw`z4@$% zFDTXBe1mHnBsb9Z0l&8+V~J401F%bgQf0-%a$ z#k;uH@teTXOO=B;#nyi=u@coqn1{2;aoB(4=tmCJs#=tECPyoB1PYX$iR&nzQ@T-r z?WilsPMfL+=LLS_o}*qT#zU0{67t7Et1c=(Im@hL5j8CAeWu$mUNdB zlD9@~>;`uu&lvGbvotqBDdebcwXVr7;FDKhKDTq4ueR_zj7jpzhNM5`Ut#=k4+wR8 zYXH}X#hv;8=-;rkBE3Y0KSjK%v+W-w9unSbnD@I@W9rqv-03^rdp_T4Akf@6JkQ*& zMmOIe=3-rm;gjq0wiQ#L#O^_#w3~km>!|?D5*t2?GVb%Z9~Gpun2TC9xaASevfj?7 zXb6d_b&bdCm8}E0v4T23d(TsGzUqvH_lU^Q*0|jt)>Raxtx(-cnK1%{aqT%F$@h=b2|u9)9G;$6KCKLdIV@sShaP$m8^y$em|neG zTcr?xefh?{Ll1JFVb+XxRx$UJ(aGk9=DgD{u^0M9zM^fJn;wf}G;^WefF_peFWglx77uX$gt>=+A?5wRRVGoQ6N15;`p zwEI)xJs5f9Xsu7%!Zh>`o}xC~eLi*As^rnoUmU3`-+Rc zr%n4#b-R4z`}G>cTtS%7jnaI~C(p2+QSY>dxDY@EB3Lg4szj1iE^> zh|{y#jPgs}&gbZ+y*l^ygGMtIg zFiWh7(l3HueM#z#)-(e!Cn1ZEdGA+`_ygaBEp7+3Ze$WWX14 zU26httvo>R=+I#_MLRiq^w!IHYn_W?T+97=n7^?Xf7tqExPGXrt#=>(ON3~Z>Lu%7 z?wc`4O`t}0hAdKZcTYDZrU7M(#P3WKKRH(Wehm#WE;)DhO^Dx(e3|%d#409LXQK`W z{Bj}U*UF9kx0P~#;ijA1A?T>+Hn$7!7{L|^qF!A5-felA(a0ir;pH~7WEE|*D-?-d z0CU%y0M5cZ1p>I)UBuEwkUY;%wZ=?ILY8~Ty(!2B4;cak0UWkh5bsm;{=pBt{9T=r zKZRZr@|R~t!XNILl0TKY&-<1yG0{PuR$$4J;&-Eb<o~`12D--2-*!v`4fmi8Oxof6S?_z!a|{F3-*u{I{qbH+dXNZb9>MPqm|5fY zH~rK_{u(bgyHn4W2Jn8!C{Ku3c{NpduJvHX6omY8r@Wlt)oS$1z+n%^EWY#N>}RCh`znPvA>@kt{R__xt;!b_ml%Yxk=xnvo^!7qHBRs#MpGA>Me}zkR$%#~Yo%Lb8 z`&vm1wLIlg$U&a)C9kVN^=>+FV~$zF*{(gKYn-P;3T4wfOcGwgEQEwt`Dc@pZ@Pvm z@><#WKan_>#(~isnW4<^`AIb_9VJ!x!=lJ-Y{=v2X`2)P@v^ z*)7(9I(J8bw(Huky45~kQ{%JG;*}!8k(JdNWEmaHbmedOR%*19)cf(lknjp?Lt@uG_*HmV|kCiNakxkQ{U>bs70|p+CUqrqf|$xAQ6VU_gE8G&8*9VC#dp3uo*eq z+&7E}!N{Rm)}K_bSWq3J@2lTjL>*JeMfDmQMbdh~p7O9z#e)pEX()aq5#{+%8a>ejlkNUNKLumXQ#%Nl`o4M z;j4rqmiy#w$z_dtcZm0iyW%-WGwzq(#KJl*jSJk9+=Iy-FNP66_D-zUe#2LCwf4_L zwTx8_BPM(VBR)mmEy}OE+<51#_e6I_ZwBffpxOs3m0-4eojGMd>KfoGv&wacP#Ke| zO6Hi$klzV*F6YW}z-S8xa5b27VSK1!G!><^$M$DP)K*VJ`nyGFg`|HRq6T|7ZCst- zRFmH{pY1S+lsqop)P(5pjk9u?&~0`z6!MGZ-SHe!c={(2lldY^yDfISRf;fz-PN1j zV`NJ-fuy!?%C4Oju&4OWH*L%g`^9QOBdni$u3lkyxj7#LLoKUmy!A3!#bqF`$#E(1RCx)8S65 z5FI}QIo&s^JqX;6WDHs(-nE+|5u5FHvzBH{AhJ49Xky>|Csz~ef zBJTu6zN@v$5=A6kC#H)0TAfzQJwcI|GmB_9N6S=^&(e#WqaxALvV>oE>g9x(%4d`z zP&vILYwx~@*~3IhW+x<*X)K*nHT=BfH1;9i9@#&;X}c?5b$ppGe$$LJUwnmp@d3s1 zwZDtEWx6`iHG@pky1`Yv5YK(n`@kZTo7L_;c3<)f4{@q{KnF0&?P|2F(l)6)4{L{J zbi^ok{oUg3T6d-WZE~0NN;yq~QlSuRM3c)Sty^{cCzR`N;;XC|v5LQio*g?uea(A< zHDW)j5#_b;1O*$x+zVMkt&>t`3yN_%vgl2D)hEySXbZYI z-cor&%6KS?5r39~>>2=|pIZmpko;vb{S(sjYbrHH=zm!MJI7=F3+Aal4mMX-88rO) z>*9x2svf5V+iL>&Y=gUs4B%7`yd?wpfd^ii0bJ~Xg(+ZhbnH}L<;Om)ODc_q)Oz3^ z8Nity*z}B1Hi_cyf|2G3oQX_NR_Zc8-axpLnFz1P?5l;oCBDx%s5K27T-V^Uxz=Dg zanA4s{8j|k{WZd{4om$0)&CwrEmu_irsIXe^rxvJqJI-}@3BDibo4kuPd2BVr>89h;QW-)%LwsU-Z|&fL-(&#y^T1gi zI1yAj@Uh+vfMW0o;9B^G_QxsRjqJ2{AC+1bq|?4<@6Y6?Z{N26Xdf2nW7n6ujLU}n zrQyDPDdPYAnn_#6;#xxo3MJ-)$@hf0lGc+ydoI+XJF5>e-P!P1Qg@1M=2z}$hZF~{ z^PV6xaIZK!u^kerFMk55KWDbJ0dx49GRMN6iIV!~2>4^=0{GFs&e0jb4jym7A0D_@2Jl7?Y?cAMEU0e1TTSS$ zraTKrk^eK&B+ir0v3PxgpPXhhVAruVS)yiMciiMiEY znj*Ho2AWsAL}*}I@Af1o&*W<9jihQz5`5eEboe}jyM_$lbPxP0131+KXJ!B=88EqQ z`7DWP=g-71Zl>0FS~k;kJ-9a|xCoea+MS{8I7~PLGMAR+9jJEwGBY7zi@bzAZna3l z@~Hp`3*ZwCP7p?$Z4U8C!4UgikhDIS1GOSGvCMyYujq4CV2+l{qBm7X>@P=euCKjr z;J|^}Lo{pkX+^U(9hCh=_JY_hkrQim1$FrI04MRwryzsVMhO6X)dOJ90ZuHdw}Z@p z_wOcXardfRxh>6Sl^mZ?mFOcIMNL$~7t7C%m>`1wO6zrQI7#yNbjl}w%*pg$(%$b@ z+bG`Os&#EtXLMQs?B#)*6f8^vPxrtdGk|9%sa}`?kNM2+{~hqz4B!}_GnN8k8E<_> zqOLh@X$lUtH~Y*3GJrRFV9yNT^&WV93h425@&Fs%{hKo8=FdohZEfq+(#+$kJ+?cq znz$@xW*}r8L*_))5cY#(0y2U!DvxC3J(WW!3^|`=J$ z-s@6%P5id=Wyet}V}6mQpMhDJK1rJ3Zua;CpbON)+pXVRpN!O8BVSg$dj`C*yk14bY-{OGVHmX=PsXF1`l#V4=Lo3ul>@0 z5^bnsOOox3|K2UXL!+V=cdp`s6V1v#0YcD$NxrMLL_TZW*F$v-Nps>)_{#pa;KUWf z`!)W%Ap3{PWh4Iqob27Esic;4M^b@egbc1930*8_#L0=ZpIi81z8Tq%{Wq<{OcPS; zKkQ$3zpx0A**#i1I@OAI=c}uVGjGiuY%>g9C9i|7n=;EZgip)%`z@0GKybfAXLd1h zOtacOm#3(?TE6HiA0_+Zc5AuY^nfif)f9dO(`1~lc#{F%4((}}U)^IX%_REFi@pCs zXjf0QW)t;NnER#0Ad9uW0P2F(rV)gqH@hE+fs%aT$rh|T8jP&w5H4hYVQ(HHwj*w5 z0M(R)^>T9S-ieWCV88ZWFaPw&!=6-(DDTk$+6lcOA+MYQV`;BARPYsXFe{AO@&>b; zLkO_o9c_%(oE_}hN@CSo^B=TFb-p}@wL)RZP#_|=Jp z)uEW~63Ty|O~r!J+y<#+qCdDz_nhqFruh{MhIQnIwOQPI9a-8kD_U?buWdQJ^@HO_ zq_7RF3eDIwLzTFmeF)`*-fKfJZ)dQ+AK%~nS>D>tCB{`>-htiO_K^>(p=6|HR;%!uM3dj7cte&yU({qL@za;=qD2U_HobwgU z*@UI4?b?l)j=d;mSH8I!5xXg&2OkGeeD!xlQOVj+mDaXqMOU%Wh*?o8^wcnrWRWMt#aHv@Ti;rqESXJVHYFBE z_R7pYC&iBKS4^ zWwHF>CO`y{I4DL@7FlIiP)0!*A(CLgpeQb=peW*s;*u!J7EOYT!ze1aFL>NIuDGD+ z5eaK>1#v@AP!#APB8UnIO78os{$`S(=bry_FV921p6c%E>gww1>gug@CLc)BdfIk( zFx!oIBvG)O*h@;0UHli@@ODt+>~|44JC6wK2E=-=Q)TeLZMR}FlGw{K39KrcQ zE{8vQZa}>Ey6no2^P}^YfoVXzU|qeOsOzvQZ{&)+1?y|OTS+U%G~k;ZEno0m;|L{G z7B+CM6~=rMcax$2ly}<-9~~(%iQm(*cPvRSJVLx3R(M?Yob-y(Rl;NEMFS+Kz*LW? zVqjGY-lHgAP}x{)dx}mbG_48_(5GFf^id$uJ=GV_Xs>DnfKe^n5nW%cg+rxRLc6xl z-pVqSm_BIamVxo^TdFhtaq=X2Jn}I$E__}kKCjBIWaX`zAax_D=Wj@%{}=wI6L0*j zs2h|V$XZV98A*|dy_zusc?(TFM7<&EdqdQELylJe_PW@qZ0@6D1hN>K+8e=yBFGh; z+4Iy>@?+sfU-=h$OFe26CiruDtj$)FI(rx-7Wt+#h6qOv1=^GwpypX&@yKLyCOCeQHcdVU9!rSRJuf!w1zkL- zDaM{V&4Z3ecDf76QnNgtc(a7$RH@4qqec&ion$8Ur%Lp$ zmi}T{8CET>XtjD{RD4Aw?;ymR9Y9P~5!3Qwr*7lHhJr@L<95|5%rso8T7ltd#JPQ{ zyRvXqvXIwQ$hp3dnVrPDmAqmE%RxO`zpLR(uZFM9KKLqb>b3?J4<}2&Hrf|{U=1$# zA>-uY@x2-ou`8%RVP0M=zc%X<8Qs5-PGw`gwQF9iAytR`17Y$-*zE3IoI4c__!ZT! zm-*#=IzRT=WB%&_l}qw_y(CEqm2N}E{G(O@vU%zb2pJF8s3G0fgYg~F|36om`{(r< zw1T~mw=I^AuNpiSxv6=7KW{S_mbgqJu#iLNmW4X>?aTkJ{BObkhM^8bl)Gz>wu3jP ze?|fSc<^TaDPB!~-M=;mZ;)TJZ~b|j>yN2AZ}R}@WZhy*P7Sg=Ygv-^u>6f&N5}qw z@HNHW?)vmx}E% z>X$5Wu@dvs_IE@x#s@#&^|6J)&zJnqYxOf0zDS>VWW^YI$H*ZxeJp&I2i*s9H`s$( zde9VsA|7<82aOY`qX!+}L8l3Hm_X3d$Cp-5QT*)cf2IdNTl$~7d-~Xe{m)Klv7 zc+8jbxIP?qs7oog6Lx=HYRtULM^Ez6dLB6I8T`S1+fwv;JXw(&h)c)zlAPV#fEIy< zSXM+i;*kSW<&C!T*e4QcWl>qf!NWG?9FVw4%Ewza>;i^AYI)5MY5C?>aM1F9j7_%u z6TOu_(zpa3|G>r#QvTUP>J1MXO)8r-yr@Ng+N%3VzOhI|(Xp&+eX0wUs?4p@N<=Ku(#H+-aYxp-xOaVA2Ed}o zW&BMq>@2?cM8|ss5BNmionXifPdt1AaTR*EW`CbH*QdSOr+vexjdxT%!#O_gbRRcM zaUAFLz!N?25f8l71KWDw{T?{Z0~>na#U6Ocx8|3Z|nLdybDi%*XcKC$@)={rY&ZBfQ!^S!?W* z`6D00lX$!C@BGhSx{fQl} z*jUzGKG6!FD9z{0_Q2mfuwt^I>+FI1-)?@NF98-s#sEt%>i2(>pu2TK5lCltM4p@@ALSc zR`?Ddo}%zLA1+XMj1P}ccqHNER>68WaJUhZ6^y_6H$TsgGDFwfOOZoifE!Cwptg4r>^A*)w2V9e~%$ zPBL&kP8YjH0r-y;_*tcXF#vB*foBLjBLM%H0)JNml8FKM%M^Iv<4|&W0M>=?zQ{=e z5BA_v2biJ#ypL^YH(TZ^;U5M{{Og0RRKq`1mO@pd$JHS9||!fUv*#eIFd0+yd;{^LS zz)GIq{rB~Ge;yC3%Z3>q%5D2m)KETPi1{s7u+vUX%{CQ_TJC>0*LZvql@ zpBL{lU$QHr~bmT6wLQh>os0H*W@6~ zuc989&v?izp5<{*NMUf{ga>^Vg@UODTI7{28>nC+RBU}pON6U&3=YSc=Dxb!d%T_) zuKepr@b{7o;+h8qVH%8z9n zr_{QYIo|A8a*(mk?fPWyDx!w*%&faK+Ht#nB{x&;C^8~jRCEKuAH1;SbA~^?&9Wqz z{*h(#lNt;4;4Sr9$!N&lj6h*Qy&uBBC}d_eSD4;-S_X#h|i zLI;fcUZAkV>wJ8$Zox1$T){=^HyIY5*isdzM4cXzXq^NR6>X}IC#h(#bcSBZ*A)T6==ergSi;!p0BA(~i2FS?oM;p(l&I^3PACqBe#zvr=@M8lf z5<2j_s)4b6wP}^t?=|Kxc~RXJ(2#ks>U0pr`8kiOvS^SQOVfRUqu?UKQ99F9%{^=g z4%EOeZXhI}*oKf$ify~=zzIs7FInoIFx6J>Hr?P=Tr84n=(64#?kx(flGImz=)QL- z-*~u3pjI292-KP7)`D3LJRSQ(0Jg+Y6J@W=?_z3APjirBJHN=kqns?>w^8MkxFZj#TmJCt{M;UkZ92E zoE>DUtEQ-HY4C$aCftnR=RF}Ra##2_JT?|Z9tLw-sI&!`IVu39?B$L{qChEV&g0fZ z#p9);C-8C~FRr!oBf~NlUaC5W=^w9RRuxmsJ@hF!;UWJ%i5@x$NNU8mNe}#7V-Ot5 zbk8SY3e-~Mf25&WA@>rP$JFl;=Sz?$c78YCr;9!UT@@`;<5TtiIrTC1&+Ts6IFY`| zwU9){BCq080Z};l=r&n6b!qI>i1adr`QKiwQ>J4!_GlW4fAq1 z`ypQAhc!TBjeeh=Z~7ypPdBn2<=!W^HCPbwUReQa5PPO*( z>U1kU656Vo!w`n}62E)I>(ZtqfjgPhGti}LiIFaSjhNIJwyBiTxQ+H8<)<N?yyJo%_t(l z(u`~Pn^ForswrfXf9YfH4X4xIK6N)LWQbCOa^5Q*<#41f9T;;|(@dY(z*d|HEO*^T+p*mISmZhQrneRt!v2(!(ExlmnFNbx zUC#tXF5Q;O7jJex#fT@Zj8wKxXN-UZ2pj&e`mc6!-F!1CW05?AXI(5feM>kp$8w~D zH0xX=lNn`yo5>W}2c@$2@Y$acoV#OYx3R@YawBaXYy z@G6F2Txb5`k-eD9o`6Sb9BCt}+A>X9ce;N+0VdKeAe*`i!E?w~6nP5*5Dm>}sm<=T zkQvLmz*D>IA=68ZSfBUqjpIagaU@1G3#=?4e4zC4@Eccq!T#(we-IUa3hzho!<>Fu zZ!Ca_c*g1zQx=BV>>F+}4o%scw{|n&BOdru z8*wB27auc*yL$v@`?SSfE$tYew#=vPNt~svr?l~A2T_Wc@%01zWLBi`$38r(D6*1F z>4nf4NsK|4yIR`-C9WlpBJDxroku$g6a~a8kAIKl89T)o=T!*I zjJjtb1iZn+GV_$YSnf1RFXPKD0G5qoxik4P`2QFx=^+&HIqhYP#)nVC-{RL(_Ha1g zeF_%JE;z!5Y%SCLCCBDKx`~Sa7h*&4jmeuIeWr!kv$-nk}&JPr{k<|@i^%Mrl8z5tCyRec@4v&wJU*}w_f~wcf^6rEW~UgM7ad5|Yr(7$7Matg1>vDV zSPb=A_XHyCsUpYW?^4L68%+1f&^}j!cO24$Vc$2x{EMHM1 zy_IQ`1MzHNuOD)a*i`AhnQle|ilr9u)cYyUUBJA5^9c;@o$f2PY86FB2tgrxG_p?c zNvHaxoAXnq|4#QJNx?GSqO$Je*wU!rn#DA_@5}s3s(>4mGnO?DP*G&G zPo`Up!FH7|=w?1Cn)+Gt%r+#`88E z{i7)IaSJucQE>7_Ldm%HKKXI?RVB~zpv_iJ)*r%bBjQfC=Q<(kZipIzsC6|&>xe^9 zzC8}TFQ1ME_qFbQL1URKkA&sXVY<^Z&R zx+XqV1D~pyPqosg8V5Cg^!(lSa78vYm+*BWQF>tmh&qZ;LT^!nd5B1d8uz|W`wnRV zpOFN==D|-19Lsvc$6i4!y=h{qpsALs*#x2)HShANzU&42G@R@`4c3;Hk>kU98ENd2 zTTTgiWQK!zFRDs5M_8w6|H;0*<2;I1UwdA;P9EIUgZFY?-iSWLgEKt%aP6;CUH-aO zZ5esI8AMl^<$obL(C~71Itdm8AGI0hXeZ3Yx20{5OMJe|YUW$(^F5i&z$|2zUDNW5 zn@$Glo2Gdb$Uu7tUl`C<2x849^N|I$_AiuhJaem=c*!w_ev*`_2YdmAMp)*pK{+^x z*$T7Xbv2@zecDuwDALlkRujIGP`65V@)c6>_ZRBXTthdp$+;!j13aI!+pxDte8et%;B{7LVlC3k$Rnsq<@i&^*A02I?jxd_1V%*XHCS}%+9{JmhCi}`3{<#m!|v4*BV2Xp^l>qfq2giLe&`8_t$rmyOOUR zV2!R~^MK#Kn|kJml5Tm8JMWvf_lq@ke`OqcOSWh%bH(c{G(z|0 zSmb2EzHg^mb4S-vwX5w9NX@UfzdW_}*jU3lpU9#js9Iek$iOr_Hb zj-b&SsQU59$}obC>~40gr_mfRbgMg$`p75&!3vwQRJzHAQ)>dPj`JuB45i&F#3LoylTt1 zjZ#Myat@mJCoYm{zBE79NU3?2A}x<4 z1vfhH#i(SNV6%JnMy4I2<#x#p?2d;uI|~jBvm~(Iy)Mg@8%e9c>y-0R4}N<^>Q)lK z>s_e_FTe&5kgP)+;Njoxu2K~1rH7mNx18m>$?C+T6wNlY=S*@VcguQTh6P0qbq=RXd*) z?Dy>v9QojhL_v7QO zXuAb%wfpW0WA!yl6rFWD(Gt7*N77~Ekycbb)ttv)AIKY1brNl+GjdZH1)fTUl2Vr! zJ$shx&13<1FU`H!g9GYd83yTI?V9`8KFM4r^s8N6z#JiO3~MB#?Q3(L3P(isCPaAe zUD8{wApg18AiaUGc*y&F1s#L^Q~|D;&Lpr^wF7&wB+~X@726vO8<8j9Wuq4Q)X~ zuEtlq!W{;QFy`q+){t+LN18+L{jbpcU9!`g=ZTo2B#4(2H>a=MO01^3n*Z%lP_N2MSGJ>=Oc zh$=_RO|OC!c*yMrxfvnZB=e|ty1!kA8h&??HSNV!Sw6=94U*HVARSf&+2uRm=S)Fi3L2F9D|$jj9&t*2`T15(S*Gd z78N>H1hvVW#ZX-N!&f9WNL!XAj)J);o4xhG8EZjk8=;(7dmJmW4-fnykcP}L)L{N{ z(>(|ix1q~zd=Z1QB<-yOH0mY3wna75qPO_kw-YdBYelYa@KT@uyU&BV-0K%1lUw#^7kb_tlB`?sJF?@ z0~eO0>>5%g{KtX{tmO3Ed~GXH!|fpVMGU=ap||QA zovRMEia&XURs3L2=TA|q___Z?=T@!GTg#|bnzeXgzclX76xD@ix>g{y?ZIQ2@q~}F z{4SFmf$%N|Ld&=9H1#{Yc3OFDh_zo?p2Fja1lb&qtW0b12!m{b z-+B|qQ22?jn)FBeZgSu7O**D)I=4$eomO){PTp-l?E)5DgdEFw<$3M=;I|n+Z?=I; z6cIg{I@oJoH(_E4acvX?jNCP*s5qaweMd4l|JNNVVJ(*(Ap=6)MX0gC!@G9q=`97{As96;oqoN$ zdj}hg<_rU$9j%%tcT(uCw;6|{rH81Lc$Y&*+dQtNeIiZu@f2_{`p7_YucO@W{!+Qy z6GbSYBlmsYFK?kkzmjZbF%Zg&O!lJ|kh5jpm9JZs%ZL-pJHsscTR zdbuW+b4h%NF8zv6m3NG7gD-$TqP)xXVq5+bYddmziP0@@8Q6!AL> zf(_I{>W(H(HV7MDSbubt2o$xa=+YyksAG?*a+0Mvrj)oJjr{gB12;{8CGnr+i625DEr^c`DiM{l;`*@H!FB z83qDGuK{;OxihJ-n9I17V5KG4Z|0jj_E=+2I0cSgkpKOi~b<(*>(@uJaT)9K{3bWoANiiyWc4#ly`sBFAQ^rfw8zDlTK3h`pp( z-#&lbk&zbja+gcIpJOpDN#_Omx>SP?8j4Ui6(U^$my(xRU~w6MLFytWn1oPQcWlJE zNX+_wuTu3;`r@4oMxoMYIW-nD5OOQQ=bV5#Zp^x@MEgHfd48{Cy^k`3???Dik5r)& zT}(|48;lXlH@R{R7RvQ7aJpsS^UaQ*t)$p8@!Kw+BUqFi_HA~EUkq9>BjMnC^<;?KhL!w=;Eiqn^ zSu-*E!~J;HCaCMhn@zE97I|Ht*h}I@q7?RdA)N=*Z9FkaPO6PHIoNup)zIP3049Tiq-FW>w&|skzsP843aVF4zj;*eh~9Lvf%Zkb zDr60n$nPq*h!yth)udS0GgTw;{%59as*%g70bU1KW9O$e!J7l{JAlEdQS9!T_?A$H z@I6?S;+mQ%rUoV6M2diiEv(XN?De>g+>6>jz&1iqQHbk8e$R?f=|M^vo7clKu>azB z2K(qD_s$~q<;V~t5A#RoW~a!S|8$7WxC$mJ)pSc0-ouO}r7$6NOFt{_C&0+l1I4MC z7*f35E%&k8s$~**t_LsdC>kr>;k`9NVG>9jpgr^a+GzzBQlVYHBM8G7cgFn5<>_XL zUrZ<`)#DmKxl1lT7MI25mhM5EeF5sl72UypFFhw&71tJ$ zs`c+nP(es2QupGyRM3}I#XAN%)nl;RVO>4w=V}Spnbl8qf5D`mn(~`Eec8d+wF@1P zK7FRkS!i7U1tQFgp?1G+glBknTFkY!1mQcGI|iM|?gtnzyVZLh<|!|QY<6`a(rsU0 z7zbSy_(g=Vc@m?V@KZ|=?vcc3s%@d`ScUOw!>DS{IVV-jx3{6G<*Pq~Qi7s03#B+R zR}z)7ERU^(PJ%!|+X2{{m_xj&CH)AVci>7Tl@ z6C0BKEdyl~@no>SlKDc*l36h+<;R%OUX6RYab>*x<>7&1OPQOBmoT^kIee}M-2#Xi zgN(@J?Z~I#JMn|o92;%f>{%OJpm~q2L?WsrY_(z3DCkH}dJb^ac)wNDk3dU-+4}vcz@N`44$$fOR>Tk&w!!9^-D=`7&5oj|xIP`3a ziG|;)?dPJw{CKv0^3omo;KX*c1l{tZTWx-Pry=8lBRZdWpWNjBk({ZTB18P(J@gm< zc&p2S4z*-&zSVpBDJ=5jQI6sU=ZOysC^E+vIms7!o-gvSphz6IdSUfzbCwJX%A=eS z5`k~Jh;f_T=X`-#pI>HSb|TF8K(hm0w}d<03%hFt$4>HM881KLC&0aOR}^ODM7Ob? zp$T%eO=4~mp44jNQ*!?<_jB1aT29T=Ws0*zJ!d&9u{MI zK+|bPlj{yOAiY#r=KdEfWeje@l9$ACZVJl@9?Q?>_KOS@mK**HmRkcXwUSs4N?~c{ zvCIMsugB=t7^^RIwIODB;>d!U*DbL>GSyyopG;o#LoPGOkF_22kan2$ZllAB+S8Mj z53|0zQS`GRy-pjqn9`M?DDq317H(KW%34MUj=VU*x*w~aM?#1#2Cf(=2b;#A2C5-E zn9f+FZ_@-{?b?(Riy3=xD+?Z%lzj=xp_)n@)J<)rIU|q`jW8Z6y9&YuHiC?hk0YLS zH6M3qcg?OtrMk2_rze-B95^7>z0LeS{B-ph($pK*Q-eX#je}xs+OT`}Ak#LWIoCWZ zyDOUN{KHoF5&klpej=E}_B2Pz2QGK8GXJJ4baP@8KF{sBvw9KF$)Hn#EmYt`{Nf(t zoah8@DG{Z+FMz~;&@K%rG7mG=3%BjEyX0D7Vm1`2eTJ}aI**nJ<}uMd<+*b~i~wc~ zdH^}Jlf+#7Tb{ekz~#9v_h4k9Tyn+2PTj{{RcF*ZYn&7wE7z(RsyOzA@Z3>ZRky ztNx&%zfU81A5-}$Eduo4WNDb$>6#h(evR|W`}sBP@_v0SNqN7n!MA;o<;ft+X49RYWbb2);((8=MmgDn^!!kA=f7lOY^y=woLEcqGK)ujg+dV#E(zlmagb{kByS1Ug!S^h@%K5@zN zK__zGG?1RJEqpxbE#=T+QWC3OfU>W?*i(~Px)TEfcz=@)ZEbZIh!XfU)>msUJsE!8 zaaM|7s?U-`s86>b(Z$EhjbC%TGB>~*fb|2xSa;p9#jZoas=aSnG#Alm9WdF7`xmb@a9 zIni+~@}oC4u0rKUuh0|m=S!9t}2(4N(pm=fC5 z{`KtS{s`TPpl11}{(TNr*0AtGN2@i}?Rv0>JOo7I&<`P_V}8VB0SOMDBMDCS_d=zq zQGW)jpueAI7=3@2lYAmbc6zl@1g=)Mu(zvmnT|62y-{!@R**tfh(ljUu6i4K43 z4__MS|Jol?{9@c`Z||3|fi&ZtEv)YJNGk}zn*OLeS(QJ7m!EGB_CLqyCj(l^I5~~P z>!of_QyVWXGWKqA`94X(0YUUPKKjHUx(m@k%q7h%;~MEfifU99ljmcu4`QP9N1CS( zgfu!pO}5ExY!4yPMcQ6n?jB;oCH+9pKCn&j+=-10yWP=9wUAjr+WI3Qz9W;VG|md46FqP5W?N+unhZjL9@ zl900;a>#T)$JO3}V|3ASHy}gKse&;gcX>w{A1po*{;Y%6>aJneHN!LM?t4$}r3qz0 z&3FyJ4fPbeS@rDv9oR-f)Zq;{l72!{`Y+>V)+PcEG zbw1QpY@yomNTZXh+z*btl_X(BYhQSP;&~QL(czdkWf{r?Q&ifkS z=Sl2}NNN7p$RiCsjcY|_;wr4(6U<(_f@LLAk5}q5Q>lNGyMY>gqKj)H8-rhK-E1=2 z{3vp&;bWF7PHX>?uXcA&qN<%EY@7)|v5V;6+wv2>b@22YkjyW7&Qtz)c(6~Z%ylhu zq&^VQvDO`LMKD+2>#lxUa<$Vvb)@AwA}CI|TE$}UO1#7OHG~?o}gw9_}eyH?y`Yi!+umr}!giv>OQuqkZZMT|-=jfi z^OC5}N>mnN=PTxW)Qx)!6@@9_b5`6^H6mR$&8MoL%Z%k7Q)K1taC#byCUYJHxm(lB zo9^%3H=HL5JkoFmbF=AKPwso9P8|Fi&lXjO2%E*^gmT@WQ0}JeH=#`=tvQXvZ33-H z2LCV?iVJg!<;^l|r{r+oxSEX$BYUDMsDvrNL_5~XfJJo>lEM5sIc+je;`7cBdZoL3 zZ!L}AHSMS5mEz$K>PQ-Py2msynAkt?gc=F^ABflf4Xq>Wbhr4y<0IN!@^_Ubz(CrP zAIhmf@v4LUe!11XbhQ*p@g$TVJ6$u1f3$v3*tnw4fY>Pw^Y{Obi>TunqXEY>2y{?^ zyX#_rg7;pog7Ce&3z8xE`$P(U++|3N?bFP@)M%|j-zGqRT1BHl2VCB;pg*`92Dl4* z3ismy?&DLqKV<|>;XV@F@UA}>Gmu)M_puE#;X64)Ymn9MKYs9VH#V`f&CQ3i(_Ly{ z>FNh%FHzQdq?S4zl5D%`^9z#g2)Nlv8I=y$F9GbZ05(KAcs>!Uh(K7}UWp=;mKT5} z;EKxGY~m@!G5uOOB6LC1IirlYZIT6KjEd9&W#W1)M{<5`B9he&jUogIL%OE$fy5ca zS9OM(_N4i@kjTnulH%;>;^JMLJ<~cA7-ya0XA&3suHq&$>GZntJ8f!luxXx3V+{kIn-YX50Fr%nKwEFBxooeAhwvw^sA z(}Sh}+OVI`H^TC9wzgkG5B&sB~xZ8H6+a5-K}VZS?<}U#*86q?cBK)L;W|mTV;ZKWbi*sn3)zT zJ<`m$jJ4~1?+TS3Xn@H6RLa{-EP{0&Da_^Ww|~`2OXwAAET&oR9A6%roODI*Mt8g~ zueJZZ!#&G(28G=`vRR-FIT8<$-*#awb5H+iK5aGb2ZMUkE8U?=ft<^cf0)5`x>_CEMv(o-*Of0@ydNeCDXySQD zAAgJ38|LD4JJ8A zPq9gYrQJ(AGJ1=Ik#0+qvl*)&~u`IH= zHjJ>MzVU4(vhGtBorEhMiy_hxWIufEyUF`>6A&Hd5e=3x@_r8=bs?D~A%{M0Yzx)) z;JQ{k^NFWw=}OgtbII}_vkiB;aUL57jKdwEmbS|Fym9GA`svJV5_?^^TUwSM%KeUk zis5%dx0S4n(M-%5P(|On)(2TCeqPrQT+?Y$>4K?J^YoAD?4;4anB1ScBk;0~2kzQE zL2KyDppBdtT^S4(3*B9od!6f_6)+=)Z;plOK=q6vS~d*Jo#EC&flYwH0!<}n^AtNV zA&<|cSH(=8Su4#uTkquhT#EHqFxs_?;(4rZ-@GVVh*h_ssKp4TE(nfgEZmF>HHwRo zeT7%}G5$G=?8mXQW=|{DPz)-{i{_!Lw%`|vhyTrD9Q@D-{5Gl8g|0tDl|l(zVF498 z2&I?TFgfB4tzoT%pAKaGeFRo!&RtsheepB=r!h({ue@gpb3#R&PDJ85{-^==m|dJZ zTj66+_|aUh!P(>r*av0o&V1%_?p&Wv8>=}BXUEQ7ti|zyZ_PL9-c4n%blV7%o!YEn zWlD1PvgtYAbMn|wpx8`f{}Ewp5GLN;Rs|HGRjMlP4*m@z>wxOx zkNI9SImkHYTd#);_cQ(kD-{{GNakG!Edpw;c&t|1aGxmYFAlb7#xvT0CFzxzJ;0B; zLzOQc-e~%i^U5ePxFrcXFcYDUhwlgy&aaC3jSC25QT%jdFnu)l@ZZPFyws{zeTH!5 zxD_N)1Q8HFK$8k~nTLf+bh#4nVV9vb={2V%;r|jGz;HTtVunw2OOUxkGLi0J^HxJv z5Op9?(u00kwP<5)S-at~%{Q5K9Y&)0bEVN|W9mg`u` zbq81#u}p&myf7Kh>hlLNzcjY-p!Diw*6@c7DB*eOW=IbIYwrCK~AOrSZCSb5W;yuTNu>Ng(<8XRtkeDiy%?cQh) zJr|KhrnFepK}!5o#VcWJOE?N+b`!fFdc$LxYR9Nlq`CYGlV(vC54TkVWCbxF&*B0@ zDSySB%w-ld=5UeI<}jA+)v+KKujgvl+RFY$BE2dzs4;LxLbn!iTmwbk-kW#d^~)( z4BL35^mnQi?{Y?uI%$OmSDX~Ag{{+=ImgD#O=9(ll$4B8D?FTx+To5Q%JZ*qVJb;H zYYarV8Uu^8{G$F3Y5e;)a{_?PZHYbsM(>C53M8ofXw#nDo@gn zWTEs{pmO(-O(Uv7*4yaG`@_OzQ?H-h4Te`6)#H)X7pu>FqRaHwoE4P(v&1Y;BIIj8 zD3^zR*A!gD1yKAfe4qk9l%&ADxYm#9$Z*U0W({jhs z9)`5C;6}jB*+_*YN1ZD!;>L9^&IM}oVScd2E=PUrcC|$=rZ;vS}TbLl4U&&T6eoL4|&1T>~!DzpT7mN5u|^M-mi9Et^&-3J{b`hQMix-&s5A?SSJ*oFF)?um_V)7Qmv6rIziulPHPeBTZ8 zBE3?nq>0~UBmzFLt0(LopBs^Rlaw}UZFJ8_qx)G$$LWC}asR(TwPLQeT)?ly7?5eo zGRT;?!~LXr5%Q?{*JU1`8>$k3)tA~ibw;f;O|&^rI87QRe4?}@wK!I(Nbo!f2E@2~ zLkXW{J?g!5r%ftbWyK zgk{ql>q4ybV2*W$N9+1oq|LGV5<4hL<7xY0SJ#13G>fnb2-Myk>Osq_uF2_Cb?0x& zUNC>I?#us`D%9C(P3OL1H1O8&$2&b_iN*)3X5?rYapi8vnKqtlgnjX(eMF z+KL|Px)?}1x_7!)ag+!LnU|_5iN1EfU~7QQ9<&}%ot})5E2@^&rmsYJmQ+!iIv-76E# zyk<7L&b>ZbLQ&~Xg$6HsuCEZtjMIxSWbuB!=fCzn=sYp@FWoXk*U9&0oa;jE_!$wV zS2InR6+9lkGe)~>pA!fj3{dS)k1^BbYd4)m5~cX4j=sF7dW(^EsKPzSHeAg;T7Exaa(@BqHs)NtWhruS&M1i6z^)%UD=5*#$u|SuMPc?qYq6 zUUmF<_)c`3`+9$kBixQ9cck(AE(L7E)>8LEJsQE=5e2v8$0tmwYHZ1`i4yE^wKan3 zN>V?+XEBCHtMD(#l7WeX&p30)Iqp3nD_-1{M6*n5`OCRTY?pPBK_@;2P2;XBoI`r6 z-VB(+hoCh}m84sBOp^Oxl3c&3Nc+pU@6I%V<>En`eaL11Rf^sr8sGjGy$AmPpm*pI zp59x*VeI`!dh`FU^ggBW@qf{Kp|Jgb;jdcom)h2MWISBYp(c1OAL<@ZD)#ksLtWiR zmC|3;)Xoj%bNG{1q$TY*QeMw5LnZfc9tow97eycNVp|z2x_k5VSR4D3-4KzE zwk)M@jw%Y346K6;q8BcJDpnFu19zQ4e$6I^&#sa|l0&&K;z$eD+iD9*LFUbmJ|| zwT!vT%<`;%j#-{UaPdGR4mTt|$REnXz6$qz3JCxPj6C<*See0>C)C)pA=zsnVTv{%EkuAB|3R`uqhTGh-7$j{_kF;1m}d>TEE!C^Xgn24Y#wDO<^|C3zVyxIxjBd%0&(0H1Yz!2h+;iF zR(b_=7msbh#98NQ(Ypopq_-})10MPbDYoRL72@bdH;e+1M<~{>)AXz7Qtmq?CseqP zmtuHD|6=eHiatwhAabXa>s#rLvEQ0np12VyX&4YYg@+$#e{1g+5C|_!%&*I{vee8Q z{u1N-Nx|5tBFbh)AkE8d?A{? z78upn(-lEK0sHS%0qKyIsmKs?_$+Cf+}V0GEjH@G#387^nrv3%=Dv6*q$eddk&Q0YJqcb5R*zIzH(Q%>iXRdlEO`f*8I+5CH~W;7Nz=lja- zI0KEfdI_UeZ+Nb36KFzc$C*qcHZ&{W(B)R4yYs)I`%>s)pi|do@eDGV(qFO}YD>wV zm?@RZ^iP}m>$yu#FvbVAq9%pwU2_|IX-+mbrX|>4r}VS53#EX*W>uq4g_my!*Gt1yg4h94W#dxIZvQ%PX?>kq5SCD8&~KNPg5basj=?#T>G+i0Hfr{iK#D zvoUokYn#!2$6b7rCL4ujx};eIx*c_Dw3lp45t z_b<|p?mkW9c$ZN%taKaTNV2{gT{+XOpuW9Hu9}v%rbluI$)}V}F-=dSDO-5rLZurd z9ju@V(;l_NG^rC{T~gE-aP+ceJhR8?z877)$ZGH2Od;9iHWLnz z9OIGvEqfN(6WYauG&~4(r*mZA9c<b7wX~)nSkI=i-9bZxMfG3+6#St0fNt3GT zjCkb#jVCMfJx|VG=y~$56p~HuOTqz9ns_9C;d6cQ3O@RXPRh(XN)uV& z5tmjWeurRyxbh)maFCUrjKd3Qn;Ebsjm&GkIELOFF*=#-RBX?z2Sdt%~qXD0(#2y1S~r+H%mlaz z0)ekn^5XMEfS;f>gCb2J{;yPpO2--Ts?)fJ?ylcep^=TnV`W-@YOS<*D`bN7ssVjK>+$*@ zvU3k3t_N{q{tTi4)##fG_J4J-x*zhb+7Es8r>{FjAh%Zc z!;zq5-IMG0-2d+`e(jG+U3gzm;4ULb;A(e`4_pG`tC<*y&?AEKv}0<*H(pA zFF@UV`O}F}>ZVqHVM}7Jqm2dndKUz17~bKu#lr5`pRp*q%37nQKH&aLU(1k zL(>=N0dqjHl3iv4O+1qMBiQ3@UuGdXvB{K(Y_2Vk;p%Z+i?ZRL5>EinlnL@n#HK4e z8FV%sekHfnexcsYI&Vu@80EIhF%$?$CQ%zBdQrkukfpkSiHytiBo+LJ3X$`gHNf8g z&6vS_N62o~)OaIOEXnR_CY!+Z+gmePhF!a@jaZ>YK7V$%Fu-a=z0`U-bH$->Nq`{$ zDo(AE2KfVgA-fyHp4(JN@;#K-WGPkBp(JKL(ak?Y$uLhzsN@@vTHQ9fJYY5_vYMXg z(a3;ewH2QPK7-ZnQp>l7ZL%Vg*$eki0tztPlnk<8-3O`SAj}UdPcM9+zWwFl@=mgj z$s&rL)eN7r9-_)^fG8`}j)22tv>>>zdl*N5*(Km%bcx1Q>MM~hl4^h!`Tj9H(VwkI zOqp`h%-_53Z=I(ZGC2C{08F;dq~w@u>6)>1DfB>o$?uMfIkFZh(8Oo2n{^_~fI1q` z`VBO}RXxn|*7J4iSo4%XrMhY&zWtY)<55zcljXfjma6g|*P;XM&tL+sJUQ}TF;n2LL@g^E_G}Z?CEoiKf}*Y@~3urzrmz|J^hB- zH&D15H7Mgt%255ceOz;gnDO7n8+V&n9$jZ+$a5qQay}a5eA99!+bengkxs_TGLgR) zipRY9{J2QqK4SJgsMwE@ZJV@~yOY`_Up_{Ckn>BWU5mHuoxXO8g8LMyX+$Gl7 z=O~sjw4b%?Ho4kp*$%Yom(6s%Q2N%|bAumB)SmUJf|#!MOfH30-%DR53xD(9Vq<)z zg|Wzm6zH-q-BuYL{yCcRt`VTeK(A;i9{mCFp2{Z{@2<>^{*>rWbg(`x>(|AU;#b3@zHJ4nIC)}ifdJ4(8%Ax1IyOA-QeUE``TJN zzET)J1pw2o(!=9le3C|iy?43>$El?jxl8Y(L99~O*w(UzZlO)rGF~r}Br%$Qk4V6b zijLJ8Y@|&A84LNR#>Q{0=PEAQhSY3wH+o=BuTh_erYi)aR#+O_*?HY<4YJ)5iZoF0em&l_%0=0|E*dK)Tb;XH8IhHSNU%FjOAUF9Xn;P zB=UmdvO3vO!m-Fxygfw1wis7jo)Qs;c-!_(&_RK}k22S~uxtq%x!w65mC38{6_@=f zRHbE;E==4(lX3Y%Yfv<@>M?7HWK)8#-#WZjRrQOs_eCf0$Win{dB^rNRI~TdrG>ds=?&HjeP%J691$c_?s;wf~qxZ==t{~sz95(xmrT)CZ@5ND1$&& za^hq%SB+1me}eg>KT=qH%HTQ^>B`}rMnoX5lz(wh{tj2knuh8(+}baaM+B$QXsv|< zqI`H)w66-*cI?kdnq8bbxDL~~v8J0gx@{;VZlu#s=7L3eI*_3SHhkZFr}3T5mo3P- zbLF8ZxgkT-S)SC1H|z1GPCsFWzy~VzfdQC>R)O7niC-#W;0j-aU50?bst5e{R_;6|fJ}U+Ol}%r+djNhS1-^*+vTGKA zrx*EOxC_`ds_}Owl$I7<5Z=blEl{=m_lC19Led6l)e1*z)!9H>8 zw;0ZX_o1lIK5?^|MuGDX;cQJD%sS*h>>Y{a4joWgHYl2_gFoD_5`kPfK3Uot5Pjc0 zDA$@+(w6_IJQJ2BG;XpCndIkNh@m)>Y>hkEu08QcTEq0ktM4S+<8=Ads@kLN1H>@1 zSm6hb`#+*OqYV{GcaT@QgCI%1Do#Z~l~yw9gG6mfv%R*G-QOn~E!M8bkXdslX1|v49EbLdyOuV_zMLZ2*q|p%V(B7-3CEVXniV({k$qRp7rqwC}2G3EwLdG@$hQ=U1NAPte$(jGHBUeU^L##WB( z!R~wYAM>4=${i4^%g`!U-b`G1vvh!y@NB;L5WL1MeH@RbwDzA9yD|`TW#4M`(Ma|g zl|N&yACGppt*mHQ8xMLA0lyyVr9r^0B+_vG-LY0Rz@_F(empAviECG|BK|TfqO)cT zBWuz?`JcY!%irt9)GU845jDr7VMYqKoVlEU8pb27v+r;t5gA;LEHIA3{V1N~mhpw} zoHVkwpnt`3b@Dk>@}LAe9zGIcs%W?ID39Cu8N6GguD|;fY8-J-0Rp4`N(6ZKtHKT?EQHv4Q z*)^kDeQ#w=7Qz`s!OF>RieuHfKIP^y60uuSZ_b3EU-N)dzEf(wpjT?X<*0w{PCIMj zaU0J6`JFVsJ!A^vT!hs6ao@bth^&@A)fV2*8{Xh$HPs?%>P@+meQ=snCRhW&4zVI4GcJuX_a_3(G~h zy{`4`wUZ~4su9HAhq=~fn<2}d0bcFK%Pqq;7>!k3jjD;7Z*^N!Ro_>^qWbQ2r;}Lx z4eI-#MNrMR!KYp3#|YVf-NUuXcg=^tPj=1!;~u#bTS~S6&}5+h;EBhe%-0Q<3{=;k zbni%dieC8}s?qCSHF>zVyYD2M-6XA`7cU-Kt&2(?@?sfFNIE>(U%AUF9_g_^Lbe$JHA_8slpcWn!hwJWh56beOsj}@Ccu;*0sx4Aq_MpnyVti!82Y?>&px->`N7}+o z@t}kUty0E94_fO%FDwIei3fe=L1UINAf4_(%RK0D;p*){^E_y}Kpi~jH4i#`3AhgR zpyxd3CZ($FL63US)dFp6X`HyngGLDStp`o^pdkW%;6dX&Xn;U(dC+wp)JLGFJ!q5% zbrt9y4>})^n@a)w48mHUq7vO-L=(Dv` zwuL=dbBt!RRvzg&iLdupg6Xf9NwH!T`D2kk6khDZzbib~hksG{MIYXx@Jt_0C_LSV zHz+*Chrd^Nybph?@O3`?wZfPB@D~aX_2Ewy&iCPu74GZ9?1rR~7!rhhI|oJ0JeH!k_!_GYT*B;U^V-*M}cdc(xBer0~-| zJVW6JefS=Qr}}VQ;UXW7DqP^hr3zo+!?!6s%!el^JlKbCQ8(U59KYy zz3yi4`&}unH?qZ2-+M=6Bxs6#|JxXOxHq%SNglq9{W$`c0tR}5thp8ZM{e(u=LlzOL3y29&3VVtvYcq)8wJPe z_nqJlT@Q}OwZz7l?5ZHN-Q!ud%v{ochmaf<1~A|c+aGpo8*nevzT*7@0^z3;gD@w z(Wz<(drwIzv*}yL;Ddy56$M5YfwOQyMSVFHceo`K;`$~Tw$p9U>_h&!rS2V@yY6%c z8%@K@00aFIC}Y2j-T7%uRtL<(;iG@`a$=+2sA!a2?*a#tUbi8r<8Zzd94gsGQqj=f zKPaGTw4oY#vCKRBa*jRcHY&4=%FM55R#h47-S<=&^~rzJoX<1k{k|#Q)$8W{285nk za>Kns)7zuz7od4t3~0Gb>#rr0S-fXhsFbGyk&vBkIWynlUG+mH7h?=2c;pH6qz3&K zHt-^kpH>X9`!8${5b5EPOiJqiv;}v%KRpP@Nn>EdS!o?Hx4kf+O5SgzcFTg$1gTQ^0a33iBEBrsZ`vd$3di;e6^O|Uj z%}ZE%?kilWG!4hZ*_upk>S7I6WCs4pO4s-^8heNpU0%_&I(xy7IP7)DgEw%*xaY}i zO{NpaYO>CulKYL5lWuP5dHvN%zRBKJnm&(4U&yA6dbgl2=h&*MmXGB4ulj)w7)nTouZVtvqPe;YBWb&t_-9sP9Qw_ib|7)LJA>ge@h(tl zrr+RUdG5QafgGv#@U@}~SGa`EbW-jZ%1I&6c-t@-Zy)^B^1{xviVLh0EelW~8HLwZ zoTUOrstLRne2}1N!IwJgLi#O6F=vE}o?sJ<_Gy(R>cfCkSvpJj^jZ^D*O{_}wFzeR zHnLO2KhETp2ISF{WM^7e%5pmOxwCNz67&Z#>>7(_eF0AHN@wR}TJ~IRxXFH-%N)|W zRa+pxY+7;Uk)b=@0?abu$nLM@rGHtuv1rlSqCJ_RJ01i)pEC$)p*MdWKxDom=Qjsn z?~BZ5p(d?jVzy5$#Y?*(Nn%A*qQV`zo#dqD?vB^}h}9Pdq6A$h+OQ zcp`)&*Tjw0>9ua-YnH!In^RmDkNesH_Xj?%AP3y%d)#O6sp^u`_Q5|Pz`ucJg*f4# zoWu{!hYK(68a~O4ZlIha?7{F+l^v@^9pj_603%nTdek9AxiPjcmn%rZ!=I7KNa*Y` zclZ||ES|6|jh+ zG_i08p#0QCZz&Lh%o|Bf{F@n$&$C2be%1_6a0_D6sF{r7rG7kQrTWSqkS9f-yMC)p6JNQXmC0ZdisLUPm zsEh&5djyFIrYFQ+CB5JjD1rLGI~!4!TOk-xW3Sw-$fD-kz1J99Li9A{X0k0?OV+J0|x zP3*hXHR7Aw4MMb2tw*&PYjj;j$nWl&{p~N6^M}!GWFb7o4?o~*_$tl*L!E{F7T*M; zLstONMHmBpt1rJ!OWG$4?63ByKCmBJ(O%0PyOGXJB%?)V3IGCuiTK$;2s|BC_QHohg*{@1M*t`1LzrxKr>f8jsC zER99R{tJ<2w^K93`=cl60ew8U0t%{0P0Qtdj_;AKY)C$7Yg}7$Qam5fS@xG>Y@G0q83G zJ~NlJ^fDrP0)Sfs;Sh{^Y9@?2bcKp2ZDDCDT{)8!GjV2gkeSaxgqN-(%I^k=mP!tE zt|cB`-H~hmOVt+i3ONCzr4RC>ymWj3Dla`N6`Ga`O;3eJ2cg7S2YP+-;)i}Ew!=~U zmI2pZ0lNHsL~yJ~)m`ZJV?rfhb1nnQi_L2f7I!9=2<7)s_)Xx6+T^UF1cDQd;W8PByuo1WlbRZtK;FRXAy6G~twMd8z6mdxhg#s&KSaRZ1KJ zepuT02`O^!tNqB=r8%+{B*ZqlD+>`~C8?L?nRFKPTkF5}fl?P7D{5|9ZF49gd4XVb zA!7O*)XZnohxrP*K_on!#&LgQX;sEmdiB;}YUf)bahuo|3pax#G3;AoFT1lPI#|b0 zrtQCcyyAJ11?Gk~+w%4%H?NazdJ0Uh zd2@-CrFRrVq$=}rIXY{C(#Bqrn9Brs=Y5sE7$WOEF23=;k*Vl~=v6J18KJYqLN4)a zZKF^uDa|agjUawdls>fu)U#9{UpW=G9Mm*wMeV%GMWHuq_pV>CUrAZv_KHSkg>jxs z^ttm8riyQs{`6(Od+o&e!Ef>4BMVl#Hl8g&b_2;~N4~@$Dcp&(+j>UMBQg-9?F3DX z9*5{eE|hgEi&;zcj7w%hIVMGkRY)L}|MgKXG`&m=LM3-u)6o9H7@MISc_TlFmc&;O zs$7^CHBhPnrh#Q?#$%7MeJLqW-H>l+(S@}(?}uDb!PvcoQv=7oU?O+<=P) zFe#g-U$p2R;@l@^SaT*(#2%BRD(MolE!gj7o(;X3;%ceB64VaVcm4-~p#H2S>2o<@ zZR>J#RA3dByQ^|9CTO`sMmooy)rK4M?ao{>?CS44UhY7eMfoE>_zPMbi~x9ub9*V1eiYjUD5No7}>_*UyKgO~i` zXL!b`)$Te*%j|h$X~{$(1tFxzKkS9{e)_Sdd6&=)Xio{Jbah%FvpXecBR@n~KO!c{ z&eHWQ)6!z5^?I7t3RGrj|Px*I1Q>hHhydN-J}4+)qZgGkBl_r~Fr>@MzK zO?DfhVco%}o9x=4BrRo~pi1^?2lx(v*1%oWm!QeuEJ#1mhO3F2Nte z&>(lMWbQ%aPL-OH;~kRY(?F9bHL0p}_gEjYrk1^LP2D`mi(k*Z%I#x`Vz@8;&3j1_ zk7hKq7_U>TNxqg$Z{dZ!ZxzBqAyj83dJvYr_$gM-ljKkU5;bd<#w@0%cvh{Q$&#Tfw=R8*Aqh|o$j(L_K| z!5Kvn=jmt~R7B8DgtlqL0Y#6TgGW)EaYj5q7$m_79FF2d5EZJ48uVxY2m1Z~yT0yp zP|v$}t$W{nZ>^WLI^XwI?b@|#*REZ=c1=>ZI~>G1+2joWS#`RFvae^2yR8>RV^h9D zB%1G`1me-Hgfv|FB&BetKPHG8H~b|%wcznE=s+Nofr0Rb8;V0Ot!*&5hLe5+Ka0w8 zsTuLPviyxt6R0k``(~!5aw{ji)U(>R<0%$MeU`AWESWN4zl6y2jbMYiQtNXeSMs_f zbj7_;+1!RZ1wd-*#VJiyG84&C$tqzI#Lp&=IY6n(EQ6WM5)oh3$&&i8Aqz~xZ|fhb zB;{rlQdxXa+sf+eb}tLhW5G(t7xrsaFuS0CK|$A&+xju|-X(n$j0?}(Xd^&(Bd6Rb zPdQ4%FCX(W77V7#{Pc^$gg(e4Z<~NTj_xyt^)X{U$FNKJG=@c*7zS&kvrD`-cE?FA zoeAc6^h6LBRGi=*nL$3(*;6m*sXF`TZd=sZL%89Rp<_q@`Ro#l_LlN$bg!=E;^ff& zglDRmFXQP>4X_>gv~=?88Zp}@YT17e%+8oa?}=6S);YGlq$3s?3ITxM&C zV6Xxrh&}@Xh4QZtGnjh0Fx?R#a_;i^R+1o7C&yMBqAJ#b=EB;~#{=1}*V4-O!c!K6 zE2YD6%!TK@7hkwM{_{5B30k=xei;v5b>(}pwdp7M96x3gjczhn2Bt=AB9r#JBCA^y zqq3dAVo@}N?iXpH@S-66FbfY?GH5aZ+GzH7PJnu#2uy%J-6hxJ@ad!<*1--`Ko3@( zNHxO6dD5wPd67ip>XitVKwf^$bN3mZ>F?Fdm*({BYChSGS@lUEzBiD&y42(}u|}z9 z5@H1W%?MzKfDw9Y}mnOO-9F#P7 ze^)-D<*fq?*JoB0$A9e_u9^_^SRt}#vV>&#zt7-J>PP+}m`6wtH$JEF%5ny;F&7f7QMGy3zxCHJs>0?d*SLq2;+L~4+QxtB66>0NsvTm_ z`lXC(O@!dW-~$*3?;2M@nBu;{a`(Q(m-JZ#0jAzN9@hc;>@097_%MRCeNQrGC5n(- z6_S{ykwdt080|*P4Oc}-Qarb_m^OIFW|dk<8pM6pN4^lbauFZM^R=XKkRp~`U z^j1MhxWuI=flvjd(a}Nb%y3Rk#*M^|Pb~6P^D*y7Pkb=42epA}} z5_47am~j>p+o3$Zd7En6T;{euP=7#(p(!=Z6obd!Q_@BJb-U_7da*8n34r>HVb-SWL}xN3WK z6Vy?;YC~%x3JAyz5`+20eElalumAQ%|GkHr4fG!oztew&3HdivU!ece(@Bvl%(fH; zZb-eW_uJoFVn*`eRJE%7V4jeQ&~liu?}pU2?gw@8+(RVwY!)%Lh9_K4sXZg#*dvdT z=_@@qlRc}e|yY(IiB6MayP58{T9$ge@rixw2FtWK*>r2lPdq#fHb zrt9{Lcw(bI*U7)jKCY?C4oAT?OSo7$PPj5Y&rntzr)ro&*|8b*`UbBFxhf9cp26uz za`KCRyNvO+1SkJP!~$z2Tynoz`0u)rU-!*>f1_UUVKvmjFhi`Gk5)pApVh z-tCBmuk?TKro4krOm#HTw+HIzCjUkqRq&R+PuGYgBi$x=H$*>VO!Bvp`p&7O7w9G# z$4mu=aSSY#Sfb#3e;0uWFnn?=qnbf4t6FL_xPPA4bb^%gyTDVREfJ=`C6q(u`2zdQ zw?AXyU4YsF>skAv7`Qz9;u_+8`O{Y632wv**!s zyXMtT`ZBR)?p^|JZRyk{r+<^V>}}g0>~(*IuC>?8_4*mFrpA*tr6I-L1L4TA?po?V zf!$EWf1u4%8ro6E9iN3+abV}Gn-4fFF7^|Xtj)8-xT($0Fy2|4KNAW9#i0b-5+ilT zYk>io-4GGQls{+=;R)=64cPF+E@A^M%sT?YRdS#Ji-52!H)z=Nc$>esCrt*K&_6^u zgPiW=)wk00o3zfHQag;HVDVhM*QTdu5f$i!uSozcMz+-ROyf+lABlQi%C1+~|{zP&!Q zbDlgfoamjW>t6~m_2lWrYf1VG+Ti4D`yB`owDGt6daYIzFTH^HoXR}F;=`5KF=iCg zk}s+3ZW#E2GTo&njifvPFOZb_)@D!r*O{X|N$qEjIzA&jVswoSBcw3X{SD)0cb#Qo zK|K}JB&r7nd9}@rSO05%&myfpzZp;a+8IPaAzBsI#a=V+1|LMoVBP|$c!|zCCl#HU zTPn8UB^=u}kcjuet@{22Vsr9ulCYEz#q0$-F9{n6NuM9sK1kwDqzwj611%%U3R?F{ z$}80arQ>L24NtLv!lal)tMLV>CV2gb*W$TXif3&}k23rAX0Hx=!XOFOwm~zVX4IMU zs%*s4>}(jvlUh)&)!)J>vZ)a6G`Izp+p8J1FihwiG@#DUVFE5?h>8bL{=jevi0m!B z%W4+874-MTSU<@Z<7#0|MOL=S8EA6|DR7NJF$bfwiLc!<{zD&MbuiGGl;#Y>Ro!?G z$juF0j%FOa<-p~eS77yUBJ!kWBW#p}wxYlLuktbukAs(&*pq&k{4^YpkiQh5`0q2L zM_Kw{EUIJ&g2pOPL(08~olhqX!Zoe~AAVq#E)ViJDaa$-)a9~Y>A%gyE_*dg@9R&1 zyK8`ZHo?VnFXJoyEu)QGy_}x(^|FG%^2BGbeu37ec?+4XvsBGlLDf~GKZ*a#HceG$ z@qK-K)f7-|0qp_W-rN-9}4A6@cgd-2Uu~Fhzt6E zeLhXqdH+JFrFR}K(~&11#?-BwM#Ko<)fPdv%f0(Qhkr_8V5@JqR4yO7=6lKzX^UM``x8r0|op>7P(78CzA8 zUMDS+jJ$uN*O1%NQlue61gnXTp(6eV)(Z?bEM`cG84-9a4f*|NMnhIZZbtk}LxxLi zGVo6pz9eeX?ZMYHcf%D?>gIx>CHn_qVx5~cgF za<(0<_%=548rkb^oX_2yvZ6NsFo*Zb9WB)E3`#ZEd`KR zg1E=t5?gwcx6yYv?1kryZVT#n@XnDHz&6D}Q4K~oDYeBw_6hq5G@dBjzL|Xz>rj8# zg*p4lZ}STGvk9;qU#` z*V8Skx(XjLFep+6?hrWWQb{GLaZ@D^ zC$1;UU!{DwA_Y-S})0ssMfgmk-E&Av4$pNA=lp=P86Oj z4IiowSfdi!@)58^%0{f9F;^Al)}M>&!;R_%$rq<-`H5QgGI>(ZyNYVfygBZ(U`{A7 z5G!^mj{kOD>{O-PEMJ4Mb2upL$7H*M4}@8jm?(JbWUe6AdNLDuh99DjW^nQt??i(+ri#a?1~AUpYz-0ki$P_bf8 zg3Eb4v-AM|B*7=Mi$K-v_asCyqYabBY=d~q7GirFY}A#antHnq(*M72`(v%ot#hI2 zVDgibRG#FbzRa0C${}Zymf7%j`8C#LpZw8Ey9Owz|GbH2w^G^AUEcc-Px$TjT)GgyK`te!u9@hDh1ZdK3-e;a37bKE6f4R z`Z|+2m*1b|og(h#uQHj_`5jQ7$-K|^M$+BIcZTb*$g% z_#i@F;Vo;7jKO|YUv&zmrZjwI800o!i7iL9U(Q#rPt&E0|Dj+M*{Rdn5nZ5;O-o+l z(I*Kl2;VN3eX`@je5AE%hGY2T{T>5ebSx7Q?3*u055d-+zpwS9o87s@DesS1xq4Wyb!TvZW_toEm z0dCsn)8r&n9&ZEw8ZMB6G>1+U1e;AZyO#-8P6zVT2F2l5~&lGrzl) zagFOj3|9HwS83EH=Jdj|NSBtbCNTmO-#Bh`w0y+t?6f&9wB>%x()vS{a=C%_2!Nhw-i5Dx;GRD&cg=RaDzD)+aX8iRH}*5waA>r zb8Cnd`f(VK#{QO`B>Xib9yfYFPu8rKTawj9xGS&=$Y;m&B1)R0;WDG4Vr7uUBcN6m zyYaNbW@3+|r;z{_4u>ToV?A|(P0h4UbZ8LtxdnwQ`$Eu?(3ON129_%2_$2+6@pi3i zqyRE^=S@|Ee%c3X$3$v@$O}&Bej+6Hggv?xP|w@#&0pDts$;) z*T|BlAAjS1voE*z-VpYZ%5n~2sVXu>BJJ4H`$GWgaL8jR9|q}BoK0VQ(;>e*k7R5u zMU7yzma$TmpfelJQ@ziY0X9FOg$0G}>{xcQo`R?9m@Lwl%k zZA5oZ4FPJF(3xcBz$zftx_6-wRiwSqKC6{(<%5=0xbhWkK1oIzFBj))+!7zI#h7bd znu4?W*v|uNyg>d{sI|bbe#6&b$^KW=h9@3rX4%U6P_Q6QSKr0hzqZ<4yPc&_!P@1D z0_Waj+*7JMJ9FwF!O*5S^LC62LF-(r*X;`i;5A z=P0R{%pF@~C6ge(S$rXH>FN9n^lDdf>GdfI_v1MD_?vChEkMdAi>ihIWzM^_1Sf$1 zk8!UFp0|T$!`Xsx$%-_$6j{p%Pq>OVPs3e>SsG}Ho`#D&7&9Zo{2SA0r|=d?SUX5U z)^EOyN(lBme~SRCqo`(zdVKUIs;4kq^#kr`Rm>`cfaX~|x1c{{R8FBw&R706{s_kZ zEQTv83>3)Q%xZ%oIDX+1hY5{Mrp|A?l zPw+3`(J~UfhFeN7DEV2uEeS29I4pt6LalK<;N)w_NkRG!{>{_W5$WCWMnP=%;#BF% z_{L~>!Y{Tru;_g1rEEmYo68DoGpn-ddgK&&4y3H=cgv}m)2*@LY7)GT|I$(y#a3(+|D{E^>LBQ)mOi~i zW7I}BfaZow_Y~8{nHI2d?TftHnCg)qWw#^BEc5-xc@$cMVA5Z9sZYPHPrrRU`UoKf zH}y<*oX$)ALBO0Cz^tVakjEkM=y-z}NnBh&7b(|rWyQ!gau{O*>j~TvoM`D=Eu*p3 zqVgx?$UHE3AgsH=3$@zSX|f`rqmnCz(>Hi-a z)Li?m4Qh_#YtBrn(0y>Njd}L+(L;Rna2|6s8gwraJ-HEC?N9w5$vl~!Hv~_;=l@Qp zUPtlM8qAaVRc*kg<@Xq28+qQe(RVG~}hY2I<9`-Pq5s^^I?26^+b1@1uM%7%3kh z(0{34GQ;9~0nlKum6Ll9|24#NBPp|{A$eARaUMz~M~JLPR6Cn83Hk#AN6gw@WBRM= zW+ALohj?_5;~d1wYqA&AihbtwV}kUax*Y>pjo*!~J~VPl5L=a2bEjWik`} zJGY(D!TQDj&>iF35B9z7^mnTSchDV-{4ZT$m7}&5X5bQ3&R3+g{?Z3gIqhv!Q|IQ8 zm|Cegl=5(u49RAKhGC9oM1tDUctkO`8*HW`qOyNge_*!YJLKkfgYp9>_;UjIP<-Q& zv9A;|>2^=*2bD59GVZ~+^o z4w7nWZzZN9;)cAAcPZY(+jANGq=i1GpuyoUN*`>2fkwGc z_FUhRg|1)CU&^QSDAzSD)G^?vp9TRpl2P3SW|&I7eT72I4gs%|wG@xe8bJ$)wRJs~ ziaDWw^67SGqDcBP0yWZ~$!L;b(|Xzu@XiAY<~)EDs*h`aIzHH7B$yUw3y97}y7Vk@ za+Q?k7Prr2_mAhFcf{GML#q?9x73WM*IK3$)USPoiA$0P1+}+2x5Ie}{VE7OfU+<& z7QoHC(ikc(lFKZ*Xd{i&A5@gLpx4$b{g0eiborHPpB0=})Zn^<*tf{wyrS=1M-z<( zS7dp14_En3W)1FF41Q~oQ?Y275J64!fs&j&GHEhy^e*KimY9O@#})XKhIX?KFlcKV zT>TX+8nDw0Amb{L@sLMdaaz97w1vLWkwt%a{?db>%a-SK5N%POQp%w`qC`QpoljwM z*Wk{yqEhWk+(AL9C-@*jhVh07QmTE%^+-R9AU3JOz&>ek4yggDfWo({L+5Q@u5*;8 zif=wBTy+I+%6&e7@s0ac>=)li=iGclA#-WuftNgPRy6+X2QC zKWWSOi+%cVZ0Bwz2t~fBO395qx%m={D!L**!;60K3P!aYlCf zP?5vh=I`9j&|%BA#H>jGrFSCE<^y{$A6VRDak`agGk%c=P2jMfm@v4b${5UiHVC{* z;e-;MS~D7ZQ3^LR(G&d&)}NnD3|GC0u~UD7V*k2jvi?D`S|v;F{qB$W_^VlvjZ^DR zvXT*E10UJtEsMsusYv$NqF-~#T1 zWawwW(F_Nc>593k>Ve_XjUsctgd_9?k;Y%X=m$RGGa0Jozvcm}d6M5;99j~mVOi8K zg4*4|R=3>7G3EV(dx}1dTXVVX^Vg%9bi0#lm>OAFnpU@htM%h;m%T5DnJUqHc8sC`z(-k#qh2rE!n(RNT=zZFV} zPU!bXYg3k9L0Rsc6tJ(ocMcHs=-IxQqliNNamr9Nxjj9crp^4O&UOx07K_=*NY?<% z0FMQeaCW$Ikgo`gLpzJ!oq!z3T+Fx<-ZHhp2xL%gpGDzG>%_u=%f$3j^jOAq4xrb% z9eD%fj_H6fvP)fyRIN>LBGFt%C7v-lnmfV$1`Ayu8|w_4it}acF=ZSQHA@@aN~dyN zE%W8HL=pq|iE9TScuHutu^b+c<0rn0IZ&)m!;Np3^toaxb51I438x^9+oL4$pIrZC z=^Nb?;Jv%&yIegbhfP*4PY@*=;gBjx0w?h%J^yHPD6?3<^j~n~^2QZnlrB?rj`4iM z@2VnJ%q0=mL_7OF!Q#fdX@Nj6v)Mw~lXS{9>KumE7R|cBithaqk;gtc?%- znouR4ODMC50(@SteHO<;#V;1tpQp&_giv#}#i_Hq74}&XzWpK$q=Csu?OE19N|Mo+ zd2`nT#%7%!U!op1d>yC)#$bB9oTgzh@3!R=%3+-_XSM$Y>fJc``!VKCeokH6*iIAPTJ_*8#fUz0eL zEn#;j>%8i*)ikK8$;z2?BWm1j%+`SSbdw7%40?p<3oV)kyuoct>4IfZHSXdI8NrI# zGekzki853lpb#j~St9v%-lZMaqSFS!3hBU~XZmWZBdmSg`zY5C_G)LUn;dAp5|cxv zC=&HLk5Jj(Lt*Bj3C;Taeq@j>F1pG`E!kSvg}eqPuBb)3%#vbhpO^Q)zasCTGr57h z0-5BZypHpTaywGKy!_=heZe;d_hwvZ8{8tE*`lO`j-njY9Mug%^(KRnSJ{IV6a`ce zRLgxsLbJiW1y%Eg2j%GD%TY00d^Wm8JyrVsJH+Do9WivlEXd*>{;=+Dlez< zY)+p%+9V%8FzqWwFCi>1ca?O9Aou$5=5GyG9*u5ImOj$AbW*tLFw?p>@fgnim2W%GfSI>suH_H1--j4(Fk?r$#}!Sa=1Q=2-Z$%Df4`t64P zxsG$>LRWngDmXe>GP_@J&}98~_#@#+3ANQ1zu%x#@7)IV`DWA&#p5&GDk}JYZpD@K zyO$P^zp-1UMeO|Y_~Oj~TysWFpO%N`?bZ#i`*r((KMek4$yCty_b%9q&gGf6NO0|n z`hC1TW#a?t^R4q_&&O7c|K)(#w#7?YcIzy#=P1<%{D_m?ddTskPxvr3T&11T8h^bi z31Lx#IOSoNvpzt|KurI;+6k_6l5?8SCl>VqlRnu@+yOqy`KbNKFc-DGqLPuLhhl+n zFeU>SwbNbIt$=e8D~8oYvwjf(#q6!NTu~tlXFV9TTS3_jm z+4WPdk`S8mEH{Ri^a8wySgRq>L;3?N^eAe{*BnjMxL?k}bLs!aM_&a?LB+N>6kf5n z>lf98&cCu%fw)r>8qOO#4hzEFL+{?iAYl8@y@c@fzP@^d&h}sb_Fw1tuaErK!F-j? z9!zS_>ClM;)Px4{pM$1x)gMWQg=DN}L2QC-XP3mPz=}P9AnxY%_Y)_hyX!L@{``02 z(`NSe;F{3JQ$WR^EllgJUNs)AQ&_mNlrMjSq@>3k0#5@cBGvLQVBA6A=Y1CMnh#v1 z&k>==^_gnfpMyJ};kCG?WsRCxc}+=8Yh`5ziE%H3ttd_PT!%u5Z*0M_0zgg1vSHUe zOfO6Be!AhUbJx`gVpMoSOTrTi%0~=L6$~s)XTBis-oUthx6&%w8g~>eLA2`qd+Mxg zMA2?WOxyDEM9H$&kg!Z$nP^(3&Ud!{k$G%ly1g{&h|o7Dd*X|eEo($o)n%xP^iP7l zfPZCE!C7lC9fb3v)~VvcMCfHg!1)pM@hthMQ&8ZKG?`qGmYWsalYvT=6())%WHW&^ z(oZC*$tJ0>Bw|))VhZZ7BH?KPyh4rs952OOl_7nIG+HvcH;}GV3(t=A3z6{=MLSz+ z&w_U8LICsh{U6tkmHe-m($vCxC$-9Ra!4yW>N&pghVTS=EL0zDCk-t8g6bGi^fbU_ zoD_qv>?B%Lhm(twy+4X?-m2m+@y#v6Rhm{KwA^?kW|d796FZm17qmzeU9H5amgVV- zpfT|OmX8?nQES>{1=Bgn4)?MiuWyIHkK4gLg4Af@O%u(@qQgi@MNm7)or)yf<%zRv zS{ve>gm?s6sb&B4w%|^NLWC%J2a?~^H;*5wGFbL*S*kab_uCN9Y!&O{4iEBL2GV5c zjloJf?!$29M|@}D`<+~#>djRx{W9@P%Zm2t*F-?7Hy9}PGknyvQayPJ%ab$(amOSm zQ8XHq>8tVfW513FUBVaY^`?GS7(iWoqsVv;QK1X`y#DxjZDD-l_Oae&snAVyKlO+3 za*kel@bZOTI%m_iuHQSpv1N=ge&|+3Fvbr(&kHJJ`->&C<~he?Z+=ueP_GJn1-u#zk`+tZvHP0W;=`B9{~3x4WPx^M?^hPzcuBaDqwg_= zHeMXA+Q1uE<1Sg{*3ZMdSW35X&w}&}i~nWE(cQ{ZMrF}8^f_fCI^17Y_(o=RucZU_ zAGm~z%37!26l5win;g<-qut8lHJj1S;|3%FC=WlY{|Wx3IVFiKePp>Jd%ZWHFOTp& zT&Fq&fSdjdU`hZmEDyk=FBIZqe;3?C!3X^=crOKa$_2L_N7>$KT^_&joz~ccKclcI z7i{Ef%7XMae2d%>tlMhY-{-fDFnmZvapLFV_`=QQBUt#*wtq7`UlMH{NLiv?TK6Yx ziKLg1=#-_Vh-UnFFevVoe-84G07S=7{|T1A2O!=59AsJmqMI13d}SNnRh4d}3(Rri z9yWEhPJd012jQ%#%654;d-q3<8(Wv%U$$Wr{e5HW^vlg)*YlMnu{rDzU~kKdZQ1{r z+h9%k`xh)}U0;z+lMAI@>d*0#dhEXfNu9C)gQ8Oz?S?9nn5`%`QLegLreSFFaX}1$ z?cCJ_mLxl-2~^!N{7QxH`v9?>!JGu!v=XhU)sjTVS^%tK&DL6iyvVqxLGowDeR`}C zyq6Uf4wG$HkC23}6SC8Z<2|YOf%YCf{e2sE-SVD|yN2*Jrwm*!ev%mveSGu?AKg#U z<%+(5==;F%D8J`}=Q5t_`E5`C(w*N?{M6@+<2RMxVt$|VE5O$1%I{cym+-ru-z0vs z`F+LjXMP&-X}naHh+grRJbi|K82^uF{ac zMz6Pbv{}w0wdbN2O#R`oRt53H3o80*cwNXILF~maC`VytDQMn`LVF(eQDH%SYlVEq zp@_LTf1AH1)Ek3#OZ0AJ)?^+x-4~rl?-XeXyY7U?2W7%L?50*Z3;mt&CfKULaeZwe{VaN+Wq; zJ*+K8uGm@GbLEVnmdoFIv}M=5Vn}==Ya}^Vu|T(r_*Ku$1uoj!63o=tc&Bab-7XW1 zmc1+I?`HP{6$Y+q;o9d4z3cJ@*B6G@mkU)Nlo~FRajdjpI)9r zH49Xd+NnE;F?-^9oD~}-XS!}I>Wa>+uc-W#N@%>5$-%03DFIjbgeTPUlBh1z+Qx!b z>YTX1Mm}8TA8M~fxQz-=$H>1CHG`2m zeKfK4BLY0@cFfXN(c9;2AcLP=5!H3Syg$~P0 z3xC`mwk)cyev}8i!vMME7n$73_+=_$#k*ilMYcc1OY0f$DU&+)?()JQ+Xl zE2l6XN8tqh^Sn>hrB#%vEbp<&QauCTEbrLhx5Deko}4$rlR{8FCVNKKQpm6GvO=D4pKwuz&F)Ura8^_9O|>E?S6!cz6ZVhM z|7s0I^A*rr@Wb?{*?aEhXG{no_?kCVY4AdG59@AIu($BGXwP0=bY)}Jdlj7ndYNqF zMwwLPk$XjH#;rrP5uf_DL8WMIhdAa=va=!j%VCncmhYc8r1-O^OupmCZ!1!Lje=_z#AR!&bNkTqwH(611J}HO_ z9`q8@gLEb#-?Iy?F_OAPBLvmpUgPPH`d}%@dXpR>J9P?_{(~l_mZ-jQ zD_`SdN9Wae1AQl5cdZ*`$hNHdtbN|=yO}L!sZ#iCu1ik^wFVwu5IGh@OhnF^UlD%an$TKR5zbqnp|wxR(z$+BUlvNCu{sTo>BTf*M^r zg2aU)n%LmndRZ_$%)xd-+#vN2z?)@U1h2WtchFoc^I+{oDW2%x-8ao@k3mz*5`$=Z zTt=_$S+u3w2c||&&doQYyrd|9qI$p_tAYuw!34HJ7?49bDLqEYVbwGuf4%i<$}+zA z;Qz^NWA~=DAky<&`k|3>-M&Nv+KzYgaMyYYU@dGu^>H$>njT49eoeR4ARrZSW183W zPe^^U8qS{A6X+vdP?d^w$MxEr5G5&P(Bsnvf}%%CxVhhUwhpv!If?%VSz~RK3uJIeK6cD zDJW=0@3lz$ggL6GA^bWdwPcjge_4TPwx%@9_xdZOZrKR z$_}ub=eL#eyUphp3i2D^^OM9+3i8{CAp88jJ=IfiYEyoa_z#2NqkORV(-NOUmOqEF zl`_kp2eUODeP(f%KNATH`19L2f5adB0on0tcP_^$OT1s6_>ocTY+g2 z1a`m4e@20KT%mu-&XY&_F^g70vONCqB-wgJZB;69+E7xLtZ%SsWz% zx}^>Lcaem(Wyn^}q2Y2=U~NZtIiW>CeMg{Zi_6_vB&mnV(c9^IH0mPkw3#Bf6x$%w z!6)PZSPCr6`+p`Q!g{jtWMTu@4Q|FT7Rj-gv0{W^PJ_z^Q(7$%bBkq|s!N@RMWn7& zN`W(bD5ddGi<}Z)a4*Y1mbkG#p|7R-NId&!fBPQ{63CJ#R$56fZGQgvuv z9^64z<7~mmtMQ|u%&mFEGXPU%O@57IDPdGiWwh^Jm?02W3O2aIx3bFGt`u#`L~gVt z>bbrXrCi3YTmc+Mw_M+mn1|I6Qju2(rz@M~=OuRs_#BQROwG558dHPXPi!5|JhAT;I_D)3^^NK|;n_Q9S}C>; zQZEz3v#GnV8^Nb`)y?Uh9i*O2YPlr4L)6BbRh1jujVNe7H}EO)cc-QF`n0OLJY2fc z`Wx(0u!+?3gUpVQcx_Lb!!hziR3A_POXpinXZPd{U<#WAT$)FRJ5)rZA_^0>4gt2) zFx9V95|Hjg{PstCq+gxuizan@y5b?OV6z`Vr6S$(Fl(UHZ1Or?OaIn9NShfdB~Dw& z)1buSa#3 z@)e$AA^(UVWnNXCn06z~uh^5wmX*E*&oTHKcl72$`s~gzhKts>9sQgbP&(0ctoE0o z-NmVG>A|$EWg!z!>dZdjoJ59BSHG^j5GgM4x&kh(a}Paja!doQD^dN`nCJ5cmr#bO z$OksEMsxq*M*EQReSP;Zo3;xZcLeDCovm*F4g$6M6FlIn*j_Az9Iu~-#{Tu@<`vO{qcD@TvD~(gN&+Lm(ul7;PlttP>IkfND^iMZPgX& zXjwP7yDda5XjQPX@@8SghYVY_X4I;EaS%6Bajav+!OQr9A4b?G?%8XMrRGB)VJ@4} z=^(t}7N6){S*m(Y0$At<11529Jw%z*xdNUz0VmTc zCZ^BS^f`B?f2jVU!F_cGFx)}PK0{Uaj8j$JOx`b{VC^^&f=BC#!)C{dDnG5*M*1|1 z;72tx5Iigda9#e~R#7iB=Ngu9rJP*^hl6hZI-l3*$K?O7ahLedR&)I4nffI7Jr)7> zTAKckW*}10li4qsHM?d{6JKl8xTHD`N0C8+hMngqttJVkkeK!tA3M7sTq&0up|x(D zg}x5Dt;tM1#Tqj`H@T6ZgnvSVAh-`tM!U>1s-s7<~Yp4s?GALzL3Ca$FzrFx@!bKo(8?TUG z7YdebVjm#7G_kKc<(k-gwy#Cn=KH5|P3&8N!P^;w$v9|QYQBiuOgCA9RKP@w99f;7 z=4JVkRMwFB?g5izVHjaRSDCKC#4of~Bl_KEwwR(%Qed!3UavJ*c$3Nh>1?Niqpl%xy5@9tQn^g~)CD7!DfBF`@6nx%eH_`T{Qwfm zNt}fTXngF<0`27--&k1OdPzy^*lgz0*-T>Ers{UDFA`6BJ|~CK10c`f^gM=@T15g& z{$)LOgWFsAVW&Rq+uM%*^M#lE=hpf}^u}?#f^lV$`|$)Nh&~U5*_8B)Q{B1u3r=pY zI`=*RMor~4CNa^Yud+c`Uto|>mS>11Vu$U;TP;3liKRT=smMoT(4*4(lcal-k!d>y za>RK`oa6_m2c|mCcm(-QMMj9qRMA!^QrcAL0;5R%mM`|8#HLFNicfYgRDg(%h6I0o zf^;C4;=f!vokraaa=rFi?mF4~2G>r{Kq!H)b(ujT#_wYJkKQR~y@jDNSL=n|8r=;d zavv|Iw-x<>Ehbj7{4aZMa4*_3cq(}Sw<@uHc42nLmHi~3mFxRYA1yG!?<}!?4QYk!UATqXPH$H| zM-H|DbsNPe8(7rcT5rYJF4Ex|k{v;kYadlfH@Gu?&Pwm=A7+QA-f)%jsW*cZ|Mx&N z?`kiYo35AY%(!Pwv*HR(MLvI#el!?7%(S*7+x5YVntH7k_gOiColvQaDfB}3G#EtB z&IBKq%Ux#SC+@H0T+f!;v9mSic_C{MNA_$6x6qXXr*iBCh2qlAJXPN3I5@4US|+d! zAB&+--Ngns8|NmHiy_unfjh6`u`H!im#(;h*BCp0LNqOac2VsnC;`3+Ju~h*fjAg~PGBbM!9d2`iL`ZY{)AbtjvYs#>nGCN2D%-qV70rBZ^>@K z0MDq6$J4a!v~oHM$bA5%Wpr+KpQDAP$z+ce`<~*pbAq0NCSg+819a31{ul5t1wgCJ zcO*4U{$%GbG(Tbf;{W^=>TXaL%m(l-S?x;$LW#>CdSkHsz?}kpG!vw%ScR{1$9l4| z{^BJ;@IhH>KdsmU=)Yqr2)Yx&{*>=23lg>F3q}^tcus02GSVJJm+_c0nemg;Ig3p+ z=lsS0Vb%=rgU5TE_aIaf)I*^4KxNXEI`=w1LADZ|htv{@4pS^7*1W?h!h+SIet+4P z{)fKhY&)Nl| z=ur5qPGclGVWixP7to_2)EF3b?kmKQpmP-jQ)ZZG*TDfz418Il4#xuypdGUFo6!C? zG^}%vD`}!e-b+>oMS2kIruZ;E&%__#Zne)vZXRT-&o1X6sISG8+T7+x&Ogty{~SscPo>FH_@3A0^K`@*%-XSLgP zr5PN7K7i1L?qc7k4NCl!#tlSyJ!d2w^u~b&^S)_OT7lYO|A?2Nc?3$0(V0popLmf{ z<0pq>i-zl6=HX8<$xDN~)0)gz75ht&_M!1WQF*vTzSK6DyzZ~W2i;qp$a^9u4B&@?V zx8qk&cpGY&?2)tOc1%W|E|R@dNAI!R-TxU|2NK_vCqDOiKmQQ(54}~n+N$jvbMHiU*-K* zE={Xfnx}c*ry&bBfn?bhZ0#r&d0OXgq5wDmL1?VKY2bRcKxyDZloPaDFM*y|=WbDx zL==1bgwT66AriFizz*uOwgM|B<90O!Yuye!vxZq&o?(`+j!L%h&tjh)UP4tQ2EBzI zu9n|FF%;|LBiC_~Z@38hE>D{OYS#0C1hG1Ao%{L$V?V3zx*j6>)B%X4Z`H)vzTO( zo55WqJgLa@<`;zDKe(ZWxy}_86JrO5)RiQzSj=5DG8x^Y@0rd~|BrWqE)f;5+I2Sc z^tnPd(vbb&w)MD2VI#|0^qQjaSfAl(MxEP621+fo>l!N z&$WfI(^Pxr^QGOdOAcD>ZpewmHvPPOZFV2RTQ6Ky50XW47>%$_s&A~}%eV;mgtsTp z^uN^>QjxzMNSjx!QB_q``(5Yd6$cao!CrB->iru-6&+&UQL`atgG( zo~h6~jK+MYBP?ng$wAZA>2zldZ{pVIhOLl1(+Z*k`+DNnxSdU6)XUUzHm0~qj*F$J zk;@y8@`P8|lk=l^T8kOsUuxZ%7V``BG!vaU3pBS~Zl)e(n=U8c^+LtnPbLC&s_l!^ zJ0U-NTGF*{CwpdG*q#k;Yo6IgaC);w(0qPM`cLxDxb#=adx$|y{aEpN@55{cqc`~; z&4Ee^dfsd3<@=Z3&-L3kF6tj+{w})f3|h@wx2j@ZuiqEG zxQ11xHHk|<;sr&yXgMtTA^M5xy1dGQ~72s{Hf=tZ0BNGLY47 zv#IDv`8ZXGYzf%E+BrgnetJ~T2Kn(ymzi9c$e*eDMS?H}W|lB9eLo$(w^Al>jyF_G zJ}N%Q_PuvA%@>HVB9exDgF6P~5}>|%vVbV9-N2AGgW*e7>h}Z|%)KP*%iZ@J6lkwB zb1(MiBI;SO-{G`C>>Gtm-9o4vh=%Z;_o}iNt52Wky4cLwNceWG@IQBaz z#WU|`OY!zpRfviHQmJm)Lc^-v*nVD8WAH@Ib6nrU?4Ua9>ewiT^q?IwU9Pt}_uvGp66AI= zYZtN}{KhI_Ux2miw}cZN!gWV~sKun}h*y^--gL_VlccaXjy4sr^9G}g^Pl>9R_@1> z1=Fx<4FtPSy*h(Bckoc(T_j|UxaX-Guc{t8EUT)nG&-cJcDD@7yxcj+;N2sX!CJS} zo*B2mo(;@!Y9P76NToATy@KHDi%jtsV6Z```vApE=w18eDs7=c;K&UDnrrO2)?Lao zTY33@1lv$i=XU+Vyf_^7RM82K2R9p~qNjsZwgdj~N(#R%X!S99t*MhNVfEUfG?hPp=hTGkwT<55vVq)9RR}idy{3 zuZCzuvwCG6Jv6JVb$(L)m6D_H+{-A3tfE-Qaa$0m75O#pig&ZE{!KQ=2CaTJ%Fc7? zBW861F@2vbP!%qDxN&E>yM>oQiLVDGeyks(h#x+&+9HU`K|ii_2iKVyQB?IQ=d+}u zFJsl!bI;IP)osbQxG|;v*U~_J-9LAWILBZ#a+J|xcH;p#S_U-Ha-7k!!DaqpJUe1! zpj+0to?--x-1jxQ-3i8*I`<)fqUaraHn=4`vohK`uLJe_^-dW~cgN`eWbfrt^K$o? zx?bQDRV|GjMlOdyx&-ICAdaeH9f}=Z5xJa1>>qMx`#2$78lF;(Z>{xNoU@W!VB5@p zG*~+UE*#u4;Kbd$a z?Q{W_@4LYGTHjz*70f!J-sqOP(W?fy9?#;c&bcDdfE{mRD%bsHy%+Z1Vaos0aMk5D z<+SDIh~TiBVE<#&`L#EH(@9Q^#GA#5&6U*^hlhJqt*3p3d!%elNRKJ)Ko{;Yt+PF5 z9BhxL``hEC!ScVjj^20g&~l26u^vd(q$`uT1+hxMC0Ymcd2;5N@OL-Pyza=<&7e!Axeee7}c2 z_v4O6TzEg-HIgIg`;w%UNK-lQ0kI_X*X}w1C{k zc5I--hR#AssI%D{r-~Z+?lc^=(M0L^@XPEXTCQD02bHB_9>EyuKjw3D?cQ?+UI&p-4FLj zs&}i{+od>ygGr<9Zd7q_{zZEaLAoAyS5K9aegB&?KmIgU&#yYDqw4 z^ElU=2!eM;6$MEce<_UfPacwN9^UIcMXYpl2+f3)UbOW)RE*8I-u7&82k<0K#M1a% z#JX|Rqnb^go*Ey0fpx5flq6iKMpD1nZRnsAQJd_eA*XPB0UhRmze&I&r|JYG^w3%j~Q3ndd1ok?N#JGF0)8JcZQQ%@ooTRO0yPxBi2r8{+7%e8Kv8_nR7e!X8Bv zc;w2Y_T7O30UV}8u>bEwZ^3?m2BwNmB*MA&279Q%79IA7u!9nByJ`+lZyUrFb(rUKG7+-a>B#O?eUSAvr8lQeiaUMt8m( zAIZ>{)0(x$18|;ZLbs|G$o83oyq)kUPhg)lSlO=m%>Un+Rna&kI^{?dUYdPS$Voat~0s=jv}sXef9KbLY<_Lm%?pRG&@tr_1N&j8gq986WKc5N5}E6+ad2$`=j$ z>nUp3(Rc09^BEqw=0UeSD3NxDhsBNPp$5PELLl9pxm*`2zX$v2i>;by!C#wgs?E9gXmj?M#h z|0YzG+Veo0U6yC^@oWk`IC z*Y07$vcU^WBVP#1?7I<`#K@WG`02dTJje3L@g83#J7nC}MOMKr_LLw*?gS!VU^v_| zfU9e3aQguVrk;Na_lk!*+VF+`5N?U`y~D#@>hayM#~;YdDy+Vl?m`cEGk`hTO{CVl z0Yohctz#vs%uw0>WzEdc{C+?R>HTMU|-&)2tD~znIIR=R{LTo+1IumK#UA07&!lZi6p;OD7fB()! z1S3N6q2owebn`dek2!xX>r4b$60LT~dR)ZzD5m9Qw(9k)E`- zcZRfgQSw#~Pat+0Zy48Bp;n#rzl|i8xB=H1>#M44V5z!{+@aKWXH#DuM9}s|5h2rJ zwBpRl&`|nuzS24u$aPs4w3S;Zcjm%+NmQS5bVq7wjs2bTO=9D$~D70jn)M$>570Rht6WkMwv6z)QmJ6 z2TyhvGuWepYzHd=oCTm%?0W}z6@1%1#w&LVPjmHNZvm`F;{=vK(mrI6P2t`jgqY`C z9sYb3WBSI^=%|Z9NOLf0{pnYV9$%dA>}~3gbNwyttCP-Mvtu{SITQMaMghK^eUGBI z`fc>0hetm+-Ujt|D><^xALXp+D)&0Dv;e#ELf=1GC(%Gpy(cuwhTtE661V<);tO)dUzf3)V;s>_nv12Tw~G>BO{R?lirgEWtp{=={_ zDOorpC;IxD*AM2qm#_9!QN^AzXr>i0*1r&88iFb2%Fta@RK*$8eojAp$>qO-bi2r5 zfVHOg6L{CkF|8!HYl##}_56bZb@5$E;)j74{||htX0OIF9TfHbdu8fdTH<#jz6l6X z$PfwXELRR9a?T-YrX-s(nxL}fYc-z8dtrmpklvzt^f*sx;Q`s>3V1Q=A5CBW3 z^JFVHn{NIK!@RF5zBqrzu6h5#{zRGUkBLcLRV6TK$KPA4TC)OJh_(6ZBR7d2H0*O- zeR)~3ME9bYI>msakD3_}85Rke_omKW(9M_-tS>Pa;9kM#;_)uNp+CeE8@q*;j7z3n zJ6mUjKPdDa>!79hZt@v~t7L&d(#P1`%J{;7q&*->d8Z=p1Th1Hn3hJYmK!`B#2i8l z_3pLPWCGQVzujBioZlBwX@Gc-*SVJoRzBaE*JQ1F*+ursdJ&6SOUU;=(p|rYmE#Cc zvsBsEMns*Pzn3rREB4$#rRF(<(+?5aynYak?zWU5l3;$*jo;UoPTL(zKI7o)4_Osm zP_Y+VkgoVqO!Rb69lFZ7mDtuM6axl>l2T z#Y{iT#oX$fX_Scj0_fwNMp@&kjGeF7Z&jA54!_*Ga%n|q{H6n9->bhy?eQ+>4;rPS zW$_XmVNAS~rdhHAk=z$`h?PUHpYxiq{-66S8BwiCV1{zkfn10SzN1&Y1=FEPrTg(* z?ZqkztKeuXY#}VlE?RQS)GsEZwH-}@bUD~&H$dHnMq>Yvfs%|qOr*jO4Z%n*#W+I`cao8wrSnI85l9yhTP%ouF+Uq&m3q?m7a z&oNu(X3{N5sD|&Ur`9CZy55~dXzB9&1%B(T(_HH=_KHK?i1I3KOz}a4To!1R7u3UR zDbew2juiQ5o)Wnu?8$v4252+1r}2uV+g;R%l@>!&OJ9n$$%#TlSoO7?9>c zi?ZiAo-$a+(4L^GQ!jb}FNt3g(R6#nJP}!^$B0bXg0(H&HyQfmM5vCS#K-YpT3@?$ zulLd{d@o465nsKrEOq8a3CMy5nr%&Db9~L#oK$=Gwe5P*LK?$W_X21Kfxku$1!X-r zqT}p6GQBe4)2iug{eFb-_AO_Jw=bF9PX9XV-@*FVU;hT{-*ElAI=p@5?C~Jcb8_&U z9z16S&+6d0Jb11Op61Yq*Yq!oFKQjTL)OQBWvLryw=3JQQj|2e@50+3w?4c*<*4ag zmRS;8U)JZ1id~vuCfBr7_622`g=Kx-jeTFE+ks`aXjTlf=+!C>dm{_%QB=!g&fWmH zS6K{8^aDQnpFa84S#(9XywB&cb@c~i z<)=K^uNyEC!6b*QXsvJ&b?z)tz()^H zhSpTe`d#SG_cZu?(_eK0EZ3|STUA8<>1*U89&?Tn3Fkus6*j|1$9?pZiY`|4F+?{B zQ_epckIq;nYIVIz2cs=h(YjaTu=KNZK>3r~=v%n4Nvoit*!xe&Zn)2`gU{|fWp|FU z`(RU{jaPbQhH>qmT+ZHqo*VxSPK^D)J#mULAY6GeQi9px`go3nD~A){t<6Tchf^H~ zvzAKs68$Ulcec-ObT+?f zEM(atzsG?izaPw&u5oAnKEI2=Z>Qj4VP&{7y?qmgd@}k6WYq4MCF7yo(Y+f{9}m z*jTB?&8FHgq7jQrxm=L9rZUOD!kA-wm<0Ba#cSWZ=SfxSa+;Fik{>#XN`E%ifCVcsm5md?9@}Nfw%_Q z#1M75v=#!X175`eWa?y6XKQVvkrRE6mCW*^L|n}d5(5=PHuqARwUT__p5m+FsenHc zs7=rKL;dM#RI(duls;&WqBIY$chCM&riiyE)n6KtVd<0bLFLB3P4$OUDs=DoT>S-& z-E|Gha+ca?>Lu0GoC3I|a-G)Mlq#!@x2VDF`VG3Thk>yKs4#itx>}lXRAk1LLLf`^ zL$jfXiYeO3vfrkx@1Rw&?Y5|u2DW21iHN7)pQoojK3cK0F_CfM(Z`5w8W#>%nD%%4 zV0--1w9uS=Eq;_GHj?rPpOWQqgs9%fda-w){uJHY>g;J=D|49#b5tRWoxIwk8 zfT--y|Ihc<(@PMSdEfuuR6oh%vt)a6M?+teJxMnUZt{I)I&U3eHbxeA z)F09~-O<8uGN>sRi(tI==bIWorVy&2SwxQmgBmR|ph@v?u(fibs#{(7Y?mF?!-m9f z90Z=$esl6>=h=E}%Abt=r}TqE7&lx?!L1&V>&C1xVGaewJqf-Vv41vytG!bB7m?8N zha2U8Hj_X93<@{Or|1m_780go1gi5Ik_;xH;+a|=MzI$?Q~G3UOH_{{@`_KSy&~`2 zYHDtieAPDp+L3;YY6u$VJFHik#!1<4)BKAAu4Rx?@j6NAivMaNOem!JKwro_z`mRU ztAr0IA?K-u)2>NtT%`|tFgx81K5TJTm^H+Cgg5FBHh!Od7H-$BxiRLfaoE1CrYd-qq-BMLf4S>!!6H#DVBZb7F=PwtuLucAI$kSNJc4*j%}+@_#Y^x(4Fayv(k zW8RWznMpEiLTT)i#7>mLdSYk_H+Ci2wKpF~_oKwnR6ea|bO zwS)Yy2o;xfre;dpUSb92JXrA2;5h%Uxnl6QC5CM>L`J_(JcyTc;{FUaDSk-nGmLT5 zs2E2&t22!W*@$z4;6!=vH*}d^m+(p_IH_!8n`GzcVJFQgIy4CjzN}Sd35kQ)_-lck z85AoQBhck=mX1!Yl2dJ{Qgfux)XH|`IxJ^(PEKJ?Z+RcE%?SCAKiNR9m8$=}LYmPs zwcKM&_nI$hj;m4QRaI(1yTt6+mEHX-rfhS9BD9`YOJ7wjKc~zh0Q=}F7lta1Re9A< zDv9yGr!8*yy^vrBALHq}Vs}InrVtZ$n^&4w@b0b~FXi3$2vr_sII};5Wc`M&7yV!6 z6&n>q>JE`Q^_f#tn515;y)1WI$Y%i%DAG3mHZ{z&Ns#70R!GR!AGSlKiR4LPdc?t~ zVbQLT;<{8fD5{2t-QUAB?NE=-ZZDu~v4+NoW-9rR1z=^A} z*QeKWcTQDzw+FTKZr>%T9B7+~DH(F4$8T1D)L*~bO_x9KFmgW;c>qj4u4&nZ&XE>n z8wR5*j>sLH*oDrOXv%A6PD^?N^TO@SfLK6la*+8K2D?aEu(BHl9@<|#9*uL+vd(;H z_1S^UxX?M)rTSugJ_BXyBe-8OkRL8**Yt2WFdMIFeEc?E%b6*G*VUAmRo`v!+p=E< zKiorF^-AIAx`CJJMnCrt%$~vq@*Kzf6JhA_>br1VJ{=g5I!L1|gZVzR5}}6@)anMV zsNb39QdjOwxF!R*e&1W4*u_*Bcs*qsNXZYzi|YI<1^?*A@OQ+HA^20zPQyQW1X`Os zo&^6r!hZ*R_c6W6Z6V{*>Tu=C(BA3_?Jm6U%@m@{JD%KVrzc5x-ZuicDVV#(xF9_ zT-@oB%WP5)T7M#|o6agj;=OQra&UC7R7C!_bm~cpm_o$pn@5&%%T!hK&xY&5;4xen z3<(dJN1H{si#RbZmF;`(9duWcEj|)~mJ02lQqEH7Fhc9vK)m?bS@Bomq2{_N{^V4s z>b(k0g^Wc<={tWUWWdn!w^@ z^0?peYet$sWTlgH((lRld(zw)z?!ffnExOwrB9~rpV;dDcKSB$-B7emdylaB^E$V> z)o-=;qhxh&vh1*Jdl!F06Vxc8QG2hv;n&+cHwwvbAzP#N?ygdXDs=npeG9uwTpz_Z zYVWQJY1H25uK2a~u8L6jX4b<0Ki}SV9*ldjzln3rS|yxLVm^}C1L<|;^4uJMuE;$t z#R?5>XP)KjlhH3ylhcdQSfYDChBEI_OO{Q-_|dr_C9l})tRlv z-hPpE-N7Q!+LvF18hR#BJRY}GuIjv&6x1|SQ7W+*`xY~sf*S~q%~H~>?gNsBtJ&Ve zhLaP*<(o%`?wW)kE*;8-vF1Bno9gG}KV)9{revt{UWsXrAkESam`{bvw~P+msgyJzuJo zpqD-IR7wG_$UzJ``_-|79d&lC8$}J{+RBvThti=qsWd+>4KEaXi`e+3z)XY6@d#Jm zL}2_`qJyfeaLd22s#N}!z{KCuoRT)~2KG4Lzj99r)Gy9s+7ZSEu_GCnL$%$R9Jh5Z z0n4}2V(Gof%<+hr+J0&tXir>|ndvT>`KqSokCvw4FW=$k@cX6VkN7$K`+g1nSp(d_ z67@vsV58*QUfpVQr_8zJZfB^P8b7y(U%G#81q}9%#L?;Y@}5K=JudwytH!Up9l=O_ zzbd)fShf$UTKW2mBG+>GpE%c6bsN;CPb+3q`%s1WqkL1_D6U^=_+sm(BnbGQH{*Xa zD}xhx!uxt%W-tav7AXIxiSg;c}*A~6wKS)h zOv*4s#{QeSkD#?U<1TH*(2Ns$ZrZxqS`z89;6`z8q_=N_g-q<2jq78si+-aIETf!n zHA$}~ACgvCH_>7)Qf}Yz0abPQO|pj+=g&9-XIOu1AOIH|TN5^h@;EZ~94k z>@|Ia9=lDyPLI6lTH?|r?^Ug)U9LvIqu>?E?n4%E6gl=aFplgF|3Lrh{3TbhaJ^gV zYaw51iZ0mc1Kh~SRl!pR=dtJT>O9?~SoxUuGpTo_o8VSC7&h|XWNv&Lb&v%n^^*(o zJwez5JRj$G2l3DIoXT$|zxn)j$jXz-`%BMVg0#gv`|&%ApXLg`l>UDrTm!A(Ucv9W z|K+k%_0ia=_fh;ZJuA4RKvv)2WyRQu6yAVChN$C zy-Me5{?G8f!X30xsfy`t`K9dKm8`nUC$pipUys$Hidm$MeOAh0zY?7_0;$mIL0hmv&A5v%DZvNkQareE!ZY+i*hkJ8U;6;O*y1s!Mh#sqUT2 zCeN9PC4u}ISAxy7p0sb;64V6w1{U<@Ta39`4`cr$`sh z$^c1W*ui6n7s?K@D!$np^{!1;tvhU3olNYR6|fHh9DZh$XzVRw_9@2m*$~Q)=P~w` zh@2O4^&RBoCT;2u{dVb~aCC1U9%*em8SW>tX?GdD$_jVbz+^!O~&qT^>0*5+~%--(7pPTIW{?#p5Ls_(f$STl%{xDoOvt|2(lEM+fA&KkF4K|!QF*7vgu zPKe?P*=GlA=d6~Vua;lTZ++sEwEi%z5A8pT#BbU}WJ1@41qECXp8Gy8y?Bv{o&+7= zk4(m@{(0gtTLM_#%a#DpH?rnudswULG?Nbx@NM?&e}XpCph5V+!#&Uc#fL}sGKQDI zwzS8b=>8`1t&Z!V#KeBNs|gNOJV$(Z-0l@z#QG?&=p7jfPJqKBr_vVx7Iau#Y+4r!Zn|`-*m$c?Ta_wrF zMlVt`Ptw5>d~kX!=0DC*s=jPq35V@c=Nz63>?ws5IrxRUVT5Q^ z8%dd6>vcKI_wM+5%&=0i++n0{MDNsi?bpP&!V;?f7&Rp9Zxuyoc zG+cJ#`Oyn(>3eI*x{pe75o?8Atw^`8*fut^G&z?(;ID+<$%1B;a%VeKoM?=v6-E3Q zbe5|_sp>x@6VARqB|uEXYG9f&Qk=@I%%}e zr3|5cak#9Y-TBc!SYt0w<9*9Tw#0m~c^u6wt&X&_%fR1rr(1}*ntZipHMaHHr9-#& z%Uw}2bU{hSk7at-d0tc$*!$C{SvaRm2=S%eQP(?eF3w$E+>t}{P`cOpTBTF$!Y;k^ zc#~?6^!(4x>)PxtrF^x_P@0iiibG}+RI5`&MAL&l$jy0GO{{um3GC!7M)Y*5^$UHU zj4S^b@|O;Mx9dXl>Op{a{Gd1&{6;MbhyK}699tL8Z8)jAs9SEy(Dm+2<&4c@mN%z~ z2C2)8*Lw*Bn-)`8O!V-zlPofX7U(xLx+t67dgs)(F@zCXYuo{(?w9)m=kE6JxT>`J zTn-Q;e5G6eKCTJXgAdMScUNiBLzf^sf%NKhu*)>2Ja|;LRRP%`-y|y_13;~Wj*jPo zC;F_0TIzg!5XLcxOWcJhrTT0n0popu(Ksl}WV3Dil=R~|OwO;KSQ6_$iHqVmH+5PG zN9+Zc$-1|X4@A4}FyK7O?^h?wy61!{9Bl;~GOwxO;EY)D+Z@!gh`Dy{VCW;0L4RSP z7JtlA&Suk9QOAvR3|mS3Pci2(YKGpwdQ`5?1IVS>hlZxiE1$_x1iRckqGae|>6`eV zFX%a>CRA<0nL}}z!7eE=lZTC~xl7CE)4uboT8_g_r)0#KWuYa|CeV3cB!@pu*f+%iGN$$MlvVa~o?PYFQ z?;c0^=^SYt1-)*S+F@o@@!OnnjL@hqT*GX&2ti%l>dV3G+TyOmFgvQRdsW^AsBA+P z`J&&YLE{gJqXcpQAhD7ZhiXscd$OBkVEtwDj{;D80jpcJ9HQB$wyz0}+aH*Tqd|{a zVB`HN(Ux~GXKec_v3C%j*f|LFmIF~1JUkAkfJ5Q{HQBWHXtL`5i+m%+UKja3vF6ku zTarDpMxT@Mg zvdJn~)889b43D;eS$mbQ&y5atW8T3y{s(!Jj;|t5IQdT3rHQ?>#Rd9vxT;AzbOv%2 z9HeX^cZ#w#Pw9IupHFY`z8E_}82|gX6DPWZ)1jv-bZ(P&lptgF4kOz#3Q-mf#;{AT z+D00ms#!+kNmmA?ZS8YozLm9xVfy7kDRlxP-D@Qf$F==VUA;5+2*6Erb%qIZHxs8^ z4|>+Q4^tnJc6U*35Xnt#smP|5aZXXkP2^#)S=P<;6h@Guj>{#%-?IQ6SnK}%EofKY zrzv_#b+sl`NQ!&+cE`ud4?)s)VgRF_oyy~E{-2KYM zrsmkJ%K8zk)K?DxrddBxHrZFyud3RrnLzEN28ms55rKo!f-OUTiA%d&;i`B-pnsps z-iz3(WD6a+*3`XxjC2I{1?1gEgia#U(E_bB7ajA4XqweoT)+9CQuUCElMKC*7Bx-h zoqwCAGv^Op(?MXl{!>$$PEX6^o8ox!0HaaW%c76SRhf{)nN?I}q(b0~@vwTHCs=qu zp*CrQ>y{}gc!{@!gon3+*|*>Ur~p9hvIWA49zwem1RX^3y_=B+@C*Pv|G2Plvnm{K zsW~flNc;;(67ZL;H=tWSyAKPir>s;7nl{c0?sw=;hdT#?P+8KdK&|5y}1`Z;22l$|w1fjT|X6K!*bvyac7cI1K ztc7lMt7VF=E_~Eyf1ObGsSmo>5*~K&SEBZEH`j+&TIf-?Sm;Xkq7S{<)62A%R`SHFn|JdBA za72)Ee=5{$XIS(p^(KV7Y%cB(%duwJDdE)5eR7oV=+*hB@@X~{5=r~}vu2d|3GK>s zk&Uyh)0aOqxSMUV+29&htWFk<>rh<5hJ$8ailSOBK$2=zf%5H))wqTVQwVv3fYKLKbJHvKb?Q`E8|zeZ!EvN`K9vw-lzOo?&UX;--G`T^8em)wwG>FP~H} zwYv|#N(}?!UP!yl&2^{Dwl%;m09%h`%skaJx*y}iTN8eX(#wNQ;rm&5bT6AUDd6ij z%nux;K(55+AlGhWAd^{QxjP-_DjbM4P;-J~bL*&uoLZCW#_nC_e?+wfR|{i=*Su<~ zf~6~b>F)lV`lzZ~&yuujwK+F+#TFB~dwlkjiZeH7NHUD@!AFuK8|uXbYsl>Z$bK=m zjgl7F_tNr8{vB*sM)xS3_fdx8Z|s1)T8D^A%d2OEq2yKFnNa*lj*(!FsXIUi5H{>z zo)%lpf5{W#w%v>n$F|HO#BB9RjcP$Yr4~xo^9lDR{h+Enffh)zHXoF`n{#HRlmd;)KBM0WYzD^ms0f`3ak10 z{oPCCvpJ|G-Oyh%d!~LpvT#)W-c>Nt@gEIA{aX9_?VVk}r+wZlDL%V?e_~Hxu8p}a&vvSy4t#D(p_zp z`=^DcyV@#uD*>i|bJ>Dtubp2^k^d{&#gqSlX2xD0vL!Q3{$ZNQR_DJmAVWft|8$$+ zHn{em1>}E#1hCirThkqCh3n+=>MF4e`M+^{5v;?r7@uCMd2Lqu1GbYsy?=l`IPdx<*Og(1AUZ`t6p>>^ z;4>vG-llqzyRioB8|qd)Nkv5C`o_Qh1pVtGyfgq{v!LbLA{;V^4Q?*6K#aZsa-W{2 z$~ORN8xUW7ftr=EHwWhjasCM?>aIiCDr;>UEygFEWzpX>8u0?Bj&Lf+WlWR9gbD2^ zEvjkrM!qTZk4(lSlJV!?$nhfe?k6-AY#f{|w$gQ^U{(4g*~a{NN70?h)D29<*}D+0 zejuF(=^%KmgQ%6p={{;Xh8`6?&J=MOJ>^C=k`5w7-k{&9r_Wew_|$qd>;dF8-(xZ?-3r9g_X^(IXx|iDh#5)(FI^TVPve;mQ^6GLlg2bs^(g&Bp>vJ9$haCyDp7n*UgGsKuIPu&mrc*fC56 zQLAX&6lbhZ0|OEe_3k4gsQu4iE<4r3oRXFC1!b(xpB+T~Ju6C@cFO+xFQz#_ypn~h z8iKWerCl0i<+!M7-7>}bLJiCTxy?ykhIfssY!z4R|0SlI%kRQk?ISSaF#;-*;l0Sf#W~ z&83E6(pUAXN7bmOcSe|*CyZ`Zs?wb%#gll}^PI@D2CjmRI(p2mp&x6=y=^_>H7Wm^ z6vZmL@WvLT-aKR=s?-#rU)5_WvtR6aSx7QfoZ!wki~@0h1;uhBN8e`!SrVlyEQQ70 zthP^X!XU$yxEh=G^0lP-{TXs|+!$dG3*<2dCVBu$1&gjt-SVa)$sG5YJ@HkuIEdwY zi@VbXsa3Am$7(%PEB3q6i4&bB{N^U4^VQk?CZvlf57I1Pi`F3js*PI%{A)e0B1wt2 zYe7axDU!mToaJ%6`eL16vHCF1cYUlxHoO#wc?g@2!LtActzrVRFPi4UDSM{W)?N{Di#`Di| zw@Pg(PpaPq5R`OW4-*$mL0mgoWjvJO4ew7=HBjyAzA}96B)Ff|igxssdQav5SCujx zqJK*?(}dq60G+I>9P^6g3Gvi_7ZmIM9)L~itf{H)i7QA`UeuRPj85lq*l|cAe;0mjB${2bgd~)cFOp!B9zbr_ceAPm-Wx zfJASNu+{kmzIeB13jRvhUS($ujr)>Bt+|T!G4xitCWfA56=aQ0c8e6H8w0<^i!9RH zH}&U5Rx>v>m2bIwyM1HOwU(s8-J41BG)Xu>E>y8qqLP|Vgx&(pnM9)|N3HaO$Rs(;l4#Yl!SztPb5}a4#1u5i zM)xHCH$izzB-S8rQ0MRZ_&U!rX=hEj`0&Pce#?^JuaZgfGD%d`=P66wMTe5;`=Qg+ ze2i8U5DDt*CNDIE?qqso2uUL92#^*Tq>39OH7G#p=uC-ywm~XCKx)@ak~Wsa6X952 z=ANlCA-alu2+LzYhlT2T89ID@lBdI~3id3$;IPJYc-@jTxQUr0&s!3fI4c$~T-_R6 zV(O;6Z#8ZnsP(D4-rYe~JVPOkg7IRj>)#lOivlE$%am~HHb@i(NbHqK(!nFa{qOHl zEEmGNwY*69j4v|lQ4jeHCEbLFsSkb2YyNjw(?wfB4s;K%%X6;bGWWEt_;CM|hh}G$ z=DElHS3UAIlIQNzSL35Qx3OQO=0~ib&+D%VTK@&5wq&Sz(mBX-^=9PhLGDe|a(x(4 zG%XtuNc=8V3&v+e6dg?BDbkC6Emf(dLD0-5dZ`%i4IvbpD=@!0Xss&2EF3T zcWEGQ%*x-~+Y5(<^ir=JN87q$pN;5GeYCQ!mZ(JvPA01+oCk?>5HmQP>};Is!cmlJ5-j$Xo6dGmBhJ#u zAwKyLvh1|=*dS|#+u3|2n%j9HlD<)kw4-=8(ynGxME<=a#J`JQP$ORi~CjepXUye@&OSVY1Q$u6w^3p zRwMgDdOnX@)FC$TZEwP1B#FE%-=?*$ZyIHNnfzj8gKCH2)#L{#I?Psgu%)AM?LIAq zG$({+SKUG&CeC<equjQ|-Ku<7+IOhpN1HDnc!I{eD)V`f zNS=!DK!b;Bw6zK8CnZia3+DeE*Eh(meNnXLLas1dcnjqxQ`o`517|K5;0@COVCzVEn~kYOT%C%_Yu zXr>Q65Wv2KUZL7v?W=VM!RlwH2EhYuTC&2;=kf|V>29iWoxMl)HRQR6f~0BeDz77h zE&`6|I-wV=?n$==)>7sA2^t6aGG7WvvR8l*`w&E-CidB&)_F6?!-|vg9J$_9J0)tM zB~%HYN6qWrwjj&*ry$=l=*33*sZ4+ZQanYX3@IK6pn%tX$fYFfw2^DYZCA2~yLO#Q zqj^@k8!VS*nED#Zm(g;L>kt%lvkjVZAY9MHN(lDy1qJQgWjh7sX?^`+Pc^)9D|-N= zq8>$KL2zzFb^a|GzFA2Vd$twyW%|N0b+2DnuJ1DM*xaJf6c_)|q}K|rt^=3V9Gjxl zFOk~I5q&*jUs|O;$2#pQcgfqn{onMR;6w{v=S~fRU-H4<{>yiQmcGsv9jq^+-PgsW(* zfQH}l74(%CEk~$AKJuP`MYhV2Z6E*v)%H%3rZ_Xo1t0kK(sa^UCyjnyLAX&LhHIDu2Q% z_WkTbZdH-SpmQ^Ch`uP=t#e1e?|Zsjhl%ZB-6iSnw<02cbX)IS4;3T(yS%&XWly&o zFQoD-rgkbWx4|Nk1g(ZP)1a`vw+$G#1M!0`qVqa;pQ3R3F9Uk$%{&MNwP7A_klp=+X0OREH z=hdh~Cc}~0CD0^vvaRku0nm78UGA9Cvkk{TfHsOp6PVF%%@X8DqSdWL?pR_ zC%9*SvcB$SCH0(BD@QjFb83@_4u`AM6$d$G+#|^jr zyN$N=cJX7Vn>I_;OJqZQ1c(5Wy8W6;_|?^!exbLdAr#&!?T>r1pMh$46Kh3W zS9$J%F&K1pb#(sOfb|UUjr$LbEq-g%8RO-^Y#cP}Xa1Ag57IyOHq#-F#L@+*6>F@; z<|DC6Vz4T!n&-daht9vQAY%W1Rl6!{omNqJkk`SNP!S`Us6 zBy3F(_FxbeChWujudzYcQG~4s(nW%>eW4ol`iuz^*WbAVS$sB3038yo`351knnFlJf^I(!_;=(Zfg&Q4=qK*B#H`H(A52d{iAGl*g zYAU>+#;sOBU5lWQJo0;bX3f!N4gc{={@?=;$it@~t9Q+d@Ca2%wa#9nG~=T#lQV1A zBg9h9rz^~jv5D!;tK2vgCaJVzd~BVMeFx@Kx4t@v)jk074n?n_3mx{Xk3B7jE%vdG znzp{m?F{ac1$J^6xo*2hW9KTjYIYFb%BOFr@nAkqg>Ml}Slcl@VU;_b9wso$eeecT zB)Jd4Cy%Ion>=kqb4AuVQO?a;a86Hj=(_aho>mO&EAONb#td$2&E*XX6rrg~`j3@XvVsQU%CO1*V*9o3+i~Zt zGEzX!dkI4;xla#^I)8(zC#_@*VUpmse$jt|uGFmRKh||(&l5BaRW#7ZB4&IL4WI?@ zcL{*1*&~io?1}@tR%$DWP_XsBIXTtWQ%Zv?+{YSEV0Ne#PMCq_y1S0`OxF1|lhYa; z{@sn;Xh;miyhi1p82w!D_ONqR{`)Vbsx^9Ls#>oRMzw17uxeFcaP`%ChOkD}T4vQc z3#*sLgjZ*fP~!h2^l+N%)lP!s{g!V@zdZ83dwVcC~=HX1t5!931mg5CW zGvrC`#aAgxi>vc!2EEXm=n}2geV$sRNJ_;cB5++?;#MkvX1&R>4w;t7bAR+u=DD^I zHdunt%BK3d1o|JD?g@oHq+?GsK4qF`(fK#lsO^%`d>Ub`z1K5WsLERtydTK>%HVwu z*g90v6lIo{jqfPc*~HGZ-wGdzjpvk-WeyvPzQLw7&vpIGWKTbK^WdN{S+v$YQYriB zLZC<(nl-1YaJUsES=Iw1t_OM{VOmYG``wX8y0&bd+ZRRGnn**qZ=!!6sZKf9UBJ+! zVYoW~0SjqxpCCu&nAa8JB3}zHW*lG`GRxC9?ge8MNVUox`U(kIY-UYJMs#i{Lk+M2 z-mG2~mePdVhUrTA6NR*7Z;_f~1#IApZ5tGO8O6d*C=W67RnUc^kM3l6v3@x-Fl~N;j7%&Q`O#bhv=Rqzl7QOKr!6qiA7akL?3yDA=T>p_TNkvRpyx8 z7oxMnDki6&d0;!)g%}D%a`iCo95-4=juAdl%8S2+0xi}Zgjzu(>$RF!t9*UjSDuWC zV}wT^<(NbceH?B%w2Xbr&8}bs=>_e5?c5y5%N{DbEqw=-J+q@h zn#s z?CnvzRW5}O=^|f3cr(~!o7a9${}R76Kd^>&m}LES0|f3bL^rw9;fYxBb0RxOe98X{ zIl|K6HJST)5Aq?5}9#WA+IZ>DdNCvBLsY` zfOUw`*i4j)`|69@I5ov>vHovYP@p`h5a-o}S3Us~+s%3d7r3cgt;0w(&>cQ=Px0+d zn(lyqGrQ&pWfhkHAobi;IQknF-c$c{w<@zL^Ej|QPr99^WK46TIqagpmHE@-nKEPZ zU6_oq|Bxfm$CoTtVk(>e8rk~> z$a7~T8dhoSy>OslZIL(r-Y=_-BNs!Yeg5fXbU76vr~`<)%ZY|Wk#I1Z?ynwqCV^$$ zZ)cxXtawpE^V@by{4{E^`fqjq$#}-YL#`BJioX9;+ihq55SVgQ(0It9!0hqNW?HeTs;s$8cr}0wAuFjrgz`ZhBiu{BB?drLA=* zs;GxDcNS9!_s67Defvc!)d`tYPm#*) z*=d!}k8QwTG%!J#HFRsUak`=Hnoe*1)?LzT-7e6-MBZ?*;>A2COBv!h$+U*5;t32- z6Ok&AkPgc_rh$A>^sg@b^dSa`>dPi%?0@j(JOQKu7>A_!*1M;qWJ4;1??}BW>;oT0 z(9{0Sy?6^U#h;N49yl0P4aC?e@5Ui?+~9J|8Dcf>67^ppTsf5H5?dZoV*m!IKWuZF z-1h8C@VD(zmvg~{gsOomh1Ej_qr6Gp0Ye0LXKfT)sf2ykTQd4Ly8b6G(npII!D8c? z@5(H8(8uy^{4NnS`?7lP2-XP@wqEN;-I65ukwHq*syhD>WUY&;+Oe6^Y>zTo6T=u{ zOV@9?|JV#uwqtkNKS`#^*1nV#*U*XyES{vTQu}{}6gErO#0J4P#Lsix{pBQ77hFh6 z1XhM)VGz(*>wcmyh&d7DA7OpGlgiS-mv{_!|C*o=l!CC+e6m>&fc1rzEZWm2`(Y`` zo-;raTEJSNf#q)&V$2Z&4@p?Gu)B2J4EEKa{AjxT?>+>|P6jwsA(90t&Pu0vb0Sc` zf+(udgO*~2t5~ZF(ASr;8UicIYxjEeI(6sPFEGLKheDH-7Yc`#Y_NSmTx z<8IVKM|DkqKxEd;@ka!Ynqe;DSaiLP&8$|Rr4c)?qw@gOZ%%M=MADtu)=y3EgzRK* zLe-Rgtg=JO8$HyAO)H-34uO@Rj2z}3x1a{My9Gr`nTu+PN^??8k^m+pY~W&O=cSA=>ZuQ8;?y%=6LR#?wyeL&mp19G#)#KiQzyp6Wa%qatMm*gL#zMc+LQ)>r zWCjv$jeCftbMFkZ;~Am?W}N)!XF&q?Jh+j5ZQcF*IhC`{J;&3Vh+1r?2WIIrh$%Fd zYFa}SnlE4@9zbnd0vgUuu!_fJrDX`FLEcf13ayCgzrN; z(zd?6o<0gku{RBdCghy}BQ#!mRuov_p0Q`rJ!VfX&q>LlM(a)fe3_N0>gP{c>?crH z)8fAJA1(ADe;`D79PLZLUP=gc`vIm7xFu>qjCU3k$>Ug@#PQx+rT^&x)`dee!fd0v zljf%sF~+86Jo-QIYmi@7Hy#UbhtVduvTK=)_d7|6I0MfMIs zj0SGBV^zK%Gk!k~(MqyloZ4oLNcaE1AFH)(RzZr&D$n^x@CU-3zE`i4Ez)NS48Pkm z%Ox}P}fywMws9fei0cy2`0|j!f%5lZYVc@(BqbEF-)2OMH7` zU0z_g^xRdvJlDMohiZ&FOeKe(_I<57e>#GZ)>gwmM+!w=IvEhv`FBhZw>N0S{IkWZ zb0@qa;3S^oLc9v`%Y6_bh4!{M-RaWyW%&c(w3T#K|4HE%ea~=vq?yO<7{e_o+}M9k z@g|q@56s}!!Z1j>c~2Q`%kK$rTjSPB+%{Tn-*!Avf5)6DmxLF5J~zfhGwxCt1eUme znJAcp&h;WjQmgY;cY#lWR1|F{*q4kFO;dcEuAjf1U230udT~Hkul_X?EB?G!PBKkr zTlKGe)HHghW?B8JM@>MVgDcA5?Xr-G213a5aYm#ul45YXUPsIQDMz5uK40_-Ul~u4n0IjqwHB2&ar~ z(cYP*f&R3L^A~Io)v#gsEkT8Agx^Lt(D36vB9C8xEhw#WNu;Z$boepFHi2dI#nhcw zp2xO>(9iL?lyO|vO%5q~AN{8Ku;(!aq~{9(Bj4vsvajXtE=hHYvt_1cm=Md?w}~9g z#8w2Y&fiZe=uoAB%}DmDVZ{-4+hCQ}=Q$q)!l25p*PWaBOX#wx{>OP=l5=a_UO|~F z6XqFX$AYBhYbpN^x=+$|`c6b)_cx63C+i4D#Q>OSXY@uWm>v%=B4ek#3#J_zpw-kb zKCY*vRvfA49z(nZ6=>={{MJ5v^z(>eS8mY_5@VD5YDD$(1Hq+BeaQGnVq4!+La0!w zGWuH?+Y;gz`9<~l14aA#M7zdkQK3v~>fg9N%cUEhXJxN)pFftW&r&AdZlQ@p1`5@1 zXVtJ?GTJv$Q};t6tA_I#9^9iAZ8e;8vT8UxO*v}#1B14Pf|g#9Vs?L?Tq(bBo#v&A z-E$FzoG&P7`juyz1X$%xF|@WNL8`se{HgJ1v-{3VRTXr+St?=ES3ls!pHzB?DxLEu zgc?ndoG(fzm_+QtDA*Ns(yr4hCx_7Fe$G@ou5+(HstRX@8bJO`zDUJg@{Q47Gn3os z9fiQc?{OsC&=LpAKA3h2ksSFn7-B9n;OYzyiN(&5%muSNcQ??yLV9DdXqw?hX!;1b zgD%!C$ngm6<@NzuTDMDg>c;q_;^>iqNU(Y*gdTyK81P<^#b7j%{h*A(d`-Q?Ki zk!az5d{{{IbVp7yWSY7|{Y#14j~8F#3n<0cxL?)q5^B9-H(%?yc;;o-dLJnSRkw9_ z4-0CBqDDzt;jT$)g+6Ue2!r?3Jq+(h?a}Fi%_azNyMs@^*zgw8B#wcUdUhf*)(2YvO$07IJT9#~ zF5P*&B09O7M>o1}-M8U6W46vCa`-jokhCdwa~myJcZXt99wFyZdhIbc(pDb}JdFb> z80?qV{3E_xgHuMW1C4ntj3ndj(fp3TLlRvv>{j1yE&a5QzRpKK&*K#x{p;Q*I-6o? zednwJVVwoRL`F>4BKDEn(`IeAL5sC+4uYd7c3X!m9J2UD8HU7PCyk%KSM}{6ZZ4xh zgJ0FRU88T>CtXr&*95|e&UfJOLGNKIqdPxR@>l#=Qq{M+1qJf6s&DVc@KWP5$|Zxm zD$w2ac@UJVhPOeF8nN5lK5f+L;-Bu1XJDUpLQDj|@S)Yosy-cJecH)wQA?^~f(>4& z*2w!VuhOOJwF3~l(Gsq2_&i+4q7EHnvGfa46~#7<`7*gJm}`pp{ZD6non)>^KxT9 z7_63*8?N0GC|Wl8=YGP1$}Nk%UiMaQxb92}p@wA}yM`)s-wZly*_&;`b>|9~*y^$k zSBENc2`}3a4OPzETX+rfQSomWQVT1{AF6nTphDrRB14tC?WN2=xQQUo(plJ~MtFuy z`INh=aJoCtNq!uxM3C_O(TK^g_>G9jZK$!mL`yT6L+`^`VMR1jZ)- zA_X>nhzI*d%M{pfo$4q0Y`7>?xdHV$emv+F3QVZ-FsPc!`+Si1kTgo+>a*J|2-ltC zD_y>^S?G>wwn~eaCh(33RXlB+>-Gkh!={g1}U(@Y?y;ylK z%F5fu^3n*F_tkV>Bf<5l8qu=tl`}zgQ>89%lU?eVbk3kuOn;(=RVHCZRnIM+tkmi< z{A&o0f0zaH&%i98#XGU)71W`QO{D^)jTnzB{Y;O2uyM#;NS4^lf@h_yz-oDxJ6lVu+=xW=3ww^8>;vhhxNj( z1-fuYueBkNG#0%DXDbd*{W>(ZsaSOA8`E|93Kx8QyklO@q5bYCh$lIICq=`@fETW% z5W_}}TE5ms{b5xD}Fxgoub;+%9oZ?J6ksj)hUBQgX4|=}7 zY;BJ>0fDUMosCOkxb8HFq2?VA2J}-p&+V{iR`b4#8&mw^tmdsIpE&y>I#oflP{m0> zCnap`(K`j5s<%kg>JB=Wb*jS%Pm!!Y`PCR7SYz}`HAXKE{#H@10oHdDS#oe`>rZGZ z?;bwyj6mp=ZRilHIEr}aTTx0zcuc6%W8R?0^k)HKpr3=gbD1xN>vr&^#W&y$nu7Tn z3Wo4mZTJ+V@F_t4kt%);V6&)p52?8oqw+kJCJq0E`_MJXF6|*aL)D>Q;MYF>J}X1( zvLj09-Y26rYC5r!^q8GAca!(~b);e~vb=|~g~nf`BD=vP;kpvTWHr~%of)bqA)L2< zp~{UkRJg9cl_m{@Q8C`hit@a^()0o^EK}VGUZ)#15e(liRj>_tpNU-7x6U+JUhpqj zE8ZOzs(64z!GM9dQdu@&yh42ZF%=ri2;V3L7u*K_AQz=7)Q%vB7$r|7Ro&Ja-91!s z24dGd0o>_P)ZQxcOGceQu;j9Y^w?)pT$HPftqQg_@m%x|g=geb6BP&p&Z8+(eU(lx zLaM*D5|XWen`-Dq_}r?cjv-BW#tBv*>U#pRm@`u2lSrBc{U4+b*PTu(b&tE@9J&Y6 zZ#j*V)jj^HteXi-m2$1}#pZa$5HaJ2JY4!i73HL*lFLJ5`_hQ$M_J>~xm$ut_97}J zN!tomT9Up-DY2PI(&`%-49`|Alks2v23d z(X!Lrmc99};d}FshVS zy#+G&FFsT<_X=LU%)OBf1vV(VADO;{>%@WK8J+nrnLB~v!gU=j>@fb*T=9{Fk=JLs zhfK7a+viYa8*JHD$Inv|LJvXZ5cy$guG8k6ZNlS=sIVfNY!lf|k?Wv$J4|Y%uV&46RNuP|1fA%4Sfy*d&5}kC7C(D;a_97>iYPI?a6F66lrLXwF@mx3 z98yqf0NwOEHW9efDM0l*_a18inF0>Ts?=(40Z^r8^XgGiL+lK=;G(@1ZsBz*%X3Rm z+=}n5xNzC*CCqAi+`K&bX()9ZEuv&n$^82;EUfx@~cKwT;K=ac~k?iDk+x z-;f)syodDh9bqv~U!nfscp)aq5}whX|3>G_Nta1-izU(6?5B;Eq=+O%vCqpjsS}?| z8fz}c38qjgt-^fA`0X`rb=mD}+<01`*%NIy9?FXFk$df0P3qSmmQ)9{J&Biov3h@^ z@LY2EZ#B+zzQ9Rio5Xsgt=0)YawDOu2f+yEg_8!k%5lnEHoE~(+&K6s<-QsP{&e~! z2!5jfrj>fT4fu2Dv3Hi_vRql8Tpq52-$)A&P)>dP7~rNGb;~u{pJ&L6 zI>f8!5J{{OTic-lr#~(XRs6In-ICfrKg<1y-U>H(ip4)7+SIgEPyKqL@2S^lQeZu` zYkj;%Ks2uv3*QC?8qrepqk%l}#tD{b1(l)PQJGBl`B;P zT0%9LezoryYJKzNiY*Wk-y#htQ5lH%TKWSb*6YFWb;P(i`~{-8EcS z3W)d&OaVqU+9XZ2{ZO;5WyKir&77{DqFTH!v#)SnU&6yPx+@EmUrK`Nlekv6S-5T} zVbi4h6opP&?>j*JRpP^S%Pr3Z{1+=eWnqOD)+-463t{q#s|t6Bh1-=>^$?dmOlR=M zi13VyNC;l>tG1UgY6&&{it8rJa9tZ-!!t(mUj-hg0%u5F6?@m|CEnJMfImrhc#v*) z3tMPmM+IRUzs*L>-v*r;v+CoY5F4&L%W`xHa?ER#BdE#;F;zwE8Qe9mhOlk-PIO$s)fnUr*wlXO#M7OLqt_r5n<{FZdd6gwFeL^_3|Gu z>uznrwX|_gL6nIX-)Sas2cxh1wDD0ySpNAajNw|QWtM+fc77Q1oJRQ@P%?emcp(wq z78pOqK-r+=Mj5p018A*@DJTq8c7ZJ6+HykUd0B}ESmLXK#0glR#1)4~6*(eQxe2BX z*J|vIFCZ#4OWfZw-4$e-qD;&c-?hYJmH6?j#48z8!?m{riDSNm%1146g%aPCm3XEl zzBNcZI7l3^#Fa{1nw9uoOMG>ZxU)}OAtO}5;TYyD(>2P}GAq-Cmg(9clO`{!@X5+F zGE~{jGF_)k4Me3X+{rTC6l9W?Cz5{3cewUSC1(FxI`I|;*KqCSLE?!);u=eQg%Ve0 zC0<~O`Dac4M4JkEi zIl>?_^UnX`6(SEMQo$_=_BN-u)X-F|&bG3LkymWHN^M?<+^QX|a+mSxxfadtD)i|1 zyM$mDiqGK*Mi+oliFRS;4dzW7Gh1Eu`Hng9zY!g-y%QLSXGnX$zRR{?!;p@j=?Ht9 zZazX~MLfja(h!@aAU^&z5KDaYcl}ZYCU~;~PhL+nJ3Bx`V}EzA!oH2-9ImCGab>a! zul*yhnvw6umzhKb@zvW2E!$8SEe*#$i+>LT@Zl#`nys;2*9aBApBJ&nn>?XY<>9c1 zC>TH5cm?&=VAlX3Q@I|f!g1EdC|uoIwxEjfjZ*AG3UA7bM^*NlZEPyB4xr3*B^K}_ zwW3apKhr4Zrx>upwPeqU_f!OUfe>Qo4I*fc*{7!HG>bQ*(-EQ*8=^MM09CYFW>a< z10((MhW}t=`$9L!cmmm(6UX<|8nCKQyI7yztb) zE~g#CwHnIevxz2|I*m@1h`&PM^fLZQC_K*-rbxJLRU18P%SF!{NF;jVpPQoRW$5gpXY-1Hp3R9% zQh$RQ5!6lm%P?&PAj7pcE8+|Ol~xtBa~A=f%i`GTS6a0*?p)Kt)q~ryyD}=*NOuyk z9pw!?joX3ot9XebOREl6RC}VT2jt3+fc@Eo%d)$s%%*tm8=hgi!7gzdMB1w~)wFx? zW=%VWQ^2sdv8$~#HqU)?8XLJ!P0vvi)ym!$91{iUz>h2tF5@5%VAhqSV7|ti!CYc6 zIS&zaq844vW(-x=qX>0pE8mV)*LQFi|5=Naa{TDf$Q?469N%bV9HKI2d1gqwI$a77 zEuMI>Q3Lk1q$mbC37k{2q|?zBp;>u+Bshd?nLX#kZwSzlan2>isD8*OYtnPFqUa{$ z@Al1l+#Nx)9!LCK(gNiO1IX~66W3y8xK@f{yp_Eod~-}i4c8)hbK*(qaJ2{N^+#U) zxI+INPuuvl_=Ojz*5XU5&evM}`QQ1iqCGL>djiTw@^x1QN@3IK<4+qXZ)9|bT0Q7) zR*&&nQPksbGR1Et%olc9R$x`tN6XhO+051cDqX^ z7xPoxFa1_8|K+%C^Spt9Qik61DR7|BL+Ym~#LJX(33Z$R&HfqC=|<8$%b_9C_?Pqh7J6;wdkX2g6SqD1zZ7=# ze?h-rg7N={|93S1HF`CLKYuMg6}KxqRrov7YKOQd@Am$-%+O0-cPzg z4awvo%maVxcjU6)P9qqXVzT=!Sc-pwbm|wEVh8KUcRkNDu=H>UQ1W%2M=-_TO!$$X zC6mt)_9Qeqh-U>qE~HBi;HUJz^_xh#7lFfGmgFMd(VLS0;QR0VekbG;`)`(3-QJV|a5j2bY3$?{($RLI$Z+iB4n(zZn@32C;-&m9ZBc0!Aj<@V4>y%+;Vk)h;(*vJ3`NZ2%5N{qi8cu*1@$;ke;H_@+F3utIPJfc zI&_Maz${+(sAl9vl6r1j(zn?>=Q%B7=c#Mhx_uzFI_R8OYRd-3!O>_k5lXX}%KEB5xuDi7fa z9OA~rXDEz?<~Di`4pr(tlW?8pZESt}XNgLu$?%kdvw=E@(mDQ02kYTl(`$QD|OW zSa=Dp&uiJhj(bM9?#KYqmz8rhDGM+YN~xU2FAev8#V%AVR5(Y^-l571c={Cj{0()X1f&kaG1>l3NJMs``6)-LG^-2qdM@DHic_mAP~D zP(>U;ggHg8bfUSnL+GBL^C8ZdI9z+i6V3I0H}BKnHMx6c@9KJuw2Obo?{m^P z5ZsA&o6IkV_wD67fbfpQZ!a!8tbjDngHCqX_TEnf-lhCv{9fR9A^FDeGk@Zge=wQ&y-#hNfE0c)Bi>8~XK3IrJ=Hc2vF|7XLF*B~^JBk=l$3n!NX`>RvUd zse~$9*RJ&v6d%>Ct}XB3*aaQfF5g)hnDSOPkDkC=EVrs}Q$8+gpO+KMEvdS&g}di$ zR###N?nJ^k>rBk{^Pk0BrP5!apH?;h@$x)Pd@4>Nl2wa}BA&@NVkJ%SRh$frl2{3YMBYQZy4AM%Y*wOGMgmU24VZd- z6x94Qo(vk1X65UTjO0OsC^EXi?HrM~p6f2WSWY)w@J!g_H&WfX#ab@PN$i!D#~$9D z0lclu2e$)nDoiGL;j_4;GgfSa<5|E<>>A*6a*)3^$Zx28)t_Oaxau+uU@de=%WB$5 z@1p(_ycfrY;eP9V&NC+>ymCE5{LEPM$A;zQu(#&TaO|`q??;^8X^=&aM*JdwUdFSq zT~UWuu^misqU(UNf;j^V10GGUj<%0!e#9#pdl|!BPghBjepN?UijJU0*V16Om3jq= zLN`Kr%?xyRjDn!AiJa_is5a5I*7h?vhkl~*tp|bO@~sDJe4AIq>gLdv_xH=)nEV2R zk_{Yl!sTo~`C&P{d<#oe7|k?|s5G@_Dng?2?MV zBYvmin|V7!YDid3ROlX^XAr+!(ToYND?9E7?<%9g4&9^k*5W5C0mGx@uEf8UZ)Qyc za*)!rC5^XcT39oM?XG+b8?uNg-vXZAXkuxW)3f8>5Z1FlLjA9bOumyU_)SH=V;MA( zSq2;5rt`&R(a_=E`fzSQ1mwHYKV<18#VviM!eSOC8Ej!U5SAE`DrKm?uFAsuOa+{m ziZ0UEsR-##226s`+bi;DZ$L57dn@2TZ`HDZJO%8Q0=5o;CRXaYP`eu4yphH_ zZql_H#m$eu)pZtRDwEFZVd2_!y-j?#&P~6Dp4DDlxrz)t8>QMcNc9&|F)m1`Q^RNk_+Qs4WEiEIL^S>GE)t(un zMX{M>GuLAEzj?3Fls8#Ekxy62(A~zBc`v74jp<3iy^XiYA;MO{(S1t};%29pWg7D0*nxJJjyK#3$ zfy=2B8@17%o-WQ^kuKxTtTHwwI%Nu&V5l`4-s7a|1HMcrKi87WtSNroz!W$f`vgoX zx6=CC$Z9h=E7_jJ;h?{n2}Vmo2~ zQ|13}!Br2~wygaSMl#%|!q4RWk6GWT@a$*BHt`Py-&2C;dpuM76VDoue6Kv&;pS3o z<1OHH8lWKPAj|+dwb$!UWO>7keB94b1W}kpU%q>yi8_cE76vh zlk~DLFYha=1uyUD1qHmY%|qrAWMXNqPSd$_i6%hn+%7}}XAx@qvUcO8EjFqBvnhDj zWZ-?%cN=&;19;Pk_;q-iAD*o}`k{)+u&p*`w*)XaZDCS|H-wsht{V>^&B?~{ExXg| zVXKqlnwD)Si0ms50qLqG$$GrRqVdGgVE0j8R+ zYkBDvx_1^gxTLe})_d%Gxf^?r{jB4f=!fG<@DMvXTAkSW#R9!lFlWD9c$CZ&&N{Z! z4FM(4{>N#asW+m3qxp!c{~F4~p3bZTy`x>?1@MUS-uWI)>OwQMv0-WC@)W;~+oNn_L1dSTh0)?ffA;T>J1@6lX{4J~ zoujKKbbYgIld7BhR#!acdiBO6R>H9p9XCdH4NbXV2a;4QjV>9tM`EX!3T%I4a%S1a zqob1(d4_z@1v5mn`Pw;Wxh7k!9-_f6jIvlWTdO9o`S;!Qp1Vll5vIcp?l2}KO8d|y zszig6{V1sMID*)4$!?8%>$l;);5>$){+E)Ksviu!zriT>3MK`Ed3mw?4!g=@^WJ)9 zoSZ4dfhbZ>i?%u6gZbqZBIUVEyTFVqaJjfi0vC+BZLtcuo@^GDk{^3$1Wl%x{}}Gt zhVHh~Ivk5NSU&p6cZt+isHf3!IV(W%r-7r+7HAEQCuie03wr`3>J)+YA0uETDqHa4 zK6%;*0vs*Qjt3N{D2-)rYMJZ=7l^%nencOqENM2ZOKf$St-pztX~;C4+gc&ND9-2` zi+$pak9N$`Hr2jj%`0%|0~sBHD+}LrkmfU=IdkH8#g{Bme5mq4>v!wiG(@$&@8jDv z5X>e_coO^3KGfq<3UMu|M=DM=X{Va_vtL*s=By{KWo9x}!_u{miScK@G>E1B*)Nl+ z5($eZ@gy-fApS}fD>WJ?4x{YV9|pu+$BVm%vmvsPc!W6?4i9DS@Qd_f_p`eFc=z+I zE3(`MQvGRLd&D5|OM5D3E!^PVek0xYzrR>?3yqg~8lAkj`Z`VjblBegS5q9L9UM_0 zhKFl)anG@skkVZHB9^8=N}}E8Mh_*?U~1G<6`AvtO(lU9Z-D4smnuo*)1ufli%|XX zXSO5ryHE^PWfgOuHBqE3K)L~B)*^t6@j$Agi{gJ15Dg`Xn`Lxdf!%->KZBH^n;5u< zbBo9WWHGDBXKvy%#t>(L@>n10Dt%C2ay&v1F*WvR-fsfO9m|U1hGBB1c&tOK++R%$ zgeq<@sb|Q3`A2mB11absZQY?;eZkH%UlH-ky+p(LW!imy1-)!LtN^F$K+57W_=z6U zzlQJ0@Kp^L)JCr5e4;Y=F=+l3?r{P13d4 zG%eARsMNRaM&eEu<=BGSryP}kz`;mvndXB=Yy>G0KP^CSD%(AwMMaMB`;f^V5N?zt zoLUK(DFK*Xo`};##4~Ag#_EBvZ83*}2j^pX|2Ov&1FLTq8OAd3!1O9$74`UGRI5xV zcQ92@$^c@Lv&5m(Esi6aX*w>|YBlv5CNN!zh9GuaY}o4IK10pPu%uFsTuLY1nUo%a z?%`SE)`5+vF#0?-ZG*d6Pn{-vEibZagJ2u1B`G>queinHdg;BRH3Q(x~IZ)sc3rrNDsG zO%b)x?FCdLqMsPm0Y+=5Bs*A=zmkNJDbaEQ=C!U%6T7A5n_W@C`SxVA5lHvHhAO9+ zuv+I<&M?N=2Ky2w7VZN;8c{v=ZWiCF@Tr4RB#K`jKp6oS0GzWIKU4iuEP7ozZFo1? z;Oj`ChN%lN!z01DTXU5=>rKman3VxRF8n{Vy$hVx)BgWIsi7o0mnoM@sdSTyMx{m# zGfXtfCHLHOj}9~B5<|0{wr!J3bkLD|4pAr-Wx8mJL*t%GL)5I@PD5x2&F}eoug|_r z&N+|o`G5ak57Yj9*5$q4>%HE$^IM@z-8sM7{b3GcfKHVeagWYY<{0z=bbv?osyjhv zC8YztQChyxd6P7E*EFMdeypHVqk)Ap$M@IH&nAVD9h357H;9!gT;p_ImPQu43B2bI zSa*Gk{Md1gxIla+KJBd^iV{P;FJV+EUTIp14W!)vb$Y;+tL$OaborCqTc2NF2@lL< z(Ex6@w%+gsOw|oEb)~s{|4bG7@BFQ<^0(f2!c3J!;m|Ymh&x`H*jMejHLNN~yicVK zspuYPIer<&Z{13G!R~1*$7H~A1zB0C`C`e9!CdjXINBt2AKd@NeDQ{0zL*#T>)$3M zF9lhoQg}x$a&^WZ4o-ahJQl_mKY~)C5K4b9GNuT)q}=$&G4Z~ zPZ%wB;7}NOT0dzqePS5i&TXos!IW)YSXJUxF@Bbm<-54u@sS8$APF_JaC9DC>;{{^ z!s|FFITQ*Aelx+OaK$_-WN}$+sPMzc$ST%+N}5V&TLeP9VUZRC>^s2Q14Iu;hUwBl z$!65{Nq`Nmr>Arr;jlhEvP4Bg<)0*NNr37>6nC2*H&kNBBANdjKcpab6@vMDlK-VM zz0h35yd)*u2@jPqb8}| zQ@EmFmLEGF;VS0`uWVxe0tAe)nxavvETk#@%oH>F_)4U38mo@>>GSc+<6F$Y*SI-I zD?L67zioO}X(w4Rb9P#vja00lp$X%sWJL?#GOi94EQ%Dq#UwLS-W)`Q%U$oPekeR0 zk4o=17->S`DZIxwHWAlCFCzk>Mm17$Isi&ZI485AB%==&%K=yx}bGx_PJlWxpWA42VSz|RBrmm$yQT`E5h zkQ%;Rem#T6*Fd=dha`xpLh(+kQsZuZP5L6}pm)|U%YbekZ7koaON{sVg?TO1fntGg8Q$ zmWfO(XW0cHGK4hO{9&oRN_mk33zv@{k{>${`?h&!`!>nl$y~;|V|XlfyHFbeN!z#O zfqkoYm3}&k2U_pmTPo`D31XhlA7+v>)1A&kKsHe(%>a}1g|7r30XCBAMfqHH#U>oQ z-B9=*@1ss~`v79X_-R=sKYgomuK+>xf1Y2zo|PGLBqUT#=o&uMhk_bIM_TzaGR#&= zCnjD|L&MiX3yt<^>_QLRn-@8hfhp@G(|?~aeCd9AzW#MFh9(ot$FY!T;%pQ*ZmW2X_g(!bFP4$xfUuU>~7(grJ`9GGt3m5VUGH9cX|C%G-p^bfLL`gG=t_Tr3)~9!AS+Kf4JhRqH9uK z*~x7eI=Do4bH}?RI;5qG_-c8@xV74=k{>Pj>!5-TUonDBmK|GverQf(fRwLS;YIKXnn^wOSJ)4&uN)Tb-2L??+*~3@Db{v9gPPgBAz9pqxp;Ni z_I@|+J?pg4oR5kw-uJ9K*!Vj< zPMGMIo8fztg|$jRtGkPj_q{sDeu-D`OGbq|!9UD(`FgNb^Gx@gF)L8yk-zi#(>B7( z_|yCU_V1nmhW0}IZ(;qn^{)-u)Ovn;1pge5Ewb-*z+At%K8UJmPaR@3dhc)xkR&u? zhd^Q(0~S}-6Rapo2P@)D(JijyeO}N5Z-41O1jGB44#GzYU)M~bpIlxP)@Wo-pSvG3 zEq;P|NSwdLr-v=2zM1LrxWf(htrM88aq@Q&lX-iDA2_=gM3%&k1-qH7b!vWw&d}GEf96aN3QF4>bybUd zhsj=$wVJHJPS*&9vjJEzaQw`SfPHHM3yS&-_^tF6p>l@D9e_9>^qR9Yz|{Ut(Siwj z?j!S2jtKauD}8?^7x@0XPrri3=<<5^9gR~1!%clFQ|qqKZxl-E?1zhvkiFvyTVDA5 zQ3d4EZJ#EaR&AR>qPCQ(lw2QDm~xHIn&QaT!4 zh)f}DC_a{B`gAoah$dQse15wjlF_VcpH0r z+Fydw3l)6Na#U6Ft3wQ14NB1cbcMBB;cihw!sI$0;w#{kGJJ|rFg3YF&rE45#O4FqK(+5biSt9cOr^88lkeqo{s!8B@L(xjU* z-5hYy@O?U&9DhjBn_Y1(ZgZG=cR%9}2cL~wSQxvylSS}>qxGjFDU!*)yAo>fIc>;E z0fc)W=RI?^X`Au0pPIdvDj3T-_Elu(+MwmSd~qByEN+JL5`{Pq1M1k){yVCwL*`!t>SqipTgEhlA6I61gquLoHWGLg*%R4smY`H?Nh;? z{YJK#B=7~b&o23&wdcw1usjdhsxoSEaq<<;ut^I zKHA>)o6-8r0~cj4ahDhzcKIL*oYy#Zu68Tz&=>5mD!b99&NK?Mwrg;urMb6WEch}< z++U#D*!c^votXq5l2sh-%hZXLx!fCQ%>7|iB?b>8zc%yzrgnnPy~T3*_Oj>)`bK5v~RihXr~UMZ=eC5ESQ(hA;4s>{bYCHzTPP zJep$^jbZgj@jHEzREvDW0S{>ozs+G9c7^LJMnc2FG8$zAQ0YvF9W;7fs!>H%3n|S; z8+kBM+KK41pF&kFXm>?nS&|3B&D6vlOT{^9r-n1GKiVzxE4gP4U$ib`*my zb|0ET&%0CAb0MX2gbryff+SEeM!sSR)rxk^1|GQZlrpk#*e zLf|A?QD=m&^HUc=TJ0hp(osJ3*UmomdQyi)a{H3%o;N2pySFc~m37910gAp zKwh#(Wxo6U<%H+>oEOOFljnXS{;L7l-!tdOh`uH;)v{cUuzP|TO1-=0cJ+;!PTs!i zF?MVZ^_D5o-lS#uH1Te(5y7h+lj8U{M@mS&Jox?Fc4tD~l0%Jj-FmA^ozp48eaIUIsXS=SD)A!a+ zAW|R~XG~SeF~V-sc+(_4aGJ*~L5)k#?r^;jLB>MSXKl>Y83YOb<++qh3+h0kJy_}&ym@T zZ!v zZM{AVaBB65J{~-4s44NwxvRI)%jtB@Nr~?@l*F$(lh~zAD z7rbw4LhYkXKyXyeGSwhUmk{x~Y^cW`&Bd%W6M#!JrmZO+pP}syvE0FD+2CX$dE#5)r_q~W z5s6y&I2y~yRqHgcL^dq(GMJ_D@(_&{}Ln?nkBFmQ17)YmvLfd=Z5!Y9GG{o z9*!SM8<%=`9?D{OEf7T6E|i-verZMhf>|1~sb%i$1@~oMW`wN^Gxnlr%unSf+hj62 z+wh7`wfSUhL05|S-R@%zN1JxqtTGZ*4-YXz6ZTNT{r#H<7FKmy=xvEHgBkJj)1bGZ z^8Lt5;TOx9g+#bc;AqztW~#e_)TS+Mg{}HKy!1O(Bp6?i{$HN*BXkG}dY{NiFoxXnUV161%G_Ukh#n1H=dvxC!7H7j*XPL6s@j-o zG{vC0Y(kQNn5Y&NwkX`&z)1Ua6hF5UN?EXxWLrKP=3B@Wg95T+!PkG7N}l0o>N;c~ zojFfR`+3vKirSO19vk8&TS~^R628wZZT%g}AHWl_Sp-w09o{?y%+#tP+-Q=-VVM+F zitVFEVyfKj2!P)6#3v#Q|HM6gmjx+cXh!Uxad3@eGyGA{Dbec*0@Kh zqq-09>$%2%J_(M9;1Rn`*qnfy2*DUR1y=SpXvgBD@>1VUr(t#@tKG{a&~|a;chtp9 z0ytB!xYH87lL*3L+g*f0iD3UnlP?&|!i@ zxJQRU{NxlfHP=6_fKbq~`~WS!5MYKRF{L+-y&+1Bc4lRcKWn;{+@)N)CfL^r^&;`mCU~ z_@YBIV^EFlobDR*HU0wT_y)<#8rztw{g#%|ga@imQp*#Wo&vFxZUr((m0b*yoQi?* zZ)iBp@+v?5I@845&f!^giZ8B)^O6nga40>eH}g6mSDg`EKQk$f+2+xr2}?NqSnbX= zSQcgO!>KZ2oqM;}O+b8y*m{PGvd$gf)Qeuegljb`HRSItY%O3x&3@H|`F%S7$Ng3B?l{P`(_W`6v=n2K&m~D{sh%l)~RMB2~?2FoE zizC2(HUGTEZI#}|9$rbrNR?tOT9h@`n7z$1qfL>v6-2f(MRJ#K-BE8_F8$_E;y$UH zelVU3pR`Hux@k5iE++gje~e7_k-KZY(a?Xf^E0|K3OpWZ>3P@mKLkHONPy4H3^A{M zlC;C!!UhPhejyOmZbIpZ<(HUrgu+;J&3q1R=RJ)!>J`-wlx~aV-rPp>nM#-KlSAeA zS@E3j+M2s_q|pNTQFbi%GxLua#I0^$OUe73UU6r2g)3m(jY_#E6&v0%)U{s!y63x) z8O@sxP}BiBD6tm-p@?teBP@gvUQFTQ$RB+B1vjsM1`WA&YBeWeC?m^sju%rHN^ix! z1$iJ_jV__`TRk1#q>31PjVIR?K>5dhYKgNSR&{TxiU=^nCi)g5)7WIY>o1_uoOm0f z!QlaZ2P-v}`;h@L8npB&zp?*9q83>lN1dol4@0-sy#f>R+I25aqwg1T6Jn& zOeMrzxpkOQk>M6nWQAh6Ka!#z?C-1TjF-B+yMH~D5-S51IbKj0R0SyC2_PTg(*j)= z>pYz)LO{a(e4_y!cDJ`LikdCr+IP_ote00ytXK`e6aj1}KWc|=k;U6@yClgus zv6Q$Jt@~+Bf9q7Pd@YlOlW*%}PqyX(BSWptUSgEnx z>kNNd+ZvBcTw`rZa3;Z3+T=X59EF%MsJ6}x_pe%|m^;jqZ;&O4ps$8JLaV!aeMQni zt&9e)b*j)ER;|`$lj5m*$OPg+FD==05eKBmh+pp> zri!{#fx%4NOedDRBc^(%^IQREx2`+bCxr9h`S@|Z$s$iFc^N;#2MEzK``aLY=ef^) zsZ@l`%9#+o=Tqhku%SWY$G74}1REMCI-4<*6zl`eY%-C0Fg-}tIr~866RAI8{9N|8 zDt0E!qztkTu?~dqQkvP5N7#qr+Nm*r$dLMzu*Ue8#va{$sXqY8PK6=XDCf~BAFiNi zFA|I#%M*K67A^;>Sa*L?CyalcoWjp(xx!uJo1I({np6CFdGYenW(OA%Vfr+MMHft* zn*t|rZpdV;mo!E+XZ(Ifre$8ix;bKxdj7dTF-As?C9-myC!Hrt) zrX7!?d%i9?SRyJ_7RudBZ<_HtW#+mox)?`mBTxnNj-tpH?sP^)?vf_io7zKa4er-G zByLT)<}@%EBWV6@-aD;`7F00$V2VPhDj96m2|h^33UC-a*Sg0qpiHD%se?(yE5SQv z2EE#S)K(LYO3k)*PqYMUo=Tdk!~rfsCtUjz#O7~guyfgsCd0Iz1f zHrlwm(Z50lJNGul%Z#UL-98l85|{!Gknfpo+3o2=qteHyKHcRUY`M0p>$ZuU^+~Ny zk*g#AuP1FtjazZPs89otRw!ktSmk!5FX}KyD!L^Gy1L6ePl82IU_%=#px)hmkf^qX zZN(<1x9ow0+|b!5Svs6;%LN0+yngG%cosuqeoh_zpeuJX%`9=pKF{7Xk`UI?PAW9CfAskuNkhJk*0OayA;4_Z_eh-7swxeoS)lMD% zK7Kinll0lypWCm9<5t0$Xm%9;#0a!F&ZaRhJ*;U=jq6Td85^z~%B?iDSmSQ&5+oC2~(%mLASLyj3SZ0{+-jO1>s~}@O zGoX>5&uChqPQ2F{?iV}ajzYL)@PsB7)wmkQJ}08tagzk}tG1#iXQJ~d8rS8;FotcD zVDW={UdUm-1&(bC=?H*`->Ba7Q9_3OPbD1;DpcHXfX%KIUnq=k1(hWI+E2r$>| z1|%px#}@~PZJ%wsL2C5mBs!dD5GCaiEmUy#hXQT|G95POcqLksuffR6Tz* z_n8tx_evY9>z?Nq#6_yGR$|rdahRFL3=ArFuia3>vD_7C=VA-Tq^En#4{2So5Vwn| zy-@ii>#fYgaI=3%DiUDjwz)ietCk6Tm3cWk_NuZmzN3_=B4+~dBIN#T0+HO)8{8#BxOs7|XS%0zJ5oSjv2sRk>$myI3ywojt{J_3r0Rp5@-v5b$1jV3OsU z4bEV>w|+C0>yXqr!y;e1O&kmrcPd=8it2ImS%dJ*0^9`&0CaqSCJ4`5Pm73ijzDNm zBoNPg5DC^-Yu!<2YP@PG)6%lnyKy-h+9ipO?i#>Z5X>yGw92_Y4|P@Lvi7r@?w8h- z!gLp_CkZ=P0+qC2#oT?p>lRd@M31=U53aRgiOrQ3RFPeM5!HXu11lK=XLjAiIP)u} zAxZtf@WPDSkM_*i4&sX$@A1q?&Q+9kmm$D1Wu86H;*G)cE{a7Yp*^noGl$;&)edN;1N@nRoh1I^x3atq zd*C{iEBrH1)BHlgG~bT z9=PY?t|n%p6n6MQ)(F|y3JZ(%Vz~#fV=ik>c(d0E6E?8k){DX23_qr>;Wj#BvX7ZX@W{p@_Y% zDqRzlXg(@)OP<|&ELuU@r&-*%(@d6@n@~qE;?5vklAs&wlcM<7OI%mTfcL*-!b$jZ-Zt9CuZY;sTGOHSX2tCv`*9vs$_v7MY=Sz+n+vVN7%h z=52V1tKDC*d2#kQX1QY8j4z^vq&!1%+{n+c3#K+I-7T+p%`ShLkION+n+AJ`b7MIn zfzW-*3~i`gn-EUfj(z?GvxLhV0s%IDp%-*ELZngU_vTN6vuF9z%vYHJ1z0CaFP@5Pwe9X z`s5R6KFo_sw%D8gb5u5?|J;8U6{SPvFUy(t{dM2+sXb9VmUjL z4&#;BBYECo?p^?A>TKJ94g`o~w=sGelBS1YvC9$?|K^UoqS%75^v*Bbz9Dw-*OW~% z^QEi*{5^SP{8q3{ScO@p9jBkPFWHN01WqR26_f1$$ zW7R)q_EL}I?a^;S_SR=0u{-ELEHb-4^;KrY4I&NJX{ujGu2y%Ouyeq;;x^B|utXf~ z=pGlPu1yO?24)py_WCuj1FC(lk+uV0>PEnN2(6%M}e?;ZvKx;*d zs?)VI0`7UJV%UJVeSxNFWxBi28~@TTpca4Faum>%I=8Y7h7tcHp2Pmv`m9NjGH+2BT!98`%_J=Z(gf z&;w0)6iFR4En?gbpb!jNf_I;LdXTm&Y4lLj=38h&ZjTh;6tQ$H_wX#$tZ|bJSg8CC zpS&A3P5@V+L#_A~K7DS`_Ju+5Q+)Eb=yer;RK-E|6sRd=d2G$#%B;q6KUl>CV>hod z+`Y9na0ik;hjbMAxN*@7RQs?s%G z^ zYTLkC-7Iespnz=1dcHa$B8VPkULo_txK=Co86M5zbN(He38Gx}Zn&T`b4d&qt9*UC zYL)c1fn4XVv&u_SqKC$~&+KuvYfU}X4+&CV4Q;li)R|9{npVbNAr((l1-{)~RqEVY zeobC>z7#QI|FZTc`~9$YY@TRXl$H_saAmxpSW&LrVL4W;HGU@V+|9DgmB0dm{}!{q zz-4IkS1XP}9W_m~{NXv{c?RfB7}EMBNb@zpN-E*U;Wf7POib+Nt~-^^jbUKQBsmXR z7_X8Fdb@!Mqvt)nO-!R#SF8cF5{K*QmT8QtTtmGO+9J7p_&(! zyo_p?G`5>g%)ISH{zkE#I}HZ8*3B?aVRKUqQ5E4!_M)b*-No9;BlIrCB~rEi2$J_1 zRNi|L=2#>TCds!@Eqn{V_bWJpB;TTB-({?qyj@#oUz z@~$sF*+kEsW54EQPh(&T?(SV!&ZWuBUOeB8uFz(h{I_^lxUVp@a7$tNccF<-^FH+A zcZ#Ad;@3CHiWb~4XdYac)nPe`GW-~s`DHtf3YFjQpUw}J!@YdR=G&58$+)fLRvt@t z&!6y46(1I9cEgy$FxG8+MadED5vqdmaRQdRYP;|!Y2@khVz(CKA-Qpz{ia>TiKI+a3%C0gk{k41Jsgp`N@>=}O!v0GWGQ{L zc%ug53dua(j&=UwNSWA;uAkMR_qNfao3(?lQ19Ah8zD-XiL55=#(KJoa-F--pj)i% z;hV%fKzss-S|F;03ue0eJ~l4UaDCE5;`F6dRjqseTuVo2S?{aYu3`{d?Y>98K+H|2 zEDC9wgqkc!?LD}229L5Yw zALG#QEum`a++S+{*Pr$A(8%X30}hR7BhBSEEA&+3{)+5-X?1(R%pkNIA7RCJ_8+`g zkxyh4B->luSt?DLPE@f7mB>q8e*NbYe&NGOOLz@e+;nnW%iTh4ITKXM4-vE0xVwQw zs^sMDDh>ht5GOs$I4g1?q89%m?wbagHte5KB+;`%5GiHWx+HKafDi{G@B)Q%`^E7@J8TgAC$ zD9aU`U?Wb7|F8zKKbmi=;;U7=Re0=1CgLSb6u3~?Mq;B|2}iNCq2p4z_a1?mZ6o@t z`;bB{)@d}R)nCsFk6&AQX zr4!Gvx{7p%!sn>3TIMSWHS}IlfAVlLg4Xea0Fxeye-V$f`zPxs%v^tjBttR2$g#x1XD2-5O^xY(2Xgheq3U0?8g-q=#AmlDgGFiQJcO z(*6{6A@Z(vb&u>!j$LA)W9n6ZNIu?guUq)dWrfVW*OYSneipNZs{x07k zOBu^sz&?16dY2`R7#h{LBK@v@FDpGg1~l!zegG=vpb}?uDIqWPgGs^;_bI$1MWp@g zBvI^PnW%+9GFBi+epI^X`5^hARPt$3Fq490t&Dph7xZSdZVHlrFtaJx7pe3`LGo&! z?DpoptbeCa`HEDz^_wYoR8X#GDtXivk~;>;Y(WYd>vAMM`5r+sTLXgRdBXT-Mqd4M zspR(J%XLBWhpFVZ6fvj_lIN2=A#cB*#0>3pf%p(cxNj%V0Nuax46yx27{FQjt(13r zlb$Zsgf~AqG~G27wIKCS80eZ4Onfct&LC^`j#`S?Jn+8yT0ZAFVpuGDLt9NovQJ^b zWLRi;Me?$P+(&Pe2Hm7RJ6a!y!Q4@Q)Yiv|=z;lppq6!8r_2K{Y0R#y_V^#Q6aJ@= zo-S2jZ*a98jM(DVnuVxz&zvO{qp#7JST^x^xbX)!lrR>LZ8E|{Wam#X=w5NoRL@tUhVws$+ zx?gm_0Pr=1o|t{pZ;Hp!4Vk(>gbl<;6>pf3-Hy836Q`iZ+e1T>mo#O%uM5Wihn>cs z^mM5v_GZl=oMIfJ1&;-QlV$uGr{mki&p0sx@r>T7y5^4@hlivN>-9U^kO$&_~D~ zNn@vy#_PXmZ=(wbEyzjT=x)>-lv_`4+WP(pqiITx<#rP8MoV|EPx~*bLiJ6ezd_f=V3VI?TvUnk221|c)hm4ApUv0+Ng;JRyE@=H1nkt z>oI2KM#}fObs7~VV z8?FCZ7PyzL%7E$~qqI-{$83P6N6-B~rMGUqToPr4&vJl-VRSALbnG zr?1!eB^iYV_+HH<%~!RvvL8f+I_z9zCZ>cVf6>4&&F1c##cnzpJ~u=u_R? zHmU;Zcs=@{(C~Wne~wCN8N=^>!J)R+mbv%svCeg7Vn7lu*l(7iY5j=QAf#E?^p)0A zKX!|S0KM1?bt1(5l^o}8uhl}Yy(I55NXG;2*t`l-cm>71l)XaT!oBh5Lfv9o7YKEm ztfhcZH#^E0>h|nddmB?0>Q*`_)NTBaX?fEH+#P+kF$u0F0%^q@zuB2gL z8IZXxX{fg;6NV}l&a#p?S+T;F8ks~_Ki=RP<9p(=s`%fV+|@%&rO8i^tak0x$BS{p zCj8ptZ7Zc&WSfwKrVEZSAUz7pn=e?>N6`H&cn-Z{s0Ps2__gv(#mILI&g|+D)Dm+H%rm9> z&FcnC?6|++MYGpm&g zh;p(6JeWwJo8sD8H*GPKh*;iX2r|&QP zFZgMI=O+lY$f{{K2fb){Aco`Eg>s^%b6>17l zZ*qCm(X6Tv7K-a`O;C2PdOrFZr6d8*;G=7fPVv!`W0HI{AO%q(lQ30Q=YBlO_~Yx2d+Ap%fVJQlRW-sT@niKHNFEcN& zVOib-8x(fxh#+0aVieI~xN4od(Hgg1?Cos-tpc@{rMiD3 z7k+Xlt1j*!Q3zptj6kBEjS@;Ze9x{z-J?bW$pZAtg#jp1`Lw|@-FW?{noo&eqpf&Ve)^;UtKL8`!k=LD2jaU7Sc_PQ>}ZQr~HK& zfcgPT*b9yb4U2puY~JJ%3c8ND<^@|IDr#w?&;mNR#FapiE$RJaI=Sxl$Lc+~)mTac z$*F9#y1UO(Y-Qq^rht_o%m{Co~|OV|Zhz z5^$dI7ZqxF-rg7S&hCr618D^h3hfBvYq)j)lngH?UsppnEQN;VsUOsRZO+(nsnDu( zlSnaU&HeQY(YMasMhe4+lt9PzM0JR+7K8dmX8aQv;TdQY6bg-ZN@DBrGfnhho9Z*!%ZrUkvMKGS8rZx zFVfcnN>Ufgy_*=n2r$Z{A{M`H*MMWR1slQ!{uY6sgCviqGQ{wWh$EHK$w1kf-=zQo zJ%TK*?33rNPJ7ufw9a_ep^Q!e>33AvM0@ zAoJfF&XP5}`r@A9v&=oDiZtBYGeA9RS5ozzl4H4RFTsk@iFN*UwdL}C9A1ILpk_w3 zhsJHPS`Hbq8q$~jrBg^F-p_@qJKP0O8lIi*&hQT?Zss_%ZH`q=6C(Y~rlacIPl%ni z8cU|$SC+pS6fQMbFE3B_*+8ODi zctru(IGlteC)&t9n?^uhwP1d*ZlIDM%{wZK>0s^~C@2%{-;oHG(@5$IYL*lagoNSQ z;Z0`+z|9m^XjE?^$V&N|m7)^bVV-nv7={q}kFC+K?laGQo=+c$$wnD2QX=DMPAMmP>?HFS2s?O+z#;k*pHABn z1n77;L<1Q$W~i1-?<*t`T`(D^xfJ*sk-S1_ohvnc7OY$pPD^h^ znZo1crjK<)?M_=!CNhF$(7X)ICFoMMp>o2Kc;vR%<MTxcPB)(5H;D=CnjMNg%XqukrgAj?BX9kHbLRZiV^LU3J z(GGT8?PGJowKW0auzyP(gt+^8E)U84P4a1>FngteKZ@>10)G6Myb|&}bCB{rBkL|w zX;~aARH;J4NwR^SX8>&DBHDQQo;JX)w{da{7{r};@3gxQZ*r)suMe`PZf%Qc{+(x&|!0`PZ3aijn zR!PST(fR-SKHXG2ZA8(8qq9O`En5W#Xx=|VJXsCno#mb!tmJn*T1#hnMlgggTj>!2 z_q9(3j&5G}0H;j|(9p=PB2e{ukJIP;N@=X*H__Bh_jQIwTgi28!r7xeU0++bUQ9)4 z8Sal;C0}BPTMINs(LLlr?PSVsQ)(=4%=tEnYjK`_T3p53{BiWjHC~z-3iucPY;wQh zZ?2?=**f(7w^|Fj9Vz;FAF(s{iGYGcajar#%tzAVPCQnAn+aHM2=?BB29^V2DZ6sG z&8;QHEE@_Cm`9D0VcPD(>;vFR1DPNkcN%i9netB1Q0a?_raDgBnEf*3uHDl+HxC%3 zO7{<~V@aW~KNkEn3445nXUJ<+1We`piapM^DpJ~^^6$O+sdB50QNps~L;$ACB6g8- z_1AkN7KIgFCd}ZWL($**;447V*2 z*N4K|YNqP$49cKmcU3(5zt*o`b3UEHRTrb?i@4W;Z+(1%bVdlVXS>EWH(~?qHaK&* zhCqDIx2n7UcAYT@t6Wdzh8kmeT4Pl37+4vi>N{B(NF|bS89Y}L+?UyW0eJpfO%=5J zn>61451Q(FtrW|>IJ+8vf7gJSG892S{zCT~)2RaC=oi#)qr*^#Le`6+3kDb{iP6Q902eL;T= zJy*X=Nb;(5sMI~M_tvZ_YOr0HeQSYl_m3}S+B{6wpx;q{YTQF!tYj{Rt`oMXovCxx zZg>r6w#KRH8$t1P90irXMCEDZV$Q`_F%T(>?*Ly-acW%wtq8fzoJKbvo$q_D@Ob4) zsnAY7%s_FS>K%wnA4IJ-xkwlJp;B^g$66_L`N+HTPk{BXm{At9Eke;l(S=|!`&f!O ze7pNmMvk()tdA9m8d4O^{`>@mn%mQrP`NIDqaP2R1%uGSNcae%BRh z_gFwA)grW?wJrPAkAN5|U(O4|G{TyleE~lfaoWKJ@Ux8;(FH=ujV&`%D{^(VDFsuN z8h192e$gRhI82>JS)sC*p@P26X+?%+e{9VnSn$IzGyrArVIa16!5sp_sLBWOnx%cu z3V30GxzUww1LPZ_CP(RqdDavHbCh==DI!VC~P64C#)yg;| z&ssT>bd5|b_mVS2zDm~jMv73md8?s(U_>8$ZGBW*q`s$sY74z4mP_LMJHRK$a|GdIw4cA z8Jluv3#+2YUvcFrN(sdW?_q6a1v%OmP3y+b-)QhL<$qgByqR|E7 zA}#25;C@`8n^n@91Lvl4gAT}py12V>g(!dq7BgxNTHHIpDfc?NR)G=U>ZTwB=z}6F zqdC6F^Lu{zwp!fcW(ENI!~6gc9T` zG*P*U_U7X%xwoH6(>JK5eam`jFxu<}hgM1BB{%%@xY(U6 z8w#I%@fmQo&6oEFgU6;;0m#VKqOJ&;Wkx16qh_q#KTtHPRL+$E^gyJC1{Ubp?p9)M zq__SGL|QirvU`&KgRX=ubwYmTF ze_`zLVEnI7miuFrSSZbsBo6H2$>E;D#}$zRgHoCSajUB|gFt-nQ$u(DE-3F< z&W;nHCgRnM_TU8#+EkI2JJw?@E~Z5$%c6Z|i%?T5=Y45Sgxyok#ByH2q4rdF=gQ`A z>>h>J2bk58(}_BV?0tkUdL?N+;|@z14RH4goDON|4L|9baV`R<-_;-w-B zxF}xe#`9>ZXXdV4eTJS#Um+Oo)2Uud^#pUMHU5-;H$KIYU)-*9Jdb|mcH&XD=^2E|6_n?DSL%%JeE+7O5Gsm% z;6|je5&qC-J`Mt~(9+x7opzT=;8@_RsL!RRz>WL=$jG;}g4HVc0d(v zKT9Mwg2z~XBky%)z>FG98LQZ2HRL7%lwmKq3T|3X0$@a9=^Rc7qXym4G9=PVHtWE+ zPlB;!a62o*%Khya?CUaP*J`G>U1TwLv)sU6lwXi067}Omf;1Q#P$F(^Qu9rq7(HY} zV|iyBD1)@k4dxONDbnZykKQsjgW~2JR=cNGdIeW(RW3hK%H5_fs+s+#n%AdmULMrs zny4D^_#zAY*n}QH3bqVdTk1tVHK6pZzc)=H3f241SS$@%$=J zYl3zjX|W>1M!PMjJe!(UyKg>_zLCo*PIu)WS^J~S=iuX}lZPpFi%nQqGB;%eGS8U} z+vuK6=}xuvh~AiV#Ci^W32DBKagXR7$`-kONLVT zS7TysI0t~crz;bHLo)awP45pW7mdj+i7#gEVX{4ux2TClpq3)x*GYmU@71M&l=0e% z#maICjubBx;Yf|U6L6kY7_moZ)0weC#E+O2+vd*mDKZ&KiRGOP!s72jtE}z2*h@Z4 zUZsm8BQxewupn|MyZ6oWPR-rFMvZA0vB_qBHlnxjWza`D*lsTB#cC=wj$O8k!#ARu zFPHq>KqgIjgT>H{+o2@^^M6Wm)4m}VGS*@qPNA&qw3n^7?q)6+pbcy%&^XG?-W-P9 zTHWHt^T^Oe!@_)^(T-8OftCKyJs(=Hr(Uj~2{yHbe=QhM(m{?`o1mA-6F!JEmLDD0 zv>hzuDS*WcM!=k4uh*h6sS($xy~&IzvQNJ<3I~2_7qFrQ=)KG9;>I6oR|>48DBags ztV)PQR?_8p zGzG=|DF$e15Y#v(R?xdqe(a=1`H>HFW-zQ%(w;CJ*b6vB3ZwI3U>dr23X+P*`uU+W z*r%xE)WX1bxW#UXr4R*xe%bGEJ%F6Umn{+W;qQ$=`)V6l-PA$;2vhD#`t%qj6-$ft z>?@2HP=N~(eV63)1-v=Bt#N?V{Mi&iMDpuD2!*eaHVncBta2Rf7Hk(@xW>3(8^vT- zQ(Dr-4u)Yk3(4T&YImxEsdmj*sDL*_eBz0&Q0Pn>>uPt{yJY(4g!N&YTWe}FwRJUn zpny&`nYn{No4E9EUpCwxtiqvEiPtBvb@YtL*d(43qiKjJV?7&z)h~2 z(EkiIl5D9pEh)d3S~7bp0oJ(W30_jlZ1en8q^N918qJW_j9F_h-2Z~8MTOjNFJuLu zg$y(%j>Wec%hhfd<^pCo&o)eETc3;fPEDPjTASHz_uBixNO1nSGMGMXf{ldB8Q@|f z$+jP0XBb`e;U=r84R6xySJ@lGDI$!)+j3`-63C-Z9d;~oaja5z3K@tQgIK{YD6hg- zqz7YjMXOln)7T~JzGGcKSh$wlzx$2!_+)7^w>M!AA-md#Kdct7%^?FjJ4A}8aZTi1 zG+v)y_34ULZqy_{=b61MAXei-4Vx!cd%OKa%;`$k7~?LdAwzPRoA6J=zvN_P9|^?* zrqpD{Pr6PvMCj2ncZkOgRuNk6MxR4Qv43)M7{!Y{!9$(s%x`q6bX4Q1Bh;uLUe|*3 z2w`4}F^H8=l;O*@a2?HV)HgMOvJLK2P;D7AC->>|f7*XOVRKim*(Tb+uxbNFcdD?* z$#&O`)IO7HCN`Q~Og5dWwZ56?cBM=pMKSkS;c{JQNK{;VWazt=?G|ej*pmkfDvJCk zz)Q%3!m-RrMB_zN0Kbys z>Kkh!f6TV*E%S-r+eH!sqS@Pd!Qt)&W#2ell+{kvvtV70r(_nR<8GQUoYc7tNjnjIz8(1h({8fDH!Nl>i$S?aj2=UkwY?LyQ3Ru9q;f^S7Vi zwRla!V#6v{*{KHOV*z9{3xHwx*^pk+o)Rkb%$+Bln)U(H8g2V%orU z1%7eiRfr3@+?(hu_WR=7R2aF%-qBH2tSsOWXiwSdNBms#P62{k1%g^?P%GV3MvCKx zy~VqKSpre^Rd+xh)-e3tfgtbC*=KI-V|4paio&ao)=!K6yv--bljS~mCUZX1VE>)& zAB5(``VJlLa;ymT8>|CHvv=u}n&<&`ufYPFvkyP{`r>I)Yb+Q?9k&sGP@Ug0O8P8( zCTa5TBeRDHVyFN%o;rd@@x^t+A`8lR*7y?Ms1>(;gFfnuKBCw}veG`oBnTlbI2w() zu#?6F?J!+i$ifwcp~9and!su}3e}{y^n=1MElm8=#`=US8N!QkrL*+g9mJHOp@qKZB z%!4o*0O%^E3|Iycs;PZBl>~mIFX!Ih-Gr}zH5_t4J#_CQP#1S#_7(_3=#pTG?sQzx zpL{znwm>k5+C2pb z3z>-pq8Ui67W06_!%yvm1TJzKmq!IRiA#QfOT+on7B}+G_*|66r(Xs>Fo8&?!5OmH z=BzE=W~qVE+Tn)d6b5%{P++~g78{D{b#-scT8O5c@Sm!Y356%fYQ$Q!p$~uVoLlmw z*k!i5(U82`-MeyFgZ}V+pOTXp)m57{xW3o1&PQ=FKIo_C_ie5eJK`R(M=%6K(T!1Y*wn_@ApG#;RLsqg7n&UG)6fSC6QWG#=O~X5v}cz~iW|!SCE3)-jl?3P>BFM!R(Fwi zXysM*BR5GObb;uyYzUprD!FNFgU;@R%|V&ioDMd<4Vz~*tYGs1y6Ru@;|})@x_T#k zJ~G!9Y`3`Q$xY*9O36LAKx5|BXX}b2kw0PGR%D+w&4?T-e+_LwF_GF;U1}2tzw2Pa zg$;;ZdLvZ6cTh0OJN4^$p^~IB>lJO!++}M zpYgfQ++d^c@#OAI-y`1g4BSJ%(PzD~t8p(aG*ZVGh?l&cvw)>VLt>o=8#=kuzvI&Q zwEo*@{08&OJ#Y1dADZxP(976yn_GsI1PFW(&o%$jR4AZJhSN*ujGec!t^sqO0Q3g& zpKb1E;}GC)adZA2z|R&OFYuRUzz;gZaF03EyBy`dMj(-;`;iqr%4b~>04x8N{z^uF zA1fYOCiyhQFouGGVyKZ6wUHa16q#MKG^|&TuFM*9;Wd|K4y(@{31prw72$zxdWgliQL zvtq>^?LB4B|FHK^`Bx}4;h5*k_t0|(16g{Io^yOX+j_Ht=KvmEYpm=Wz{KLFl`i3H zwN&yG0rchsvh{v#8~x6Zfzhkje7chAJzR{I}K@vanH?V(#Byrg0&LDSZ zc|Ufp(64m^`DHXjQx_sW5-@vU7mepnobK9HTH3kYa)m?q5yxN@zG|}ORH@r~v;8*D#_3p(XP!uZlKB*RTu5=f* z^LD((bv>s6>xII%YV2dVFCO`?+0QXs&m7~PcTy1cyGUBk^Igh+gJpoUia3M2AI+Q| zW7{cuqxr&k@t?xmdBLUfPaFBRoz9NEi9!%1uRruGui{TlF6-PFdi2p{> zG?sl?&41*-pWn>H&29qNMZmoG@j1Ck{tM)n!L%mdnoU+Fto?;@lKrrs2>0QL{R(nYoqZ+(n8+G zrpDhWxY12UL8iyv==+p8waE7lccT<};NK?rFjR{ZcET{R5pIMa z2IJD{b@jg1wc$4@c;8>4@u>`aWf9)ggF7On9-!rR*GyoTy^!3H1OKcZ-kO|J4|1ba z`#t%hvAmPmksfIjvNMt_%c+D;*^_82 z3M<7==7?-_g=qaWKcP#uyHfyXP6PYl$@L*C{MES^U3mRyn+Rlh98H0p_BCJ-6T?7_ zG&RIh4qY+ktF<9Dqe@0F*7+uMO7eV>w@|aut2^Pd*qqdAN#`S`ll^*g2GK9zo{yBd zGLN<7_{6#Y6NJ^z0NHcYOnM;q@Gwy_r}s%xUE9RC-$(_G80Oq%5W~A)S2vg`8J)Mf zKX63lYJED>v(NkdCPi$Ko?)eVKCMU=xNR@vkd(XWdZ&?)KR82PNFzv`xj0 zSPMPM&vlDXWj^Sf(=UhWa#1?OrSnhpR4_F^;` zr12yEw8>p3NM72Gmr@VxMUoqjc$po?Pw;IL*Ar|~`l4a{lXyK>JMf9Z3ck7N@4-Nn zQ84T`=zIidCH>_MUI*I3rqo*aY?ac&9^>#Gn%6C%1T^v~^I<(V%jy(z%Jw@x9Q>u( z?h~ccke}JG3OerIfxNrr+e|$vy#<^-pG_3fvOr$d6F7ebe_e1HDg0zyM;PQFF?$WU zZ%!4kt-9JE`(yS{jsGO8^x8zLAfjbLJ{3!9>1PnkrrJgqWkUr(j`xVZy$(mLsi9s8 zQ1{16TB_o1$$uKJ*SgIlK#MNyno_VlyqQU9oc*m0^xa1H^9XS$3t8%JMM>MjJ}VUY zvnG*Tq-skxEw#G`&fceCo@+)T(e>rh9ph;(TKEYda^~$SGT5nl96Ihuy@QB}a6HSS z^w1Y@jnRMmmw-MNlY}wXy#Y46Ji>Yc#z%p1q9uK}mKVXYkpx%`05N#|5`TA8pA~G~B!HgSx7&x1 zrl8x_{K#kFih@wVSClE>%5&H{zu5=+o_H*;-#6*++uYrF(7`2pmRFRvjdy_eCh6mT zp*hDk8gy>SPgLa+t|o&HF8z*3bm?h>4&|j=>9EMUf^L}9T6g`Rp1A7@ie#%`)hC-qq|s4E}BXjEL)=c7U0LJut_VUQ&(r$2*^ z<~H(Wd2e)162i}kW%5X+T&J8X6WnmVj zTp#fhSDyc=Fx%?KG1JfPYCz|5fx7`s?C$IRievyUI&yCOIY6Q^3dDd~`@%nhowQTn z-nFtec6@Wz92>g1fl}anrzPkNkl4k|x|Mul5Ug^cNf>0lgnTpPU?AP6TSduth~bp+M~G`FCj$B zUB?&LCGz*xhB61G_1&U+ci4;SRpZb-EM*d!=Vmf`*I>LTrLQW#gME+%fXlC>&cZzF z2Vc^LW|DhU*D0hc-c^jnD1ynu+ip8Xo-;ZsqgvyubZOYkcZ>)O3WK{TajBqB#wzV&0KIN>guh?E+dvsi0CB1M_&5xm_4(KWnX+?vsTQbne{x4sHJ-VX5@PEA4=-CkeOFB~R6bp#d zy94NlH%x9gkGhos+DASB`~nn|mL&U?+G=@x2qa^W5`-q;m>-^#zO8q0{dxlL3t%nE z#-CD2+Q$`f`!_@Zn$uM+r&KBA0Dvjxe#cj*_t-%hL+Fzhneni9*lx>=_&H7&9KW7d!+o6qWWc_IjzdJ zcP;5$w!K?POD-wcoamkw`T7;5YvXVHs@1tNAY|1qqDJDMsruf!e6~en&K8mycguGT z7{rf`B(DQJa@hZ4?p@%kDz3i&jfx_Q(JG2s^#}wK1q3x-VuC~x4GM^YS40fS35n!p zat@a&ib5*!G!|R6w$)bKYHgoh>_tnd3W5S!+fr+-f)#5m%rV}rfMUt}{jJ&ioD-B* z`@H}E=jB88UT5}P)~s2#Su=aK;oR-Ea1VJz@uJ)j+V;A5;stjgFQ7_*H+(Pj#OS)n z!AE)Wsp(Z@Sj|1mV-0jUqTzj*ll1s+H&Tl>`LHCU7qZxhem~gfIK)WF&&Uby9~{%I zU*93DV4sa8b^CrXYro7sN8g9kQCz2)(lvS7-+IIM!hI4FHd+t{+G^~7A-7OaHo6l) zm^V26r=H)jZ$}2(y1P|B@AjvTIPi0l`_m|0Kr!|xd`D5jROx}=*dusUTGEaB<-bT! zjteXYOx9=WwDcFqmmM$Fx4QQ~zK+J37M*{&y7vn^{r+8#-#PE|cWiez#f)@$ix$$T z>EMlS(@_HLt*v8^*7(>Qe2x3om*tpf6Pl|YZ60dq4C2PGbW3n9qu-h#FW|Svs?T>d zRvTTwU1PZIJGv8(w!6*{%6a2gTD)gUdO(*BFIxn9JD)$p`DM1bpyGjX9Zz#eC@0a} zjpM`~8I6A6nto-*?~a9~8}2|kWBi{eA2@s|ur124-%t9;-3U|Z3tDV!)yF%QVkGkx z5tK%!Zgy9O5Am^SV!{f(*1{&DRK*JTO`BKp%5_re{JY(G9E%^?sy%H&qb*kMG(g*~ zG0OnqkZ18rs+Ioq?myN7oP@*a8u2iz*U1G=c9&f)VY(={SH+RUfWoTBOXj?WC% z4=Aprd+h$6I&`7cP_dT%>Dn#djyBcdQ#`rz5s>Vhz-#>b4o=N~Rvk!Pa0dd2YfZR| z{W@2|d~_{wxG{ic2`j%0DaT6Sa6a3Qr83dwD@Xc#aG=F*&iIct>&q)4SG|9?<^kRM z=B)(i3bpVz?0~hv`E``v0pVwS@Gxe&X9Ja#K_ligU4UGg~f{mg+T6eu7~d7g)_ z*_5FNM^I9`EEX-o!%Ls5i2x2BHhgXRZhB$E`(!Dp5IE__xQ5#CvO;~UG1~T~IsyM`tk(TwoD+{3UxmC}owWLyBcw*H$4}XM>ZlEJb}vxDN%TOuuSJ$cx6v{kspLA>=o8pwU{uqF zxo2&<$oJ#IN9}wCo)&eC?|_Q-Hec($7vN?Y8x3`*bsyigJo zu`6sPQ9dDbxr$w42=P5gsYVbQ7a{awm~fJ$sA(;tH1<<&M2OP~pkwry7B(OA&9620dyPBOCnxs_ zo930}@GId1a+n}G|I)s%yu;liPU=|Mm6xl(D!ZS$sqcah3K9n|dNMJ!vU}x%4@M;4 z=sGXb?`A){_RH{x{Ew%|7Cp~<=rDdQ+K_l?!S=$$0SmSl;J>WTw$S}#;@gzydb)6> z%>mr8nm2a5ZHL$Aynm$g>2|ms-+HV2rap_Fvk$(hCXKuvp}Neq#@bpVdn$MC(gvirAPPe<|(oGO$;B`((d4=KDg){&0& z?h2+@62VHaUU15YWS;L~`hFZ(&ivt7k7Imneku8Khfp9>Kj%|bcGDjlg}v3IF5b^t zJjNGt-l(>lEu@{LS=QVrv8lPA3 zLD@}vEy6x@GIkt%Us8}fr0cjWs@8wv5e13E2s_-)FqDi)zSY&4n1XIXWADcP*@%k%>*}BF;gZVEb9yb3 zWAlP2aozsOS)OCh3i+XAShBj~rNSL<_rKfVTFBtEUoE}VhfqxWRX~N?+c#W$7{jgenPBbQ z=FSV7d*Kd~SnmYdiByo`pu>y|N7=34KJ1ZMX0)3`#3PH5KY!BB&SK*5RraHg+TuQt zWeg9B?0Fn-kMWQ`coR;ONyQ2r3ZdnOBZ)2!tzj^hiU&M8!kCSyFKN=;=lYSO$Y7ca zi)?hq^O*dx^1|&zz#<9$mS$&mY9=0U)U`vOCA_$Tez^DNQD*kw$dny8;#n4 z_i*c~j^{&Fnf13LdafU!^$_<18ODD{Ps{JVV_Z{oFNHFM{Jh8OP?kSDZ8y49kJ{+{ z914J6k=^<&Q1RQ<``WpTH2!RNqQI2e8NU9C-1;AeLYiE*Kgsuz(P=AIDQkrP=`HMa z-Qv@eD{}&H2{F8R;w}RU;iJZG{PEY)A@b&+& zIj8=Q=;O!n@8KVX2d|Y=+GgNe-KhqOX^&E4BCNFL1Ju=yKQwJ^;;2VsA=l0!QG9TQ z`^8IEL3$Fnp)}lkU!%L-D~S7|4Kq4xiJiBVwHGIwy}(oKx|XgUKzs6UcDQ>tsoBh=Fv$3 zVCmWYiEs3OQS^PHW7@Om&nxlr_~u&}Kc2q=b=r=j9!`ypx!nd<>-iQNgTP+K+HPaEoz<&1%$CM3X*-?*B96y&Wet z>I7Z>wh^c3`v(|}-sQIJBGKsit9BmmpMS;1dlm&UeH#W>^c-*Ff4*O>`G@~(R_Woq z@8V8;-e_uqhRdPwSs9ohe|vKfPMFO5W~7C5U+-ed0NwBZ^3GmGRvvQX?EoQYv&tXv zftU=Aiy7_zhve;QoZ%e$mm1-VhVF0lZ{@aZq3C~c%g*#aUM$X8w!g{g+m9HfPoV#W zlieQVWp>SRlw{#VV3b7EPvSOMm2h*@587JQPa&3we#X$Wq71? z?oXAhfIiUcASM+n7QWo;%+AC}o7isg2hB$=b8ZVc^Qn&a+;JgB<1vMxvl73{+Q-FJ z``@BD%;zYY8Xo%bTV0&Q@trNbnDvpqt|tnGtN3vBs4dvd{iA?KgoWJZ${^8)yhZHhVMS`iZan*%Mv@uK zW6`sd^^CIr9BzBT1lFfa;?hU)$bY|NGh9RAUtaGkUgQfW28NZM5mwru^p3~O?0 z*i9aH&ly%`e9Cm*3p(#PeQS^Nh-g6z34DK!;t^-MkJxc9U9{K;R#$j``RC7g!t#N? zell~AM(?n?z7L=&7AJ#{W7zpj3z0&W`TII9Cyth@f{vjKLgMxAdUHj0Ud-6u!8-ZA z4L#%uee}JXeCx>5#Tt~FFWC@uKa@kAmna2~o&rHOlkWMAyajJ)OxL)(sajxPf zbh^*VB?$KWxm{L(a`aU=K3X*Y+6R6M0*Apqf-{L;*tQRz;w^tP6y;c6!giMgD6mBF zS7e^gnMd)i38(Hz^jkj6{Fj&9MCNEFe4E_v$Yw6ps;Su?z3Ci$Ea#QJtw4_um*s&d zc)D7rLu(crhxS|+BE(jnjiB}tcQ~_ zDmOcxKE8Qmrr{&AeOTjeqhv^qW2{j&4tm-*dhj@em>SCu1&oZ@=!7Lyoh< zB7{e}1}Wb+?c_P@2;Ud8j#P3Wg#;u}N7&{cp`z>$BXx|szQEoy;L|}aGLN7!9PK+* zriK+cH@z;m!~Xkh7fv=)j=9yO!4+gsEy$v}#(f)7(QCcFRCGm7uWz*UWZwl>?-sDK zN4SO@&+e7e$+*wqgFj-(ktD#bi9zBuHlFYTVz#A?u87An8!LKv2|fAM&cCwni*0qA zHTa!;U8|#Ffi`Ze(Xf5$4~5NN3j3O~v7Fv>5_m2@jM^fWI#mATV=wODeedi;!^fTT zS35}<_8rgeE^Ti+jADKz}5nn0OMXzah>=5mqn6yeG~HHoaKcK{Xp(shR01>=a+5S-qo>ItKYf$ zAk=5<_~9#|{nG@VO#8Sl96#GCiE%@JmBy(FHFhxCY(mFB*^g-pMHi?W@a6akr~WgX zGc)c~bmC8O*1u03WCV{k->c$_$|uIlQ)Cb2zp>V{Xry{he-z_lgcgpCE(6sdL zf7{bx8DsX@ZDnY?`WXEz-qUBn2PJ&J;z_<=aoJA%g6~^U**T_H@&$_{|GZ$Q=Xl2- zmW;tU?)8qq(E=+w=k_XmC$Uf7Lz8+{c5Guw;e~1Gv7j<7J^bmO2pK-~FD_=Y{vAii zP5tYRe`5c}QvtTxItvG6{0$$2{0WQ{p3-+9HI^;x-s2k9wO5a;UNf%qnmzT+-(+t_ zu$IaZ=YC;LQE0a4=Y-3orEUlt-&kJwHorsaTDJ64J!q==mis=^$RTQF=UKfLT-U20`J&OY?13Hx9YegbY{9mOpw9r0W=~@!{%YYL6aC8b z9vTBh->#t6=L&aBOOFPZo-UZ-a|rl=!cBd;_Rf2VV3-ca28(avjBsX-8%fx$B zS>lXLMU*d5`O%dBy_JVMto*?_<#XE8T6#H->9q9co`hArzW4KwvW4DlfH@wmW-nf6 z$)3p6wf)9*p4DBp;JWS+D70-8PTiXK#dqjS*-h7Vk6F+?IysH!JNUI@{HbrxzGB?M zHUBcohwCAuwkQ*E@KMhIuyYh0{?O^vGNJRj?%Df{S^QG3cNVWK{A2RDaouakQJ5Ig zH7f_-aovBg)cw0Iu<^%w>UZ)i9#G5d)6HAX7NGW%)zl95sBb04sHeXn(6 z7Qa)tHu;>Nf0ZpbeMDaS5GYc1)AU|ttIv{>-s;|819vZ;-pd3bWMA7>qeX`Fnzfnr zzbO7-{y6HK?^|MON}ot-OH6k%&uzfng;y#&djE_x`61&Zi%16x;Os%Z&WN5KPEc1i z{qwJy-{NX$LOz^Xv1wSbms~G#-Dj|3X2P_40q639Kw7zR@e()n`dnvrlY61cMD+m7 z&(hG_=Dcfp%e$~mSTk>${s_N7pOK#xC;tT)*`?F3mEP}mTe+j1MEKVM8DmIzLjn@& zK%JHDB9k}bxncgj?5>SYpJ>l=v|YIVOvtI@4P)j<{op)0D_gA9lEz zR~W@>JI8jnZ|GQc-P7v#Kj&M&DeejZmGn1DvTc~p0ZM(RN)v5{w5TF^RlX0d(Zh}I z9qxX~I+rRQq5dG`_FwI33s1?b{u!L`>BsH@UblEAF-J_4mA2X?A?t$voC zpGjCtf*bo|QagH=E48EdaNYFXGK^y95kv3P{%?3>y?YUi-61}2Oqo)p2l%{mpVjAS zR=Q>C)0*CUk*a_0wI5l%70 zm*yolIJnp1-aq1z5S_}wq-^ECW=+|a)tpcRSyGMczni}_v0v9v{KEyM*ON0y9`4ba zS^{6y2`w-Z-!7w87P$CGszh<(Tw`5}xN}riCjBJRwfe(Puql;H=94qL9c}p5$#osx(k7+Nb!Tdr%6xv*>d#g(W#3-AZnDQ|E{n zeBYA$_>R(N8zrhmf98f1Ji{%Ng1=-z&7=jsT$my?F77NKi%L=2ox3B;*p3H=X zxEp@%f22yU@L5hGi~6*8*r&&4gVCu)XYiDuAZBG$4LDeTE}T3* zRkW7(CE_il7Mq}n@r-{@1{o}mtIbk3*F zQ|g-D*K!M~d36??8-mf&NEB}qK7M~gs&u3(p!auJeUB~m%J|770ea3Oend@c#<*S9 zqO<>pvKJB96dZ=u?-QV%+F{aEuG?jEc4h1O*Cx-EP}H>*8wk$ujzlb7lEbOD6qBr9xiu0JNTUUUs8xEY4PBUTk3G=7St zFAIl`RfcHlHmf~lZCR;ym9qUZoF}4|JBwBk=Wv&(l)SS3j9O*KT_bshWtU$t0#V=y zg^QJ2-$YCKn4Mm(O||=%S1VQk3Q1nJ_wOD~SV~^Pgn9v*S2&CA`inYJ`gxl7p@*!+ z7eD@eLMo2Q+2a1F#yVE&5K(P1+RPgaQUzbQo#b6Q?wkEw?;lcK{-vz{1+sjZRei^M z`KM6kOTMX)8X)$Pi_r+7j!g7j{+_4xgeAh56{_1ZxblU+33uDO7JP7!n5iVs<9cca zSABd{p90jo%5Y2yTH4n}MLkhbyds{tU@>!>AN(jnO6Rk zh$v#MP)MyrJV`?lPlj#nk|*0cw3(kzfW2pY-=!TWAA8&C=Q*$G@W2bGWaN zOd`YA$3q!r9t|j^kmn}dP1U#u9le`KQ|Rf6?_c%M@Zu4fUpqwsKR!w^}I3iOjcVRtM1j=V|tv z98T_~%GOzQ+!{Geo82go!II$zQnUv1=Alc0!kJH=M>lVgWfB@X~pC_xGfk7vEWW>+DF)j#nklQ?)_jeCLaA)YtCPj=p^9kn4m5!lBY z5i?jbY4#Eaer=HWd=w^;k$Rm6U8iPwRwm(M`Mgl|FHEkYys{xH$g7T4HonzO8#Koo zHRY#v&5t&bX|Zt79hl$S$ys*lUz69TXNLVMpQmpJ<}KpAJZPqGOkZ%nI&zs_^TThJ zf8C^RyY*rxWxX60&@iRu-_I(py8bw#SNK(J+N9r_jE$fjnR%4adUte)-l@nPRA%d=evvrsAeQuZa+{}h{WG7=oH%i2fYqSIg&5R}yRfej$XP(E>{ zcm4Ukb%Pj+^YL{TdM9~cMfzIJQgxEDQe$DNI|LwovwBXU^&CYlM6NQIe51Q^T_!fO zQPy40RE^AdXKDVMk}B!B^Zn>+fY!{?+&V+a|T=+6FcuuvY2m^%QI4<1Y19hvMJ z|GY(Al(cCOvhc92=sj+eM~+B?G_3N@q<|4&v2rrvvmw9my4rs8J*F3ZA7+KmhtP*m zqRt^}H=4w@eR7yIR$`ksJL1(hp7#X@t10LtYNr1n0@%CW`%&0l;gUzfGe+h&R(OpY zWKHsN0UWpen!lHK%>SNb!)LlZ%+w^rwU3Io*yu-|)y%0G#2r?<$DWn?d&_lPDK?%@ z+qgR7qQ#VUzxahX>$THLQXasdwE8RFPrGhpd9P+>W1_hS1ox{}6sl?=TkM>TXj8&3x(qlg=2< z26&|x0e2gO(*XZG{QW+^HK6P!d0n2@8u#V#j2Mbf2Sk6Z%X?#2`?SP$>cqegz1C=j zaqTxvh6uxkdRu+HyB0b~2KEf`ofzWV@exk#*QZ+)$j%3r#!mIWjue`E?o3UoHoFC; zNjJO2lm~Ly~gck|7 zW2n9BI5dIwFm-HBk47jBa!WAG9{Qq8G<{0{emkA^c6o&g4>v3neBpbjL~Nu+PbWNa zzbPBh@qbP*O~V6KkT{l(-+`u+{yQqvNSoXj$wZFvc@-~reNMefFQFkDvAY=|bd(x+ z8{G+>j9dHpJjNnTq$bOChVbevI)izpa^8+y36&}M3u|d{2>Cptg-y~^&K=M5&FUpK z)W*^DMUvFn|G~~s=ekF*U?Ksp%5y@>Px%$TX_Wt`X*AvO&-BBv0Z54$D>g*7EOD~g zG1A8WJtOSz@ck(vl^0IrZn5l%lQdrcsP+7+YUcTL!rL3&UGyHDJnre+t*tHTo5gxO zJ>4qDLE!s;ejP%Lkp7AK;Vl^>AU@o}EGR2XAG%Harj$m+U8$xK#u;{h%Ux=B&YR%w z+w~?w;*{6^0P`q0nsi>WWi0g$7;}>g<2U5)Axt`GGimX^NNeOMz|LJ;2(@bR7EIqr11 zpReVvkBGi7bbP9b5KiK;x2qOLx%YXb$$WnueXs6@>mviQ3LrfiOhon7KQb2i4da+I znezG@e@C09r5$C$L+w@$vfZmDbbNIE_HGE(`WIDml&QB0y1Ug)2Id8B6Bc)7A91}5 zk=xE*Yx7^+C`+`L!Z&FHHY5I0=HWp+GzHwh2EsBw!w{sB&yMd%^UYPh6ztv`#qN#W z*>$85n+-N{k5vEvsQ+4OIqy?%TqTTg&U=B41H|!jrzW(() z=(3_VsnWix&iwGTw?-u1a*3M2KB|65e5fdY{o^W>L*?gb%}s{HHhbx~%g?|zy0_P; zkA9X*=MP{oI@%i;0x^AmPGT6}`D4vsuzVT*<)jPEW^_i(J>IPs-OlW`H|I4*vv8f< znSW6w-`R=MYd_~6^svF&DqdZ|LwP0vk{W7w0OH&i>!In8tnp9*EU=zCK_Xx41)Q($`dlW@ii>Gc8*i3y8sCEFz5M~9%XpC?0=E2r$<;$Q^}I|z)xy%U zi|KIQqOs;-ZFEy-h&AwsiVArkV(m=;*w|UeufUaAZ9@Euj$k*|h`WOdg<8? zbgG(oh$N8gx)guwEw^@jW{Ca;_A0AsL!?k3&0qpZZd8-6r?cqAN-+32b!D=2taP8V z$6MVuu29{alv7l2krcvK*QbbKJ=G<~%J5Ko`(BJ&SCP$^BKk8o>e>%_M89PM!7F$hs2FL-`p_&EW>-?I}LZl1ko;f$j279 zL#*`K1Y=+>dya|djdRog*BvmyFvE2|^1*Ju8{iUGyxq7b>^q%Z>Gldc{pHJP-iL~I zJrc`=qhI6w3<4aE#5CxWX}PoiwBLhJ2fnl?Z)*M>nsd)3L5vZAPP#ubo$Vqm@;&zL znk#c21Sg%JPXz_{iH5csI!(OPIk&evh%|&!LL)JBdob0Jpo|QM;h>c^4BpaQ#G$BU zHY;)m5_<^@B4#*!p=a1R(^T2UGztgz;#F;)T+@5UWb_FCQ2iSLLkIRH_gaDZrc#x> zag{1v&qH~ylc@NaRSbEd2q;{5QH*AE_7)y29cIjCEo98*VvuDQX>+}s#SfdWyhK|Z zd;PSyGX16+rd$2$jTCLb#Cr%D-0hChmti>%TntUKC2kxpnCb3~d=G}EiL24m4ymS9 zOi)De3$+5^%eb2^^VGkAJ684Xu1hn6BYZYs%F>H{zc-)nyT%tvI2)o&t{dZWoHW*8 z;xuYB6rm&y`)Y*fhkm}r5FbG!=8z8rUC8RQOUT-2M}oC|>RTLY9)G$A5*OOTt?nfr zau!+nY4^%3=C$wG1`6H+x|KWwmN9jEeoq{-8al&Z>__=7kIV};-cb{B^0A?_>%%;W3VrH4Ceb$Sj`xrIvrGH`#Sr-w;;1nv&L=1A{n_+)*37)3zaJUV3PM2FL@bj z(0kMhi2*_F%n6U@fs}CHdxmh=wgZmoNR_U%Vw>DRiYcuKR6hR;KWRQv*qG^51ZRJK z>9CIj$)+97a0=ae*PWtV;tbh%&Yq&X>__<<)iF%J71yOoFQXMI{>>4{&synXYNZyf zl#J4&jw6bFj(dLY=jPwFOudKs)Z5PV^3>^5k5uZK-h;U5A7CsC9ua~<)xupDU*bDH z$?oWX?xQwD8?F7)NFoud>c$zy{P3(B~~fdyr6}F z;r|#Feb2-48=viPBf=u@QzVh zBXm_*>9J6G+``qniL%=tpYGdwnB=nM%oQxS z%U6f=@R9K0x5F~W`Z9Ni$&16}qkQr`Ve(a0RiCgbRx?!9jVwH>PgBA&Tcngai>?ck zOT%Ofopu(D50i(4$v^Rx92T~a7bZ&!Qb}c)dmF)LDaYUVrv#iA>a#sXc4fOf z%yz#|UJzD#R+#*CpZwK{zS5Cl@>hKFLY5p=$)RB~reBzSYaHB9aNV9A&a>?Bd2EU% zhva(sWKWm#eZj}HPDp)EhRI`<48#85AErL?78P3p-)o!V1%8Phcy*Ic5KrGpBl}G} zWs^`^tC?lXtHp178JI8dBQ9mj_ZDcogqKT0rZ-utkWNb&%a->QxX!>M1U_LPqaCD| z83-c=>7N>Sq`>bP$fm6z{dEI5jx4Y>fwJWX3tY$r>U2!-gn9KO^*wP0Ni)NwKay0o zd;s})a1jp{hr_Yd^5(UVMee#rmo1NxrRyXgtLhq2w)_zN9#Xb^AKi~ETfVRE2bV2B zO!xiDmJii^&$8u5acAcm&hM@iWHvs)9+S@A3l9(3=KGXHS1v5Qa~$-_Tl7`?z0pln z2-J_jS6Q(Ny|g})Wl#9NI$^to+m6a>zZd$OL+BcZhGSV{W2pf2M0gSlet~Y-hgqm6 z`meWk=GJ=#SSkfC0op@_I*V?HQ8dycalS}y=Ok!8)P$!eZwsDzJj+f zsiTEw6imndpQmiO?`LIAjM>l3d6}uw7tb;WjlkSjY!{9Kb8D4mOD}p|I(;fAX5u?N z?QggThc`cQ2JWC(kc@Q=%eH3wRosB3bdB?N^*pg3&eE5Gy2{O-yTh&7-j|W&@;rR8 z;N3kuMex?^)uG;#1a}!MG{^B%Zrddn+K}M3X&$@99SZwuG;c%PMUD?9$zW;;EpdQG zd)^&5ANz*!95?mrMpOBhXR5wU^2N`jO1Y9d&ecQWP25%0?|Yk*Q<>`hEScpK;o0zn z)3D#|))dM;9D13DNEVid#pZy4PB1R_2o2zbYB{K>(%IJJo9^}tJQ9rIVQz2hp(2DA z`NzWOmzHCr@aydVRw)MmJERE5OT$KP@GtVI-M^UsZQ8WNo^Ex&w52wSKo*k3*2_eZ z@cohT%Bn|8#Lg7m^LXwizcxXus-UG4eOlfkQ}n6Q2P#CUH{Hvo$K~e|D_)lz=+0db z(X!KL5#}F;+WzMgjh6I4VeeO!nksFye0={UQx(5_0_lHY&nWLzzHu#E9sXxe24%0~U?%qKQjTi{YElPcX8OjJcl zSj8fi$RHqFf?$V3#Pq38yL*T2KiaxoNd?Rx+SGpMk2S6L>knJq^Qum0nxSI5kYV(S z3p^?vXFwZL-2-7heV-5HSgBs^z9iK!AhRv}@ol+jjlq z;-u^%28$yLNaz{gpcezOCzG;W^drpB(Pc7I`?~L3t(tlt$WIB*FCI1d9whkWtYiA6 zO`_RGuyF5;6PhpTEKLU3-QWxGU4yM|PYU=ClS_wQOc{kg6hL^-Eu$FcTx+`f28{V# zK0GQb^U)q(hnXL^+?m%nhEf^?g$tnG>%G|d}!gy0= zeQy%veCBjnb=1OpE?`YpI8odCw$f|n<``Cy=$q(zl!1y1-9;&}|6S7Ns8uaY$(DEW zTW961$h&P-*Pd|4Ku_!>c&LU(yLY>|-QRN4xJRB&CeV?UrjP3%NwL<;-~%DfdK42% ze(mFb&C#z^(Q~6guhUkt+-u`SPFoy893s)WJ6b2Q4S#-(%I_dCPrO_RXZceVYoTI^VY2ZO(2FK5w_Xw5CS2 zUgl31DSYUC9m{XNoNY_=Wl=31?Y?}p1+r5Wkm{?u&2Fgt_5?~s=%yZ2=Un?a)a*6# z0`BZj`fNKLS-oQRH@@S?OQ|i}WzMflvA1^)?lBbQV+>MwVH|jkTY{q~X5B_S--h53 zPdYewy&G%8PT}?Tbd5Z486~OXnM*?9EB$MUAG1FTf0=*>U@Gm_Exq2N1oz%y^rO@x z4;b{JJH`q#;PV%c+Tvb(S8YF`P^N8F6+UZ8g8(Zi0DVkHryemfHPMWBJdpQ`nO3^X ze8cp-fUe~&`WiY=T}7NahwouHyy?!mMICLwTNP5jtFT&rjVO>;tA_s|6o6m(sx~1X zBX@e?Bg#x#?=6ZFPgo%8t%@b8ntmBTAY6DROh|EPFG3csKTc$?KO8IX>wW*iXP;JEghbdd6_c%=Hz1r zJPMJBN*x*}KI`h~VXE}#(@Yb~jlA$|sh6#8zj8f!M5J`P0V`Jd;aJPPs#v*qxGw2S zMtaeGiXB1e&PPrmy99Ry$|$m}-uU`eJ#FdvkGrkS_@W{{z_-s^G>*zmUdMI(RYR6E z?QE?SpXsNvKbIy;8C$u7g*RRw?^zk2vPE5ekmvWC&WKk>(F37b=zEZ4<5KAn)+>CB zSKRs5#8%gr{*Lc_B+$^AfJ&s?tI|ZN_L$Wgx)1FG{4eWes(pX|t5UaAyUL?f`dDJP zvpn2qe%lx&wm(B}_p#otfDuD|nCXJs4a7}oOXr?yhzrRdi^R|)eg=21y+T*UBjLZu zhZVz?CJAo+Vf3sg*hApxWM`iH-@As_36kBju^4ibPrmyb*3)1T{`|Sg_f&cZ7%i+jzQ{AywfpJIg@0|os zFD$*48-4BAiijQHpWHxFdM*hj|C(MzXtH1eVSzQlwJ8=9kQi^|7Al{bW18 zk@qn)gf<0ss}0;Et=s5fNvZpj!K>Up zR;Sk#okgRqPI-POsLsx!X_-a_`h;u391lw2Nr(4Uda86EAvnS;o!+^$@EY{GOr0{G zeQ=uu0Z)8yQ}F*4$JWs%+Il&Y~UQT>(gq0AMdR>QT?-Qm@GZ10ZH>wYIP6f%=? z0LRcVc?dB#)L2k!tMYVt7z>vQ&Vrhe?72}kzdqTWW4L(9s417Y-$XBsUuvv1WsZHZgm z;0J6vI*0S1CMNwoQC#EhgSTv^WgE=;7#_(J$tDlwgV91OnV&&x3uryeVxMcK z@}0(43UR<`LS(DkUw2p-Ja(;k!(hXSDACWNc$x8w;(6`ggy1>fw_*_=6c}Am$z4lN zKK&S8uvihlostJOqi4)dQa21XjhpGlk~@AGJRS5iaQYA?gx z(-D}Pa|t>I;rfdkaD&NRx`i$=df_;@pPj1CnSkf&fRm|;4-Ab@*&NB8L#31uv+HwI z?lNs6>_%{zVlbolj=+V!} z2KTrh*nP9RhkMAb3;wN(741P>QKAB-YMFi$k@##AWw8{~BX6EkW}alU^4c$Eoei`f z!{^{Tz#@&b!SNPQnn@`oXD^ zou%J;bT@7MS5G!e2e(fRr?C1lmmk@FN8It3t|= zA4UA2$LnYEqQ?q&D|D?OlsQrdN6nGvA@XRdv|CQvcSs|zIa=B;Lmf7Yzsd5x=AI*s zqAx!Zd2mmVP}X^2FA_gT*KCB`13p(_lu(WlyVIv#8l}0EPY^+TsW141w=)U#N(eW` z-F2d5VzaxAJ86bsho!M!$fuc*Ck0>sxV+OGXZmCD$g&RJiBz1|J$shfW-TYb0ON(n zwQP2Gl1`@%@08Nz`(MTU^vi~y6NtvjGXtOh-D7aWZ>1=2vOPC1u@f%1@iW?wa-XRz@MUrndT8 zZwqVfzl^`cDt7`f&B5FO*-p1oQ!f_pRS8R^J4o=W&>V_3Cf zUHA%R*M9O>?mr=VxTfN1$Q5*PUgn$b7FLj$z2U-8L%gSk*bU*TQY5&1qs4 z?GH?4Dy#RnzOvWa?w6M{86w-8?mWsfeyrb-pNbZ4yDYIkr*LiSW>NcBp}k$sOF@=< z5V@84n^w7Pe|34JE!;jZxvXn(WFHo8zdCP`-uzv-eSWfruM{WGw#_NFeo9e&y!P6| zrCU3UJ~mRCm8{}n_ivMLNr-rFx9F&9iS=vl*o)NeTkg9?`HFQ5SL_ghmd^*TG@JH# z>5#W$>xdsM+CBG}-Nz z!pu9-BmF(Ifn$OUJr1O#GN;JgvC7k<8+hUNp~+=wJ}BG090@YgIVD%D-Hkfam+1k% zsXh3Ef3QOjv{`03Yn=ArAs(pm5!?+EeD;B4pdloM^>Y>6eoWpX?Q&nZ{kXjLJ$Q>X zTeG~hs9n0*7HXI9vBgAhMksLs4;V5|+IeJBh3I$nus26x?k{E^r%=& zFumIi=BJLaM@qYsKV<*Giu3`rnc+m6b)8+5|9h$L zPx=_LNiXQd-C`=S3N_MY)Ff=?4F}WCq61ls_l@;jqC1RioRf#G=nDZp&7ZulPm}Mz z&7(Iwb}p;8bid2r!@I!o&$~$9xgPyK!?s)a@$4DDvi08NT1BrGCS_0_cURk;`MV6u zR=4kI*bW`w7KE>BcCn#-le?fq?DB?vkJPOtPiQYj=H2)W@?tZ_YUwSq8QC#aop-2C z-tClPnaRe&vW5S;ZqAT#)hu-Od-`iV#0`=9UDxNc#g~{sl{3nzekO1~rSN>d=gn#s z&>)TurNWSDH@Tk}_JhDEJ&c$W{*T$0@1VkEU&cx@u7q6_**S}X`h6+C{ma;sfO^5^ z*X4aVrCMXuBmeYbYUS1VXVcms%=__d)B`Z{v6-5^-q?NTj^wqkL&v7s0~~}Vbd%eU znzEgX_D9Ucvx2y}_B4GfWlf&EJ>BH~L?#jQ9PZwJY;wzi&7P*?WM4kW@ZIF@53|Pf zcw2X(rejrRf0}d&?`K=V%Mu4jp`6q;Hj9&*a5!61{s(60dLjAsI@y@OdtR%<79J(1 z_W-^RU6Ro`8i-^6MMQDjM5b`zn+hQRiW|*u`RDU_f4Hb|sx-ofZk}Ivckdjd9&UDN z?w$ox70-68VytfdA{_1grOcqLqG{Z=ZXUT~B|<(}mlPOBATr*weq8JtdlbIKxaE=@*f|EH%Bn++l@a z{-20#Ana=)VYj&X9<}tn6bp^vCg;d6&RhW@#HqivaqV^w@Y{3heLx|nJ|xo|aq3Sf zX`H%+RMB#NSVaQ#RApoMyE*(lEmP&>Y?VvIvQd>&sWQz8F+pV7cIzua%xixaErw}( ziJO{~T-^L^FfH%s$`T;5PdnU!)T8n0x;B$rhduVljl5>s{X49p{OM!WLE1D?{9P^s z4ZFlM&?yrm;7VSTym_)}(0<`_!KTgf1jT}drv3!m6g-a)4r z(Y|z0L;uW4Ar~=_TkOUCH#lE|O*(tS5O4xXqc(^sZq=?j_g%8f_P&&Uk|&|v-Q@PA z6{vQ<(xOgnBWp$~F1pxvs+#q6jo5~v*-j1GiCX13eAP!gD&l+ zE@j8Y;!8qx8&fos4|?`_5bNO&9s8A?74*}&K2gLKucQ7We~2%1fK2+2giXpG!IpNX z#TS~><=redJT>jvj6TYY_j@2={Be1hw8_0pQrROa(N&cp)^AD75bKzWJh4tx!D46wKE?d(mOwl=wc zZt)f?-t7iJUS_;yz^Q89YvdA9A0SAPu>{cZR>o^DK+y>@U*yOl&6Gw-GAn5Vwo^ zuwAeqOR!C@nI(48_qXti?9}BxVL&Ef0tpLCzj7GorY4#4LuU3f6PN4q9~s%=9)4Rf zfsG1+*iqq^4a&8+JK^&j-z>Ak0Zw-(7Q$-}i&+(k7*d%!4V|D>h^ai#oSuRE=n{Lq zR8Ho*ZWSx-yp0t#^s)VQoQHb->w3e&cbm`q4a+NRR{$rkuv5YOyh7V;lUI0`;^29O z@dbH>jZ5+hlXvG8DyrD2z|Q!Nb_@PS`xS1pm`AGjZA-Kvmf2Os^X}KPjG&cEnR5gq z`6G2jWoNkGfOWf0ee1hoZPyX#SL0s@)68cmHcn6?S$EB_l34eWY zNJ6DAI7^80{`S!#aqq{z?E7?D#q-Gn^`hJLkBfd83cFh|pYmrFYFR{Me1Zx?bX)kb zj8E`)^?fG3xUOR`QFHgy8=a)_Za1)EowocEJv^Dps46jrJwdl0APl!e^F`rz@jz2K zHVwmzA-L(DAhg8UB4PQh=nt{YGr!&gggIDc9rF_SSDoBGN}X3TnzQtyrH~Xqxya8~ zUUPG)Ozn(;SHt~*_r|0$-g0-@edlvNvm=r@zgpb(JdOW?I@~D^}dET@+26iRlJoIOYHg;yWVQo+wFRXUB6-1 zJMH={yWVZr@7VQwcD>K8_uKV{cKwlEe`41M?D})N{?e`w*>$O1m)Z4UyFO~y6?R=| z*T?O;+OBKu`jlOtw(IZhy3Vf8*!5YvK4;hG?YiEsFWU7byS{AKSM2(#T{qd)+4VKM zzHZky?fSM|-?i&M?YhOT+wA(GT|ctx4!Z`hRd@bwcHP6Sd)l>+UHjT~U%T#S*ZuAK zIlCTY*Msdkz^;ec_49T;(ylSP4z%lFyAH8yfnATW>oB{Hu9>Z?Rt`3PqAyU zT}$jb+OA{ldWK!g?RutNEA4u=UB}yXqFpE1^?bWdvFn9)z1Xgo+VwKKUT)VbxQ_2U z;-1C32W6AH^Kaq4qz-20eLhS>-5I>)mwr*uMS^(atGjNoptXX&hFlOF@C4m4db)=XHM&^tzyz1id2Y zbwS#rQ1_vr-wWEC_XE?93mPCuC!p626{H=ebtehBPf&%RI|WS<^c6uhg0y~F*Cyy% zLDvgP2zpx3m4em_xG*l3A#_vOM)H}^sJ!Of}RreoS+qg{vqfgLH`u=BSE|G z2lO35pA&S4prZxdENGOVMS_;7M_&+hub>t|zY>}1(%U`);!CMP`b|MKf?gH$ zD?#f8?Tz70uM@3NZcrWzo7dBeM`{0f^HQwl9*BYCP6KN z76^Js&}=~;2x<^i#AGKuL(o-%E*A7tK@$bNA*ftX-#$Rag3cB+Qc$CyA%d0&`n;eu zf<7nc7|CxRK{EyIz?-hSOOW0ts{56o*984p(943}5cHg&zLMIf1q~LoQqUMdO9fpf z=qG|&1$_^Qu?nhcY7)&eTbq+DL3LF_!_3yImO6vttr47v&ung;7u3XS_2=`})VBul zxmArV4e_A1o=aW4swUoQV0}{}-r7{v5HwcRH?>sFj0a6sja-`Bk~6GyebdaKd3LY*cI=f|t6>*6)BcvDTRxi$t4$;61hL6oU2-dIl)%}xI?=g|4P zu8mFxHOE86|lt0DaMxEsE zCmiqZC!H8nHPr;otxzlxw6xaGh7v&wP1RTPvpEs3PEcWOYdswds+*hI67jh$twEx$ zl`)v!(9Ae8P}L2Ic`fl^c71CiNkUtqDp6lOy{fG(4t~uo@z$yYO-!EGl&G2;i?_Bm zw~mONQ3b`qM==c=WGg5PrcMh64h*giP79jibEvu@4nlyW`yT+HJUxC@Frz*pz4?uz8O~~;;UU48-3$_v zgVy-WdIqF5$fx2Y3HkL+M)G_^H^0@RZNKJJ(E!h@8x4G7Xv*}8H zKGzs>$MDzBj>l@^Er9gACRPB8HMhoV3h76Fb233*uAd^WF;5kooG*H+AK<0hgZ!4( zs+o;dLB7bqfacfgcU)P+;jto(RV_S&BO|(`u#ha6DF~qWOP|?_um=}}KRUrM$`8qCGG%NS8y-v4#bfzx zK1uDwP#wvJn%IoE&jH^g5NN3|WerCto1eyK)iX5V2ze5>R3$vy8l@wm1g%wb#6uC5 z^^K8mUC`8)Y|&`JMp5ne&;>#kWs+*IbhG0p_nKpP*RyViI3nsV3tLtm$$q|si2!$k`g_jtsJS^Okc!(l~ zAvUPK76llS>L?jsHu0>{IaCbG)iV@^fS9jowlQEdI?576KRi9?N_|xgMte$gbF8td zXtRf?M?9r+XrkgK zl)>bBJO!wKE@EMXF#boVJvP}&Gd#hNRwrBGodhK^>>F08ju}fdVHx8!#aI@Un>8k{ zZu<0^WMkvJ>G?I&r)LIO5?L*^N}bV&4a*^71Z&s~hVpiA8x~3XFt5)h(nd|pH=V^? z$^o-gZ*1xLF^hI=QfqT{+&hF-ZL#`V_|@~k9DdG(mzum3M59q4J?@(bs%Bv0u_$f9 zjH4@@n`2IjX7q>k}bjWcShc!Fi7eLORh`|1Wf zUs5s}qBhx(OX%3Vxct*jHQRmXm=PS|}6R z!x#>ifVRPL^C;FBy5U(5yKm57G%;r>X2#cpp(iCD3M^6R*fC&Gu{$1H&<1zllgP`e zZ>o#8;sJ{5gU)os&75jindQeNz+iETp59CjZO2Jw0^%#>xSKKWgje2GQV3T?AFt zVp^1(Xi!&0QJCDuI8vLnxR@cEhD}Cf==swMm4wemdzU97a@6GXtOoLWQ*$b><?ehIS8^0J z|MfH6k0zLd`mvb)cm$-!L`WjICNFQ z^s~^{NKuf9tl4G@0^m_Z@qm~`2z*FDjz3e{@P{7wr&*{%lONR@8UI#@YL98x?qMjx z-=Kj4Gjn|eBJ)c`4Id25FNn8QSGB|o+Xe>HH48GOX%3FGrx}=F3i>n(4IoQ$zrhV= zP=tr*5OXVXhzP?+gNR*50JLEsn`;a5+X_PvQL$g+WhfDXOyfg?p_h#u8jKfDausYD zb)h2N=yotff4bzi9c$O&cJ;31aR%q-+s$XX#^B5C8Y?ML6?A^|Xb*%nUE_0=mfF*! z{Vg`SG|XKR0;l7=l0z-3?W6glJ9ud^ud%aZ68aXhy0R1A+{_)t=IEhF-`!PMOD;$pF9e%onA&(jE7&7C(B$E@!d zv_(~8EU0g5j5p4Rw*p8$nrgzI<}xY-gE{gX0auGBgbQRc^{ueW^hkuJ=lB^xG(iY_ zkccUuSGd6h^W9@}>JxRbRzKOqAP&!X9aNp8o2wcW*P1t7Q)^6qj+hz2m?wEL%T8D` zn#@Ze^9Lp`m^I_F^O;vQ)!;qiJLh1Vc^+v&%0mBe<`Wf;6`XGaQR9bA6&6C-;`|!u z-8TaS7EjBlI#1NlDSsd)x*zFCM8 zaRXe-=7!nvHhHy{pvk6uUFN~fxb@X?>$5I1jvU(AToa#NkHSEMhNQ#7mS|MWR-#k^);>tmrQp#rReM;7KkDwsgQlnOL^PUyQ`AxJIG!2Ul%t;?u7%MGhVo#(X zCpANI=}l$@pY$jbjmYGX|1mgpzw&Da2NP}LB&L>8_=K5O3_TYyd?6FS|C~Q3;5V5` z_Vj9_W>yR_hzi4wog^Y3XVN*MI^b91cwDyW4e_Re7NebYyGMG0sv6PUHD2Ne!EL6s zKd~JJn~A+vNOTJ{xH1_~Hqr+J3xgQ{CerV!j2A|{NKWuDjBA_-)=WaM%=MY?wKn5s zQ(sQbNQd+dri6iB&$Eb6#<)gL5Xvwl5v!Ga702>h`UY9&4nCNXoLL;3Oc0XUDGf_i zH!9|g=oDMUeGT8X9y$DzSV6|;=;@*|V(Q~(D&uvZbSd4CBEs`QNrhGIqM@i)l5yW= zMptE}TdFSXz0YSF;gbY48lw?nzp!Q2O{)Enh$>OX;fPQ0;lmBk6|B%Mvt?`N}^<9jh<6I1+$y$ zS&#tWQr=uw?pKY<&#gR8&Jo&Z#_-WteLrIy9UG}kV-?0LId{gD*eoySRSAT6bdW!C z#Hf>NgBeLe>-9~TB&`g|-Z9&T-&s1LS>zp;glf*zQc6vI^W2M*)oqh&;}tW{YSDU) z1?+@DZGAHcz=N@)OJl=F1(j88b&Q1F3-VhEGeGR>956I`YGzohZ!kZQF13r5(XXko zU>JNi%~Ge&j3)v$r!W%j9bHh+6f231ER0=qO$-oMvtjsX7Bu59Z=o;3e8U5+@kW+N zRYquLO6kW=CFnph!vdTOeNo+#4VljxrtX^p%hf;FWL}w&7lQ!180-x;5O8Btgy3|9y+sR&SzIneQs_#sHAWrTY89-h8KSn# zt7)#byC=1!gjCfaMddVj5$q=tZCcoBh-*2Ag-n~dHP=E8ErZuYciS<+s(D;HJXo(% zG@vQ4H8=(#Xq#0}0EJa{0fb6fyN2>w`%lc%pd^}E4e_=^R1|Wp^)u_(*+3(6jn&{! zyUz_-kLnnzM6D&V)gvO3!0a!LwBK0L)>My_i7PPdwa5xogD=zxGbDK8#l=#cJ{VU= z;9Gv1ZA1~~k+bJJ=l7rFY(vQwr)Mx$n8BD-3x`cLHLxVN#=e*f*uCTil~= z0!E!w)DqsZ%`>o9KsRj{3l-a{C+3`uEe-VnO<00jRC6U&LCFmMYYul+QnFAoqqzpt zH={Kusb*Z`x>woqAb_HIB{jrBYZ$_kn)=yX8u&{DCGc7ark86SMe0WJcRYV51SR$S z*UlGijWdH1uqeTWqTxnlNgH5-68*LCABii$qBro9h$T&+p0t6bgbwLK9={c%BmokM zI{s)ZLDjQnkdUODcxs5aBp5=d3VesK5h56Z)DD@+9~*_ZFbu&E^_K^2+{xr`4K@Ck zzcD+<91m&qx273wltrbXxr`=o`V^_^$}-m`*Y#hLvA$xh{pW14c=&ZGcq zAO{kb7Ek5;gx1ne721I#N7u6NR8cIzt8R|jCYIXfF#fAG&Je*7k-dm!kt4*h{{}BT zEskZEb_fv2Jwgu7$5OY zJmar_jLV~_(!i*|z?cFd^=yZVM+_c0`@1e|ZGJ+@h|i79@z&sT&)Bizj0|Xs&{Ef` z&?xR4Q%Xos-&Bk@&xF?t5IxgOESLS!hPk{sA{ah=_>^#3mGKCI6}@YCgxTV zZW2HGjt&_ytT?#3Vq$sh+%xIq#ESWuU-Z1}tn>3NsvXYSP?%2rJ0QCwy%kaiRz97#a@bJzhN8l7ElzEDjmuBz8d~u|-$rP35 z{iIBUXc%FE=Gi!Z1dSMZ>SJ2~8!D?=QX8kObG5ZNkUq*QF=b7UmGQ{s@T*}A)|@)z z8#loA))cTA+y%=#t~AMh7Lw1*}XSCof@i-`Fv+;Oa4fyhF3_v9{Lg(jZpVkSGm~8|{IC z6k+l_#;S{{I+nd^O9$fksy3?pc>8j9w9~Fl{!nmbn z%ZO}t9~f)4IZd?3GE-OXLo^OEn@@c7$*C20`% znkDw^dUhISfBHy3k7^>iYN5kcpR&2dS-CA{vodp{Ef$Zmd&`P#ok_I>V>O&U)Y+){ zwYFG91%?sim1T-hW%F8`Ek>FkL%?tmm6ao35M`^vnb3gkJNQ_~HKIKb&E)VsXqorP zPc^msH&6b3wVy=oXqc>IP6k^E%-zP=I^wDVBSN9J7PRWpqRXx^3YnJ}U_`mBtPqf~ zv7kl+id)&Eugb!o%re{1l5K(Z9oWK1Ab?FC-WSkjj~+jU3<(CaQLr|^3mBzKzCtjz z(YH8TE!@sHE7Yhcya;Knhp%H0R%gv@Y?z3&*vkaXO~tXOCU6*7cp75CM(kE}cvL~L zA{+lz&0$SZ#n)UDj2#p^*CGz|yJ|MkJ&Up1BK`1c1iZDS(Bj0g;WZ5nert7%IK*i7 z&q{0St&3QBL&G@R{GT(ousIr`dgTo(P?FypRnpX`3eE}{JEk4TCaT&paDjkQo{8v0}w~k9O8n9z`KEh6Ks_Dawmh!)&{II(R)e z&GZ`dWyWjTv!`>P@vcS$?kUOGR=Qe#>uqj7+uGRQeYQt>QB7}g z-1`pBruR*6qCoKh0zvK`^>3h$&`~U#`%fBMD6f1GQ6usBH&iP^Rs(Taud&s^E@6akKI*Z1XN*3E}(efxou_3vNbo_sD6 z60EeYbH8FIIo5H=pNy?InxsKuRrHhvHhQs%VxG+8a9q_3k)(Pn@%_{$p)$#$G+Lh* zvXLK#rg(%f^$_fEd5~jfvuFs+EWCthtpYy-svqVPuCcxbj7@YVrK;h0PNPV#N$Q_` zv8*;<_KC_OQFZxasw&=^npy_>?uh~|DTZTc#|`J_tFwZBtsWZ+8{hV^t@hu(t!~OX zzZbpi*<=E85FB+4h%i$+g~LK}EX^q&8rB#6q`sn#GPR#(b$oDyuFG^QP06wo%ht%B z+};M`$d`k+$vE>C0FMscCD&_IUO<2mk!sA;T4ti41*_>}SprgFEJfKXfWk}~`_9uB zl{(U6HWMgmn9fSE^Pucy`%4o4e~jVd zG;jt;IMg;2RMk}`2hJ{1LhZJyn-1{q%facnk&J$Z*0Pk-S+Y8QgTcHqOC;spILnU$ zc;V=Y?%~=vxX6yzq5jC0)bjqWu&vNcxxmK(MGikm>Vh)_9;AddbTQ$01M-J{S(W<@ zq*+iyc4R~uMlbKC+Uva%?BJ;R`PDz__pjB0uXHja)5;pN zSxi8t>10@douu-h<3Dg+YtL8j7@8E_itFdtXWm~9B_;lnTl{00i+6riWqmvVVI zOWaNZsC< zQ5W=;OSqlvN z>FlyLO#{vJT}VO8uIfhEsfeJ6ywyUYpGg|RB&3o#$J%6u`H6&5nUoyJ7#O{pFB+Op z%flcA@7e|L{jp9ssba(E+pp#BP(t7zpPdRcG&x>DnGLy_r((Bv1mD6H7{!K2!S_dV zVj9pnwHh}0EF)3?xk!w}(lupLO(UO%;ui#lsF5Nt{;STC#1fX3R$zNW&Cq zSpO`CVJTT*;KfJWioV~{*16Sm`c|`nbRLB+=3g^}`sv`}<-z&5em8mrp@eej6Fa0c z)R>^wsQ;vcAWx2L-+lU>z%O1Cc+NFnD24mF&FB~dq8HyHPYD147n8w$CHG@H$yJ9;b%{0Nk>8^ ze1-XcBlVIF79oBaE+5k@TgI6mYdI$()p7DB`r?Cjz9^k^lK0x-s4h7Vkd740h1-o( zI>GssPG^M+vh#U10mhN7o#No|g!5q~JihZP>~m^=|6}CP3tH+pIVaZZ+2H7uBOH6b zSi0@uQGzsk{EGd1GG4`nM)hFW&6AI}b4>?|YQIMOLw6s_5P$WlMKr4aG1=j(@;@03 zKefmQF;IP-AsV+rjYsSqJD=iBL=GzO+8y5{@I zwUkLG4uh6;biOyZc#Q$`cr^>?JD3%$)LZBw-aVCOQDz29KN{rux&)OdMI8LzMD<>Rn8=}e3*tY)qbobdlJ9xRa(eH0=tncjT-LoZdj7hUZ=znA8Iw{XuednG; zWbB|s&%xU*FIn#R63C<7b3-809esAi1Ubh54Axe2IRLAv909dj+A>rz1Ey~v3B3S0 za_L%L@(;{|36K7LFgV8#O2T|8Bpfyqy<*B?qA9Qzg9~g*>_~n?5DoMPC9$eN>RCcf^wg)TCs4evPY*iuy8EEi*E(2#OgYb) zYRASM44TkiFC}+?WAGE8(c6IUd_e>_02|l1{DLw&rGp`ZVs9`pNS7ld;bl$-5Snou za9H2D1}RQoZB1i)Y-ho_tqBvD98RAiFcPw{me{QlTjk41OaA{?I2B10B_9~a;Tmg5 z!y*CK2+T+Z`p{%??GMJRsfX0wlJSw-*T8L*OwxkdD0tU3m)&&~>WYTR?8Xnl-iayI zND@($iGbqR_pDdu_&MzBZFlC)S^|2dF^B@eD2bzK7J{%z>QtvjM*R%m;i$|e*&c(n znwF!$UM^_&D3lXo7MUzJ>MBL%vEflaglZFYh#lcpSE5ejwH6KP(Zb+V@={T~)_T17 z7fa!jnELorBo%p#v>8uyC(u;t6~vaLO6FtCqRZv=QV_{RWlR+_%-Ss|1lkabYJ+|t zqNN9(ox0$MS7m>*0M#W2jZncV%;E(4jO8+#Y$#|LJboFMq#4xK5?9(TV8k{83Cms3 zWRjoMa)uF^k*gn@NrzGMA=GGSNv6Q6cCFXm;PR=L&LrSR^zFcVcV!iEF#k(CZ6E+* z%3_*QtR3JzmBcz*xg@moKw1e0u{ld^c2R;FH2%jZnX}ozg=bH|z zEF(H>TZs@|TiXo66R|Q3f9y>e6vSgYS5vJ8;}DG65q1Thwr@h#SA6${&bYdb!@W%Y z$WhZ^b+*D>khp8I3vG8q9yuIHegup=!l&(?OlHu8O*aR{z+@^0f{8+OkT|VjStsit zvwC4D)=R-qNQ4r5nbTe!*((?i&Y?=)WR5`LPu(i0{mQsi=3A*?wi%ehQPdbgQCFX+ zKyqy&3;q&%N_Ftj;3}|Y0tPTvA((2o1Zph%<@75Z&e%fCu`BV@xtY1ZBs*gCi!k$k zs`6M-X*wD{aLSnIK&aX{Pn+@wg4A6bTk{zjzV1cGK1-tvzS0R?IgM za}vAB)<^?x!2ciL{ z)YAg0lWlsaJW`ktbL;)Mjc4GNDt5}psh!2KcGFXjF{}}26=Wnr{T(6sJ!jgSgKJUk zOE$T5SjDE#gNeZ@pPFjX@|p&#APGIDa!d$GTA730n_xt>HxPTMdB=uI(1vm$&g|Up zHQryT-8v8m)3#y4i|MFxOj8qBheIO8Fs7g|O*_#~9FEym5eG|+x+xK9GYhmbzQ@b` zYFoX-Y^L{xmZbetn93QYCz53Ii`!3Mj$Ytd-iZ@zt=_zQdms0rQK~DVbl3OKe>r{- zRVKr=#$aYs(UfIS$w2^x*(zk)tL|dcbaLqu{M@rtk>YmOn+AI#P!Hf`2%l*JYgwup z%j|(_ys}(D`yu+HvnSipd5fuktI-)}%`Q$)UZ4YhSKohQ){Ky>#$}6@N!)qltW#FH zr`%{>PR!lgE}vY<+$#mZhV zjWmB2xd-EHjc#!+z~60Ryqx!kXJbMEon$cc+ic~oG@D{C|0XNBD=X}}{Tyd$%xNCVEK6{#&|Vn{=@X2P$Uw+Bnzg)H52H#c&2;!Mb%A} zIy$MkvFufW^o%v$#E!>K%FW)lThI2kcc0XYuc|{c>TyyvZ2IxiCYTliKt)OuWF$Zm zRHG|H4bSI`5c@4gaCzZQxCzAsvqB!m28&KO^BBy6Z6Mnq7&G~}4z-5bQ$ZN()kJ5I ze)er9X(m8!X2iwR#V(XK#^UjZm=VF=_|l}N%S$?&O@a;kYhs@uPlk;N4Ic^%8od?t zvHEod!Khw&Z8nM)?fz##13Zd>Yh?>q>mCOg*%%3DOo)269X2kzJ_3R}-h@ucVn@*| z#!x2VPfA$oOj^H~{lGs}U11EPLDStU*TO~(l@fokNmKOf5G!M@VT;VUAPQ&8WcwR7 zu5uV*3}JcK`VeJE=BNZKyaJ~#d|tf7Q6s~+c&uEQiDh%eMoE@0n~ex*hQZ7K_y7FA zpKkI}0N=szM5l#rdo|03KG6=LI54XT^=+tb zC7@ic{AjDaHAFNBWpR!+r6A2KA+dMC#pj%j#xo~L{1{qKQzd#0rtDnk8~h`_&}R4N zt5CXx49-s^B#+CQg^ABH*hUDv8C);uQ6>v+Q{jEJ`0ABGRL}fOCFlU<7vg}ngxBpa z{^`RMVoVHPBNLRkRJG>5hNRd$Y(%2D6=Za87S@DzYUmK15@;El`mwCGOPAa%V0QmI zNrJHtEU(lLLj~k-PB9)0p#_*C>wlTOK0MYCj)vCN0EENiRV@#?eg&n|T4L}J63z8P zZc-SJcaLs%+6~bJb)@dbL6@>zRY|U61#7MonSWVFt((yqo1Ik8Qgqc#0dOC8Xi;ya z^$L*h@7fMqv5(8OBANj|M(2i3(M0(0x^1nw7eFHo*t2j+I(3!m*s_W6`hWsiS!M&K zxpp#Zj(3HMMCBG@bx{s>MpK3UNAs&BV+?Xi8N`~(5cglm%dPmOcOt#bldzF z>fAPGsoSpZ&4CN-W|d0%DcRuti+ac;+Vpksb*gy!u(m4UN`oBj!)a3jL%Wc~0FUJo zV0bX|aWsN9xQFZe#A0x7Rj zF{oy!ilMe1^QO$RQD1DuwD&kAUFS1Xw?fbCFw#yzy5uaF*o&rAKB(JXVV@|2cLYpp z(Jwi2i(BHPj{b@Nf{c|MK2y6kZ!Suonx0OYI%;8>G^N_dNnkxoO6@1JqnW1E^r}y; z1l6|?2`>LanXLtBV?t_YMy=f18ig@a`Z!1@d<&??k+^eDsp4b`GRAKNoj#Q^5ajpd zze8w7j2zr@gj_gqrmH#Q zGxP5D7vCzjquiZ|E`5x=f+{U64m|S-I+hEBxlm_jzQoJ?`Tx&s(O**Z|S8LluPh+Ma%kfMc1u3)Kwf)IhRj5ltI@o z55tfw&9nQ0c%U+l9HJkYH-C{MroTrp3eIhCDe~jT;Q^_2G5<&G3w0J+fOHA8%&QGc z+{9Oqtj42P+=FALG|)hIbSI>a0L#ky zlqD_jfp?*YXQKr_vFXO}#$UKBL1s9g^BJsm%UA(Ck2RH(`b8fTb7Eg@BEc$UHFH)R z(z}ZBKN?-Ffoaqx{o|34Q~6VBVEAfi*L|f!DKQ*%CyRB73T8eNN!3y-$8^!-{$$BA zHiDMIpxv_(NCck@!8+!h{b>An)J4O?ErKsm^|+#^Tko9wG9ZiU?j9969Kec_XsU_G zoeI+SR7ua#D(FJmF6)~McX1-LH)(+m54Hc|QpunXkw&G!3^3fs+!2SP!ToV)rnxZKYF87d41YJN4h4mh`SfR{`g5#03P_)aGS=U>+>z4$dkTz@MwruBZ8Jj-L zRXsbijz@&sv5Lj7E*p9=wQ zpePH1R~66cmM?s-@yEtLl6f|L3gi;{ttKI2F*xaB^xfm#&F4E?9M0{K5|4I!PoHf) z-2SV5akWR+;XbW(kN?D1D8@z8V}p020dRIVuW2AdkdX({=Anl-EpwCzQft%%t2bYNn zncvXVip_;Ljx2Q4y3sk8r^obnD;At-6zLF*ruq!8CB_}o5VJ;@41y!Ysdh}9cYOL~ zxe5?&pY7|2HcIH&Zn7a!v&SF%vf!`Um9eXihV(R^ohH+Jbb^bK^U#Qq$SDJsP<@l< ziy-cJWRU@^?&HxGTBavzX8BwfkK9_jRi$xPCY#p`B~2Kn`IJwwpHgbIty_PE7t9It zkSklk3iQB`N=J!H+U7@uF28hmQ(BnIs_~8ZSY1@h79>F(GDBlb*SW1XVHRZgP;50< zLC;mXKJPoo0tM-@myP35emCNdy=rq>zPP;GZ5Oe5>kmNS7u8ME;@Z+jQvcauODCbBrQ0q*zx5U?gh~8y%L<3ohL7i|pW&%1mF>4^N zG4@+FQO6km%k+7@tiq$TFsX5| zS;r&&_MFv?*i`=7nvmYzGz-1E6Zv{~1Q7%*FWwQ%l6US}S6}(VZ!TQd3xD`cdA;z*u5BmL{_@`2@D{i~g!|m<<~=T3 z^9$JQ7B&r3prrfUtm{Ph^g=0b-Yok@9l>bpNJ}*w5Xn*EhT4n20EHwk9^>Y%8B%S#J{qk% z?~%CbYfbbRoRvOMjgAUyB?!eWFLey#x;ngfQ2#E?LfJ{^!eW?9>U2~|ucxQvc=RxY zvuOp1uvFp`h=JR;6GYT3Z$7T88(y8^!PwVR$jGo8NX8Io${(3Y?EyWBw$roG8pzlp zrwTgaNwljbB8I_->V}R4*F4-{tHY%1F@wx;l+@D-06~)KM zY6wzJ9iIRi-{doPrQkxF<%Xdn(;hK)BYp`D{d{Bp>H5aMZ*2yQ&w@uzeh0PJ)J1P? zTD3RYHmD!9n^Rd|_o-cN9OdK$FsT)ubUi{Np7nb2QgjL5HP|7G485HaH*j=_nI_7P zG1XPq+T;&xu5poV8)rD)|61}6!;@30 z6)tJ>ACX9L&7y-X)kMb-6mPm#c#b%6F;iOed8!RX21fi?kH>I}pxb$5ieHsLGD$YF6Jr`a1fp#O17lp`Lrfl?r~VRs-40-AN( z*TMI9AjK;#2V+inOO$!Vw;MX!m`(4ERf<3x>fsRoC(Ft~@70rVBjg^k9ncz>h)Z^7 z5&1nqt*K<@nHgWgZv%#%IG#vE2vg}F!qDJI^#o*PsAM?{8ea1)xKb__bW8X33QjUm z8se|us(L9~`fIhQT!Qy=PC{Po_OR6Vbc}0D!uxQ4*xuzu|LnZ80m0c3!?y(Cu*1^( zbGQBj5oJ|{Uu=0tj;g(iLPM2OCcY~TC-6VmC6ITxck)doJ9lo(oXi=?Wd5&_S^8{f zY8L7kN}gc6gVhO!w3Ap-=R_y?(}WdlwX&6pgmX?kmXg>7Y%vptFb_GC(KK5XCB{ul z@^F3eoY_o27E*R2y376HnBq$C@{HjAIs-UwE19hrnBF`j!iBAj+SPz0tTRp0nA_YB5s!7CCr!|diPZj^X zdVdE^znE^qrFUR)`A4%Ibu{%FGY4=yxNbVJSpw#*h{F*h=vBxtYkmlO$yI*}Fs`>c zCfh3Ponx?R^TH%|?$Fcs7A&hZ*@4(ok1C{L8w${r65@Lsq_#8e&Tc$#wQ9pVUl+JOj%kC>K@)Q~^g&u|ndaUf6DD8mFG-`-P>tmWj;&*qJjsKA4I3Q_V z=o=LJbD)4?z9eM`PWUj^oGC0Zup{7L2$HmNntjlh%tH922tM_c`nNM0{qpKOdbOm! zHr_khftrtAxbyJIVIhm(XUhKU(l!is@T&3oDug5xm8BnrLtoAU%ynlvwFk zLG{aRO@v>I?6>hA80zsyDuB7wRyl2ah(C-H8b+AeoxI}bp{&Zh-KqzLU z)jL?Jg>+ympqo*Kc*`2(M>pm0kQ>5YAu(Y{%L#L6V3d-?mw8&|%hD&VuDjGNu=Rh< zGiOb}h*z0j+`$PgZQC6c*oF5P!+bu2|(R`-X0(AQhwWv_(fBD^e(djcT z16w-w24U`0@3dfOF$*@V0m6X4^Lw)(%z^7*6{&UuQb58a5F8ZqW{=(=lX-0LQH`PS zkVYe}JV(>h@}qk6e0yiBN6vTa89V+oU(0&3T^; zC?0;>`K}qcjd8b{WK>ZbBxztcfJs_e2J|lW_WR@nHY?w+`J)tDJKVX0?T7Akm88&g zMy>R7jw!_I_F>#VgQGyHUiEOsz$35P+juM^Ht*Nmd!s%yZsjuA&s;P)d(WTjVd=2_ zaC>W$F|?XFy*xanPHRRuM@@0pANMrEA$nuIw{N+Z*&_tUmV#|dt!Y+NFleU_H0L$? zpo|%He3@%Qad?U@BAQVMQ(*hODOhu!7@zmGAIJe?fhW&*cAy&wE95=WQ2O$~CvtrZ z#Yf?vq1VzFqSck!tC*M~oGDQ+Tc3N}qcncmtIR8c`m1~Q?p1QLq={~fO=b&AbiuX4 z%uF?>yT*mo_yT&Fl^yZ{wX@g2va(IsZ|oH)IN=i%KWArLD6ZnIj5OAjRSNzA;sP$9 z9Ly9rgdY4E^<@kbJ|AmKssjC0(W6%Ps$=eC9#k&|7~F94U2#Jz*I#2L2{lMec}wi>4cykn}EH*eL*a>~Hx+5wDw1ddr`@)amH5>x%YKE=*dH#A0*d+Y3ZT zb~ldoO0k`fUl#XM*)qw*lCfbaUb%aSBl4253pF7X~w_ zoE8S{drPIPOyM+4`C zsm%V%ZJsVhXK6YG-ze!{4l=e)HB9{VmSw(?hEPBhHclo!mbH)>D=9)!lSm8dycOUI zKP(tMvVII<#}Qe5|CE@@x&p?3y7hCQA^`#mayh~Qw8@pc^Xs3S1h^F|JJIptRrUSk zfT~+7x!TOU0c!`F0)jyWADWL&-UMD6k>TCdKd#vIIWAfxR-=Wdcr0)HtdJ$K`zBjkcK)tK2W5g z93IFHn7^O=%<)G2`9l@@aPmGV&XRH%vhW+;;-*vWMTCd>c1uKfV0R02<(v0I?KK_k!#4T2St5P2K#7U~o3mv3O ztdx(l)=yPF8MR@zVO?JjR=+9py$>xW^pflce>xT-7Y%c3rT)q8*wsT&GPjz6aq+^` z4=C1&Nylh*4!SR$-MyOdYIAmCNNH!N;iYc<1S+f+ErPL?nPN7$Ha<6ih$tu)82FoQ z-cK2y=~PQ7H=*a~UYoASy=;yI0l&|~ieXol{);4-cUFU;GTc-%u}WkUgjli5Qm;iLoSy0yFG5q!j|$+l+0s@S9o3uGh{endB!E&V*icN6up9G}Sp_P{%7 zUF_y}?uF8K^e5d$vZps}4P@(A*2(lX98DUc$ab#9;CKIYiR*)s#Ny%eCmX#d>yOPy z)tK~-%OR(x1G^ECg*Ke-gJzzVmbwqDJthfamD%Y_*MKa+jU{snFq~|zhTlCNzj|>I zO#9uH8fiWMmyHYG$+JcLyYu!H%p?mSCKWMsx}-?ziUZx@0^7)G%EcSV>z;FQ;kj5^ zP>3ZG5x@Zs`gQ>kBq3O1`E5zX6YC#sMKY7c+}fOtdr0q@o#|Pd5Al%;3?=la9s5TD zvhfb3&BM~f99)0RjoOa%QOjoAn@aidK@)i%Tox_f8N=B=33i^xH zh;{JsB8^Gi)O@@*rcVO4vP7?3KN|NXylVZ*l2tUOG_fbWd;s=@2&Hg@0_mI+Q4+%= zMJEq|1a|<3qofv->#oK8mnkN&_Zh_nq_6w#z(Ov^7f&%ZH z2nS0{HuxJrj2j-TuxE&kjItLm9nlyvE~^&qx{ESf(^+XG+huF&LvE=yk;C>;{bcLA z?zihZ&$m<;W4Bwu(VftPra@tD`3Yy3O`}ac@(*<((>4M&+r0_QO`fq}#sGh&-225b zevlpZ#o%HI7d-9zYJof5AKTM^nXCRw^=GJ^Z2^bFRA7$8~_e&JJ|!rk%iU=c;%}+ zwUZVXDM*20A$%Q*B{$&UU5jEvFPHMZ&5{iAEF3dp0fHf0+#-8MN5$CZlL?F1 zURSgl4`-(TC;d9p8b4vjk1Yn>5xt|yx^l??qO0M^rWwRx!f3y~79w=D*7lX;8JZNr zAF)*xNu>RKa50ivyt;fds?cT*@a)40r#e!EpfQrSF<0*ntATE_u7=c%z?D~B$V+6Y zHv^(lDU$V>^p39vpuPC}yGFDn+ffs5EiW(Ejgk->6C5UeSvB62OZ1|pD&b`&L|7dc zi~7BM`%vOJsSawzrq|pjK<(-FDbegkt>>5k;2&A@1SN0zK|HCPU1kJ+=2mo*@Ll`@ zkpm-&&3kT;8veqi%2$i(e&%apdJefjk2M$a(@(eFkWd13fVm*WN6BKLjR~eQs#WzS za{HVHkI6{}H)urQAn|yIgBP!kyHP#i$u78(I+~CL+bLI&rMBZ^W~V5KyYMk1%3|c; zf!dWKyBMPLz)_igPgYud{D_LV4iQ7WbL*f@!yZQ^SlC#6B>R#vBFBD#R*aFK#@!_h zT%cwWoNQMVU5yJCn;IXbd#APL|Jm=2o{+e>q{RSLryv6`2urynuFyxtsQeknKyd>` zfGm#x@?;y@9H4@<27)HktAAPlcD^FCF#s1%=<$vSE1y`AHJnsd!!x+B&xb$&(PJBH3=>OETHp44&H(IzeW z{j>9E{)b8BAd$f9o{#EhuXuYi2Stf{8GBsyQP3Y{comk`E>|g5Y1|=kYxtV$Rt7^3 zq^42SfbSCtSelp^gN6kszAVe$2kTLpJjM*ob|7DVO;UUHi6JmJ#n3&m^YO$CAlBB( zF?RfAsaA)&51tI(JUSh{I5>SaIMOHM`oyW-)YKJ4m!PV|V^Fz-*_{&_yK}ETsqcq{ zNykl0;x?l3((U#;q?b6D-~H~y_&vA3Tg$QB%Go{9K)id4%Koi1i(bOh1gq`GoudgP~ef+>-pnEPZGM3S3brb{h z?d=&#bz|J%TtD>-=@7OVnk%#GEI2qmJK%hc3A@T-1zC zl%Zb;{9Fb6Q3G6D6n}`QilV)S7jFv5`l5>P#x41F~7`$KgS&RWKjoYmO5|hAJ-fPDe`| zh!?;p=(C)6g;tm`42ij<%QMzl^LV^=x4Aa0V&uj#fCwIP|6&6xT(b#FC)F40mWX{G zTC{&diBEoU!e1U!MtxUZA?y!!%yO+FFoV`GM+?Cgvz91vb6{p)Qe&u^0*A4(ujW^W-Lub9&dECkQ$G^~%1sst^lkTSY(s(9HZJ$NHUt)^gh^X zHjl*D^({jTI*&GFD<97uG1JrO3@P`}x z#0bb`Ux9*zSOj*`7)$bN>}94vX9qsMwi;kt-_!Xg>1^E0T&Q1n(KeZB=x+^$j9g%N zJm`(y46&Pid2(JMO4sE|it4C?!QGA&*gsu|dBsN@?}(9-*kJ_;45Z~VVMsrHwboF3 z7$=y^c6wc;frB$ac9ZaCaPUjduN0YBK&vgS z-(T2wAr-ww-o{eWumaB-O_f%bG-i`G#lKN6esPwSe_QoNBvBZtT%N-3&%joqv z?-LVkOAdpT_S042l|w`*ijV%7c<#~Qa@RWTM3(g&YsgNklcKzsiylEHw(Mik)7Cfd z)jzjL+VH*6MM4Mv2iIk?X2H~3!1i;m7yAZ!XdEerl0iHS|Oxp{sZFKhVBp-#7 zG`9Ez9g|mPXztOwQwjL|R`IJ5Dd3MnQ`>gQQDT{pHpn%Q$?l^2anjI#1y1Jw9uH|- z>#b>pH*mgDKA4^83Sxf&Z(T=oK?2~hWxMTRMBMmB#?TnyIK`zF8s$iwnmNMaYKynk#x<5yY+l=3CWhY(zgq*SC5w?`btMgg3-#>)@bo~pSH z!pVgB*AR2y+?D1WTw{=y-qA(r{P7uNDrSDR`Ld6ihsd1A-E0nZ?nLY0%TSKku}9JS z4-9rjCrw93_1KRU^^~(H(BKBd2MWSdvi}?gq(Y z@WjkD5Pk)b_KA&ufaLqc+8!&aCTa-43!IoXp!U(fy5Fh3B=r>$AW|2@Zj;EQ?=A6l zndmBb37>0zg0D68RNKhp+nS6L0iXFw%kkLm1dG$}|CD|7& z#DiSPs`BM_wZUY$S;p7Ic71GTagnIFSW}6cBjh#Hc^@i7>s03L;dI&#(f_70I%P7I zyr&?rQ>ov=eM}{aDuV5g^q&oiEOhFEd)cHTIM4fTzyIn2)vld`nqSWdcHkP7*tZUg zp*}#uSO<7)#`j#=+S5a% zX8FtBMmvw1_?loQo7+zw^`7i*ZuPeQy1(_rE`;?PVokyCHLhU^`wMDRJngLas02+I z8r}DS$tqPn$2;&ABfce4dBV}<6bkujnON-XJy=qe3L^kW)(Ct zw@Q2>IrEIG*CzyxbMaVG9tN+w+86Fdvzd9#DZRP|Ikpl)-QWt$LCQ{dO^mPSzOD=WQL1$@IR(RFV%WI;ZX9!`#~6(UqSsTQTB+|4vYW}*7!tTY;{FA{T}5xHnLI3A zBZL8$H=a`m7e)O>T~lkC36)?jJYdoHKbmh-diCRwdoh`*M8;JM?~MmmJ!!&!RsAL{ z;ja(ieY4haPt33Cm(4kU0VZ^iRs12reIhVLw{*xMqKixK&p)^Bur=KX3s`}GuS?vM z>o+?i=vvc^y8Sq{CJ0y4#X6M9={e6``n{*Ie5Z+n|W%!DnaM2W14hj0!GvpP|?j; z?Lr=uYoub_t3PSID%q@7f7$cx!JOwfuxOx8#(q9l+ZbpcZbzNl!b&Ve@oC( zB&5~l%%PIx6xOPQHUmI;N&xEdbyNOaagz|<5vtV&)T**cy%fFRW0lCLDX-BhrRktr zw`Q+RZ)#xP4etd8YWl&kU>@W)WbfR`kSm1<$4MJmDw6PO)7c@H2jqOMf(N?NOI;Q+ z94nvW{)k%_O4hp+k?Wz*`-E}Or~ zS7r4ZVt`0;E^&}q&D%qhT#hp1f{BWo^!-Ey=@_l$S|A2!wNBX0*kt2V)AFxM)NeN? z;d_9oGKkaMy(G%lC;4tpe}KsH|0_u-94}w*Jmh(j3lUH)PIBU>OMpgUf6N98%5p>D zp)&bghp)`*FDDAyYgq$1rb>xmo-S9GQjXQ1{RTy&*HeRTpxC0asi~VS8!??}e2=)> z%Ivc+<>3w-sCjt-+nS_#hqHJ-MCvy>9&&uhmKD+yAu$oMtdlx5g&ING#6-*=on3O= zt?`GmZXWJq2$#*3ErhZk{g@8Jti=9e^anAxsiMmFS_bP0>+LSgK*@IePFUjpgAY ziFd$Xw5w&!4Sz)-ue3{u=1!A7H|&$Vx0D0`og8r`%goHS9T5;9{+48?*E@W5cJ_|w zmx~E2qrqn1_?4_fzp4yhhjgf(xfNEJNZPG_pbh5g1@}XN{uakozwjxjb~7{FhH_nu z#!i-D!d&$ff6x=qUptF5_i4PMuzY{M8bU>nnJ(d9-wMKa=&710Zj8K$;A%ozM%?lx zfd9=1L$ct+%sFwBv7h9%AWX&v75OI)m9ud!CQD>R8lFmUZqyFmLpvo>&QxuZG%Rbm zDiCDdAy^D}(tZV_JDC}(P|C21Xbfv0J#R!WFY)8{w}cf_duvXNSs#30iOxO15fw&5KXxHl(UkPDoNc~EulhA&4W`@ z4ADo43+W_INohu`Z>%a14g1M&d)()fCO&eXCy;MZOqIl>c@^MOQ!b%RV_ZGM`Ma69a$UyTDr+-9 zt2&O@R$*0LCKz*9X#@17IVgKmJQt8&qRJviV~x(LKrlN=p}++pttsvKN70qFX zz#YU`k`!_cDL|A{-U>DMpNa}%86SpSlR(If?Oz@cx%vRaEB{`@1@KgX#^7`(t8359oc7^vXFsQp6K^D0J<> z>hu*JRgeqq`wMoSx8rNrdkU|SV%ixQ!58#`J-@fQ_h@JL>-C)`I#JH@q3?VD*Yowg zZ+c&^?``c(6gTv2_&`R66CX7i`&Kg$Mc;u0pOK{pCwft2v3E#`$)RkZ;iS5zu3pR! zbPQ^7r<~NLRnXyMZ%@hs?mn<^T@seP9rWv+R|hWYfu52y0Ixj&PNEl|5y~CL<+7cf zl{8CgUG@bA@70M`t}uaFU^6j`@X%rFNTZ%BOLB4SYz0_n-cF#4y(7n{_N4# zey*(daA*BnNWU$u>vV1<_qHBC-&x<^n(_IX$~HbeyEWZE9gQ1B58P+Cv@@|Lcp?f4 zfy7zY>X(z%6F9W0e<0h;aSy8GrGOXef+`OEQBgRhV%snS&haYZo1 z1Z?b7zpm)2G$6DDN$PsY6+fL4mSKJxXihicd5Ux+N$tV`K#-q1EByECoI=>V-+8jV zL#s5&18oxgvdN=-P0rLmTk3gaRH>Is>Sojbp1{>7rp#4la8}U1DqO3^nlYP!gtW`( zilgSKKC0`fn?4YYm6;59vX6Icgz=#Pf@ZOLEMBYMSb+@QUe_z2WNNUOO?~q<%eld4B?7nV&B=UUcwZ5 z>^X{U;AYjc&92wK1x^>td%{`*eQzkgsj2d%fmy#|v1m1AE8B$(8>Vw&Q(|@36MLHt zF3yXAwJm$Z0P=?)svm~)I*Wb#3;QrVGR1Pg80T@guf`FtaTVBZD9YBpjS4bxyqSbiM))x;YJ|HLygpGaai&(WMcjDxb!G4O$ z%y4Q4ie%R=Z&CP9Vt||)MPhNpyJSjQIkm2h89&|nQABtd*E{>qAZpMoU7m=TX$dwk z=7Al*fGK-@f^xVf&LM#nj|pz@>L9drHV>&@Y0a*x4@Paie*pwoYl@~fFF`W0aRxY1 zVVWrF)jb_HX%Z+iVF*-B-7;Y47J=jF)u|Ipss|0@B^_M#&NbaiPuoZ=nxQhyKDD>g zRQps$@rjjJSV08GtXtAD8;9z^;S3=1ql4Pvq!BS*)fZi@oWu@rx>1iokq3*DywjpA z#swHnx2}M>*)3T#L<5Vkb+Z{4)Y>H=b%IzQLNMIWoVZhu&aS+zq$%(6Qtp=Vi1>rc ze(Gqs18gbxY)b%0FtIO24DLu5q%h1DcV?$9`tc>wkW3^6((qglnYsNgf zAjlI2TBso#)h@Jbbm*{tx&B({#4nm{TQw9Hii>Ohw zrlETOG&^->0eZMN7DupWl(*BcVhM~HaLYh@b;8^@zskHa&5_wW9F}BC9z;yo65^rG zkE{Ya9oaoPZQ>+$oBW|ccWBAQO{Du4#@M2;$N~YMcc{!*ODoteB>?SKV2u zV1Vo8`4ub+%oY{{w;3Q|uAdGf#iLFAxSE8Nv;?;LHb{Y1+;&{`>{!N56n3n-Bf2$K z%&6$_<+P%n)f}b9h{iN z$7U{F*(+c}v}6z5Y6&J!%C(09E8*GgV}=1n% zYLCjtD~*rqbPY?2l#h@ID+c-P#a2iI0chrE_fA|fshX9fzxbZ2J04@(;$%lz^_ZyN zuu%|P{g)3z9bpqh8~yZPk-oorf45@rvK#9&Ypns&l8l7FG@N|0iXfWqymsN@7&5j& z^TH)`1N8()8M8J2-37iRg|&*vrpBhYv3{3yRRl4WKILv*BMvuiD=Zm1?Q$fQh?%df zk%=XsKdlkRc!|2fIi^o3X!fko+9p`n7KnT=z5iHWV66bp=}N$NS&(!_usf3^k%OtOS!>CPP$q27K%&@jEyKT2z;#+xAVEvNPkixA_8O|I#MC- z7j5=x<%vAHf1tE z%d6uGojtr{xgA4}Q)BnQmgv?<0C5hsd+8o`dD&%afL2+qLZ4jYsXjqgp1y(+(wqsYTVDU5C9_g3WvAI2 zy+KoI+{l~J#V^h`_WK76I{W9OdR3LxZ6OdHe%@&@+HKG&S*C$XN;O;dQR1@<$h@m| zEs;1-R1ZZeyY81akvvzVbH{3tucN(V0Qi+5Un46)oJ|2Gi{i8+6*$a~eV*3p>Idj{ z@H<5WW5G=)RUzD}T^Tm)pMas96;}N9w9*&^LR?gPQkH2Jl18zcca~Xf8Z@|RC znUCeuT`71J%09TYocc6FQI28i8sV|kQ+zhWIkWOFW>!wBHtfOhfV*H%rm7qIwzboJ z;9n;@{rj2qk{Ut)O+sS(tz$+z4A{2a;>SaUnIzvi#S9tAx?(XVg}o5-1I#2}SVuSx z%eo^Vt%h$<;GDdcM_DRab8_FBVHBbEw5Cw> zm*dN3Y7oIpRErTf)-I!=X1bABbWs4jfVL!|@9 ze$kbxdt?HZzMj%0a@`|>_9cqPqOG>y8$;V}I!q9l@hC#WTp`orIs7**o3mxtgi}=) zxX3W#Pn!!#tTlw(8?L9R&-rweF){xt#GWX1Q9%C2I6s(;T z;%#tI7+SD_Vt~MF7mgz}5wIIJli{7(_;+yM^yp1~Wd)PzB^Hsd5O2`g$&|B${>8|M zWU?Fmcf!5Z+>kwb3H&hAd9l-jXLe?{PZkIx3*@?U(=7 z`?o)IrK=ru4-YQT2;BX0_1~cBC^bAfIp!vhbjEY8EcOLpRGA!HvEHRV9qxcW#Dy>= z*dGv*@5HMMHk-`W$$+&tLZG=SaK)Q9ItEXUg)i6}7*XLXz_m0R>8b8;rQO~C_TT>4 z<=2-Yg%EWC*q6A|9@Wn;4_;au+Re`foNSntldjix&JD%J9bF7h4nP@`m4Dg&;?A8v zPFB9b^<@Xgqsjcrs{H>pSFK;1{CzY$sJ|X@S-09vUFftMk9;s^-BXQ{HFHA>R#Tik z@su$*Hi`ktfM>fyz#q-TDlWdEtga$MIQ-_|Vkkgqzw7NSm>>WU&O`Qq{%RMm+3V#Q z#%Zih&UZF8TC{n`T;Px$Y-d>2ea!#*_mF>}xX1SEDG&PXPKWMEC~_O*Q#d0?+i?=X3dfI`Iy%p}fcz;jHb^s168`R6`nt z=V7u_cFUrItsF+u%u4bqmH+J-OT;fj<17Kz(ihljRoxeaHxa6DrXT!}nqx8i%{mxl zNPKMGoMtkiX?$}DYSn!R2{mMEvM>+NPCy6a(GhL#R&!3BoF@H-i)tHuBwknQ0o}fB zlb_I<6vE+lkggx%g!1hE8=b479@?KyGc%5d*bq@5sLu=# zMW%veb(+K4eWvXsoRzM+P3j=uQ1yN0%`XxsY6Yi&vl=9NJOhn05!HvrHHxq>D#J>8 z4`ZmspVXQT80d)HXhu(#x4EP#qernb(lf=-9o_ioAo9!x>midP9y|V%-Y7smrm%YC_UK|uIvI>18udM7Q&iX z;bO$af?39oSgk}g6ul`c)bVT+XxD_L%xxeN2dDKbs$h>GS1P^pe&c$Jp#ue$b(h_1 z`~^c~25?3ZfkH6hv!GPDIN8dIQ&KbDqN(;O#OYUzI2HC|v6!=~>(GhGS~j~R>WEuJ zuI)xh?Hm@UVqXT<*+Yp%W5>Dn7u;ym5Ia~FoF|HyqLmGeZW^0&0tQ~zuT-h=uR?X; zEU^vl3+UQ0r{EH6;p#-tSVB_?KW*N3XtvwOZOrDECy|>S*4$2Re;?Exbqwr%Xx0U$ zQxOSjB%obhsIJN4u=w$txm`+N`s$VD`jmuZ6Bkb1hoN|#;z#Q5g@k`(KH-reNp0fn zBuYFFD5?KT%vV7}*Y{t8?H)r^yJ$_HtT5Acd~tAA2Z@bevAHzDX;LE96I@*kNEZY8 zRWJZ>`lRJd*@FzM?~6^P**!!`p%+gi;))-6ktHyz*tMF-(mKC^ykK&@)?zZ_v8if+ z^fbL?50LT70jDp%L|@&#s)p?&u|Tlu<_ZM|%*~MMiYuO(0%NCrG#DT!#z;_hSNXI* z(wGaTmi}cLL(H$qawYF~n5SMQT}%;b8>Fs{06u3VtpI|CGP033+tCjF+v%9cB5#b8 z%FxQ=L`!KGL4iasGr8qc_%SuHzGr5QYRI5fTVnBJJz8Lqyl4ie+)$~D_1O9ah)8Z4 z#q_7?h(1JTx4T6S%VVCkfxomgL73+y4~2er`##$}HnP>eGaCJ3_{6q~(=otqLJIF{ zD-i9vsy&z!wd)Qc`JT=s1+{8YnZ(<8m%DhH%8A#E8$L?~GIa(S!7BNcYN>+EC|M03 zsvt_8-p7{VbdZKhS3^Qu5~ohrMb7ZWK#-AnZ#CG3$uoRnASDnQ<9P@s7D*nB6|xU6 zvLRYjE~_T^5K2sLFyq_FXl-->s?}OWu7qwM+c5Jl42LAq(os;#Z=>bMn>nMmyp13K z-(F#JkE9D6II4f@KCa>Af=nk2m5WG7-@2upD!Uyf{FG>0sm_$yt8Q$fS{+~_gb96; z#rBIYIvIi{0&ADj(^PYNY%#QQSZ+@;!tLMI#&&GEV!5K$xK$BIo1tzpK&f&*SVK^? zej%q;S(rEyO+=`{=^0VGUT`+mHA^f;Q=;UYz%OpQg>liR zvQN3j1n1F*s4<`3>2tXafICsAzCVgBFPlvIq$I6!9ipo;mYk-nat~s+IqbAcH@@jf5`B>n3KwscrzYi2#>SY>I5a28wNj-+ zvp^ZKX@j6i$_3_><24;8lk!K+RJ3OzN;{$gI7R2OY_>5QmZI{N-}Pap-}$H)R7+ua zcJg;W??Q9C=F^n&7k^u#aY&drG-F!Xnur@Re)o-JyOv(ME}rj6{4Xq+^QRhK*7skc z=7>5bYC!rC<&_7LL)q+% zMDN+utb*zE_WmZtO;Yl3AGygPnwFsUWsau_pm;)Mg|ZkgD-h0kcxB*C;5QkY}fg@&RkQZc#(bLy7ZE;EPf_k!lI-TzpRVpP3xpj!46% zGeOjv>%LB{`d`YvLf${rpry7cyP3%TDACN4^(}pMrXW^H!q1`s_3R8266;x_MP+L$ zBVPsz;e0yANYhSVya!!YTGaK+n_OGoOTP@>q1Z;K?;@<`z|qi~pp6MO5=L=(Y*C$y z%W^G{T~6Sn=3R7{3Ya(%pr?%^qu+G8qXJ2cUaDuUzQ&9ss($0lPgC_?Ov!C3Oyk0m z)M<7I7I>I9f4FmZ<#(8)u-s#`58uV;O}`lRx`;NBBxL-~6oP+!ypv%%kXRwh($;V! zaBw7sgJTKX?o#+Uw;N_ASjPH-$%)cK(}ads(;}$oJ=|K~fBtN1Z>IW?%a_2rgSQ6? zXtFj(uNT^-zM3~7x@_$i#CwU0ZB=U@w0*di^c`ku0^Jahte(uxLCv*jzi7h?7;Mfg zww?p@=sr^eNk(`s+se4AR1<{lU1mQaO5VIg*=k-(s}?(^J*+|h<*4@2%-KYDD9YAAnLHHi5k7OVf3Mjb5*P_A?4C5K**W79yB&C&} zQa1V0e|msh%>M_(j=?a)s%e5=$cfTTR+=n0Gi%O#KU`a;$r5E~^x6XPo!rsAD{~j$ z$^Eig?N_TC{N|5z(5q4|uOhFWaAke`KlV_MKi+EH7vCh#bZSkXd!T=OAbXFuo_yOu z0lpNb>saq{bYG%~3q?uCP1jk{Npjy*sc_u@Qb{<0c&Qix)Bx1F=hO6x;+H< zuVqPhBdq5lyG)hM{B{rX9>SG+U`tF{{guihR%ItLZ0ULv8`*oVr~bR5lJ*Wy&5_nE zs<4dlaZEQxG^WwPp>>##vs-iq!VFXWTAR45quuTHw3+er@{(EnP%&t+o!ivxF~t*k z(L70|!y%*lX`~<2kWnP*j)jwcR~@c|LDB-Si_ZS;vy&eT0v|_eQYuY5&7^XPO>H%u zaC!O*Y2X}iqcgdD340NRq%810v-|mJby$M07Y|mx=l2R$HwulqiDR3aDuOGVsESUCfjr>gC^K=o z2$iBFXXAlQc^8QwgoTE_!$oIADXbKM|Y^(4RZ`ubjTzXb6PM@OBjvn}0@EOMk+UXrXl z;ubyrdrXv~UB^JZ6WrIL>j384Bdp4G)10kTjx_MjxTbw3Hq7)Tsw%ue02@G(llk@c zcYeHLYOvkbs*tJA^#mm<=EPP}^X)LG_5g5`5K(?oNG8=}Wn{?>gvnXND-t$P|sVYs|BnU63v zVk%QG8&i79z`Rjg7BW7812qaDs7U&--jIseapM&nPY4mq(&8fsITSx3bE;CO2(1_9 zla6~8X%EcGT%{7}uMt)8686BA#SczIe06qu!aw~{j7t96pVU&SM}KWpNrDlscoNdc zU*)n|94@}@8CBY=ur`l(p76P7hpgG%Sbx0JBJv|;Hif^t`Fv+9?8%9y8N`mA?w|)Z zD+l~r>1(x52M#QhP~^TImn{es-?9OSg4OSFW^%>5Xf1=Y`nA~_I_IMCsB#t!+C+z!_@)4b{5z@4 zGo{1%%RR!hxm3rvJ3c2J!IYL#W7SZ5RJXw~rwEs;$(v1p5q+|SpD&?6?q8>6LVF!G z$p#>L&=^R4`G<)eR*M&>LKm7=X zUFQFPX`O@CWW~Vkw&OLufE$7f<{HXlWa~caYy|!Hy>g zQDVG-qwM$UNwurDtA!4hElC`TnuW@{_3o+Ulk}Fzz$bXaLDGQFEKi-{%?DFODNf8dx9{(h`N#9SO2g?z9L?rxl`tu zy9vDQ3xE0Ezj%W`+RKH%{D-}~P=j6qnZ0g;QcYu=(-HOB^C20uakzo37O~eePOWw} zos%pi2IV(f8gW0GXO*EZ2WNMUDuz!(!Pg%(mY3o{aY@HjC*THia&H9VJaAs1-))df{tOi=lq0BYI3gCkNem_=P}xeK-GP27G~1 z3>ed3+Hm(p33n?Oua{Cb{S~k^>^Cx$ zGxAob`#YJ_00cuPqWkVH?@tzbphLmp*!Weke${(i8~c@C;a=s}CP+Sjdhwbbzfpha zzn|$72&ow@9)<`cCV_}buErt@iM~|}>ZLS)MRqVMi5yncqOT<+yTo-C#+`j0>L@$W z!Keo+Q#6sL^Cd(_V?sXaOYEHGB?W>T^*dgei-%m&Ul)0nYI+J8*a@`-f9_lMdo>y# z-B?8X8i?N&-!z{g<%9}=-nnu@T<+Bf&^&rc+6kz_B`!cJK*e$UjwsOvcQx`rLHFvX z1vJTs9`fKQV>UBNPYk%5s0X@-drs(){xF9wLb1{W?CBg4g8CE$rrv_bO{|k48J_uK z(2ERUH)0LZNE`|OsK0+}?;Z9wc+`%7NBvb4$)F3!Pv+JL*taU=`mef!Jk>4_f4d|E z9Cgt!@AvArFo440)`*QsZyJJKXCShriLQ$)ZgAbKwY-7$2;{xMUz5PYN z%?~OuW(I2K)nFTP=e`#F0r$xDgA{6tsJl+1m^4jc#u=kZH*-{6F27|rN-=_T^YSNN zHE$=ubqA*ao14drpTj`kd=ORT$B6m?BH!wMr8w z%BnR7hj1_%lVxn;0Tje>;-Ctlqq5-8I&~m% z;(oCRR8;z)w%W^ppsJx@D^~P_2bV9V&T@iS8EI>!Z2q4N-o%yYyDxrb+5Nioq_(*u zD6q_nVqLAZGAjMDuW%!nb>tA~re7mHg3sgG$887Tl@Xa%W0 z1{xb0-q5}!`GInG#rbP`Yy;b4f1(bQ(zju*r|Bz}sIaY9kUCcBr~u4LbAQ9pW~cm`0nXmP)VPODiTV zpCr-0?<~(~cE!?~m0R&LxY0`e&%B2zlBPr}o`7#HFiaA}O{P1I5J$V2b}sbxJSq*VJP)x^851aj|vdh`U$qau9HHua*m!Ew7I|1k}Q7> zWu3iCyXX44hbT9Z<6m5iE>;b}?n62dF@VUEm=j4BXd(UGdWE~cx{y6}UT| ztH!RXfH?hO=o8g=BXgm^b$kdc5(K9X0KVit9fAuQr{eH?I(mWJ$3rLT05;Q_7o*Xs zNn}ka;rA|#`c~LV=@4DcYC6Q`?{g$diJ6U1^nmGQF!b>|yaEW41X0qL(C27W^_xfS z6HjdQ-)vEsA3~SBRS`BrHQ!zC;(F@uJpVBK0eXl4(Lc=nnU#=Tta?Zo!g-cd$<+@R z)eo1|54Vi_x@q&j>jT=skl?YIuK9*tN|tX%Xi>iFYk@3pB%^7`wIw{&AywYbD5Z*Q z&0(P2&wzuReiIK#cSeNN)m)wAcJ_w*6mT?^tlHvf{Px;Xh?s17MV);Z_zLh~PioOZ z^es>|*|*YcqxuwFC;3*^B>IkdNCIn@SBKQu1n@E}>nmIv0qw${G)WSO`x2xm@$}Ta zTR(z#XZ|2zu5Yd0l9^hVU`*8oM!=}R7R}}C(r|cvd694kzQoDUJbTSz&R$ItZZOZ1 zgs>u=s;xdUdvuWqS=P$7dVp$LCD| z-2Q$yzNgb5d}3qaObLH-cJ|7`#74T&0of=!Llyh{EAB}K@D1F zL+zb;s5NdVz}IZ1977qy0>tOr4{ek28*OBP<&5)QVd0Hx)oGSX35oFjex5rft)*fi zY+`J(5}FGPDH2Hd!mv*(1nrE7ve7SF^$>$Q1Xxhn`ReWpbE4%TZZ45?^$Nb@{wU+=yh9u^(unTKGBfQYqy7{>y0~i+S-b8np1N$Z04NHS z@HK0Q0ypjWv<1KLEtqz6YkW4jPj|PU>~B5mZ9jgxv%Rss-`m)I^6j;gKRNM>CoA?p zbC2A{D%H$EiiLd9k~Sp3+m7iK0oV?OtG&{Z{Lk6GiFIjpTY#~6cwZ&*>Z@tUmS4Si z2nO40YcXCM`Q6Q%*9Zfb8(E-=wU*6wd{-ndTPt6EZlCq*b*pUcNg9DYt#YY$_|2gI zv9IUQ6gFYIP7$n|xNz5e_pA^B=B=zyO+cUC4bc?1{)-7*-k5UzIa4Hr;fCHYFUp6( z%>7zde+CHOQ!_yNs|cLMaVtgi175kHC^q$K?K3X=)VXS|W3_`PzbR+)%^=^K_|vac zEr07)bx%gafkoYvu{7b!tNmxsx2lKhJ9}GcxFPN=kZx57D_d~UntfPHlm11(WLj_S zAinyR6&S_|@j-Jz<8+*-H(A!)UQ43V@gvOz&WmH<3N5r?|2+yHW!((<#7v=1w<|;0Zy<1o&FYr1S(K7$LuG+C#RjYy!{L z^qSmIxn?A5kDVN1qM>s}8ShUOMN~-!{;euZHOE!|m(+EGDL$ovR3UO;kNM?C;5}UtNv zNoSVi@3gX<98cE&s;jb}tv~s9awbCM`USU`(q-JBJl`#l0zol(`6LvC`8aOIBA__# zM0fA|>>IgN<(2S{_nJks5!M=eEEc2G);f!MfF;43zW##5LK; z6p|Zf|H_m}u~>WqGjKgoE4wGn%%Av+B7aKC`P)|YPrOXMBEOX)9jYx7 z!Pi81l!im$;8)MjD*exqBIUk0b+x3RW)uyLMCT?%pdlZHzF1p>#+djTl27}}H>pa* zPuG8Y)7iugQ&cuC+iZvOiw9-%^v_O?pvuep9_C!5T+eUJvu!@h^X(b62)*5}|FX5Q z-*n~i`lIcQ-p0=Q-d+d;K#d0%YueWmk(7z3s9j@QZ#-o>cJUfybAIM#LTOHl3jF}E zy1DUUeScfGM1&;w?BMuB6atbLLh*IZ_rLjTuipE%UKVP6{^a@I*5=doXOBDM*La#) zol~FAq~xXp-r`e(v5Ig~2fuXYzfFWdnI(t`l8Y91z1!My1_n&*z95eEQ$gAU8UsmcSE8kVs#?IFIGbz`j>WACU_V&3x zv`Bh_ePui4;nw~})4H)43#NF>P1CIf7b%&pj2^jeYvH}+`&E}k&C`Vi74AML^V&SA zYkT{<&$jXyi&j<^u&#m1|M=D z5Z(p@-WFnRXXDKxq}%p$%&o(|o2HF5foO_&^I4fNr#wQTVwwD$hvfgzg)yf5<(!CxppBHIgec zGNXC*ka7RXI-7|i+#gJhrl9K(2Ga0w1a|e$$q%FKg*W9A3&PgpA9*&&GR2Hd(I2l? z%vjE(m+?v^Xs{oTh=d;R#R;B(_#?oJ<8o|F;Y$alh^ma6Ni751=r0dB?9Woo7F z7#B0Z2H$`vwXfmjIxUjZM1(UfI)s2hMD!#`yi}}9bcNxq%i3+Q0mz2a*McY$PdgLcO^UM>^tNJq-J+_DTz!Ogl?KG zlkRKFlkTFj7YsW2e|n7WDTh6#GeOe9U@1_zu|gs84{2S%+&vx)X_jq*J+67!?-sky zi!C_fvxDQ)*6!Qw=be*2Dx8*W(C`n512c!#+jgAL@c|(eDwY$N2wiFjJbb{^S$3)wEq0U!4Rh$kuL; z%a)c@s%u;xg>$I)X}Vrh$-RO`8X4KA-$)Brjo9cy3`W`**n8y;h!DN2HP`8!S*|&Z za_dF?YqM;Z42M0;mi%fR1y_4%7e8q4Y)IUu=hfWw!nn~Gk*Yy>`qsEyM#Ad3X2<0+ z0$0y*m;8iL%ynw#ViK zi$sF!86n`~`e$_A2k`9V+Y{-(lkI`?Vbk>nL@$hzLYpKbH_Rc zc_~cI{k19`pL{z>vL9Es7xMV7=#Qwu!}VQiO8kCM!o=_!NwyRVa;)w6X!v?S7}RG_87M>kATBaOrUIXW%Zz*HK9hPQ(4NDrxT6%vcD6T2Q_F*|(9 ztU%sJ)Xf1Ez;lTpQZE6-tsTcN$hQ`+5$g7RQHA>P z%n#;*%^Ph{u}jRnY2W|gXTa~EKqOLAN)z0gXS`Zsz2LnvPGdiyidOC5HWMs{fou24 z%EPTMnQWx$Q}lCI{E05FrBNobdSA3yI5Wk)^4H1}dn}$mM)(R*tQq9g#s!Z^I>4kP z*nqzv%1{V0O7)>8oRgAeuRq=#+o0ZZ=09|4b6G^k$q!yB# zSpzhb@!gn!gh<7LZ%} zyNTnCB}f_T`98Q|j*@IrL-zAbLFz@9Ob6C1*pTl>8(9V63+HW*pg{xlOouOK4{64I;-z^6dsrNPwY#$Oc-L%OO#UjPBcbZ{v)v~fD?7hz=@0voHMP3(^eIRxXxFeE*4El?69cy)YDCdkq_-WRv znc_Ph_(|7qgtw$Tx0qqcKi>?mP_vqWR9*_E4M#GL?O-;)B9=Smu=kh!T{}c(Y-XsMDHXNITULVI z291JH{)Y|KN8zoRTyJ>f!X&Hk#bkIXGN7eW13evE6o*M9MV=ko#UcNxpV}4ebACw=iQ;TF zTs5qv{ee04!&JECNYi`6viSa|Nnt_Sre^LCYHqPk01Q@QLu$)jrM}W48ssvyPXHx# ztw{`BkPWd}d$hW_$4nixS{m@YC!`wRc0LUzh40ou&1;1$oaNbTWTdUcHQAx@yNhM; z-p2MWk9m3TZY#(3v%Lo^t5Uwo8zR<@QQ5`vac7Na060lM?(9MUR(2+~mvLC6eD|&F zi&{p(LZe#dX3Fx>&RX=PED@YPU!!fy3zF?JmahrN#}KrWEKV=(|_sIE=%K!uH$f`h?-iXZ6? zIKIPWD6#!yyWBPj?W#*?Z70UEmoRsOH{8p~3AZ@QPeaP>C)-Wkw%)U<)kR>AxZ9Ar z^{>Wx&Ui}a>Dp#FdvqaPPtt0Oyn#8PGf0ml+A7)HpVmOji8b(vqcJiOgWHCo%gv+h^<&qWZM8hovmGXyv6coP`G<= zg>zhPi@fK9ZLba-?$M@Bzauu||yt3@efnr;c`o!uu-*B^9tpFI*> zbP3j=oIAWEO3$2bZrj*D*xD_>vYTgIJL3i%bA$dI$`p2Jjn+EXsK~nK)#MI(*6Zpb z-J^nL?}q!=%s#g?+}UR7zg^pW*jeAi@EM~8A_8_EKiztOwJGeQm`wJz-g(4Q<%7^& z)Wb?WSbMy_Ia-XkU3D(V7JTP;@S0*$nftrM|EV7JV5D(su|^)Qabnyd0{L+7$dL5( zMq1Y-tlk*BhF)30W`WMi>MBx}tsNUz?$g*xR_WUhuSFwKHOYeE@#eGDP6uYhy|;`> zv<^O6S$`TKz&j=i>2WO)axiSg&~f0)dCskWosKgKR}}u>=<|ElX#`2F#_wG>EdgY| z`fhO1#0l}ZX7TLYwa&F>hUU6u_46?~8ZD%Uz{_}T-_O8gXM|+zBct(t#iW z*gxW^A+Zx?1#BJxgx|w^W0>`NfauwvYuP=Em1i@G(7Kjv{jLqkrv#a_cYr8wI_H6W zutc9qcwn<2rqx{SvERheX`kz#FYz>Oeadwqvg}pv-Dig2nP_~uv$grSgWbu>1}+WH zHutQ3y32K3$PCB!la0(z0HJDdet9Fk4;Ba>9N2C7gB=ZDaJhPGGN}5sz3Ql3T5Q@;TsHLInUWz zDN%o~jfVQ^jjH50Ro)oN$mSe0Os#ymzWK9H`4URE)R&d*^%8F`*cV+;)nco3MY{;# zXjbEaKn-&h9b#%=UA(`e-;H6Ln7XEbcCZK-4x3^O3HurGBL+mv!R{mZ4dRp6wy>-K>4r#=IyF5(&>nN_QoD zlFX>OouTUL#Vl=1kyP7+)^<|*Xi+-ItmkqJb%@m z!bH+IQ3W2iun~f3bYX-ejm*0=Ax1=PeP9vos5j=Q!1h1sxDX=o*b=BNPko~&6BFb? zPWyIOKVGiIJ~>^Y{~|YMOBB zRMPm9r*S3q&3euGgJPKLS*-CyqltDn2oK1ywKaD8W?jvssL3jMwASH(FoniZq6v99 z7DEBy5$AkR(&v~^J09+I35N==#H#h+hU`t81&O_&D^}&hk^)&sP2|FBADZRsUn04T zUBddXv%9m}c_@{nxIxH2rTp459kXSe>5NG8q9&0lLi(%vA&Plzd+GF2% zPr3TSw=H+Pat6-uLBf*pcOBfQ+E#uD9tXRFqYDhWbR73j7E$8a2~I`**C&d>i5=Pg zYp$%mJ3F|~37Ar0e2hh2O`QptROZl?&RL)YizMUgdu0fez%EU@#2|1-#^wM&pLY-d_FZT&593T-!bU(IXB|-r zKP|Crc6PRQeyaIabv1*z`PbXrMMCzl^4ru=;kI>xtuSukvo$8HdugsUcw$)~tHY&o zgX3WjPc-Nq3>lXr$l=V)UF!~O4pq=3FZIH?J()C=7FP6xC{xY1EPO77G}&AgZydS4 zaia!Cl`8#V>f^BeN8No-iZgmiasqoUAYS&Wo z3R9~rW(XVg=tCCdptwXGAV%1DNKaiH-&V7G>J9?Js*gcTKmItl zvjn?5d}|;Q^V~V?hC$ZD6n6w@!#L8wCIOXBIV6AG;{gsGeCY)ESF#KrnNR+l9$u>~^VmHlc*< z9&A6`sRT*t2Z^+gohy5n1^SG){2hGtwz5!$QivjQ1{|U#g2?ap?cGjuwj&D(#z}2* z0guym{azB?fM8>!HrD7+PbBbR$M`TQ&3krbFSuuDyzppD7sNr+>)U|DB|Wzh%#IBVYe)By@5OHG?s8-=2iKBL$p$^Gx7;PcbD% zGHpPm``pNEN=md%x8)KHnDF$#gvB53VxRHeV!iZV<;cc^>}>n;5-Y@lE08!26rUGM zw~Ga$U6vmgx1Taj98dH5DSka8Yp#3bOS_yNpkaW~%v>~>Dyj^`0dz{9uq6@G?^TuE zD}v7`U!pMk7U*d&E7j16<@M zkvnY%yU2%D>Y&>KTJxG1t>g63V~1LbX=-eHx6&VH$loIw2z{I=y`F=+ueV#A?C4KyH zr3t%B!=pR&q%N*u_=woICBJ5qX+jwwKryF&amc^ z67aM?u#oUW6Q^WMz8T-=^zy* zM`kl+Q$wB8pxM?hpT5NRLv;MH|0f{tTUMFGhW6f)56$~olSh?hJ7v)Dn}Z50SQU`j#8 z7$^6TQ7nM0i-<&VQ;YjoRdd+JeW0-Rzp=Wddz17z)Myfh!dhHF)^IQM9X!h1!K*VK zD8HpF`2&Yb7g+c?hxrN}vu4X{NQWGgS71Vo`&d|w_s*}!(N!D)SfT@~ZN;m8pY2W% zT)R?{ZebCXhFzDeXbGlfRnxrdK41k1q+T6%;S|%F&o%@Sw#*$GXE2U^)K=9{X`_Qf zC61_W?JEZ??Ma>i_Lv<3rUbXqcsPHk%-gt}TZz`}0SVTKwA!g6-3;ceP`&-N)@;j6 z73M8QolS4m5=Foe3r@C)t}3Y|L#3w{_nz!LtC@HvU8IF~62GQpKEyaO&MUb>l`_82 z;uqO0HMOS!XzHmFUFnX;^AENzRX4z;VtfDW_$de4jy&Apm5*{lHyR4Rm@pV4DsTY(XRu*1OtoCBRGBT%q9R?XWaddSkdGS^rkb zMBLEUHy=N3d4^O`QpI~rB|}y!aXYPiV3+T0YwfY^_Ig$*%cCw^mDlB#j6?Mnqdj4t zO-wzV+P>T}O?9?f3vjqbLv@l#gYjVU&-c$dxk%B~|YSfh_1rR)*7a$~~uR`jEW! z{L&vpoBNj#b3CCXjw1Mth_y&NGr81p%a)GY2BP_dUSTwhue%Lt`)eW+Y<9BQ=kvW4 z+;muzPM&qCLnnoQa1-VfEXd-{)QNbM5b>^AI|DnNRvHr(ri@|MD6 z)h7}*VK!}|(u8(a0l=f+f4MMP=GU-HZk#4e11}OAlwS;ENZ2e%3x?h*J7n^ zU+!HXqU(S_aJfHbB-IGg01=GpEcN|ukAh{xpyAN2P_PCaJ7oSCSQ$3gW+|UdP2TaZ+0R6NUD_khcs%MEJZeOy`bhZu- zF1Wx4!+YT1o4sWSDlkk38~~%#fT~cH5V`=3J!~BJ>7CfR*U1vz5JO>iaHzUbGfBRl zka1NJJGCCh(jcivuCPqD`KOO6rypNmkc%6-y9SM8&c|TGQ5@Oi%rDBWG25v+suaI!#e?QTDKZapJd?b z1Rom&*eYx^FfVAR^5VP|h|eW;16Q=JJX?Rdx4vn8l)aI4QF#5U3ruYI%zirdyYG}k z`TaErTdfuy=9W$`F-Eq?)Tg#GsC)fbVax2W1QXo$n1idgR&U-6m82=jI*3p$ycKqm z3Oz_Da&$x3OTwgeItcY%K|af+5*3eXlZUrlU_L3gQR^tHwtG8};d^QZmmK_5MBgU0 z>va~X(uHWHz`TmOqp6n{Jv3P-7N?`ri8mR3cI^s?7@v`%s!$`NYk4_B!HRG&L=hJI zJ-Y-jb3Wv9J<^=mX^Tv{WtH>;<+yUYX4_dWrMdJr(H_Vb7pv2gh`V7 z2ae1qRrSv8!Y(E9JV#!uRdK`*@GpO%j8Z6B=TghMFV8M}<)V>13~IHlj}d$7pwp3m zUdu-(GUC1S)M^<19$@ivua81XSpx=n`^I6bjR0sT3e;dn^?tMXO2RmKGriX?6rYvSa4{< zWpV3nG=MmIy1Z#K<5*4r2?`KiaTjkhPh`9a2kUM*n`iQ@{;HcbTn|? zk+?%=!$hOQGSuQiJ7M^(BwsRGpVrUC=1>w^R_nYXHAziDbLSeVaE!+)Lv6zA=q#X& zUE$f+{0rd|o4Qf_4SL#@EOBW%N(GpL?~xR%8zg&O8qteW^?LNKpBzclpQ z*VS$-X$_5EVyV&!J5VAt*IJsD5lA#pgj98^Mn7XpCIQta%m#w#Y=gF{_cc)DWQT;P z!x(5(xtd@Qv~yYz?}^K1hyYn1$AX3$Rf#z$7>-oKX@Es>T3E09maLPRKWT*1)6=U$ zTDWp9@3U)3WzIwiG3EQ>ls&U1WZ!s+u&Key(F(TtJUHTZ0XTX&HQ~c`W?n6kNM{YRAu`2MT@(!S-11c#>Wi$r2m-elvl!X z31zmw&NjhM*1l3i<=gLX|LnH?6PpJy5xM-0@J6jGW1xyI0de^45Rtimy zaK=T491e8A7G)A1dKo_-%6@)*<>~t0uBCG#V9f@M5lAnsDcji1+RslXItt|lrx*Xw zJi^Q_Es)8-!4kwIdCpm%6*(;lg0pOBY=Et4|4h)Smlzm)Tlnisj9^cSC}J;T%Gmc@ zP_jjWDOasjPOx@tGe1}@9pF?v)w=T%kmMu9Ts_B9wZtRD)?m=00)s;UqzPQjntW z58$eAdoK>ztGWzCn{n?T9;8K7|BVOsCmRZ%#1*UhS~Vwq4JRt9iId3H0Ok;g1WzBA z!#QBx#~N;oo?aq z8^K)jb!-U>y%AbjJF(kuwBnQ|iYGWOA~Wp~3J2jy|DDkwyA{gvsP=bVB&yyO`s95K zE9%4U%Zu0TLv}H&t%+yL-6&@9d$UAhlv^SVUSJPw1)*54S<2RJt^Ki; zYW)n@Js2sL-9weu5`Rd=X$?C>+U4UeQC!%VU^Y(&-3zq&>1twI>IU8v{l+~Bgq;kL zSZ8*fKVE8yUSGX3F;#dpoSLXsgi1qUzs8qY@i{mv9K4h( zv2;0@NOcd3*u@Y6=t@r6KqUSOY=P0XIlOlTFtP)xa{yRUPS$9Ig%On2p zbVERgp!{EM?L6FdqY8`FS5=pbY;LK<)paY;L|FKq3!y_y>Qh6}RfVqGG&3wHS{)wo{Fv znA+Yy_}J>8GC%C;L@pVNZiTn<~_aHUl;%uLpB+Rrq0 ztxZH10pRQU{CVk;j?2z-E?y)E$#N=GAsJ#l7FiwZ{DUM@PS!{0@C1p>xX+pH))K!D z!3^CeY!iiF!onV9F;o-Tvo+L=x}QK?oEhb_g=8jZta-q#S+4Xh(okZeC_OCS0ViT# z7_juFkD*Y4G$V-Yv`7QT^b*RDVhZ9ScLS zHjGGy@-zI7QK7TtsNDwfWgMrR>8FYZ^3`-)B~E zBvs<+pk=I7++a9JMVZXc_*Eoqj?QPfiM8?N>^>@-3)tK2Y}D(gF3vX?j|42vIHQKB zXBbTTFGnCJppC+_lE4>VIDu*?5?W)#`s}Q&tk#<^TCRD7Btf)XiE(dCsUlS6%t0n& zNBhSw5BJOW%jNq@WsYX6NC~KL8fm&gN`!B2Pk{1^&)@X8mhou+H3u1X)hybl9Uo8n zQjN4?7!s|FF@WMJw^Rc{IJn?a|%M?z?JOW&~>2SVk1BW~x#8IaeZT)W2aCW*Vj zT02OLR6_&(To;~kPp{I!7PutWUO1b4iHz^&21!`X0m7i zgwnJnq?*6ssQDoB(Jf`PNg6KQzAsvUDGAja^56F5L)n!u$7XmqToL=PTI!f=sCPg% zFteFyw|l<9;#am-v!_lK)D^dBY^GXIPH@H1hC*MPjN&rgB$3uqDd|AmQI!%3dEQJ? zGb9)`ZtS1D#)(B;GJ7tM#%)EkhUzt1F+AOdztxwuJmJPJ|0_#nVh}cz&F&6f)LZm% z-MlHoo_|D3G2?Df%Dn8_0S9b>WZRvqW*Y#bv}!5{DcIwpBLjo&d}t~JX~#f07An_E z2|b18VPC$)Van&U=^EE(lg~*}48aLNO z$_M)>A)Sd}HNd$++qGPsw;p139|NiG`9qk4*{pkvb-{O;q6Q$b7B{Oe2&;B9g&H|9 zm$NH#%SOx#@Klv)b{J`ZG$?ch9&`1mKS26o%=z|Z0>)KoQJn5hEZ$5578PLp2odYr zp#dnEmJj^sP+Cfz`k^wF&pJjWXQOcYdPBM6TmyBf!j+9BqqJTyjwH?mS!B=WjN{;_sHci@jhwzzN3GAkdsaIe8o4e` zV>&GLPlL`>sT^z&Dc4t5m1Z`^BqfV)D7#;DNsLS)ETCDn9KOg?rrou@4%e@2c$#V4 ztp_Pr=c{mVseK)U%XRKwDOHLh!EnaPJ!F(VHXY5fPqlTS5a^k8iN`6D{H?EkWgz$J2gIV_D zHs%5QJ@z?$YZ2Ee5AU3t9A zC?Bmnd%E{`wNJVxRs3lE+v=0G)nDr4?hhnvF9s5k_dwAMCFQ^+vO@3kaW-IX%YjgaUzpDv%!IcS3=5RHi_BTzG_Sj*}Xd9r`jl zU>242$$kN^ekTA?Nhj!_RBwJx4-?8H9+)EOakLL1U{Ss4aWoTsW0I98o<_5XKUW6( z9ZeRcRkHn#Nfv{x$}LZRF}|Cx69#C>!o#YRUhFdulSRWZuen*oNRj^;~Nx%T~3Sj*8SYYfQclO`y!=UAdi%DCDa)|C&R(lxg zk}_Cd^21Pulb0RD&qe&aWD>@2Qe*(5An;I*`txXY+%~Fsixsw z?a2xBC1lE;MzfrCkFhYq#8A1am(h&WfRI1x($i>`Q(fVq9R4txfqOj7+DUox^Jq4X znFws&TF3MAXg0*B{UdH;P;L2nG#euH-*+JgYBL^3Gxbhbd^RodG@9keuG~~L@idx+ zD_e9;GFjqjGz(@a)?a=`6W{j@eEJzp^t7=_2mLON392`q><5#kG1Z8-C8K^u+u%fo zE*3GhhLD~;49%F_y6Rpz?RT`YS6l;QZTZ7!hQ2QZ{fs8Q>AqLp`Wa2^onVxR>t(FF z`s?J(^~IM; zGP#Wkw^NacIG!>DuGe2D*B`i_GLK&aDb?3P?QOJPkdBCZ)hrCZD@;{q5tx?{2ztdIL>qMyVRxXX{ZGf(6Dj;XHh+kX5ko&NuaW% zC$Yq|I&O62f(1BMZu=do?w!uVzw6-92DNRx3}wujst2`d-1y|C1)kJ=^{j%E;S{|v z$kw}6eHiUpl}7h!FS(18o1*|Qmr*iyW3^|W%Lx;i7ELuea<8N!P{wncjW$aM5>LOTZ2rcVEXczWYmIcWCYvm>0l=>(< z_R_KiKv3>CpDztlf{IY-4@|dn-HQh?w z>rE|7iGQ5b2f%Z7VSpNH*6&J4&6x=WmXlwe$<*?!K1o&Q0Q3OuYsy>e_Kz^2sH$^Y zrqEtEOt|mf-hZeeOX^Bx$l{fbv1M^vhM0uMXmgR@v?6!a=Hajr4B?%#8Aoc(ZAj8v z3wyle+7adj@#>*N4Ii(^r%H?T{b=`ySjZ@O!<*4^D2;9`JS6>*_$MSyt z7!=oNh2!g$uKHNYYSYN3zF7efITT5a&p#Cd!80jz(eX6YPv9zFYZ#<>)BvZ@Z;{7z zhc4BWRwJcU;;MAjR#wQV?4`ZOJrGLjG);;Yr_rKVjOvmgHwu`!f7tGy99=rVYpqq7 z%t&;2Q}w5pY|*Hk57KWPFy-@VnR*)k_MLX_ zx;3;YwF2VGDLhBVb?a!25*SH!X!rzOFuR`#LDI^f6eSJE8mn9p-9MXx3^h75WD}BO zxSI=DmG$;F3L|vex?O|{nqG@dD;LtBO=-2sOKK=QmWTv83jQ*-~YBNvnPd8bjLSi1Bk*tT>#kHunjGea)1&q ze+xfTA@{=2Vn`s;?0jF*oR_THE{Tgl?eI1P#M9La@s8)o;ZUD!b9I2!yP7KGVoMgS z(jg;1WFxjcMA23CU#ewXo7P$w1B|guZPY_N_XZ%XBfe^`E?QVC--FUMjE3EgP>8O^ zVq3D=tb-k>1)yQ}M64OkyA# zRwN*qEd0riIY$?_i1r<9Zrs{3?_aqJt2)ZJwV4kcCoBl9DV-A^zA80qgt)BwWX;vB zVZ3iq^GK=?*WE)9@YCa>T5`E-wQoV=rD7A>*HY4#_yzijer#e66`?1wI&Sr}&wW<* zZ2f&!-n`k18A$oFWmHs!O;)v7Ui9L2SVod8q|!o)w6qU3d*EwcYn++zm$qJ*5kW|9 z2=%U2IetPH3GBsI;(#C9&nm+xxL`7NB{uP`>-M69Zgf!1d=QijKcq8GtJQ-%i-4U| zNyQ$p6c!VNqju$2e}k)y)S<7nyu;{D@f7E%Y4M}=o>PVpdv;LJFaCcJmYQrEoVw5u zTBHr$F#j7_4$1OFdzm;_JW})+J>rX5`?)b0n0k<+k<(UK#|eK^FxlqU`OkowZqWu{ zu{zGZ4OnxL4pQwMMArUs-RMkE>%0NxAha?of<$LvsqAM{7169MBJvp3pkZt1dusOV zjk+n`sJq52IxwpB9Sb<`xdKzIFT7d^ctHE%_IE|EC)5b#eaTyFGkX?sxyCv)HzQR_ z4XM@6QxobsdV(&I%#ZxW#^wr|Y2C5?R^y)pI*1jZ`p z^=1d!v(s7;Z(~-N>cL{KXKVH*5ja%(=1rQhVXD6xMt!0u?XAdQB7XW?ZEa0(+`Ln? z+p3J3Gja|<-FnSC3PQJa#sQpbY%)HzroTKxyTuhM@=lbK?>W4deCnysc`FO3Fos(< z19aJ$PffFVM6`y|gQRLx@2e)9KhC<#WTMyfu6@V0Rsv@|+g#cCTK5KYR-bO|KHFJK z2@lr@R{v~O_gN05tZ)A6+4|1c!=HgRz}^{G*Ms#*tx#YjNtQaOw6z_Y%v{i;r;&9P zn}Ts|JYCxy_jy;$Exz6p)4n&u)`NdVd9D;50g)B8Ka=y2!vDvW_LK=#@2qW)h2)c! z-6!LQBFJwN*LPeR-?mp)f7!Weq$$ss?n17g?^&b=ob3FHL=PPx!)=k}w6M8EKxZv& z2W~Fal7OEG`2L1m4kc9c?vhB+nQh+Pmy!`@y;{%33iVJ*FY5Ju12(G@aa#1G;5q!e zIyHJTfd>I;E_zJ*sz~eguH`n$7)zb#u~kcQG8z%yMpY|n#AZwfOYG|pxw*`IP|D-M zYigg~@G!ObLAm=DJLO@&JJ6jecD>`G$6aO@JuIhdjnG3XxQVFKDll<*Be}_edo!62 zPj@9y$I^i!&lAkBR+`hR!<22=!`ekFHnk$X{+^5E0sEe zlklvIrFk3Y2ovttE}N*THt!8iwb~}!tJ51&fLKq=Zr3vQBIx20wEX>LN;|z&SQoqV zc41+GI5HlJrH^+54oGuV@|+xDyNY!`xFUCz!SY8Ok}C?-a#)G|)7}-iBh_-AU7TEz zGg8SpV8%}`_5LQGmQr9fk6@QrP49~Zsq+NiZao&C$71h1Si@zc^8jnKUoyANl7uCh zSWXx843|p1knP#Kp}MRWo-nZ&GK%|hTrVb;vulE^RH4mWe(Lha<|-VP-0bO8@d8n( zFXeUOVtr%jSi}`~U10tw1bf@u6wmG&K@aYi55_$KYx8PCtArxn(A5r8NIr|nntBg$HU{XJHi&MGK%*9A{ItDW~ zkZ}dL!|<$getcT&u6?y#`Xla7A-8Z=KEG1iZL+@=5JF1kZ~9JjS*+A_GPWnni=f0J zn)O<_q#_H(uA5uQ)p@R;kY7@=BZ-mmEwU)bi}j13;!=Ez5CR)bfJV7LhEo3;#T>PNvV0+=!wcM!OC+CLqOYj@OdfM_+hrtPQH zW}Id=q~s@K1W$dntJu zDQ2;4f6rLsa2y4;7{-;b{->r;vBTK;%@8|{yEJ%%w)PY+SfNRmcKF#`*;w0!9bGG? zKvg1Vws7Y5CnsP7K7ggxDgVBzXp-GQOTJP3ztEvTaB0Czs@L=qAu;Gf?4EiWf~DUs zmP<>Db41I2RcQYVBBaGDSA$leP%#!H5bC12#r9p7r{>Q$3n**#+Ac6gD$M;?0vBq1 zo2pfv2Q9uRwdftb=lv8rsDn3gjer5Tm9ncBwiKBzu0c52Z&8HvWZL#y>dht&3l5dq zScREVo7HQ2@q*Idh!=jPoCXW!d(VGjJH3T^Z>oOl6q~^YwB|op9eRp;JbAZ96WoU~ z(Z(kw4yjzNq4Vm&0d_|mV4?o$FP&2>)gx3~*btHc*C?zTxi zXr=Ty(Qj;+yJvIri-n-b;Ct4n?p(a0$xr0C8ofF@BdDZz$wM-#PaPdrWC4Xft=@%N z?=oZnYepy>-w0h&-s6D0HZR%K0BeDx%N7|@e)JBkJ>*f8+aD}x-+kRZYn`<30B?mc zwkR57+P2ZBv8UQpORaUE->Tg^%Wh8B>djX@PzOfZ@4YzrhAsq(@Zz2Mga~^M%CT_j zvMWBs4VQV)!qZNs?W+Et#j=4mtdUhqO6$|K>Qm*Cb$4*@K=edI@4h`GY7pM?Zm_|Y z5}R+uaV$=$FcZxptDcZfnnpUTGf12&hQFz=_`VX*^i6EbQyGfZ5fQZyQdC;BcA9v! z@^p7iyT&nBma}EYT_d(l2titfzAH-I9iuav{F{H?xD^ly}=1v07Sv=(=D;1THjPZSJr$ z^fQ{g=#)*lv}nopR#}YP>7#!;uy0vhXEiD5lN_ToH#jifCrE)&6Y4}>#@v{u-$7Dv z#{%J8?5{I{YWandkF;Z6ij9LN|T`-@-vyK)ZU7Gkuq*^r>*I@2?nN}#fk#~2Jb{v%rh0V)^+p& zW)N?B@w^{a4e8_j;Wh}x-QAG@TAMj z;!%4tDS~h7FtFJ}ehZOmH!Y~T=6pxhX}AE0ibph(M}g1ak-O6#xLODEYEkJ>54jt<8qu!>5^c&^+-FBVpU19{nfVhYi7sq z!Kl_8Xs-R|v#E4exEQ<{dsq;7O%G(P+VK>SbAh?Bf-t_i7KFNdqnRC84!0r1x|wUw zU=WV_uY0h3Ez8UPT+E#0BP1rs@;)ga);C^`C!MW}^V17IMmZ*dL5**5dkGpel-y z2Kt~mP_j_6SW>puoPu!{5@@eHUc1Me#zY{mrR0Hl)*`=f04@!4FM&*2a zB)>SX_fN#X-PdE1#^v@(UUbYF-s7){@JCZe~REN`QYmV{rzCvRoQyz z*FKwJvCj8UajrQyy5RPQyE_~r&u{H;eVcZQr8oDfkK>xlA`ecFE{L^$F7T}0XR6uP(JxzGDgATy%TxmT# zI?}So&h<#}`XV#yU#ng|^x3SjG;GtYAbsm+uD zV5T{*eS?Kt)!DM;tQdx@=4ikq8OBt}aZ;&e;CKQ%02T7~On4@+LVgvV(54XdPG z%2&)U0w@CQWgRa`iL8JO>b&^w_EJmUQ-)GE!+a_Kvdprw-lYlPIj{*JYk zHx}c$7faWCV|3sl#*78`{Hv4lTOP`NVHvC*PL8a0zVW~`**B8?n^tXg6lFGqY@9=M zL=>6LJ2ZB2BS%5%{J!GDr$^xLtD`li>KVCD9`uHX3=9#Mk*urATFVCz$fw?m=8Wn4 zaN`p*Ccuvy>aH_r>7>ZfwGt)Sgj;l5DfPGg*F>I#M}CX%j?x41Bgom(^(3DeNp_Fl{^Bsw;8BRy3U z2RmS6cRL4&f}M2p*~2zo-*&4Fns;rl6s+U!YEZV&lIXIjPd*VrO#h>uC7e?;a#hE3mrF0oI`u|f1{6?v5~iOGX%aq$ETRKdJbErxPl zLDb^R9{IRWC9WL+$;-G|BQkADWCjh?#`KWjRV|$r*kbL&lJX<1TN-d_8J=jp_ZWW5 zccSqRLSRwF&;qFzcNa18zZA_P5orA5?t+ZvXmC_qU**c*F85^eMW7NJKjBBMQ68o_Q>;P_Jxxiw+>S4{I%Vgi<^$oe(uuQZ%-2ro zT<`p7S1KC7b=p@=P@=zSXUOz7s40eZc;Cw`sl`Kg=Yqg|$6@DPGZ0SEV`D3z<4jPP z46}?Jb^B*%Jxs^$tF8RiiOk-Mvx}FP9rvklV= zt4wJ;l45C{gHF;HiddQnm%!fXRW2M<%XOaG8ZVOH4b`~KO^@={Nu|e>df;01Tpv9` zDRyXdq&3z|Rx0?oS9VF&Vs97bc2={4!Y9kEUwl+c;w=VYuWLDXnEk5BJ*4^Ha@-qO zfAH+pRdB_5zas}1uz-oVd+$Ea3e?4m1?}P%TMwqehj{v2**TQ(r6cEUeqAt8y!hrG zp9tl_r<-3C?JtzUVrB5*?p@wImH=<})ez4AJnF^@MdeVQd&T{G#XZ&HaY*>)4}2lm z0j~=SJhCQunmPeAjG>r6vrG;ZY|gvSSCgn*bhAXHQmBdLl#3) z;YuO1Y8ez(cw|Zzr7gi*gJ$E?K%>b?_bg42Y!ht_qZE*q3MC_n$N0I29*D>7ao2z} zzEe83vM8y})#}r0v1&`NMmcaeT8Z`M+^&6aoXWhrz9Hg*+~~@(VB`7txO?u$0aFNZ zDz`gPN!TTU<|0w_R%iBFkg$Hbd2cc^V=y zcZ((P+AuXx%nG~5r|@ZF&HO^F2n3_6ux#V3-P>262O9~pd;{tC0V-XomH-ZVzy{Vh z7A+yJx@&xxw-Xa!JFg+N zSsfZJXwn=@OwYvIZ`H^`l3pC_Obg$)1h=UDiYm!ZcQV&s2uz9DSLm!>Y2JsAO9l_H@9ihx|%gIu? z;gQlB>rb|Eiv1pIl*ND)P{;uVO_+DQfA+0_&?Mx1WVRgM>0YyP0d@lso&F~H=?Hxa3$j5EH+3gg+V!VWIj!Wk3l+s&=c>h`wKG%E1jB$ck+ z>2=m6PNpbeLWq~#ypUw^Pgb6nnsBeui!zr|+M&yWy!;=qR*Mq!G zFGjq6P$mE-s~~BxF$6F@K3YA0MZGIW*-Fvx>BR>|SsfBr&R#o7E~noa`|^qLUCCFa zH9H%YKZo69h@8`l z0gFg?84sBa8(T3kYK7I9F9= zVA<4_IB;M2&KJSNFT@e?^(`;i2ws8dK*o;#I?!ozX+=Bc+m}83G7K0xC2$i`P*^`m zg3-Be_e}6GUmN#OZnNXb*&R1E!<`l4zMLGoY^l{~1EVR2qNXB%6JM$i8a;2rpfU#M zgS#DkJ&r6#IPYv_(;+85)?ew40X@PhDf5I_Q_USSjN0OU--Hn49b$f3 z!7M3&hzL>=uEAW4y6x1bW1`CrW_SD>s;kBgsIzHbMYVuv8;v`5!oj(VnsDsHFTn}9 zt^??B_ocalIH3qc(6q)5f|$ko=Cv6Dh@Od}idEn1tnBQpd~MTfuua1hW4*!s*V+)W zUsY>bdE#iwb=he0O#%=Q=7#ot8D4s59dEHBaCV-gUCoe&>JHT}`-hkD2vs^jmmH4P zBA}e{39c9tMPaq?cogDqK>p=?C;n@RB%XYkyT|&RAwwddAf=pdr?)A=PB>xMr3pV+S8j3lm-0 zRH~jS%3b9rry`Z7oZhZfb64rqEj&&o-V{f@m(Z`KYsT*C`qPyM4XsG}l=LDHkacLK zZG(nMs|5Wz@9rK*HupSiuRX+9xzIU%yK>rFJ%7(~ggyr)vtnEL*umn*CvcpXyDmSy zUs)$jA9RS$O{kGeLw$2oUwVUvBik=cWAT^v8Bg(JR=KhD@Y&O~j)aTlQ`4_lpTXOA zvNy!#c;WQj;QSGUNWvo{7>e+R=yqvUFWn?R<=bST#T%RU-5$8o;s=zx@YimY)lg!)Vt9$w~;^Nk=vbucxAOD1w>{j`w zuC(n@No3CN7`pWS_^7!1Ie$wgasZI-P2X9%J&oIh%a!j602mx)l`y*GW* zpZ@$lsDHiP#=Y_lVj=;jB!q4$p*AdnOg@h;E3L7V{#rt1>&^N3>GG{x@7}$G#PnV- z_0L|5p?dDEgA!B4!@hA|$3)@MS@`5N(|`a(7w&mO7bncjpuFr~l;588-<9v)?4R4) zKG75p@dbU2keRhWAPVec(L!6(w&%T)y{Yw9s+Q0Ov^AK=D|>5Su6%8h-g}x|KAIi6 zFD+oEMZwHZS}j#(TP!bLZv7JH7FLAV?^m)8b?6B3a`16P=zfEKzxt2-%`( zwDET25$4*OS^`XWw|CYz*7w$*uVH&&G-mzKI*Y`*hvfyPH}>Ihy80kWVR>#bqF|lk zHctb0<5qHzdIO6$6cpPi%z~+ zD8|QpD4}?(yW&+vyELR$MbhSt)Y;{JG?OXae2p4%=z!KjRq}eXhtCT2V$s$jV3bME zXE?^WAg&{XDU5J)2et|qJ+?$9L)-}+|JPUspoX|?SzYsaHX@g33sT6|w9z@Eg{?U? zfr*=yz$Hl}LXIgf`TGK2iXbN__Kl{^f5xF>jz&$4VrXIU9IS=A#H7n@mL<759wR|K zi0$1*t4I+(KznO+JaA~V9xtcwi>XG-3#+{PshNj!wfP6(+|CAzx>B;%6XZeZM%&g<7w79eR=&m7W0r^Z*eCO~DjsQ&v3=|G zt0>BbAkHyh^S!gXzO`9m^#7mfYM8sXf-10bz+hV#tydSsZ(-uu@{A<7!6W+ugh3X` zy_Xm#Blt>&kj<5>9@w2zkUA@#-ysP3StyrZnicRl9ROLMFfhv|H7we(Tjz&C|ANab z2Kn7lGQS3@=6B!7d*_!&C<(DAjOq-JJxYB$NRIZ5HV%l4H#QACL(~&nYz|6PqW;Yo z$#U1yLs>gUFY0+iQCFt6%d7vjvo#@Fyl5eMU3y@B*JkGWf-ku1zxRi0cO$KwYFkd% z?wN(Z!fr~81P=z0p_(fwm3M_3Lv_3U)OI2Vgm*9Hr6tKF*&|c;`NFKe>b7+7*pVncXBXPt*LRTSYtx@kH`#}v5XT@zvFf*x|jo|o-`^*V`?mp@~&eyH&FZ*dz@G@G*+u$60*QxFI%=O zH-g?^jMA8v%fDtAGOoZkQk+gYNVp}2yLn+~sAyYkR!i(x^cW4c-0l(1eEL_WUogL8 zHZ80pBeTe6iAfUbZ$^cPUN=IxG)J2ro9dsa$*|3E!wN$nP+dmJ^ccNX)pxb&pfd_* zhRq(Y^|A9lm352lKSs${6{urft|=>_w8@*52bdQDu5!9Od`#9mp%wG(!B(x}YwKu8 zZ$;tLwv{XN2~;kxm6&C4WUx9e-Wonh7VC#dzTd>rpwJBdd(CedBBPVBa{d&{oCLoFf%= zq2f??hCb&0R5O&0(5+X(du0$OYi(}696$Pbf(SE{a5@}P;6_I~&Zl8eSgxV&ShnGB zfgK$6trLOa2{GZ$OcKC2b40(1{Y*KNfQ}IA2jU3(XRW{ao4;8sJFV$Wmc0bIbpm3> z0m=IomqTDuN7=QVovod;b{?&*>=9FMx7edcD5j4%rCrDzILxt-bx9)N76hg4wF1er z{+x9^xttjtj4RS^%UZSAb&DY=Q`GS^wH;PhVq^I?+rIPHgF20+PjZ%(SuHw%wf8(= z4h-cvnp{(xV{G>|4hTmD9PHX-g5^EMH{wn2;M*>Kj8E2Af4R2F2UxVzV)g0z?lvzN zn-{B(9$zr{wZ_*eR4k8vZAKEz}D=wiQk z%71QLyZt|8SX_14#-0T>ZEID3c{%51)MCqj+Kil! z`uo?#Hh;^%=Iza?{o%`#?fCF>d;U4!d*618ZT)GV+Fj3u#|Cmp+-(DWg!_^=z@MH2UH$n*v3GD({-S8hTpy>a z<72!9tiY}EnZZ+>=T{p~ha`Y|t4|x^KYP!zzZSu)Fd!nPNsEveN8R}l2Fm$isi(H> z&r~vK59_sZog@rM#~MaUO3_FN8!}0SmX{^!3xS@kWly3tFGj;Ev6qqtu!;`f}OQa^SQE4iP$gBWidiN5vkit zw+l^U8yAOw81|#~<)lBLZrj)B2xk)Yfu~>aNQPh7A3LGYboq&}}zZQ{{^}Xi-{*ZvETYyHvG@VPoSN(4#`ViwDD1xf;Pw zW0mk-iQoQrIXEI){D<-dG97Ju*fT@<<=ZA(I4-C!r(a|UAmHg8l`m{{ng0HpZ>Gy{ zsOrq9oo{mdN=y(pHKQId7Wq}XTfUQOZ=byH#~LNAtgvNX=tZ?@j{^~hrICW z1R$VoMT;<<$Qgy^H8W7J(e+tldO3r54E_hSW?V9P!43T!_?bM&&2a_fY^YJqNzA7* zj!BJyHd7OpG^X$aGjBZb9sBz!Y(xbz&RduuwY%>*vmjzGXNXW_ebcNDMcPr@a89a%CAQc@T!0 zYOC4%49QQ*J&Dlksdh4y+8&{v#ejpYLc4=4@DZYOHR5Zgwh$!pn_gaKz2u5bc*%+r zTUoDNr`kZMI_ml-52~94(pD@i-(mrb7O`L_?w6x`Vhr~aDC0FRh5TMEqx?zMuY<+H zt|YfWvYcXWSZ%J%b1Sco_O2(yCEielA&o<6>P@r}k|Png5N zDsurza9EA`_R5Zs(2W+>6y>K(9 zw;ZuC*Bl0ZwWb_&X3)*T(ztG#;UPc{X@-Dim&a&CP@2YY7Lz8Z{QvGI0VW>MVM({Q zzN&TUCf6l*uBnG^JObEtLdEGS&zvpUv@J+4Id)$#9cqP`^9FFTTGhvg4~;e0M&y9n zEJa_^ImHAxldX9gIWU~zJ#239=o}5CT_t5>>|Civ{Q$VkEQ&qUvzTsl zT{3Fs1xKP5mm$bGvCLQdkQwO>`I{`8^Q3?<|P2n#h~0 zzC?uyXsIA$&?F2OO*LG~QO&yGo|(7?NhWS8fVtV(l-in~TPoLID|W5i3-?eCREfb* zp)4qmFE|+CUZxvx87_~oNHIKGH4i!&QMiAOcT%o@6!DllsqKC1FHPAHC@MdleK_AE zEd0#5#|o2Sx2v-CkTC(EVK`6;&Q2(~#F|oYi;Y7fL9R?v;1=qO-~iU7CgT-*xQ07i zlUzyVOs+J`oQ55r)36=X;|5JZ!f3wHF--;@SdqTenYkL6&vFgq8~c|4Nfse=`8B}c zTw9wm%MW~2V>L50W32Q7$Fzve5Emz`a_g4vaqCe;7Br$@ zKQPJem9@pr($D3ys3#oZn{sc39Kn?210WkEFn? zj!cWpABm2OwjQ7iwv8a+WAW?nL_b=xCvi+vf%1=v?z0<--hgRYCLPj@XhCNh{cD#S zT6#yQ1<&7g^*5{905pw9F|*|I=gPsjl(TEu?$0lm>UnwBrTH3{dhm?I#wVuObGYe| z2jZ0Uvs4if0oPqb7Ptl%cR{9}YoLT`z)Y&S zTDyk}uzIBMS7fmeFMGUyaK`llcDeI_Sep9oRu_b(v=Dd2EO*inM7)?q(?~GLV%94! zW>MI83B2%B4s{Cc@MxX0X-AeU#V6MAx-=F@wyY7cSRMn^_BSnMLdtcXuVCf>c$ae9 zimhgmO;Jrp8})Cu4o**(4hsGf85k=nJOGS{&dtw3OQI0~0Kn-dV)4w`d&r96ZltY1 zHcnNjByS_ci&O;@!yhA>t9daC%SEIumAkBW~zDy|hDeNp_A;@TI*KP@%{R;Tpr z!@dR8IRyJ;8rd4@s}I&)dy9XD*Cm5NxoDd`!`8N8rz^zZ@&v7=RvoS~%+99gk|itG zP%)9CAIn>K>?uS_f@-hQ2upV2Ar09LCZ`K`JcEVOJS;(ifwu2wCm>*o$bhm6uHqHl z_VkJ+AtwO@i7MR{59Q$!uPm)lGmYY$E%ZQ^5YLjz+pgNNJ66S#! zUscc0(#m)ML%fDd0(#fCL2^ozUAOJs=Sn*O>106GS)pf61!eS zA1vLL{)A*5GKeGHS9kAeUFOc;W6qshvOK3}`w$wBKSnnCL@cf4FqV;<2jVbnP0)zR zdPX0FG>r->(ooH~DlA*zfFzd2DwlT2jFuGDy++8HmBF&uuwbP!O%-QteDmxq=AbaO zv$G2JI2#mBRaG18lFbjGGEe~QWUHG#!D0wN9>Gj=+yr8Vr;KSa0g}FzC+0;UTPARY zv&vAefi%-Nn!vIHfrOmC5=(;u1>)er>~)+=b2Vjl&)_l>5}aan|mEB7Q;GdO@rly<^6_0{M% z$%;q8lvI5J+!cXO8SdotvB@0l@|f5+;Bc?$zdr+gt`&cFt@sT==!<{Cr+>n()Ajvx6@d*!|-p&kQ{|`z8kJbzP&Dnehp?{o*XBHkh&8_4(ib+^ z0U^+##6huj{LD18c!XuS-Qi=$gS-)GhlI}N?YmwiAtu{&v99fkxt2XJn+m0>x)aUr zpFx>+FENIA@7WqJ%PQe}NxDG9ca2i@v)5i6bUXdi0@Xe?%?JRnL3qInlA&*wbf3h% z62&hOlDCT;aoTM~O)LlOcIi-LjNee3u#Gx{3uo*a04|2ZEgBLXH=FR?x8}SIkGikw zb!%67$tGSaM7U$!G)EMUD66Bs;#yeTeVu@7z!~b#%YBa4&FXB;dM5_O!=6M99^mlz zT{w|uWgGHECb-OHIVQ0V`en|!glCRnLbkZ~VdmmQ4BR1jD=y8!6}&}!JF9&(xylU^ zpzHn&dfQv|jVIhzC6rv-*nW!h!^8F6m5m4J6jlguRO*6uqJ z8%s@A$e3Ue)BaUqI;?D)tS?m#d&?1HB-xU`P~plOo40o6!pHe z>My{heLo>y*}hLmev$#*n1o%}B4Wr%RoFi>kXR>g9SD#*F-VcTsVJc6EpHbyk}M(g zAM{TO!c@HmC^50#&q*^lcK&?!KJyyXIbBvZv@RrssA0cSV}-cD-cswCKnJ7So4Rqd z1) z;ELbkg@o_l)D1(mTOw?UU0Bq^877EU_D5eV@;A%ZJmL%`B2yAwWQWnYlUbtjkTPKp zHB~$k+X$B1&Sq?VCFX->GuCLhI0<79KtQ?0!SN@<0`x(9%cfinZKHB z#~D{EKC!gWjPNHFCt+MD0ILN;uG+G}z_I1UcIgW(4ix|{twI9W`_NCh(4m(7w4OmP zMs2KK9mCDzv(S?q+`I-!+5Ni?{g!pm-9I~cV=gOP@NroTOsphMx2g`>apJ{FWOrS= zP)XrF|FoWwgfiXJ;lsG>e}vN^^*pcK4ol*g)+?p~9cslIuuv?j0TO16mwSkA1s~%B z#Xab#i21tY_8_GU@B6P*mwQku89xCbnNB!yZwkx{XPYzj8ic-QNb2zTITtP+mR*i3 z*z2AgToV4aa)q=Sf0{RBTb83jRULSReX2_XI~(T?N!mZ&eYIADd`_Wvf0{W{MYT!O zYYj#+bNDIlq6t9O&jh5&5Q2#mYIwkyI2yBY8$oB|xGI@L@G%#*?S~%At~|!MhftnW z2!8EX)eY6d1$}89t0g1f9%I==p7pe)a*asX;Gu@%sa&yaO?ZQ*a;Qq^RA6c^bt0km zQsJVoASWc!4$H zT)d8k+5=1gvNU@*D7II3)-X9bC3u-aGTHgmHlBzg^6m|!1z?4hx}EV|fn$$t%5c#H zbXc1WCfXOLIxVtli9ye4UW11+3j%pjrsj06q$7=OfKVg*=tnAX-rVegi8xh5y?Y@J zR41szM^X8hM+_8~b%8-P=;hg7$||Q)?wVu^^WBs|4Y{L-{ur5!ML8Z-|ChAU$0;S`E7IfMcZ^sIMUoW&1! zlD+r3Wh?3R+Y>hC-J|-q^eWy0r<+>QRgJt9rE#+G~=-5PiJMk?i6n(ZsMBq(2^Z6QZkNf^pi2Z+`u?h2=DH zOR*rfS^xPHlts_(rBvt)VB4HKue~}(qYU@aJ=c@yzeI&(W)%J%Av+7>1nvd=Em&9n zU^())+M9GFwxL?0J$XgeY7nEX~ zgkH1v&^I3KB7(pN%ef25BY1(kh|iea!2skpu^0tcaoi}+-=8IeM;%NnI+ZZRNM#1H#7TzdD}#>UFd*Z;^qq*{JjUw$eCcHzo@+}KwgbU(hq z17t8#apwwtY|E~Ir3!XHKjN51R)*njDx{CMJQwH{@llI|^iVIuecN6p5^*(S&EUrIB?XSDrPEdx?hvg*A znx1D%(t46*M!nR*QNRD~1%7o5R=s}NKZ4fVw~n2v$EGM=^3mj!D@vYlkw9FIfe}S| zzIX3Vp$T0^qHXqEyFFY&AUpMLomo(7g~azEjv1o@{F|JR{kud<0j8j53MQple z?R8VS0fod3M-yDgdZv(j%f=*f$E3;EAgHs0Hqr1#6I_yN_<%28WO0E#(Ed>J=R2=l zl$Z)Tfm~R`#8CV@qhW)BH8#$46%#^TaT%^HU^DrX-JsolNmtlgO!PAF+c5cJ?2}!o zTDUk@W{IBaY!`X*uEKNlTXn&@A;b2*6f@ecHdb)wY`0%ntY!K#D8KoEcrzgzHxK+N z|8Wss+$^Z$m9E;wrO2Xw6wok(0=-6%d915O+~iVwA|LJ4#MIdA!ZOaPtf9crEFq;h z(u$L?#mqU4qkGytX*E8|Ir?@XsTDj)vEf&wQ~$-lyn>}JcIRNREEP6JNKL$t{HVqp zCt%AiPKErg0}W6tsh^S|943%Sw-T8UPc;j5oB_W63Mt*uc@J|&3LbG1MdU(N7Yqd)O&v4tvM!68=|``C>+S>?ksGq!u_!xp%Tc=Eos&rv7cg za?LDIT|9X?`;s10LFLNNjao>kzu)k>Zsc0AYEy4!^d&u}n)EF{H))J#_lev=j@EHxC*`eG;HeM`nBhDB+g1axoUX+K95C> z8(Atd!0OGIy1nNVmMf{+srlM;1qauu@ySAf!6hyLNRiM32m>-NtPd3sOp2F^u5N9w z{dnI0AGM2Opif`JAX=OfyWlDIEhYcfoi#7D+u=Z(r1 zTd-nwSdMYe9OiOd8n4A`{b8jxe$8B>U-nOo#2c1yYK}0_Ho4(@m_MHM8=p1L&t+Wu zrANTfbz9|qOx0QU=@g<)VUo#xL$?AeThNOEyoF^@h0#ZV~Wv z2pKToLZngUHNs|1YNS(E)W$5zVP6ms>Q;ljK6`66&_^B5#1!%}QIyFtDRaXp|Ghgm zVpb_HEiroT_qV;Wv(d_x%zsbmiRD!3I9C8^(NXtu^MroiTkMpnn%b)rH(BBdl>*GI zY(6a4e)Vjfn8j8@t_;(c%whL z)f5y%T~NPg2g6_LF+toB&^?&d#ergLYp}Jk>NPiwWB^tW>i}FBD z*NsXyOp|e#tEtyLoc6<;7=d+O8)G1<-L)wG-L?PrpZ`Dqe69FZ@$G;3hd=(X|NYlR zmGAaP|4Z?I6*oW9m;b%^zl-Z14gTWqi%&oL`;Y$3zx=n?{^#P~Uh};F=YQ~rKmI+b zfB54+0T<_rCvo-~a2L?o;v9sZ;4x&8h0$5o6Q@ddJ((EJkzqgsU(uayUe7 z`63PA{`^Wh3O3TOLHrC6Hnf*S(L#de(^Ay#|0H-Lo&P^L}U%b&wZH|#tg==Z| zB8oO0#%ExnMbpV^H2nd$F~H#Q<{jE>h28_PWpQC6EC(vRD` zt{mBp+EFf@M}MUcsH7nOlXXAT3g_+?dGW?_PeENd($b4)ArC;l@@WU|wy7uMD27sm;vAA+^Zv0c2;+{RNvx%d-Z66VkGjJMM)L2c}N zCl}RU>;BXlod3|f)cb@!9OidFN_F&kgj*5mcVE2G7O|3om@nRt)^UVq=<2?TSv%;H z;kA4YZ=83i)}`nA-OY3LBH)cxu`0W#s{ROA!)z{zOL0|Amvy(He&%x2;$pFT!osN+ zLKlm@?i&O+0?#{HM&Ug;W~ffJOJI!st`jy^kJIP83xo6)i=C<7vCYlY7*IML`J97z zv+zt-i(Jb*i{aAA*bI9s{yAzVV4{H*OMCS$_?%Za`A6MM6^m_66Jd99S=JrL*<3N; z&`-LU_kezYXX|;0iM|4Ps2EIpFkH6lURe*renc157ipy(<`CXedi~6H;XX5a#IrPm zj_Md)4|jdDzFEP0%QzWcKm3rdmhYT8r+&tr#^Y)_)LX@>=$qN?2yZ&^HasFzuCDK4n@FqD#9l6KD@ISChUu7i(6`6 zEB3qVf_GAuY3=Ibjc3s=_S+Z&+AycsrmTqf5aQI6o{W}zq#k9Da7Fbqvl-cq2aSi| z@8EdE@WU*3BjuEQ=$*}#&6Q;2F;a|$NYyg(+To=C8pZWIQmSKopSqi=f^he{<85Ek zos8)yA8AE}j8R+>ecOky@As_4JD>3g6}0JdQk3^$4Vyz!GPvnY<3mtJx+&g%_i=Y?(A^B?PlEI& z+PO>QCv1DgtkQ-mW*reGv4c5BjQYXQ=yypt(7^b^odWk(##hEuyoeg2UQ0b{Y^>C2 zR7-x_8;{ty>KX4Fjf^Hn3nLq~MW4OgGXwpul&a9(75Ka1>48V^gznx(E3RQ=p%v(_ zr=Z3Svgwd~``toEbEG@m7;FqNes@ZVhT0(<{@3%2HJq02cT1c{!X|<@p&n%dLQck0 zEOxpv!|>7^mEShx$`{qaLOZo zD{sF11qv1_T;$QB#fq0GS*rA7kK=3OPnRkCOgVgi@wtkXDnDPP>I*Mcd#U=%HC}nO z=4-WHf1~!BZ`FCb?mP9c6!F1_^*?IRuu;#Q%;FcqWXc)RE<6{H&UijBiXMd(o~ zN>3rolaQ)P*f=yo`SDnI9;aq_e}KnD?Tmu339eVrucjC+=slPWq=zAfT3|H%M$dw8 zVWT}I86{{U)#ElaS~sEg)CwVL(d*QOh5}m?`jm?D2INxQTER`?zk*cr;pqbk4PdKb z%!2!Fs>nlVFHKcfR2OeLKFn2nqkgyo|@AXJeLu^ z5S}WwZ(-2Y&$tY_EY@5=ySTaSeik9z)C2tKLG|e)TBZfp2UJj>0p3q--!7mwA6){* zg24N_9ik;l>=7<$SX_dt!&M_cB@ntjy#ng1&}-ZUI0RP@n@5AW3Vjiz#bQu{cwJcd zC*@p_T5vHg&V4yQm4a(|B`FW)4?u|q_M-e8YHLf_aw`d6jIOf*x}_YefPYT8yvM!3 z`>M!&3p@OC)Y%XU3aH=I2cWAAYUFGDNswE$f%gOI%0F;RQ1J=9$8$jWCX}azyhyt3 zX_a0IYI>m-fCjZk_W%ur!S`{ttMJQDZ!?n{rL&G(*_iWEMRgXjOVa{AON+QP!uV+! z@+-8g;%mS#g{Sf~R;XIYQ@BLYI_`23?H};hdj}siLYF`hgOvB+@Pf z&iko3KZ)3WP$&Lxsq0))!7Wtuf?qxL zu6hEv{o2w65nFJU2M(Oq1Ztb9mej@2c1muV#l4K)MjxY?Dy)SnD~Nw7*Fdadz|vHW zL_Z-oimC0uQc-P0SxHFYNinq1VyZbF)Kp*=n-kV4*EX1FT zZ=iZyZ`X&_5!B~Y^}8Alx39qgw|026RUKCOm4v*k3gfwgl9+`!vjDfM-6{YZBmOMh zhe7RD*~4%RoA@` zEwV>B>B zQw?rHtAsqNs@S%p;HL0JQjF4!)+|H z%_+vinCVnTE9+rXTNq<;6NE2}KA@4#hOsmsFqJg^(7gZ)(G$i~R2P^&u-z@nPdQ=x z$Y@|RM65!fM);8zVJ(zTVT`1bqSyqM08MR-(p1OD2Xkqo9^zC5y)PnWvQZr)fXD}p zK~o8s3sPl6+K#62G=V-h3L(^2hBFFQ0lgw!w4#;z38S+i{X|`)RS0G4^b?Y%L)RCy z103CDm$r-$g=wUnek+(h1V^Rp+fy6kDC$&2)HFXZ7qanx10M;W4>VQ5y9&bB!YFlJ zi!Co`nnaU9(^S|be@>q_2PGmng(m5F{J<8XNqCXXF44kv-OYh=m62f+Xp*ujOgYd; z=i($z<_Gve&dqsXmr|Az{T2Q#0egTqPEYYPa?%E_l7l=Ltq!XvA*%>gPje5tLQfml z=sMj%ZJa~5F&b++qR@4)!7gr%Ug9uX?{{i7y~xwWT^ZKh$+ zzquX0IYzTU;D&9!jdxKU2(&^7kxT@OP~}`w@4E$Un)dO2{)vC)1N;mB$_M!nALb+c z8z1H0`4}JP6Bv07;B(uULsU63fZukT1zb0IF3&^j!YWH(we9LsOKr}EQVj&Qf`4Mm zN4o$E;wfy~wf%O&h44$RkHKB|5yIe@&(noFE?2?Xvyyty#i@(JkLy^KmbxWoQh|W* zCJ<`XSC}>K^n7rIg=J;Se}4F^-}w1p>!|VH_Ot{?m2|)h=-nv-A*wfYaAX zeyih=zE=E0m!$6GIuJ-!lIz?m4$ojxIc9lF zdX4OqM3Qt$^b?HLFa;@+x|2S2hu2T*GP*26q)%P&Ns4myz}kKi{GGOx2NHne?&QZY zi*G$G_~n{~5aK&ee~U54adUFG0ex>Eu+qlR26^9x+O`9n71t0qogD5!m|ek?0)afJ zFCqRq_?-M64dRzM!YMnnaKTCaNsO@~iHN-=Mk|4G34WR1i5c?^VD=bZBQ3Y$?p$dp zI-^xiLpbZW7SIKOu`otU33~`;$+hrTa_y98b1Dw(G8Ymqw4vu9%e2R6l%CgZ(04Fg zojz4)^N^Q(!5&30N_w>rM_NieB~T(|qwLr(k&|*!5+&0E^dMs8p@-;UN})$=dSpJ6 zA10YIhk6~EX{JwEa{UxNO=YMoJwxU2QIHB4qh$W$NS~pW5(vD6IWfMkf|l|s)dUWq z=nX(AwK|ZR>(V)kNe84!++t9QzJq>rsTFTl>~n0a!M^!Lmf9Kw~kq6C4oTN2;3C5SMAtNOeeP? z^Vg_9cN>9&iKWYJDCb`x=i)2%&L3>oj6ELbQfp^I+*abc$<;8*NCq(H^BQt|1->&5rq>aU;ZoP^%Cuj`_cvACj&! z2B)td_s5SAHw1@s-JKu*oE!fdKSc8V_tXz37is)(2iuFokIXGOef>z|h186YEh9gq zr@a?1GRmzP`4Qr-14I3^*h1|^+G41^SazNKSNV}X%`|=l0#5&N_xceCg!+$A{vmnU z)P(Gr`Ef69WR~Oq6@G{`9SHm@{BSs$#*x4BBh4?P$>B#R_aScFtA5;z8-JbG{A>IW z8vh;l%svJFUHB?jJIT%{&q|ha40LJZO)x z>E)pG^3L7+4+ryqFF!)L`N#Y)(v7!1n}4BrA(-{9uHu`qeu#@B4~i-6N~<5zSN87@_-kGX!YR+%2dz07GcZYZZ;1@o7_RZ8qGw)?$u`j6V%|HPci`1r5qG&5Jz z=QOSVbVk_BVVyG7_mnr%dY1c>qSNrFm8rN%um6v8`geM{v{cfY2=hUaaAb{5E@wU{ zrp&GS-t)mO>Dr3K%-H@jwv|%BbR<-${b!sHijQ2*%E`UvgSF{RddvP_{a)?g!6NOS zF(Z~7%6u@C!>_Q89SRYG_s(JZHsXX1^>CSIyjbZ>hxh;GQ2uH7e`WY~hEcpHRTc=9jnvePz3koTa9l&wIA#6UkZG&mj^F*$lP0-+_Ftms?i6LF z=l*5e^z@|fxBr^wj4mM#{rk!*w4RXGZ~y)B`u9;2%555d{%h2v@AX1BGnUr<*PXl9 z<@@U={&O>;(E7cz4i?Je-C?NK+}$^GE5BE$ySb;8lV}6GsSKOki2k6yG=VqKG)2su46d9x?XbPGt}Dm_FsFjHbpD z*!|FuX3}i9ZKR#h>M*z|G<^#}EA}LROrP@?+yZ0aK(3>Iq&?J#Kcmls|LRpF3KYUL z@J;n4e@Pz9IG=<}7N%R%bJzp+HS~4m-=}`YXu3+@Qg>QQdvCvD3{+QOTBba-262w7 z8hlgNRo#v`q1w1k)F?+`-V2QW0acq%;~ zm`YFZlN@D;>rm(g7XsBj4(Bz{uN_1+Zc91WxSc}#Y?>z0Pqc^MMvlkP&-ho>18t&i zz%`jXs;pYh;c5zMh2WY>ox!IkRgK#>gS5<~v6P>?a8Y$iy{}~TYWS^()t`I;b?g9L zxpE$tNWve66qNa96b&`dNdxFCEZs^fABa@6}Lfb5G-;h`j;yY(?*K5qnm*Bks~$ zOK(ks=Gd>u{{WV{nMKcHDX}g#Ow?C9XsZ@7zCvzW(W^#lt^r-s-O*z^ zJnBN#^mnQ&@?BSNRPXEBsE3VF3!0)I=mrjr(jS9&m7&M_DLs$AtO53SEY_0mnyLr% zi+5o^=p4i@1pAlt4S$6`xfNo!hGxFzujyku-x7O1>QZ-Fjk+hXN9i@Zmd6?!xTgA^ zcOge#Vy*luw8K_Nxi$T)cO&**TPLrkI?YA+xb99DIWP8vU~4Y5Rb(8=ny)E#i9 zE2U}U34d#XyB=`i8s$@dHIVZ{V_Nb#7IjD3aZz1JWkX#ujT}Z1?6+=6CDkZhN|jcR zsm9O&YYHu;a-c(aSRSokxFA|-RaCToO9>a|(0kC*`p7QLk5QvLfD7}$1sAx`QMIN) zD6y}pGc>~5LT76h4~0&5ckG}UsYa<3s>CmG7~1Vb9<3&-Nj8?AG#@?DJQ~k8XrWr9 zrlDM?(EECWs*85}zRsv~SQ}W18Mi_8L}=`dvHS5d`~vdygSyPC^%ix7cdG;Hkor-b zfX??k?B|&Z4xCqKpr!qXx{jhqp-9x4DD9_k{f-f<6ELRu^&3j`n=JUuqc`u<8%0}7dX+F zM1I3ECL`R#MrmUU>SuFSfu}J-=zy2Y8Ran|R6rUWc+PmzsAL?b(%92z1YR;~!L=$^ zMO%59Uo&1e-ZJXiWmO0D{e9yD_l_5zvJ;f8oc;h;aHYON1 zXpWjomGoYW*HyS0--0YKiQhA3fWoSr-FS&Cbba>O z^)y1&=lWbsZ`P)ML!X0fK7Gw?xEV|bb#CK9<5T0T{y-HsUgTNa)<~gd#$0*=wX6rf z$u9#>Z?4Bg=lDEskyEeXU7y#B5!Xk$GEcYN>)US#ev0r#sKp%8#FbF%__P3f? zBnP&Es@_9S_W|IME5&}#U>xQ|FWPb5#Cw&-?lgoDzDR(#g4hUkt1=f4#`REh)k1xu zK2TA_TwN>p@d+=`=La(t?$)e)yn3C7?ywt||JY4$NwPGx2 zC2C;14pHx@2JD#asBmv?`z(h$(F(*GYkPPcZ~GmMeeRAmn;lAeztH8F8}KL_i?~h( z{!R!VN~NMB;lgJwokzWY0X2xIKSBs^2wLLfDH^p#t|`DWg{DI4Oo5aq=7~1-6nsmV z>+*smrS#|EN?X)2p}}K^hY$}xp*KL;kiuL$Y+=LUxWjFyzNV1FHHQWX89*8mVobWU zB>LFkSXh~#1)dkd`SEa_5aft6rdERwcG=iGr~z{*Wif?nn3((7u|oV4&et=R>!08% zp@j1<+f+k-vqMh7+o^NHGbzW3g2pzzin=7GNdh2;g{~<*j zHll8za|+BtQ+edxNztjfQuequB`SL z5V8>@Yo`WEc}j_n0dLPi?oX=)Qg_m)F8n3>UT@T!kc0H83)ZxE2`N`j<2TFcB0)j#YE`qB)w2>rIiYuX}Prn*{`$| z=h~?|{g>mqS}g@n8gNlNz29ICv(rx@pAim|1Auw19cv!m z392%;)QM{Ntuk;I+8pg%hYN7BQ+D!J9y80k-;~Zr;-t`L`dL6f+%x)Jwo|?$=@`!# zA>H54wew%EgZ&HrCC+w{meNXB2bMHlVDWeGy#{wFwb~d5(*Fw_%W<5Q<2iv7IU8qZ zDcyGwPT~X(fn(5A77@`A+naB1E)dIuT{2*IT{Qmgi&^e1EP>Rl&BeUPAAV134sS5?^ zuM~3l;m|2QA$er15^juBnfX!K9$kt488^~;oiu)gM&P^gBj!KG56M*;KPCtH;kEk+ z@k@VY=0}JdX<_cpkAKdMzsrvYb^7|z06oUPr+zp&N#n;Fa@vb&^CNS6OwW%rUP#Rd z*)sA&db3}+p^_bCjnt9gjKhpRsCaE7p8QTlSo;&SjFKRf^zse86 z5xUa&fl^>swK9cbz^iP`;=YJwULb>_J{3w%7{wNoUk^z>_U`ubwSU<$a zkq6U7i^=Xx(> zNCz{QZD?oN*XdfNBXy@mN-y;}t{El0w2*(N7N(DNKW2yPBK3uGY6YVev+I9x`z=n+ zY~x-zP2b-BH{|p-@)gSI89R@E{1dE>8_(~>;*ltj~dmiv>U(^5z) zQ*o1CKa|rcHYHQ<&=Zt*a4b$h1$QIXeD~1=`n;>PVO}yl)Zs(p#5jm3QohFW_lO9Pz7@tdp;P- z;rlpWBlC6d9A?f%S`Ig39CYZGw_yCgEr*Yw&;GwVhb8{6&!N=IyO-f^4#SY9 zj7-CV^O=n6GD4AD(hl!uWO72Mz5jlHeeacn^!;^O3K>n0!5SK8(|j`a*Wzyd%ehIz zes@z^kN;PCBu3`kWae&79Ye3_IOL|5&M3Y9XL6I7o{YIl%S}diu?amA+tIQRmw$8# zH%0{OnuL?s?bulr6T6g6E|r-ZA$c#o6y$_Xd;fRWHAz`=6Qk2;2#v=X^YgzUH$Mb( zlRhv1zTAXn%gzirV;Y%lp}KbWc9Xf~{2kspEk|l<`uS<*^fTH+)ZDFKk&tKh)(gLw!KgC6NnPUW6Ff_p$;pf``^ zF+7&Xq5ZVy4$yD)D6i@VEer!V9>s~1g6~QDoovtW+HyVBh5K=LoD4q@x=r}sTJ_<_ zp}QtmJv78DI8#SX*TFx59F3OgP$OsP)KiYx%^vmwn-5Po%YR?@zT}@TFV4t`OZQ)w zwA6YkXS#EMasxry9wI-^;%Nchtxs_>X$(bCDh-2P(g+$!qoBE^kzQ6j1E_zxWb3J? z)C1g$A7l;9)^;}4<88{GgucZ`{3XnVIVappYmUAbVR`W9cj@R=V-T=M6Zg3aANXWX}2QVMYS$Gyq6L}I(hOQ$) z&niFO4vmlF-}ox9J;oohXo2H|Vc;MtWWVw6D71x2KtH$&H{^0SvAQh$@V_wUfKE;^ zm`mWPj?)I;1bmJP!%xa$JXeA#T$#$JBH$B=r>aE6<*ceLf=SX@V!M50zX>{!k8)}J zYh4_A^7#K6nwljM2AYAem9oRkL9F={293JViU#47*kE)UqiD1U?i$EJc{LsHdeFv` zf4KYdHFhaCG&PamJ8_71LWk=tPQ}~B=b$ZI7(RJ8C8!-0!hCO7!{)fd?Ha(`l3TEF zP0G9>-q47FCQ&`*gs2+i>u2zJ)Ans@zmY$FAEuK09yboUJi(2)jFNegaB6BWceP*^ zdqucc6ZGk>#lbM48rTGWA+r-~62M$q2p#^=CI6wzm8i0)7}bWq=3J^Zf5qAG)f>^- zdJvCXgYfjRxjEL>2zd_fD{#WI_(?kyn(9I0^c4O~iT*WKl z+Yox%HKE<@<;vk8QK0B-fMNBxrvc^kic>DNI(I-%@p; z#Z_0mq2!~71t7n_h%={Npx4yf(A^`f|I|~jsygtiYv<{G*pI@toL1m1(h6ZmeNnjP zgQ+2&DsmDcJs}>@$aQ$>dKl(f{D$q47dpzK6IX#>=IUG?+Pj}ZdpQ)6=&7JNJN9SDRR?xS zDRjMQ+rFTscK=pheFzU(w~}yjRkZ0U36tb@8cnBJG!q(9GiWy47Dy0V?}%{rZAYB( zTMxRu9iS;)PssuIGoVp8AMxh!Y~*}ACjr|~ocu}H1=1GU%NS>%)2=|zZC*$F1etw# zY(B}!n5XC>c9*Q7b95RS+h?#h<}6NC-wUns-L!$W(iWU-x*c)$AIfHT#LlbF5#S9 z!hRxXK=NViA2|pt-Er2u_#eSp`PamNLvxi@E{z(8?Ll&dpkoWY$>Y*4mlxq&xDDp8 zFc+jCMl_epg|k4z5P+d|Z-lww>Gk+rVQvqz%W#FUcEhMNer}gn@ROU}K6ZOCo`47A<=mwD;s3?gx1ar(VOg9vc<1AMm|>;e1u!QqfO%CxE|l&r%!MJ}IrpRdC}usy?7KK- zKgBWUDuKPN>F-k5dntEm+>haYJl*{SJNJ{=UG)_1r|r88WXH1U?q?t;h2(6k0tO6x zpXWnJ8y`_V-A1?7?R0zHghpUhqJ!?Je^YYycqjb{b;e1-UGT-a9n@8SLEZE!RZw-; z?YW2U$>(SY|4BV{FWp=B(GRM2)Kp(puj}@7LA|Yi)ejhXsg4Srpx0NA)&cdn(NFis zN%vK?v&vCH4Zum#B~(`)s7vC@0q6A~{f!>1hiLgOU@sb`hwH9J4`T%S{oeRiMG0O( z?{hx%IuD}^enc5uQ`4y*&wxC23;o(`)Yn%a=@-D6{C?hyS*gs@i(%>IS}1`3b)I@To42x&Bw&if^gc)P7w{ zy{>v14fJW9&&Y2q#5tu+u!d6#J!EN$;Gfkqx)92C4ZiWzl)qK0(v2YLjZv_qe~JV> zW$q$Zk)q|BeD?VV?=`Mgw^{S|no*IGL3@p6bsINtShqzJk>S#=2ZP2OLD)A4y98m8 z5|!(ITDN?YdgYol{`9?OEr2q^^-|DQAr!t?wa@Pzn&^d>TNJHRr$~{~@6>Hxzh0dt z&093Xce?R@uWqAC^E0wBLpkkHF zzFL-w6c+Gux$2dw)u7UqU#`%oehc9X++QvivXp+cRLEGQaQXVpo7Qbn??VJCRRv$x z{iN;(?@`ezuau=yRbPL(T*V4iD^T$l%ayHKg-X0wu148cVXao7dKFA7t5vK7>Y zSRJ320c+rS-L}7h_j|PGR*hR9z*HYk@7vqdc$~r87;~(TVb80Y+#i^tpKB^eqQZBpm?8 z@Y^>HADu?H1FEHWO&$rgnH%4}95ct6Op8DVVNmWMN6#@fj5APm3ZD&yKI+JbUg5` z@d9w>GztVh3iQYK`u@C~1!=XwO3u@PW46u*O2ULHAjNwgrz9+F-Nl|245X$$XcYBk z&o;&u;Wkdm1yW^otPR%i+vr@wT{K+3kEI49S7#Rv9l%0bHNu7Af#+D{_ty9=~{f_Ns;wXJejKY`S zp0Vx4?6QgKjXw&oa@yL{!Jtn39MNWWwKHgky{+)Piu+yTqq-@_H4gf38N`F7)BHtS zQ5~otAgvsEV?bBgDo}Fm&9Qr##<019v6dtKeIOO9tyq(%&yyyE@gZfl4Wk*_>=A~q zyLs?Ul`V#Mei#jPd6tCH_pam_VSL;*029}*?VQ;7@Uzbkh;H3G-Pu5D0C;r=h?x zlwUp1*s%J5?G_;ma}C4SGqsczI=H14;D=>Bqgk#)3VB5Km$2_!ML)84lA_;~_ln{( zX_YaM`Z0fq)hcS0Ynmi57D+5q(VZe_v-0gQaaM`B*2K99NP(6Z34^0h_k8Oj>5O46 zilhy$_z98pi_3R5g08vD!x6O49lI@pPP-GPM$pOd_%0DNGum7m%}b)w)qk|v0@M*0 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 )@(Z>!OB?_V6|cUY$DwN69NN{#2i?>aj82IcnTk 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 +%include +%include +%include +%include +%include +%include +%include +%include +%include +%include +%include + + +#endif //__Lib_allkw_swg__ diff --git a/macx64/bin/swig/share/swig/4.0.0/attribute.i b/macx64/bin/swig/share/swig/4.0.0/attribute.i new file mode 100644 index 00000000..d580dbfe --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/attribute.i @@ -0,0 +1,21 @@ +/* ----------------------------------------------------------------------------- + * attribute.i + * + * SWIG library file for implementing attributes. + * ----------------------------------------------------------------------------- */ + +/* we use a simple exception warning here */ +%{ +#include +%} +#define %attribute_exception(code,msg) printf("%s\n",msg) + +#ifndef %arg +#define %arg(x...) x +#endif + +#ifndef %mangle +#define %mangle(Type...) #@Type +#endif + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/carrays.i b/macx64/bin/swig/share/swig/4.0.0/carrays.i new file mode 100644 index 00000000..3a9c3cfe --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/carrays.i @@ -0,0 +1,116 @@ +/* ----------------------------------------------------------------------------- + * carrays.i + * + * SWIG library file containing macros that can be used to manipulate simple + * pointers as arrays. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %array_functions(TYPE,NAME) + * + * Generates functions for creating and accessing elements of a C array + * (as pointers). Creates the following functions: + * + * TYPE *new_NAME(int nelements) + * void delete_NAME(TYPE *); + * TYPE NAME_getitem(TYPE *, int index); + * void NAME_setitem(TYPE *, int index, TYPE value); + * + * ----------------------------------------------------------------------------- */ + +%define %array_functions(TYPE,NAME) +%{ +static TYPE *new_##NAME(int nelements) { %} +#ifdef __cplusplus +%{ return new TYPE[nelements](); %} +#else +%{ return (TYPE *) calloc(nelements,sizeof(TYPE)); %} +#endif +%{} + +static void delete_##NAME(TYPE *ary) { %} +#ifdef __cplusplus +%{ delete [] ary; %} +#else +%{ free(ary); %} +#endif +%{} + +static TYPE NAME##_getitem(TYPE *ary, int index) { + return ary[index]; +} +static void NAME##_setitem(TYPE *ary, int index, TYPE value) { + ary[index] = value; +} +%} + +TYPE *new_##NAME(int nelements); +void delete_##NAME(TYPE *ary); +TYPE NAME##_getitem(TYPE *ary, int index); +void NAME##_setitem(TYPE *ary, int index, TYPE value); + +%enddef + + +/* ----------------------------------------------------------------------------- + * %array_class(TYPE,NAME) + * + * Generates a class wrapper around a C array. The class has the following + * interface: + * + * struct NAME { + * NAME(int nelements); + * ~NAME(); + * TYPE getitem(int index); + * void setitem(int index, TYPE value); + * TYPE * cast(); + * static NAME *frompointer(TYPE *t); + * } + * + * ----------------------------------------------------------------------------- */ + +%define %array_class(TYPE,NAME) +%{ +typedef TYPE NAME; +%} +typedef struct { + /* Put language specific enhancements here */ +} NAME; + +%extend NAME { + +#ifdef __cplusplus +NAME(int nelements) { + return new TYPE[nelements](); +} +~NAME() { + delete [] self; +} +#else +NAME(int nelements) { + return (TYPE *) calloc(nelements,sizeof(TYPE)); +} +~NAME() { + free(self); +} +#endif + +TYPE getitem(int index) { + return self[index]; +} +void setitem(int index, TYPE value) { + self[index] = value; +} +TYPE * cast() { + return self; +} +static NAME *frompointer(TYPE *t) { + return (NAME *) t; +} + +}; + +%types(NAME = TYPE); + +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/cdata.i b/macx64/bin/swig/share/swig/4.0.0/cdata.i new file mode 100644 index 00000000..f18ed4af --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/cdata.i @@ -0,0 +1,104 @@ +/* ----------------------------------------------------------------------------- + * cdata.i + * + * SWIG library file containing macros for manipulating raw C data as strings. + * ----------------------------------------------------------------------------- */ + +%{ +typedef struct SWIGCDATA { + char *data; + int len; +} SWIGCDATA; +%} + +/* ----------------------------------------------------------------------------- + * Typemaps for returning binary data + * ----------------------------------------------------------------------------- */ + +#if SWIGGUILE +%typemap(out) SWIGCDATA { + $result = scm_from_locale_stringn($1.data,$1.len); +} +%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH); + +#elif SWIGPHP7 + +%typemap(out) SWIGCDATA { + ZVAL_STRINGL($result, $1.data, $1.len); +} +%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH); + +#elif SWIGJAVA + +%apply (char *STRING, int LENGTH) { (const void *indata, int inlen) } +%typemap(jni) SWIGCDATA "jbyteArray" +%typemap(jtype) SWIGCDATA "byte[]" +%typemap(jstype) SWIGCDATA "byte[]" +%fragment("SWIG_JavaArrayOutCDATA", "header") { +static jbyteArray SWIG_JavaArrayOutCDATA(JNIEnv *jenv, char *result, jsize sz) { + jbyte *arr; + int i; + jbyteArray jresult = JCALL1(NewByteArray, jenv, sz); + if (!jresult) + return NULL; + arr = JCALL2(GetByteArrayElements, jenv, jresult, 0); + if (!arr) + return NULL; + for (i=0; i +%} + +/* %malloc(TYPE [, NAME = TYPE]) + %calloc(TYPE [, NAME = TYPE]) + %realloc(TYPE [, NAME = TYPE]) + %free(TYPE [, NAME = TYPE]) + %allocators(TYPE [,NAME = TYPE]) + + Creates functions for allocating/reallocating memory. + + TYPE *malloc_NAME(int nbytes = sizeof(TYPE); + TYPE *calloc_NAME(int nobj=1, int size=sizeof(TYPE)); + TYPE *realloc_NAME(TYPE *ptr, int nbytes); + void free_NAME(TYPE *ptr); + +*/ + +%define %malloc(TYPE,NAME...) +#if #NAME != "" +%rename(malloc_##NAME) ::malloc(int nbytes); +#else +%rename(malloc_##TYPE) ::malloc(int nbytes); +#endif + +#if #TYPE != "void" +%typemap(default) int nbytes "$1 = (int) sizeof(TYPE);" +#endif +TYPE *malloc(int nbytes); +%typemap(default) int nbytes; +%enddef + +%define %calloc(TYPE,NAME...) +#if #NAME != "" +%rename(calloc_##NAME) ::calloc(int nobj, int sz); +#else +%rename(calloc_##TYPE) ::calloc(int nobj, int sz); +#endif +#if #TYPE != "void" +%typemap(default) int sz "$1 = (int) sizeof(TYPE);" +#else +%typemap(default) int sz "$1 = 1;" +#endif +%typemap(default) int nobj "$1 = 1;" +TYPE *calloc(int nobj, int sz); +%typemap(default) int sz; +%typemap(default) int nobj; +%enddef + +%define %realloc(TYPE,NAME...) +%insert("header") { +#if #NAME != "" +TYPE *realloc_##NAME(TYPE *ptr, int nitems) +#else +TYPE *realloc_##TYPE(TYPE *ptr, int nitems) +#endif +{ +#if #TYPE != "void" +return (TYPE *) realloc(ptr, nitems*sizeof(TYPE)); +#else +return (TYPE *) realloc(ptr, nitems); +#endif +} +} +#if #NAME != "" +TYPE *realloc_##NAME(TYPE *ptr, int nitems); +#else +TYPE *realloc_##TYPE(TYPE *ptr, int nitems); +#endif +%enddef + +%define %free(TYPE,NAME...) +#if #NAME != "" +%rename(free_##NAME) ::free(TYPE *ptr); +#else +%rename(free_##TYPE) ::free(TYPE *ptr); +#endif +void free(TYPE *ptr); +%enddef + +%define %sizeof(TYPE,NAME...) +#if #NAME != "" +%constant int sizeof_##NAME = sizeof(TYPE); +#else +%constant int sizeof_##TYPE = sizeof(TYPE); +#endif +%enddef + +%define %allocators(TYPE,NAME...) +%malloc(TYPE,NAME) +%calloc(TYPE,NAME) +%realloc(TYPE,NAME) +%free(TYPE,NAME) +#if #TYPE != "void" +%sizeof(TYPE,NAME) +#endif +%enddef + + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/constraints.i b/macx64/bin/swig/share/swig/4.0.0/constraints.i new file mode 100644 index 00000000..8bc7f915 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/constraints.i @@ -0,0 +1,224 @@ +/* ----------------------------------------------------------------------------- + * constraints.i + * + * SWIG constraints library. + * + * SWIG library file containing typemaps for implementing various kinds of + * constraints. Depends upon the SWIG exception library for generating + * errors in a language-independent manner. + * ----------------------------------------------------------------------------- */ + +#ifdef AUTODOC +%text %{ +%include + +This library provides support for applying constraints to function +arguments. Using a constraint, you can restrict arguments to be +positive numbers, non-NULL pointers, and so on. The following +constraints are available : + + Number POSITIVE - Positive number (not zero) + Number NEGATIVE - Negative number (not zero) + Number NONZERO - Nonzero number + Number NONNEGATIVE - Positive number (including zero) + Number NONPOSITIVE - Negative number (including zero) + Pointer NONNULL - Non-NULL pointer + Pointer ALIGN8 - 8-byte aligned pointer + Pointer ALIGN4 - 4-byte aligned pointer + Pointer ALIGN2 - 2-byte aligned pointer + +To use the constraints, you need to "apply" them to specific +function arguments in your code. This is done using the %apply +directive. For example : + + %apply Number NONNEGATIVE { double nonneg }; + double sqrt(double nonneg); // Name of argument must match + + %apply Pointer NONNULL { void *ptr }; + void *malloc(int POSITIVE); // May return a NULL pointer + void free(void *ptr); // May not accept a NULL pointer + +Any function argument of the type you specify with the %apply directive +will be checked with the appropriate constraint. Multiple types may +be specified as follows : + + %apply Pointer NONNULL { void *, Vector *, List *, double *}; + +In this case, all of the types listed would be checked for non-NULL +pointers. + +The common datatypes of int, short, long, unsigned int, unsigned long, +unsigned short, unsigned char, signed char, float, and double can be +checked without using the %apply directive by simply using the +constraint name as the parameter name. For example : + + double sqrt(double NONNEGATIVE); + double log(double POSITIVE); + +If you have used typedef to change type-names, you can also do this : + + %apply double { Real }; // Make everything defined for doubles + // work for Reals. + Real sqrt(Real NONNEGATIVE); + Real log(Real POSITIVE); + +%} +#endif + +%include + +#ifdef SWIGCSHARP +// Required attribute for C# exception handling +#define SWIGCSHARPCANTHROW , canthrow=1 +#else +#define SWIGCSHARPCANTHROW +#endif + + +// Positive numbers + +%typemap(check SWIGCSHARPCANTHROW) + int POSITIVE, + short POSITIVE, + long POSITIVE, + unsigned int POSITIVE, + unsigned short POSITIVE, + unsigned long POSITIVE, + signed char POSITIVE, + unsigned char POSITIVE, + float POSITIVE, + double POSITIVE, + Number POSITIVE +{ + if ($1 <= 0) { + SWIG_exception(SWIG_ValueError,"Expected a positive value."); + } +} + +// Negative numbers + +%typemap(check SWIGCSHARPCANTHROW) + int NEGATIVE, + short NEGATIVE, + long NEGATIVE, + unsigned int NEGATIVE, + unsigned short NEGATIVE, + unsigned long NEGATIVE, + signed char NEGATIVE, + unsigned char NEGATIVE, + float NEGATIVE, + double NEGATIVE, + Number NEGATIVE +{ + if ($1 >= 0) { + SWIG_exception(SWIG_ValueError,"Expected a negative value."); + } +} + +// Nonzero numbers + +%typemap(check SWIGCSHARPCANTHROW) + int NONZERO, + short NONZERO, + long NONZERO, + unsigned int NONZERO, + unsigned short NONZERO, + unsigned long NONZERO, + signed char NONZERO, + unsigned char NONZERO, + float NONZERO, + double NONZERO, + Number NONZERO +{ + if ($1 == 0) { + SWIG_exception(SWIG_ValueError,"Expected a nonzero value."); + } +} + +// Nonnegative numbers + +%typemap(check SWIGCSHARPCANTHROW) + int NONNEGATIVE, + short NONNEGATIVE, + long NONNEGATIVE, + unsigned int NONNEGATIVE, + unsigned short NONNEGATIVE, + unsigned long NONNEGATIVE, + signed char NONNEGATIVE, + unsigned char NONNEGATIVE, + float NONNEGATIVE, + double NONNEGATIVE, + Number NONNEGATIVE +{ + if ($1 < 0) { + SWIG_exception(SWIG_ValueError,"Expected a non-negative value."); + } +} + +// Nonpositive numbers + +%typemap(check SWIGCSHARPCANTHROW) + int NONPOSITIVE, + short NONPOSITIVE, + long NONPOSITIVE, + unsigned int NONPOSITIVE, + unsigned short NONPOSITIVE, + unsigned long NONPOSITIVE, + signed char NONPOSITIVE, + unsigned char NONPOSITIVE, + float NONPOSITIVE, + double NONPOSITIVE, + Number NONPOSITIVE +{ + if ($1 > 0) { + SWIG_exception(SWIG_ValueError,"Expected a non-positive value."); + } +} + +// Non-NULL pointer + +%typemap(check SWIGCSHARPCANTHROW) + void * NONNULL, + Pointer NONNULL +{ + if (!$1) { + SWIG_exception(SWIG_ValueError,"Received a NULL pointer."); + } +} + +// Aligned pointers + +%typemap(check SWIGCSHARPCANTHROW) + void * ALIGN8, + Pointer ALIGN8 +{ + unsigned long long tmp; + tmp = (unsigned long long) $1; + if (tmp & 7) { + SWIG_exception(SWIG_ValueError,"Pointer must be 8-byte aligned."); + } +} + +%typemap(check SWIGCSHARPCANTHROW) + void * ALIGN4, + Pointer ALIGN4 +{ + unsigned long long tmp; + tmp = (unsigned long long) $1; + if (tmp & 3) { + SWIG_exception(SWIG_ValueError,"Pointer must be 4-byte aligned."); + } +} + +%typemap(check SWIGCSHARPCANTHROW) + void * ALIGN2, + Pointer ALIGN2 +{ + unsigned long long tmp; + tmp = (unsigned long long) $1; + if (tmp & 1) { + SWIG_exception(SWIG_ValueError,"Pointer must be 2-byte aligned."); + } +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/cpointer.i b/macx64/bin/swig/share/swig/4.0.0/cpointer.i new file mode 100644 index 00000000..881c511f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/cpointer.i @@ -0,0 +1,180 @@ +/* ----------------------------------------------------------------------------- + * cpointer.i + * + * SWIG library file containing macros that can be used to manipulate simple + * pointer objects. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %pointer_class(type,name) + * + * Places a simple proxy around a simple type like 'int', 'float', or whatever. + * The proxy provides this interface: + * + * class type { + * public: + * type(); + * ~type(); + * type value(); + * void assign(type value); + * }; + * + * Example: + * + * %pointer_class(int, intp); + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = intp() + * >>> a.assign(10) + * >>> a.value() + * 10 + * >>> b = intp() + * >>> b.assign(20) + * >>> print add(a,b) + * 30 + * + * As a general rule, this macro should not be used on class/structures that + * are already defined in the interface. + * ----------------------------------------------------------------------------- */ + + +%define %pointer_class(TYPE, NAME) +%{ +typedef TYPE NAME; +%} + +typedef struct { +} NAME; + +%extend NAME { +#ifdef __cplusplus +NAME() { + return new TYPE(); +} +~NAME() { + if ($self) delete $self; +} +#else +NAME() { + return (TYPE *) calloc(1,sizeof(TYPE)); +} +~NAME() { + if ($self) free($self); +} +#endif +} + +%extend NAME { + +void assign(TYPE value) { + *$self = value; +} +TYPE value() { + return *$self; +} +TYPE * cast() { + return $self; +} +static NAME * frompointer(TYPE *t) { + return (NAME *) t; +} + +} + +%types(NAME = TYPE); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_functions(type,name) + * + * Create functions for allocating/deallocating pointers. This can be used + * if you don't want to create a proxy class or if the pointer is complex. + * + * %pointer_functions(int, intp) + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = copy_intp(10) + * >>> intp_value(a) + * 10 + * >>> b = new_intp() + * >>> intp_assign(b,20) + * >>> print add(a,b) + * 30 + * >>> delete_intp(a) + * >>> delete_intp(b) + * + * ----------------------------------------------------------------------------- */ + +%define %pointer_functions(TYPE,NAME) +%{ +static TYPE *new_##NAME() { %} +#ifdef __cplusplus +%{ return new TYPE(); %} +#else +%{ return (TYPE *) calloc(1,sizeof(TYPE)); %} +#endif +%{} + +static TYPE *copy_##NAME(TYPE value) { %} +#ifdef __cplusplus +%{ return new TYPE(value); %} +#else +%{ TYPE *obj = (TYPE *) calloc(1,sizeof(TYPE)); + *obj = value; + return obj; %} +#endif +%{} + +static void delete_##NAME(TYPE *obj) { %} +#ifdef __cplusplus +%{ if (obj) delete obj; %} +#else +%{ if (obj) free(obj); %} +#endif +%{} + +static void NAME ##_assign(TYPE *obj, TYPE value) { + *obj = value; +} + +static TYPE NAME ##_value(TYPE *obj) { + return *obj; +} +%} + +TYPE *new_##NAME(); +TYPE *copy_##NAME(TYPE value); +void delete_##NAME(TYPE *obj); +void NAME##_assign(TYPE *obj, TYPE value); +TYPE NAME##_value(TYPE *obj); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_cast(type1,type2,name) + * + * Generates a pointer casting function. + * ----------------------------------------------------------------------------- */ + +%define %pointer_cast(TYPE1,TYPE2,NAME) +%inline %{ +TYPE2 NAME(TYPE1 x) { + return (TYPE2) x; +} +%} +%enddef + + + + + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/arrays_csharp.i b/macx64/bin/swig/share/swig/4.0.0/csharp/arrays_csharp.i new file mode 100644 index 00000000..237067a8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/arrays_csharp.i @@ -0,0 +1,139 @@ +/* ----------------------------------------------------------------------------- + * arrays_csharp.i + * + * This file contains a two approaches to marshaling arrays. The first uses + * default p/invoke marshaling and the second uses pinning of the arrays. + * + * Default marshaling approach + * ---------------------------- + * Array typemaps using default p/invoke marshaling. The data is copied to a separately + * allocated buffer when passing over the managed-native boundary. + * + * There are separate typemaps for in, out and inout arrays to enable avoiding + * unnecessary copying. + * + * Example usage: + * + * %include "arrays_csharp.i" + * %apply int INPUT[] { int* sourceArray } + * %apply int OUTPUT[] { int* targetArray } + * void myArrayCopy( int* sourceArray, int* targetArray, int nitems ); + * + * %apply int INOUT[] { int* array1, int *array2 } + * void myArraySwap( int* array1, int* array2, int nitems ); + * + * If handling large arrays you should consider using the pinning array typemaps + * described next. + * + * Pinning approach + * ---------------- + * Array typemaps using pinning. These typemaps pin the managed array given + * as parameter and pass a pointer to it to the c/c++ side. This is very + * efficient as no copying is done (unlike in the default array marshaling), + * but it makes garbage collection more difficult. When considering using + * these typemaps, think carefully whether you have callbacks that may cause + * the control to re-enter the managed side from within the call (and produce + * garbage for the gc) or whether other threads may produce enough garbage to + * trigger gc while the call is being executed. In those cases it may be + * wiser to use the default marshaling typemaps. + * + * Please note that when using fixed arrays, you have to mark your corresponding + * module class method unsafe using + * %csmethodmodifiers "public unsafe" + * (the visibility of the method is up to you). + * + * Example usage: + * + * %include "arrays_csharp.i" + * %apply int FIXED[] { int* sourceArray, int *targetArray } + * %csmethodmodifiers myArrayCopy "public unsafe"; + * void myArrayCopy( int *sourceArray, int* targetArray, int nitems ); + * + * ----------------------------------------------------------------------------- */ + +%define CSHARP_ARRAYS( CTYPE, CSTYPE ) + +// input only arrays + +%typemap(ctype) CTYPE INPUT[] "CTYPE*" +%typemap(cstype) CTYPE INPUT[] "CSTYPE[]" +%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray)]") CTYPE INPUT[] "CSTYPE[]" +%typemap(csin) CTYPE INPUT[] "$csinput" + +%typemap(in) CTYPE INPUT[] "$1 = $input;" +%typemap(freearg) CTYPE INPUT[] "" +%typemap(argout) CTYPE INPUT[] "" + +// output only arrays + +%typemap(ctype) CTYPE OUTPUT[] "CTYPE*" +%typemap(cstype) CTYPE OUTPUT[] "CSTYPE[]" +%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray)]") CTYPE OUTPUT[] "CSTYPE[]" +%typemap(csin) CTYPE OUTPUT[] "$csinput" + +%typemap(in) CTYPE OUTPUT[] "$1 = $input;" +%typemap(freearg) CTYPE OUTPUT[] "" +%typemap(argout) CTYPE OUTPUT[] "" + +// inout arrays + +%typemap(ctype) CTYPE INOUT[] "CTYPE*" +%typemap(cstype) CTYPE INOUT[] "CSTYPE[]" +%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray)]") CTYPE INOUT[] "CSTYPE[]" +%typemap(csin) CTYPE INOUT[] "$csinput" + +%typemap(in) CTYPE INOUT[] "$1 = $input;" +%typemap(freearg) CTYPE INOUT[] "" +%typemap(argout) CTYPE INOUT[] "" + +%enddef // CSHARP_ARRAYS + +CSHARP_ARRAYS(signed char, sbyte) +CSHARP_ARRAYS(unsigned char, byte) +CSHARP_ARRAYS(short, short) +CSHARP_ARRAYS(unsigned short, ushort) +CSHARP_ARRAYS(int, int) +CSHARP_ARRAYS(unsigned int, uint) +// FIXME - on Unix 64 bit, long is 8 bytes but is 4 bytes on Windows 64 bit. +// How can this be handled sensibly? +// See e.g. http://www.xml.com/ldd/chapter/book/ch10.html +CSHARP_ARRAYS(long, int) +CSHARP_ARRAYS(unsigned long, uint) +CSHARP_ARRAYS(long long, long) +CSHARP_ARRAYS(unsigned long long, ulong) +CSHARP_ARRAYS(float, float) +CSHARP_ARRAYS(double, double) +CSHARP_ARRAYS(bool, bool) + + +%define CSHARP_ARRAYS_FIXED( CTYPE, CSTYPE ) + +%typemap(ctype) CTYPE FIXED[] "CTYPE*" +%typemap(imtype) CTYPE FIXED[] "global::System.IntPtr" +%typemap(cstype) CTYPE FIXED[] "CSTYPE[]" +%typemap(csin, + pre= " fixed ( CSTYPE* swig_ptrTo_$csinput = $csinput ) {", + terminator=" }") + CTYPE FIXED[] "(global::System.IntPtr)swig_ptrTo_$csinput" + +%typemap(in) CTYPE FIXED[] "$1 = $input;" +%typemap(freearg) CTYPE FIXED[] "" +%typemap(argout) CTYPE FIXED[] "" + + +%enddef // CSHARP_ARRAYS_FIXED + +CSHARP_ARRAYS_FIXED(signed char, sbyte) +CSHARP_ARRAYS_FIXED(unsigned char, byte) +CSHARP_ARRAYS_FIXED(short, short) +CSHARP_ARRAYS_FIXED(unsigned short, ushort) +CSHARP_ARRAYS_FIXED(int, int) +CSHARP_ARRAYS_FIXED(unsigned int, uint) +CSHARP_ARRAYS_FIXED(long, int) +CSHARP_ARRAYS_FIXED(unsigned long, uint) +CSHARP_ARRAYS_FIXED(long long, long) +CSHARP_ARRAYS_FIXED(unsigned long long, ulong) +CSHARP_ARRAYS_FIXED(float, float) +CSHARP_ARRAYS_FIXED(double, double) +CSHARP_ARRAYS_FIXED(bool, bool) + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/boost_intrusive_ptr.i b/macx64/bin/swig/share/swig/4.0.0/csharp/boost_intrusive_ptr.i new file mode 100644 index 00000000..fa3f53a2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/boost_intrusive_ptr.i @@ -0,0 +1,517 @@ +// Users can provide their own SWIG_INTRUSIVE_PTR_TYPEMAPS or SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP macros before including this file to change the +// visibility of the constructor and getCPtr method if desired to public if using multiple modules. +#ifndef SWIG_INTRUSIVE_PTR_TYPEMAPS +#define SWIG_INTRUSIVE_PTR_TYPEMAPS(CONST, TYPE...) SWIG_INTRUSIVE_PTR_TYPEMAPS_IMPLEMENTATION(internal, internal, CONST, TYPE) +#endif +#ifndef SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP +#define SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(CONST, TYPE...) SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP_IMPLEMENTATION(internal, internal, CONST, TYPE) +#endif + +%include + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_INTRUSIVE_PTR_TYPEMAPS_IMPLEMENTATION(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >; + +// destructor wrapper customisation +%feature("unref") TYPE "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +%typemap(in, canthrow=1) CONST TYPE ($&1_type argp = 0) %{ + // plain value + argp = (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0; + if (!argp) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null $1_type", 0); + return $null; + } + $1 = *argp; +%} +%typemap(out, fragment="SWIG_intrusive_deleter") CONST TYPE %{ + //plain value(out) + $1_ltype* resultp = new $1_ltype(($1_ltype &)$1); + intrusive_ptr_add_ref(resultp); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(resultp, SWIG_intrusive_deleter< CONST TYPE >()); +%} + +%typemap(in, canthrow=1) CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + // plain pointer + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input; + $1 = (TYPE *)(smartarg ? smartarg->get() : 0); +%} +%typemap(out, fragment="SWIG_intrusive_deleter,SWIG_null_deleter") CONST TYPE * %{ + //plain pointer(out) + #if ($owner) + if ($1) { + intrusive_ptr_add_ref($1); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1, SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } + #else + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + #endif +%} + +%typemap(in, canthrow=1) CONST TYPE & %{ + // plain reference + $1 = ($1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + if(!$1) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "$1_type reference is null", 0); + return $null; + } +%} +%typemap(out, fragment="SWIG_intrusive_deleter,SWIG_null_deleter") CONST TYPE & %{ + //plain reference(out) + #if ($owner) + if ($1) { + intrusive_ptr_add_ref($1); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1, SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } + #else + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + #endif +%} + +%typemap(in) TYPE *CONST& ($*1_ltype temp = 0) %{ + // plain pointer by reference + temp = ($*1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + $1 = &temp; +%} +%typemap(out, fragment="SWIG_intrusive_deleter,SWIG_null_deleter") TYPE *CONST& %{ + // plain pointer by reference(out) + #if ($owner) + if (*$1) { + intrusive_ptr_add_ref(*$1); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1, SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } + #else + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_0); + #endif +%} + +%typemap(in) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * smartarg) %{ + // intrusive_ptr by value + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >**)&$input; + if (smartarg) { + $1 = SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(smartarg->get(), true); + } +%} +%typemap(out, fragment="SWIG_intrusive_deleter") SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > %{ + if ($1) { + intrusive_ptr_add_ref($1.get()); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1.get(), SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } +%} + +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > swigSharedPtrUpcast ($&1_type smartarg) %{ + // shared_ptr by value + smartarg = *($&1_ltype*)&$input; + if (smartarg) $1 = *smartarg; +%} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > ANY_TYPE_SWIGSharedPtrUpcast %{ + *($&1_ltype*)&$result = $1 ? new $1_ltype($1) : 0; +%} + +%typemap(in) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > & ($*1_ltype tempnull, $*1_ltype temp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * smartarg) %{ + // intrusive_ptr by reference + if ( $input ) { + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >**)&$input; + temp = SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(smartarg->get(), true); + $1 = &temp; + } else { + $1 = &tempnull; + } +%} +%typemap(memberin) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > & %{ + delete &($1); + if ($self) { + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * temp = new SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(*$input); + $1 = *temp; + } +%} +%typemap(out, fragment="SWIG_intrusive_deleter") SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > & %{ + if (*$1) { + intrusive_ptr_add_ref($1->get()); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1->get(), SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } +%} + +%typemap(in) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * ($*1_ltype tempnull, $*1_ltype temp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * smartarg) %{ + // intrusive_ptr by pointer + if ( $input ) { + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >**)&$input; + temp = SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(smartarg->get(), true); + $1 = &temp; + } else { + $1 = &tempnull; + } +%} +%typemap(memberin) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * %{ + delete $1; + if ($self) $1 = new SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(*$input); +%} +%typemap(out, fragment="SWIG_intrusive_deleter") SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * %{ + if ($1 && *$1) { + intrusive_ptr_add_ref($1->get()); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1->get(), SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } + if ($owner) delete $1; +%} + +%typemap(in) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& (SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > temp, $*1_ltype tempp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * smartarg) %{ + // intrusive_ptr by pointer reference + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >**)&$input; + if ($input) { + temp = SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(smartarg->get(), true); + } + tempp = &temp; + $1 = &tempp; +%} +%typemap(memberin) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& %{ + if ($self) $1 = *$input; +%} +%typemap(out, fragment="SWIG_intrusive_deleter") SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& %{ + if (*$1 && **$1) { + intrusive_ptr_add_ref((*$1)->get()); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >((*$1)->get(), SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } +%} + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%typemap (ctype) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > &, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& "void *" +%typemap (imtype, out="global::System.IntPtr") SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > &, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& "global::System.Runtime.InteropServices.HandleRef" +%typemap (cstype) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > &, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& "$typemap(cstype, TYPE)" +%typemap(csin) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > &, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& "$typemap(cstype, TYPE).getCPtr($csinput)" + +%typemap(csout, excode=SWIGEXCODE) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > & { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csvarout, excode=SWIGEXCODE2) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > %{ + get { + $typemap(cstype, TYPE) ret = new $typemap(cstype, TYPE)($imcall, true);$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >& %{ + get { + $typemap(cstype, TYPE) ret = new $typemap(cstype, TYPE)($imcall, true);$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >* %{ + get { + $typemap(cstype, TYPE) ret = new $typemap(cstype, TYPE)($imcall, true);$excode + return ret; + } %} + + +%typemap(csout, excode=SWIGEXCODE) CONST TYPE { + $typemap(cstype, TYPE) ret = new $typemap(cstype, TYPE)($imcall, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) CONST TYPE & { + $typemap(cstype, TYPE) ret = new $typemap(cstype, TYPE)($imcall, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) CONST TYPE * { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) TYPE *CONST& { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } + +// Base proxy classes +%typemap(csbody) TYPE %{ + private global::System.Runtime.InteropServices.HandleRef swigCPtr; + private bool swigCMemOwnBase; + + PTRCTOR_VISIBILITY $csclassname(global::System.IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwnBase = cMemoryOwn; + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + } + + CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } +%} + +// Derived proxy classes +%typemap(csbody_derived) TYPE %{ + private global::System.Runtime.InteropServices.HandleRef swigCPtr; + private bool swigCMemOwnDerived; + + PTRCTOR_VISIBILITY $csclassname(global::System.IntPtr cPtr, bool cMemoryOwn) : base($imclassname.$csclazznameSWIGSmartPtrUpcast(cPtr), true) { + swigCMemOwnDerived = cMemoryOwn; + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + } + + CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } +%} + +%typemap(csdisposing, methodname="Dispose", methodmodifiers="protected", parameters="bool disposing") TYPE { + lock(this) { + if (swigCPtr.Handle != global::System.IntPtr.Zero) { + if (swigCMemOwnBase) { + swigCMemOwnBase = false; + $imcall; + } + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + } + } + +%typemap(csdisposing_derived, methodname="Dispose", methodmodifiers="protected", parameters="bool disposing") TYPE { + lock(this) { + if (swigCPtr.Handle != global::System.IntPtr.Zero) { + if (swigCMemOwnDerived) { + swigCMemOwnDerived = false; + $imcall; + } + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + base.Dispose(disposing); + } + } + +// CONST version needed ???? also for C# +%typemap(imtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast "global::System.Runtime.InteropServices.HandleRef" +%typemap(imtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > swigSharedPtrUpcast "global::System.Runtime.InteropServices.HandleRef" + + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; +%template() SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >; +%enddef + + +///////////////////////////////////////////////////////////////////// + + +%include + +%define SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP_IMPLEMENTATION(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, CONST, TYPE...) + +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor mods +%feature("unref") TYPE "(void)arg1; delete smartarg1;" + + +// plain value +%typemap(in, canthrow=1) CONST TYPE ($&1_type argp = 0) %{ + argp = (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0; + if (!argp) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null $1_type", 0); + return $null; + } + $1 = *argp; %} +%typemap(out) CONST TYPE +%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); %} + +// plain pointer +%typemap(in) CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input; + $1 = (TYPE *)(smartarg ? smartarg->get() : 0); %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * %{ + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; +%} + +// plain reference +%typemap(in, canthrow=1) CONST TYPE & %{ + $1 = ($1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + if (!$1) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "$1_type reference is null", 0); + return $null; + } %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE & +%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); %} + +// plain pointer by reference +%typemap(in) TYPE *CONST& ($*1_ltype temp = 0) +%{ temp = ($*1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + $1 = &temp; %} +%typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& +%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner); %} + +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > swigSharedPtrUpcast ($&1_type smartarg) %{ + // shared_ptr by value + smartarg = *($&1_ltype*)&$input; + if (smartarg) $1 = *smartarg; +%} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > ANY_TYPE_SWIGSharedPtrUpcast %{ + *($&1_ltype*)&$result = $1 ? new $1_ltype($1) : 0; +%} + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%typemap (ctype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "void *" +%typemap (imtype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "void *" +%typemap (cstype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "$typemap(cstype, TYPE)" +%typemap (csin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "$typemap(cstype, TYPE).getCPtr($csinput)" +%typemap(csout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + global::System.IntPtr cPtr = $imcall; + return (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true); + } + +%typemap(csout, excode=SWIGEXCODE) CONST TYPE { + return new $typemap(cstype, TYPE)($imcall, true); + } +%typemap(csout, excode=SWIGEXCODE) CONST TYPE & { + return new $typemap(cstype, TYPE)($imcall, true); + } +%typemap(csout, excode=SWIGEXCODE) CONST TYPE * { + global::System.IntPtr cPtr = $imcall; + return (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true); + } +%typemap(csout, excode=SWIGEXCODE) TYPE *CONST& { + global::System.IntPtr cPtr = $imcall; + return (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true); + } + +// Base proxy classes +%typemap(csbody) TYPE %{ + private global::System.Runtime.InteropServices.HandleRef swigCPtr; + private bool swigCMemOwnBase; + + PTRCTOR_VISIBILITY $csclassname(global::System.IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwnBase = cMemoryOwn; + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + } + + CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } +%} + +// Derived proxy classes +%typemap(csbody_derived) TYPE %{ + private global::System.Runtime.InteropServices.HandleRef swigCPtr; + private bool swigCMemOwnDerived; + + PTRCTOR_VISIBILITY $csclassname(global::System.IntPtr cPtr, bool cMemoryOwn) : base($imclassname.$csclazznameSWIGSmartPtrUpcast(cPtr), true) { + swigCMemOwnDerived = cMemoryOwn; + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + } + + CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } +%} + +%typemap(csdisposing, methodname="Dispose", methodmodifiers="protected", parameters="bool disposing") TYPE { + lock(this) { + if (swigCPtr.Handle != global::System.IntPtr.Zero) { + if (swigCMemOwnBase) { + swigCMemOwnBase = false; + $imcall; + } + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + } + } + +%typemap(csdisposing_derived, methodname="Dispose", methodmodifiers="protected", parameters="bool disposing") TYPE { + lock(this) { + if (swigCPtr.Handle != global::System.IntPtr.Zero) { + if (swigCMemOwnDerived) { + swigCMemOwnDerived = false; + $imcall; + } + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + base.Dispose(disposing); + } + } + + +// CONST version needed ???? also for C# +%typemap(imtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast "global::System.Runtime.InteropServices.HandleRef" +%typemap(imtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > swigSharedPtrUpcast "global::System.Runtime.InteropServices.HandleRef" + +// Typecheck typemaps +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& + "" + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/boost_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/csharp/boost_shared_ptr.i new file mode 100644 index 00000000..508c0ec1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/boost_shared_ptr.i @@ -0,0 +1,323 @@ +// Users can provide their own SWIG_SHARED_PTR_TYPEMAPS macro before including this file to change the +// visibility of the constructor and getCPtr method if desired to public if using multiple modules. +#ifndef SWIG_SHARED_PTR_TYPEMAPS +#define SWIG_SHARED_PTR_TYPEMAPS(CONST, TYPE...) SWIG_SHARED_PTR_TYPEMAPS_IMPLEMENTATION(internal, internal, CONST, TYPE) +#endif + +%include + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_SHARED_PTR_TYPEMAPS_IMPLEMENTATION(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor mods +%feature("unref") TYPE +//"if (debug_shared) { cout << \"deleting use_count: \" << (*smartarg1).use_count() << \" [\" << (boost::get_deleter(*smartarg1) ? std::string(\"CANNOT BE DETERMINED SAFELY\") : ( (*smartarg1).get() ? (*smartarg1)->getValue() : std::string(\"NULL PTR\") )) << \"]\" << endl << flush; }\n" + "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +// plain value +%typemap(in, canthrow=1) CONST TYPE ($&1_type argp = 0) %{ + argp = ((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input) ? ((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input)->get() : 0; + if (!argp) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null $1_type", 0); + return $null; + } + $1 = *argp; %} +%typemap(out) CONST TYPE +%{ $result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); %} + +%typemap(directorin) CONST TYPE +%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (new $1_ltype((const $1_ltype &)$1)); %} + +%typemap(directorout) CONST TYPE +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null $1_type", 0); + return $null; + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input; + $result = *smartarg->get(); +%} + +// plain pointer +%typemap(in, canthrow=1) CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input; + $1 = (TYPE *)(smartarg ? smartarg->get() : 0); %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * %{ + $result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; +%} + +%typemap(directorin) CONST TYPE * +%{ $input = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; %} + +%typemap(directorout) CONST TYPE * %{ +#error "typemaps for $1_type not available" +%} + +// plain reference +%typemap(in, canthrow=1) CONST TYPE & %{ + $1 = ($1_ltype)(((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input) ? ((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input)->get() : 0); + if (!$1) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "$1_type reference is null", 0); + return $null; + } %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE & +%{ $result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); %} + +%typemap(directorin) CONST TYPE & +%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (&$1 SWIG_NO_NULL_DELETER_0); %} + +%typemap(directorout) CONST TYPE & %{ +#error "typemaps for $1_type not available" +%} + +// plain pointer by reference +%typemap(in) TYPE *CONST& ($*1_ltype temp = 0) +%{ temp = (TYPE *)(((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input) ? ((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input)->get() : 0); + $1 = &temp; %} +%typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& +%{ $result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner); %} + +%typemap(directorin) TYPE *CONST& +%{ $input = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; %} + +%typemap(directorout) TYPE *CONST& %{ +#error "typemaps for $1_type not available" +%} + +// shared_ptr by value +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ if ($input) $1 = *($&1_ltype)$input; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ $result = $1 ? new $1_ltype($1) : 0; %} + +%typemap(directorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ $input = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ if ($input) { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input; + $result = *smartarg; + } +%} + +// shared_ptr by reference +%typemap(in, canthrow=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & ($*1_ltype tempnull) +%{ $1 = $input ? ($1_ltype)$input : &tempnull; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & +%{ $result = *$1 ? new $*1_ltype(*$1) : 0; %} + +%typemap(directorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & +%{ $input = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "typemaps for $1_type not available" +%} + +// shared_ptr by pointer +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * ($*1_ltype tempnull) +%{ $1 = $input ? ($1_ltype)$input : &tempnull; %} +%typemap(out, fragment="SWIG_null_deleter") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * +%{ $result = ($1 && *$1) ? new $*1_ltype(*($1_ltype)$1) : 0; + if ($owner) delete $1; %} + +%typemap(directorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * +%{ $input = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "typemaps for $1_type not available" +%} + +// shared_ptr by pointer reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempnull, $*1_ltype temp = 0) +%{ temp = $input ? *($1_ltype)&$input : &tempnull; + $1 = &temp; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& +%{ *($1_ltype)&$result = (*$1 && **$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(**$1) : 0; %} + +%typemap(directorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& +%{ $input = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "typemaps for $1_type not available" +%} + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%typemap (ctype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "void *" +%typemap (imtype, out="global::System.IntPtr") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "global::System.Runtime.InteropServices.HandleRef" +%typemap (cstype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "$typemap(cstype, TYPE)" + +%typemap(csin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "$typemap(cstype, TYPE).getCPtr($csinput)" + +%typemap(csout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } + + +%typemap(csout, excode=SWIGEXCODE) CONST TYPE { + $typemap(cstype, TYPE) ret = new $typemap(cstype, TYPE)($imcall, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) CONST TYPE & { + $typemap(cstype, TYPE) ret = new $typemap(cstype, TYPE)($imcall, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) CONST TYPE * { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) TYPE *CONST& { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } + +%typemap(csvarout, excode=SWIGEXCODE2) CONST TYPE & %{ + get { + $csclassname ret = new $csclassname($imcall, true);$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) CONST TYPE * %{ + get { + global::System.IntPtr cPtr = $imcall; + $csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $csclassname(cPtr, true);$excode + return ret; + } %} + +%typemap(csvarout, excode=SWIGEXCODE2) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ + get { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ + get { + global::System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } %} + +%typemap(csdirectorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "$typemap(cstype, TYPE).getCPtr($cscall).Handle" + +%typemap(csdirectorin) CONST TYPE, + CONST TYPE *, + CONST TYPE &, + TYPE *CONST& "($iminput == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)($iminput, true)" + +%typemap(csdirectorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "($iminput == global::System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)($iminput, true)" + + +// Proxy classes (base classes, ie, not derived classes) +%typemap(csbody) TYPE %{ + private global::System.Runtime.InteropServices.HandleRef swigCPtr; + private bool swigCMemOwnBase; + + PTRCTOR_VISIBILITY $csclassname(global::System.IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwnBase = cMemoryOwn; + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + } + + CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } +%} + +// Derived proxy classes +%typemap(csbody_derived) TYPE %{ + private global::System.Runtime.InteropServices.HandleRef swigCPtr; + private bool swigCMemOwnDerived; + + PTRCTOR_VISIBILITY $csclassname(global::System.IntPtr cPtr, bool cMemoryOwn) : base($imclassname.$csclazznameSWIGSmartPtrUpcast(cPtr), true) { + swigCMemOwnDerived = cMemoryOwn; + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + } + + CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } +%} + +%typemap(csdisposing, methodname="Dispose", methodmodifiers="protected", parameters="bool disposing") TYPE { + lock(this) { + if (swigCPtr.Handle != global::System.IntPtr.Zero) { + if (swigCMemOwnBase) { + swigCMemOwnBase = false; + $imcall; + } + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + } + } + +%typemap(csdisposing_derived, methodname="Dispose", methodmodifiers="protected", parameters="bool disposing") TYPE { + lock(this) { + if (swigCPtr.Handle != global::System.IntPtr.Zero) { + if (swigCMemOwnDerived) { + swigCMemOwnDerived = false; + $imcall; + } + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + base.Dispose(disposing); + } + } + +// Typecheck typemaps +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& + "" + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/complex.i b/macx64/bin/swig/share/swig/4.0.0/csharp/complex.i new file mode 100644 index 00000000..4a6f91cd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/complex.i @@ -0,0 +1,5 @@ +#ifdef __cplusplus +%include +#else +#error C# module only supports complex in C++ mode. +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/csharp.swg b/macx64/bin/swig/share/swig/4.0.0/csharp/csharp.swg new file mode 100644 index 00000000..83220638 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/csharp.swg @@ -0,0 +1,1078 @@ +/* ----------------------------------------------------------------------------- + * csharp.swg + * + * C# typemaps + * ----------------------------------------------------------------------------- */ + +%include + +/* The ctype, imtype and cstype typemaps work together and so there should be one of each. + * The ctype typemap contains the PInvoke type used in the PInvoke (C/C++) code. + * The imtype typemap contains the C# type used in the intermediary class. + * The cstype typemap contains the C# type used in the C# proxy classes, type wrapper classes and module class. */ + +/* SWIG 3 no longer inserts using directives into generated C# code. For backwards compatibility, the SWIG2_CSHARP + macro can be defined to have SWIG 3 generate using directives similar to those generated by SWIG 2. */ +#ifdef SWIG2_CSHARP + +%typemap(csimports) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "\nusing global::System;\nusing global::System.Runtime.InteropServices;\n" + +%pragma(csharp) moduleimports=%{ +using global::System; +using global::System.Runtime.InteropServices; +%} + +%pragma(csharp) imclassimports=%{ +using global::System; +using global::System.Runtime.InteropServices; +%} + +#endif + + +/* Fragments */ +%fragment("SWIG_PackData", "header") { +/* Pack binary data into a string */ +SWIGINTERN char * SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + const unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} +} + +%fragment("SWIG_UnPackData", "header") { +/* Unpack binary data from a string */ +SWIGINTERN const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + char d = *(c++); + unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = ((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = ((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} +} + +/* Primitive types */ +%typemap(ctype) bool, const bool & "unsigned int" +%typemap(ctype) char, const char & "char" +%typemap(ctype) signed char, const signed char & "signed char" +%typemap(ctype) unsigned char, const unsigned char & "unsigned char" +%typemap(ctype) short, const short & "short" +%typemap(ctype) unsigned short, const unsigned short & "unsigned short" +%typemap(ctype) int, const int & "int" +%typemap(ctype) unsigned int, const unsigned int & "unsigned int" +%typemap(ctype) long, const long & "long" +%typemap(ctype) unsigned long, const unsigned long & "unsigned long" +%typemap(ctype) long long, const long long & "long long" +%typemap(ctype) unsigned long long, const unsigned long long & "unsigned long long" +%typemap(ctype) float, const float & "float" +%typemap(ctype) double, const double & "double" +%typemap(ctype) void "void" + +%typemap(imtype) bool, const bool & "bool" +%typemap(imtype) char, const char & "char" +%typemap(imtype) signed char, const signed char & "sbyte" +%typemap(imtype) unsigned char, const unsigned char & "byte" +%typemap(imtype) short, const short & "short" +%typemap(imtype) unsigned short, const unsigned short & "ushort" +%typemap(imtype) int, const int & "int" +%typemap(imtype) unsigned int, const unsigned int & "uint" +%typemap(imtype) long, const long & "int" +%typemap(imtype) unsigned long, const unsigned long & "uint" +%typemap(imtype) long long, const long long & "long" +%typemap(imtype) unsigned long long, const unsigned long long & "ulong" +%typemap(imtype) float, const float & "float" +%typemap(imtype) double, const double & "double" +%typemap(imtype) void "void" + +%typemap(cstype) bool, const bool & "bool" +%typemap(cstype) char, const char & "char" +%typemap(cstype) signed char, const signed char & "sbyte" +%typemap(cstype) unsigned char, const unsigned char & "byte" +%typemap(cstype) short, const short & "short" +%typemap(cstype) unsigned short, const unsigned short & "ushort" +%typemap(cstype) int, const int & "int" +%typemap(cstype) unsigned int, const unsigned int & "uint" +%typemap(cstype) long, const long & "int" +%typemap(cstype) unsigned long, const unsigned long & "uint" +%typemap(cstype) long long, const long long & "long" +%typemap(cstype) unsigned long long, const unsigned long long & "ulong" +%typemap(cstype) float, const float & "float" +%typemap(cstype) double, const double & "double" +%typemap(cstype) void "void" + +%typemap(ctype) char *, char *&, char[ANY], char[] "char *" +%typemap(imtype) char *, char *&, char[ANY], char[] "string" +%typemap(cstype) char *, char *&, char[ANY], char[] "string" + +/* Non primitive types */ +%typemap(ctype) SWIGTYPE "void *" +%typemap(imtype, out="global::System.IntPtr") SWIGTYPE "global::System.Runtime.InteropServices.HandleRef" +%typemap(cstype) SWIGTYPE "$&csclassname" + +%typemap(ctype) SWIGTYPE [] "void *" +%typemap(imtype, out="global::System.IntPtr") SWIGTYPE [] "global::System.Runtime.InteropServices.HandleRef" +%typemap(cstype) SWIGTYPE [] "$csclassname" + +%typemap(ctype) SWIGTYPE * "void *" +%typemap(imtype, out="global::System.IntPtr") SWIGTYPE * "global::System.Runtime.InteropServices.HandleRef" +%typemap(cstype) SWIGTYPE * "$csclassname" + +%typemap(ctype) SWIGTYPE & "void *" +%typemap(imtype, out="global::System.IntPtr") SWIGTYPE & "global::System.Runtime.InteropServices.HandleRef" +%typemap(cstype) SWIGTYPE & "$csclassname" + +%typemap(ctype) SWIGTYPE && "void *" +%typemap(imtype, out="global::System.IntPtr") SWIGTYPE && "global::System.Runtime.InteropServices.HandleRef" +%typemap(cstype) SWIGTYPE && "$csclassname" + +/* pointer to a class member */ +%typemap(ctype) SWIGTYPE (CLASS::*) "char *" +%typemap(imtype) SWIGTYPE (CLASS::*) "string" +%typemap(cstype) SWIGTYPE (CLASS::*) "$csclassname" + +/* The following are the in and out typemaps. These are the PInvoke code generating typemaps for converting from C# to C and visa versa. */ + +/* primitive types */ +%typemap(in) bool +%{ $1 = $input ? true : false; %} + +%typemap(directorout) bool +%{ $result = $input ? true : false; %} + +%typemap(csdirectorin) bool "$iminput" +%typemap(csdirectorout) bool "$cscall" + +%typemap(in) char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double +%{ $1 = ($1_ltype)$input; %} + +%typemap(directorout) char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double +%{ $result = ($1_ltype)$input; %} + +%typemap(directorin) bool "$input = $1;" +%typemap(directorin) char "$input = $1;" +%typemap(directorin) signed char "$input = $1;" +%typemap(directorin) unsigned char "$input = $1;" +%typemap(directorin) short "$input = $1;" +%typemap(directorin) unsigned short "$input = $1;" +%typemap(directorin) int "$input = $1;" +%typemap(directorin) unsigned int "$input = $1;" +%typemap(directorin) long "$input = $1;" +%typemap(directorin) unsigned long "$input = (unsigned long)$1;" +%typemap(directorin) long long "$input = $1;" +%typemap(directorin) unsigned long long "$input = $1;" +%typemap(directorin) float "$input = $1;" +%typemap(directorin) double "$input = $1;" + +%typemap(csdirectorin) char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double + "$iminput" + +%typemap(csdirectorout) char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double + "$cscall" + +%typemap(out) bool %{ $result = $1; %} +%typemap(out) char %{ $result = $1; %} +%typemap(out) signed char %{ $result = $1; %} +%typemap(out) unsigned char %{ $result = $1; %} +%typemap(out) short %{ $result = $1; %} +%typemap(out) unsigned short %{ $result = $1; %} +%typemap(out) int %{ $result = $1; %} +%typemap(out) unsigned int %{ $result = $1; %} +%typemap(out) long %{ $result = $1; %} +%typemap(out) unsigned long %{ $result = (unsigned long)$1; %} +%typemap(out) long long %{ $result = $1; %} +%typemap(out) unsigned long long %{ $result = $1; %} +%typemap(out) float %{ $result = $1; %} +%typemap(out) double %{ $result = $1; %} + +/* char * - treat as String */ +%typemap(in) char * %{ $1 = ($1_ltype)$input; %} +%typemap(out) char * %{ $result = SWIG_csharp_string_callback((const char *)$1); %} +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) char * %{ $result = ($1_ltype)$input; %} +%typemap(directorin) char * %{ $input = SWIG_csharp_string_callback((const char *)$1); %} +%typemap(csdirectorin) char * "$iminput" +%typemap(csdirectorout) char * "$cscall" + +/* char *& - treat as String */ +%typemap(in) char *& ($*1_ltype temp = 0) %{ + temp = ($*1_ltype)$input; + $1 = &temp; +%} +%typemap(out) char *& %{ if ($1) $result = SWIG_csharp_string_callback((const char *)*$1); %} + +%typemap(out, null="") void "" +%typemap(csdirectorin) void "$iminput" +%typemap(csdirectorout) void "$cscall" +%typemap(directorin) void "" + +/* primitive types by const reference */ +%typemap(in) const bool & ($*1_ltype temp) +%{ temp = $input ? true : false; + $1 = &temp; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const bool & +%{ static $*1_ltype temp; + temp = $input ? true : false; + $result = &temp; %} + +%typemap(csdirectorin) const bool & "$iminput" +%typemap(csdirectorout) const bool & "$cscall" + +%typemap(in) const char & ($*1_ltype temp), + const signed char & ($*1_ltype temp), + const unsigned char & ($*1_ltype temp), + const short & ($*1_ltype temp), + const unsigned short & ($*1_ltype temp), + const int & ($*1_ltype temp), + const unsigned int & ($*1_ltype temp), + const long & ($*1_ltype temp), + const unsigned long & ($*1_ltype temp), + const long long & ($*1_ltype temp), + const unsigned long long & ($*1_ltype temp), + const float & ($*1_ltype temp), + const double & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const char &, + const signed char &, + const unsigned char &, + const short &, + const unsigned short &, + const int &, + const unsigned int &, + const long &, + const unsigned long &, + const long long &, + const unsigned long long &, + const float &, + const double & +%{ static $*1_ltype temp; + temp = ($*1_ltype)$input; + $result = &temp; %} + +%typemap(directorin) const bool & "$input = $1;" +%typemap(directorin) const char & "$input = $1;" +%typemap(directorin) const signed char & "$input = $1;" +%typemap(directorin) const unsigned char & "$input = $1;" +%typemap(directorin) const short & "$input = $1;" +%typemap(directorin) const unsigned short & "$input = $1;" +%typemap(directorin) const int & "$input = $1;" +%typemap(directorin) const unsigned int & "$input = $1;" +%typemap(directorin) const long & "$input = $1;" +%typemap(directorin) const unsigned long & "$input = $1;" +%typemap(directorin) const long long & "$input = $1;" +%typemap(directorin) const unsigned long long & "$input = $1;" +%typemap(directorin) const float & "$input = $1;" +%typemap(directorin) const double & "$input = $1;" + +%typemap(csdirectorin) const char & ($*1_ltype temp), + const signed char & ($*1_ltype temp), + const unsigned char & ($*1_ltype temp), + const short & ($*1_ltype temp), + const unsigned short & ($*1_ltype temp), + const int & ($*1_ltype temp), + const unsigned int & ($*1_ltype temp), + const long & ($*1_ltype temp), + const unsigned long & ($*1_ltype temp), + const long long & ($*1_ltype temp), + const unsigned long long & ($*1_ltype temp), + const float & ($*1_ltype temp), + const double & ($*1_ltype temp) + "$iminput" + +%typemap(csdirectorout) const char & ($*1_ltype temp), + const signed char & ($*1_ltype temp), + const unsigned char & ($*1_ltype temp), + const short & ($*1_ltype temp), + const unsigned short & ($*1_ltype temp), + const int & ($*1_ltype temp), + const unsigned int & ($*1_ltype temp), + const long & ($*1_ltype temp), + const unsigned long & ($*1_ltype temp), + const long long & ($*1_ltype temp), + const unsigned long long & ($*1_ltype temp), + const float & ($*1_ltype temp), + const double & ($*1_ltype temp) + "$cscall" + + +%typemap(out) const bool & %{ $result = *$1; %} +%typemap(out) const char & %{ $result = *$1; %} +%typemap(out) const signed char & %{ $result = *$1; %} +%typemap(out) const unsigned char & %{ $result = *$1; %} +%typemap(out) const short & %{ $result = *$1; %} +%typemap(out) const unsigned short & %{ $result = *$1; %} +%typemap(out) const int & %{ $result = *$1; %} +%typemap(out) const unsigned int & %{ $result = *$1; %} +%typemap(out) const long & %{ $result = *$1; %} +%typemap(out) const unsigned long & %{ $result = (unsigned long)*$1; %} +%typemap(out) const long long & %{ $result = *$1; %} +%typemap(out) const unsigned long long & %{ $result = *$1; %} +%typemap(out) const float & %{ $result = *$1; %} +%typemap(out) const double & %{ $result = *$1; %} + +/* Default handling. Object passed by value. Convert to a pointer */ +%typemap(in, canthrow=1) SWIGTYPE ($&1_type argp) +%{ argp = ($&1_ltype)$input; + if (!argp) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null $1_type", 0); + return $null; + } + $1 = *argp; %} + +%typemap(directorout) SWIGTYPE +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Unexpected null return for type $1_type", 0); + return $null; + } + $result = *($&1_ltype)$input; %} + +%typemap(out) SWIGTYPE +#ifdef __cplusplus +%{ $result = new $1_ltype((const $1_ltype &)$1); %} +#else +{ + $&1_ltype $1ptr = ($&1_ltype) malloc(sizeof($1_ltype)); + memmove($1ptr, &$1, sizeof($1_type)); + $result = $1ptr; +} +#endif + +%typemap(directorin) SWIGTYPE +%{ $input = (void *)new $1_ltype((const $1_ltype &)$1); %} +%typemap(csdirectorin) SWIGTYPE "new $&csclassname($iminput, true)" +%typemap(csdirectorout) SWIGTYPE "$&csclassname.getCPtr($cscall).Handle" + +/* Generic pointers and references */ +%typemap(in) SWIGTYPE * %{ $1 = ($1_ltype)$input; %} +%typemap(in, fragment="SWIG_UnPackData") SWIGTYPE (CLASS::*) %{ + SWIG_UnpackData($input, (void *)&$1, sizeof($1)); +%} +%typemap(in, canthrow=1) SWIGTYPE & %{ $1 = ($1_ltype)$input; + if (!$1) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "$1_type type is null", 0); + return $null; + } %} +%typemap(in, canthrow=1) SWIGTYPE && %{ $1 = ($1_ltype)$input; + if (!$1) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "$1_type type is null", 0); + return $null; + } %} +%typemap(out) SWIGTYPE * %{ $result = (void *)$1; %} +%typemap(out, fragment="SWIG_PackData") SWIGTYPE (CLASS::*) %{ + char buf[128]; + char *data = SWIG_PackData(buf, (void *)&$1, sizeof($1)); + *data = '\0'; + $result = SWIG_csharp_string_callback(buf); +%} +%typemap(out) SWIGTYPE & %{ $result = (void *)$1; %} +%typemap(out) SWIGTYPE && %{ $result = (void *)$1; %} + +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE * +%{ $result = ($1_ltype)$input; %} +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE (CLASS::*) +%{ $result = ($1_ltype)$input; %} + +%typemap(directorin) SWIGTYPE * +%{ $input = (void *) $1; %} +%typemap(directorin) SWIGTYPE (CLASS::*) +%{ $input = (void *) $1; %} + +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE & +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Unexpected null return for type $1_type", 0); + return $null; + } + $result = ($1_ltype)$input; %} +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE && +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Unexpected null return for type $1_type", 0); + return $null; + } + $result = ($1_ltype)$input; %} +%typemap(directorin) SWIGTYPE & +%{ $input = ($1_ltype) &$1; %} +%typemap(directorin) SWIGTYPE && +%{ $input = ($1_ltype) &$1; %} + +%typemap(csdirectorin) SWIGTYPE *, SWIGTYPE (CLASS::*) "($iminput == global::System.IntPtr.Zero) ? null : new $csclassname($iminput, false)" +%typemap(csdirectorin) SWIGTYPE & "new $csclassname($iminput, false)" +%typemap(csdirectorin) SWIGTYPE && "new $csclassname($iminput, false)" +%typemap(csdirectorout) SWIGTYPE *, SWIGTYPE (CLASS::*), SWIGTYPE &, SWIGTYPE && "$csclassname.getCPtr($cscall).Handle" + +/* Default array handling */ +%typemap(in) SWIGTYPE [] %{ $1 = ($1_ltype)$input; %} +%typemap(out) SWIGTYPE [] %{ $result = $1; %} + +/* char arrays - treat as String */ +%typemap(in) char[ANY], char[] %{ $1 = ($1_ltype)$input; %} +%typemap(out) char[ANY], char[] %{ $result = SWIG_csharp_string_callback((const char *)$1); %} + +%typemap(directorout) char[ANY], char[] %{ $result = ($1_ltype)$input; %} +%typemap(directorin) char[ANY], char[] %{ $input = SWIG_csharp_string_callback((const char *)$1); %} + +%typemap(csdirectorin) char[ANY], char[] "$iminput" +%typemap(csdirectorout) char[ANY], char[] "$cscall" + + +/* Typecheck typemaps - The purpose of these is merely to issue a warning for overloaded C++ functions + * that cannot be overloaded in C# as more than one C++ type maps to a single C# type */ + +%typecheck(SWIG_TYPECHECK_BOOL) + bool, + const bool & + "" + +%typecheck(SWIG_TYPECHECK_CHAR) + char, + const char & + "" + +%typecheck(SWIG_TYPECHECK_INT8) + signed char, + const signed char & + "" + +%typecheck(SWIG_TYPECHECK_UINT8) + unsigned char, + const unsigned char & + "" + +%typecheck(SWIG_TYPECHECK_INT16) + short, + const short & + "" + +%typecheck(SWIG_TYPECHECK_UINT16) + unsigned short, + const unsigned short & + "" + +%typecheck(SWIG_TYPECHECK_INT32) + int, + long, + const int &, + const long & + "" + +%typecheck(SWIG_TYPECHECK_UINT32) + unsigned int, + unsigned long, + const unsigned int &, + const unsigned long & + "" + +%typecheck(SWIG_TYPECHECK_INT64) + long long, + const long long & + "" + +%typecheck(SWIG_TYPECHECK_UINT64) + unsigned long long, + const unsigned long long & + "" + +%typecheck(SWIG_TYPECHECK_FLOAT) + float, + const float & + "" + +%typecheck(SWIG_TYPECHECK_DOUBLE) + double, + const double & + "" + +%typecheck(SWIG_TYPECHECK_STRING) + char *, + char *&, + char[ANY], + char[] + "" + +%typecheck(SWIG_TYPECHECK_POINTER) + SWIGTYPE, + SWIGTYPE *, + SWIGTYPE &, + SWIGTYPE &&, + SWIGTYPE *const&, + SWIGTYPE [], + SWIGTYPE (CLASS::*) + "" + +/* Exception handling */ + +%typemap(throws, canthrow=1) int, + long, + short, + unsigned int, + unsigned long, + unsigned short +%{ char error_msg[256]; + sprintf(error_msg, "C++ $1_type exception thrown, value: %d", $1); + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, error_msg); + return $null; %} + +%typemap(throws, canthrow=1) SWIGTYPE, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE *, SWIGTYPE [ANY] +%{ (void)$1; + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, "C++ $1_type exception thrown"); + return $null; %} + +%typemap(throws, canthrow=1) char * +%{ SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, $1); + return $null; %} + + +/* Typemaps for code generation in proxy classes and C# type wrapper classes */ + +/* The csin typemap is used for converting function parameter types from the type + * used in the proxy, module or type wrapper class to the type used in the PInvoke class. */ +%typemap(csin) bool, const bool &, + char, const char &, + signed char, const signed char &, + unsigned char, const unsigned char &, + short, const short &, + unsigned short, const unsigned short &, + int, const int &, + unsigned int, const unsigned int &, + long, const long &, + unsigned long, const unsigned long &, + long long, const long long &, + unsigned long long, const unsigned long long &, + float, const float &, + double, const double & + "$csinput" +%typemap(csin) char *, char *&, char[ANY], char[] "$csinput" +%typemap(csin) SWIGTYPE "$&csclassname.getCPtr($csinput)" +%typemap(csin) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] "$csclassname.getCPtr($csinput)" +%typemap(csin) SWIGTYPE (CLASS::*) "$csclassname.getCMemberPtr($csinput)" + +/* The csout typemap is used for converting function return types from the return type + * used in the PInvoke class to the type returned by the proxy, module or type wrapper class. + * The $excode special variable is replaced by the excode typemap attribute code if the + * method can throw any exceptions from unmanaged code, otherwise replaced by nothing. */ + +// Macro used by the $excode special variable +%define SWIGEXCODE "\n if ($imclassname.SWIGPendingException.Pending) throw $imclassname.SWIGPendingException.Retrieve();" %enddef +%define SWIGEXCODE2 "\n if ($imclassname.SWIGPendingException.Pending) throw $imclassname.SWIGPendingException.Retrieve();" %enddef + +%typemap(csout, excode=SWIGEXCODE) bool, const bool & { + bool ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) char, const char & { + char ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) signed char, const signed char & { + sbyte ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) unsigned char, const unsigned char & { + byte ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) short, const short & { + short ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) unsigned short, const unsigned short & { + ushort ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) int, const int & { + int ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) unsigned int, const unsigned int & { + uint ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) long, const long & { + int ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) unsigned long, const unsigned long & { + uint ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) long long, const long long & { + long ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) unsigned long long, const unsigned long long & { + ulong ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) float, const float & { + float ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) double, const double & { + double ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) char *, char *&, char[ANY], char[] { + string ret = $imcall;$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) void { + $imcall;$excode + } +%typemap(csout, excode=SWIGEXCODE) SWIGTYPE { + $&csclassname ret = new $&csclassname($imcall, true);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIGTYPE & { + $csclassname ret = new $csclassname($imcall, $owner);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIGTYPE && { + $csclassname ret = new $csclassname($imcall, $owner);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIGTYPE *, SWIGTYPE [] { + global::System.IntPtr cPtr = $imcall; + $csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $csclassname(cPtr, $owner);$excode + return ret; + } +%typemap(csout, excode=SWIGEXCODE) SWIGTYPE (CLASS::*) { + string cMemberPtr = $imcall; + $csclassname ret = (cMemberPtr == null) ? null : new $csclassname(cMemberPtr, $owner);$excode + return ret; + } + + +/* Properties */ +%typemap(csvarin, excode=SWIGEXCODE2) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) %{ + set { + $imcall;$excode + } %} + +%typemap(csvarin, excode=SWIGEXCODE2) char *, char *&, char[ANY], char[] %{ + set { + $imcall;$excode + } %} + +%typemap(csvarout, excode=SWIGEXCODE2) bool, const bool & %{ + get { + bool ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) char, const char & %{ + get { + char ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) signed char, const signed char & %{ + get { + sbyte ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) unsigned char, const unsigned char & %{ + get { + byte ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) short, const short & %{ + get { + short ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) unsigned short, const unsigned short & %{ + get { + ushort ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) int, const int & %{ + get { + int ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) unsigned int, const unsigned int & %{ + get { + uint ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) long, const long & %{ + get { + int ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) unsigned long, const unsigned long & %{ + get { + uint ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) long long, const long long & %{ + get { + long ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) unsigned long long, const unsigned long long & %{ + get { + ulong ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) float, const float & %{ + get { + float ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) double, const double & %{ + get { + double ret = $imcall;$excode + return ret; + } %} + + +%typemap(csvarout, excode=SWIGEXCODE2) char *, char *&, char[ANY], char[] %{ + get { + string ret = $imcall;$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) void %{ + get { + $imcall;$excode + } %} +%typemap(csvarout, excode=SWIGEXCODE2) SWIGTYPE %{ + get { + $&csclassname ret = new $&csclassname($imcall, true);$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) SWIGTYPE & %{ + get { + $csclassname ret = new $csclassname($imcall, $owner);$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) SWIGTYPE && %{ + get { + $csclassname ret = new $csclassname($imcall, $owner);$excode + return ret; + } %} +%typemap(csvarout, excode=SWIGEXCODE2) SWIGTYPE *, SWIGTYPE [] %{ + get { + global::System.IntPtr cPtr = $imcall; + $csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $csclassname(cPtr, $owner);$excode + return ret; + } %} + +%typemap(csvarout, excode=SWIGEXCODE2) SWIGTYPE (CLASS::*) %{ + get { + string cMemberPtr = $imcall; + $csclassname ret = (cMemberPtr == null) ? null : new $csclassname(cMemberPtr, $owner);$excode + return ret; + } %} + +/* Pointer reference typemaps */ +%typemap(ctype) SWIGTYPE *const& "void *" +%typemap(imtype, out="global::System.IntPtr") SWIGTYPE *const& "global::System.Runtime.InteropServices.HandleRef" +%typemap(cstype) SWIGTYPE *const& "$*csclassname" +%typemap(csin) SWIGTYPE *const& "$*csclassname.getCPtr($csinput)" +%typemap(csout, excode=SWIGEXCODE) SWIGTYPE *const& { + global::System.IntPtr cPtr = $imcall; + $*csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $*csclassname(cPtr, $owner);$excode + return ret; + } +%typemap(csvarout, excode=SWIGEXCODE) SWIGTYPE *const& %{ + get { + global::System.IntPtr cPtr = $imcall; + $*csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $*csclassname(cPtr, $owner);$excode + return ret; + } %} + +%typemap(in) SWIGTYPE *const& ($*1_ltype temp = 0) +%{ temp = ($*1_ltype)$input; + $1 = ($1_ltype)&temp; %} +%typemap(out) SWIGTYPE *const& +%{ $result = (void *)*$1; %} +%typemap(directorin) SWIGTYPE *const& +%{ $input = (void *) $1; %} +%typemap(directorout, warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) SWIGTYPE *const& +%{ static $*1_ltype swig_temp; + swig_temp = ($*1_ltype)$input; + $result = &swig_temp; %} +%typemap(csdirectorin) SWIGTYPE *const& "($iminput == global::System.IntPtr.Zero) ? null : new $*csclassname($iminput, false)" +%typemap(csdirectorout) SWIGTYPE *const& "$*csclassname.getCPtr($cscall).Handle" + +/* Marshal C/C++ pointer to global::System.IntPtr */ +%typemap(ctype) void *VOID_INT_PTR "void *" +%typemap(imtype) void *VOID_INT_PTR "global::System.IntPtr" +%typemap(cstype) void *VOID_INT_PTR "global::System.IntPtr" +%typemap(in) void *VOID_INT_PTR %{ $1 = ($1_ltype)$input; %} +%typemap(out) void *VOID_INT_PTR %{ $result = (void *)$1; %} +%typemap(csin) void *VOID_INT_PTR "$csinput" +%typemap(csout, excode=SWIGEXCODE) void *VOID_INT_PTR { + global::System.IntPtr ret = $imcall;$excode + return ret; + } +%typemap(csdirectorin) void *VOID_INT_PTR "$iminput" +%typemap(csdirectorout) void *VOID_INT_PTR "$cscall" + +/* Typemaps used for the generation of proxy and type wrapper class code */ +%typemap(csbase) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(csclassmodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "public class" +%typemap(cscode) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(csinterfaces) SWIGTYPE "global::System.IDisposable" +%typemap(csinterfaces) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(csinterfaces_derived) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "" + + +// csbody typemaps... these are in macros so that the visibility of the methods can be easily changed by users. + +%define SWIG_CSBODY_PROXY(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE...) +// Proxy classes (base classes, ie, not derived classes) +%typemap(csbody) TYPE %{ + private global::System.Runtime.InteropServices.HandleRef swigCPtr; + protected bool swigCMemOwn; + + PTRCTOR_VISIBILITY $csclassname(global::System.IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + } + + CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } +%} + +// Derived proxy classes +%typemap(csbody_derived) TYPE %{ + private global::System.Runtime.InteropServices.HandleRef swigCPtr; + + PTRCTOR_VISIBILITY $csclassname(global::System.IntPtr cPtr, bool cMemoryOwn) : base($imclassname.$csclazznameSWIGUpcast(cPtr), cMemoryOwn) { + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + } + + CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } +%} +%enddef + +%define SWIG_CSBODY_TYPEWRAPPER(PTRCTOR_VISIBILITY, DEFAULTCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE...) +// Typewrapper classes +%typemap(csbody) TYPE *, TYPE &, TYPE &&, TYPE [] %{ + private global::System.Runtime.InteropServices.HandleRef swigCPtr; + + PTRCTOR_VISIBILITY $csclassname(global::System.IntPtr cPtr, bool futureUse) { + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + } + + DEFAULTCTOR_VISIBILITY $csclassname() { + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + + CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } +%} + +%typemap(csbody) TYPE (CLASS::*) %{ + private string swigCMemberPtr; + + PTRCTOR_VISIBILITY $csclassname(string cMemberPtr, bool futureUse) { + swigCMemberPtr = cMemberPtr; + } + + DEFAULTCTOR_VISIBILITY $csclassname() { + swigCMemberPtr = null; + } + + CPTR_VISIBILITY static string getCMemberPtr($csclassname obj) { + return obj.swigCMemberPtr; + } +%} +%enddef + +/* Set the default csbody typemaps to use internal visibility. + Use the macros to change to public if using multiple modules. */ +SWIG_CSBODY_PROXY(internal, internal, SWIGTYPE) +SWIG_CSBODY_TYPEWRAPPER(internal, protected, internal, SWIGTYPE) + +%typemap(csdispose) SWIGTYPE %{ + ~$csclassname() { + Dispose(false); + } + + public void Dispose() { + Dispose(true); + global::System.GC.SuppressFinalize(this); + } +%} + +%typemap(csdispose_derived) SWIGTYPE "" + +%typemap(csconstruct, excode=SWIGEXCODE,directorconnect="\n SwigDirectorConnect();") SWIGTYPE %{: this($imcall, true) {$excode$directorconnect + } +%} + +%typemap(csdisposing, methodname="Dispose", methodmodifiers="protected", parameters="bool disposing") SWIGTYPE { + lock(this) { + if (swigCPtr.Handle != global::System.IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + $imcall; + } + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + } + } + +%typemap(csdisposing_derived, methodname="Dispose", methodmodifiers="protected", parameters="bool disposing") SWIGTYPE { + lock(this) { + if (swigCPtr.Handle != global::System.IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + $imcall; + } + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + base.Dispose(disposing); + } + } + +%typemap(directordisconnect, methodname="swigDirectorDisconnect") SWIGTYPE %{ + protected void $methodname() { + swigCMemOwn = false; + $imcall; + } +%} + +/* C# specific directives */ +#define %csconst(flag) %feature("cs:const","flag") +#define %csconstvalue(value) %feature("cs:constvalue",value) +#define %csenum(wrapapproach) %feature("cs:enum","wrapapproach") +#define %csmethodmodifiers %feature("cs:methodmodifiers") +#define %csnothrowexception %feature("except") +#define %csattributes %feature("cs:attributes") +#define %proxycode %insert("proxycode") + +%pragma(csharp) imclassclassmodifiers="class" +%pragma(csharp) moduleclassmodifiers="public class" + +/* Some ANSI C typemaps */ + +%apply unsigned long { size_t }; +%apply const unsigned long & { const size_t & }; + +/* Array reference typemaps */ +%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } +%apply SWIGTYPE && { SWIGTYPE ((&&)[ANY]) } + +/* const pointers */ +%apply SWIGTYPE * { SWIGTYPE *const } +%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) } +%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) } + +/* csharp keywords */ +%include + +// Default enum handling +%include + +// For vararg handling in macros, from swigmacros.swg +#define %arg(X...) X + +/* +// Alternative char * typemaps. +%pragma(csharp) imclasscode=%{ + public class SWIGStringMarshal : global::System.IDisposable { + public readonly global::System.Runtime.InteropServices.HandleRef swigCPtr; + public SWIGStringMarshal(string str) { + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, global::System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(str)); + } + public virtual void Dispose() { + global::System.Runtime.InteropServices.Marshal.FreeHGlobal(swigCPtr.Handle); + global::System.GC.SuppressFinalize(this); + } + } +%} + +%typemap(imtype, out="global::System.IntPtr") char *, char[ANY], char[] "global::System.Runtime.InteropServices.HandleRef" +%typemap(out) char *, char[ANY], char[] %{ $result = $1; %} +%typemap(csin) char *, char[ANY], char[] "new $imclassname.SWIGStringMarshal($csinput).swigCPtr" +%typemap(csout, excode=SWIGEXCODE) char *, char[ANY], char[] { + string ret = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi($imcall);$excode + return ret; + } +%typemap(csvarin, excode=SWIGEXCODE2) char *, char[ANY], char[] %{ + set { + $imcall;$excode + } %} +%typemap(csvarout, excode=SWIGEXCODE2) char *, char[ANY], char[] %{ + get { + string ret = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi($imcall);$excode + return ret; + } %} +*/ + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/csharphead.swg b/macx64/bin/swig/share/swig/4.0.0/csharp/csharphead.swg new file mode 100644 index 00000000..7db4c0e3 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/csharphead.swg @@ -0,0 +1,339 @@ +/* ----------------------------------------------------------------------------- + * csharphead.swg + * + * Support code for exceptions if the SWIG_CSHARP_NO_EXCEPTION_HELPER is not defined + * Support code for strings if the SWIG_CSHARP_NO_STRING_HELPER is not defined + * ----------------------------------------------------------------------------- */ + +%insert(runtime) %{ +#include +#include +#include +%} + +#if !defined(SWIG_CSHARP_NO_EXCEPTION_HELPER) +%insert(runtime) %{ +/* Support for throwing C# exceptions from C/C++. There are two types: + * Exceptions that take a message and ArgumentExceptions that take a message and a parameter name. */ +typedef enum { + SWIG_CSharpApplicationException, + SWIG_CSharpArithmeticException, + SWIG_CSharpDivideByZeroException, + SWIG_CSharpIndexOutOfRangeException, + SWIG_CSharpInvalidCastException, + SWIG_CSharpInvalidOperationException, + SWIG_CSharpIOException, + SWIG_CSharpNullReferenceException, + SWIG_CSharpOutOfMemoryException, + SWIG_CSharpOverflowException, + SWIG_CSharpSystemException +} SWIG_CSharpExceptionCodes; + +typedef enum { + SWIG_CSharpArgumentException, + SWIG_CSharpArgumentNullException, + SWIG_CSharpArgumentOutOfRangeException +} SWIG_CSharpExceptionArgumentCodes; + +typedef void (SWIGSTDCALL* SWIG_CSharpExceptionCallback_t)(const char *); +typedef void (SWIGSTDCALL* SWIG_CSharpExceptionArgumentCallback_t)(const char *, const char *); + +typedef struct { + SWIG_CSharpExceptionCodes code; + SWIG_CSharpExceptionCallback_t callback; +} SWIG_CSharpException_t; + +typedef struct { + SWIG_CSharpExceptionArgumentCodes code; + SWIG_CSharpExceptionArgumentCallback_t callback; +} SWIG_CSharpExceptionArgument_t; + +static SWIG_CSharpException_t SWIG_csharp_exceptions[] = { + { SWIG_CSharpApplicationException, NULL }, + { SWIG_CSharpArithmeticException, NULL }, + { SWIG_CSharpDivideByZeroException, NULL }, + { SWIG_CSharpIndexOutOfRangeException, NULL }, + { SWIG_CSharpInvalidCastException, NULL }, + { SWIG_CSharpInvalidOperationException, NULL }, + { SWIG_CSharpIOException, NULL }, + { SWIG_CSharpNullReferenceException, NULL }, + { SWIG_CSharpOutOfMemoryException, NULL }, + { SWIG_CSharpOverflowException, NULL }, + { SWIG_CSharpSystemException, NULL } +}; + +static SWIG_CSharpExceptionArgument_t SWIG_csharp_exceptions_argument[] = { + { SWIG_CSharpArgumentException, NULL }, + { SWIG_CSharpArgumentNullException, NULL }, + { SWIG_CSharpArgumentOutOfRangeException, NULL } +}; + +static void SWIGUNUSED SWIG_CSharpSetPendingException(SWIG_CSharpExceptionCodes code, const char *msg) { + SWIG_CSharpExceptionCallback_t callback = SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback; + if ((size_t)code < sizeof(SWIG_csharp_exceptions)/sizeof(SWIG_CSharpException_t)) { + callback = SWIG_csharp_exceptions[code].callback; + } + callback(msg); +} + +static void SWIGUNUSED SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpExceptionArgumentCodes code, const char *msg, const char *param_name) { + SWIG_CSharpExceptionArgumentCallback_t callback = SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback; + if ((size_t)code < sizeof(SWIG_csharp_exceptions_argument)/sizeof(SWIG_CSharpExceptionArgument_t)) { + callback = SWIG_csharp_exceptions_argument[code].callback; + } + callback(msg, param_name); +} +%} + +%insert(runtime) %{ +#ifdef __cplusplus +extern "C" +#endif +SWIGEXPORT void SWIGSTDCALL SWIGRegisterExceptionCallbacks_$module( + SWIG_CSharpExceptionCallback_t applicationCallback, + SWIG_CSharpExceptionCallback_t arithmeticCallback, + SWIG_CSharpExceptionCallback_t divideByZeroCallback, + SWIG_CSharpExceptionCallback_t indexOutOfRangeCallback, + SWIG_CSharpExceptionCallback_t invalidCastCallback, + SWIG_CSharpExceptionCallback_t invalidOperationCallback, + SWIG_CSharpExceptionCallback_t ioCallback, + SWIG_CSharpExceptionCallback_t nullReferenceCallback, + SWIG_CSharpExceptionCallback_t outOfMemoryCallback, + SWIG_CSharpExceptionCallback_t overflowCallback, + SWIG_CSharpExceptionCallback_t systemCallback) { + SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback = applicationCallback; + SWIG_csharp_exceptions[SWIG_CSharpArithmeticException].callback = arithmeticCallback; + SWIG_csharp_exceptions[SWIG_CSharpDivideByZeroException].callback = divideByZeroCallback; + SWIG_csharp_exceptions[SWIG_CSharpIndexOutOfRangeException].callback = indexOutOfRangeCallback; + SWIG_csharp_exceptions[SWIG_CSharpInvalidCastException].callback = invalidCastCallback; + SWIG_csharp_exceptions[SWIG_CSharpInvalidOperationException].callback = invalidOperationCallback; + SWIG_csharp_exceptions[SWIG_CSharpIOException].callback = ioCallback; + SWIG_csharp_exceptions[SWIG_CSharpNullReferenceException].callback = nullReferenceCallback; + SWIG_csharp_exceptions[SWIG_CSharpOutOfMemoryException].callback = outOfMemoryCallback; + SWIG_csharp_exceptions[SWIG_CSharpOverflowException].callback = overflowCallback; + SWIG_csharp_exceptions[SWIG_CSharpSystemException].callback = systemCallback; +} + +#ifdef __cplusplus +extern "C" +#endif +SWIGEXPORT void SWIGSTDCALL SWIGRegisterExceptionArgumentCallbacks_$module( + SWIG_CSharpExceptionArgumentCallback_t argumentCallback, + SWIG_CSharpExceptionArgumentCallback_t argumentNullCallback, + SWIG_CSharpExceptionArgumentCallback_t argumentOutOfRangeCallback) { + SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback = argumentCallback; + SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentNullException].callback = argumentNullCallback; + SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentOutOfRangeException].callback = argumentOutOfRangeCallback; +} +%} + +%pragma(csharp) imclasscode=%{ + protected class SWIGExceptionHelper { + + public delegate void ExceptionDelegate(string message); + public delegate void ExceptionArgumentDelegate(string message, string paramName); + + static ExceptionDelegate applicationDelegate = new ExceptionDelegate(SetPendingApplicationException); + static ExceptionDelegate arithmeticDelegate = new ExceptionDelegate(SetPendingArithmeticException); + static ExceptionDelegate divideByZeroDelegate = new ExceptionDelegate(SetPendingDivideByZeroException); + static ExceptionDelegate indexOutOfRangeDelegate = new ExceptionDelegate(SetPendingIndexOutOfRangeException); + static ExceptionDelegate invalidCastDelegate = new ExceptionDelegate(SetPendingInvalidCastException); + static ExceptionDelegate invalidOperationDelegate = new ExceptionDelegate(SetPendingInvalidOperationException); + static ExceptionDelegate ioDelegate = new ExceptionDelegate(SetPendingIOException); + static ExceptionDelegate nullReferenceDelegate = new ExceptionDelegate(SetPendingNullReferenceException); + static ExceptionDelegate outOfMemoryDelegate = new ExceptionDelegate(SetPendingOutOfMemoryException); + static ExceptionDelegate overflowDelegate = new ExceptionDelegate(SetPendingOverflowException); + static ExceptionDelegate systemDelegate = new ExceptionDelegate(SetPendingSystemException); + + static ExceptionArgumentDelegate argumentDelegate = new ExceptionArgumentDelegate(SetPendingArgumentException); + static ExceptionArgumentDelegate argumentNullDelegate = new ExceptionArgumentDelegate(SetPendingArgumentNullException); + static ExceptionArgumentDelegate argumentOutOfRangeDelegate = new ExceptionArgumentDelegate(SetPendingArgumentOutOfRangeException); + + [global::System.Runtime.InteropServices.DllImport("$dllimport", EntryPoint="SWIGRegisterExceptionCallbacks_$module")] + public static extern void SWIGRegisterExceptionCallbacks_$module( + ExceptionDelegate applicationDelegate, + ExceptionDelegate arithmeticDelegate, + ExceptionDelegate divideByZeroDelegate, + ExceptionDelegate indexOutOfRangeDelegate, + ExceptionDelegate invalidCastDelegate, + ExceptionDelegate invalidOperationDelegate, + ExceptionDelegate ioDelegate, + ExceptionDelegate nullReferenceDelegate, + ExceptionDelegate outOfMemoryDelegate, + ExceptionDelegate overflowDelegate, + ExceptionDelegate systemExceptionDelegate); + + [global::System.Runtime.InteropServices.DllImport("$dllimport", EntryPoint="SWIGRegisterExceptionArgumentCallbacks_$module")] + public static extern void SWIGRegisterExceptionCallbacksArgument_$module( + ExceptionArgumentDelegate argumentDelegate, + ExceptionArgumentDelegate argumentNullDelegate, + ExceptionArgumentDelegate argumentOutOfRangeDelegate); + + static void SetPendingApplicationException(string message) { + SWIGPendingException.Set(new global::System.ApplicationException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingArithmeticException(string message) { + SWIGPendingException.Set(new global::System.ArithmeticException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingDivideByZeroException(string message) { + SWIGPendingException.Set(new global::System.DivideByZeroException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingIndexOutOfRangeException(string message) { + SWIGPendingException.Set(new global::System.IndexOutOfRangeException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingInvalidCastException(string message) { + SWIGPendingException.Set(new global::System.InvalidCastException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingInvalidOperationException(string message) { + SWIGPendingException.Set(new global::System.InvalidOperationException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingIOException(string message) { + SWIGPendingException.Set(new global::System.IO.IOException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingNullReferenceException(string message) { + SWIGPendingException.Set(new global::System.NullReferenceException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingOutOfMemoryException(string message) { + SWIGPendingException.Set(new global::System.OutOfMemoryException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingOverflowException(string message) { + SWIGPendingException.Set(new global::System.OverflowException(message, SWIGPendingException.Retrieve())); + } + static void SetPendingSystemException(string message) { + SWIGPendingException.Set(new global::System.SystemException(message, SWIGPendingException.Retrieve())); + } + + static void SetPendingArgumentException(string message, string paramName) { + SWIGPendingException.Set(new global::System.ArgumentException(message, paramName, SWIGPendingException.Retrieve())); + } + static void SetPendingArgumentNullException(string message, string paramName) { + global::System.Exception e = SWIGPendingException.Retrieve(); + if (e != null) message = message + " Inner Exception: " + e.Message; + SWIGPendingException.Set(new global::System.ArgumentNullException(paramName, message)); + } + static void SetPendingArgumentOutOfRangeException(string message, string paramName) { + global::System.Exception e = SWIGPendingException.Retrieve(); + if (e != null) message = message + " Inner Exception: " + e.Message; + SWIGPendingException.Set(new global::System.ArgumentOutOfRangeException(paramName, message)); + } + + static SWIGExceptionHelper() { + SWIGRegisterExceptionCallbacks_$module( + applicationDelegate, + arithmeticDelegate, + divideByZeroDelegate, + indexOutOfRangeDelegate, + invalidCastDelegate, + invalidOperationDelegate, + ioDelegate, + nullReferenceDelegate, + outOfMemoryDelegate, + overflowDelegate, + systemDelegate); + + SWIGRegisterExceptionCallbacksArgument_$module( + argumentDelegate, + argumentNullDelegate, + argumentOutOfRangeDelegate); + } + } + + protected static SWIGExceptionHelper swigExceptionHelper = new SWIGExceptionHelper(); + + public class SWIGPendingException { + [global::System.ThreadStatic] + private static global::System.Exception pendingException = null; + private static int numExceptionsPending = 0; + private static global::System.Object exceptionsLock = null; + + public static bool Pending { + get { + bool pending = false; + if (numExceptionsPending > 0) + if (pendingException != null) + pending = true; + return pending; + } + } + + public static void Set(global::System.Exception e) { + if (pendingException != null) + throw new global::System.ApplicationException("FATAL: An earlier pending exception from unmanaged code was missed and thus not thrown (" + pendingException.ToString() + ")", e); + pendingException = e; + lock(exceptionsLock) { + numExceptionsPending++; + } + } + + public static global::System.Exception Retrieve() { + global::System.Exception e = null; + if (numExceptionsPending > 0) { + if (pendingException != null) { + e = pendingException; + pendingException = null; + lock(exceptionsLock) { + numExceptionsPending--; + } + } + } + return e; + } + + static SWIGPendingException() { + exceptionsLock = new global::System.Object(); + } + } +%} +#endif // SWIG_CSHARP_NO_EXCEPTION_HELPER + +#if !defined(SWIG_CSHARP_NO_STRING_HELPER) +%insert(runtime) %{ +/* Callback for returning strings to C# without leaking memory */ +typedef char * (SWIGSTDCALL* SWIG_CSharpStringHelperCallback)(const char *); +static SWIG_CSharpStringHelperCallback SWIG_csharp_string_callback = NULL; +%} + +%pragma(csharp) imclasscode=%{ + protected class SWIGStringHelper { + + public delegate string SWIGStringDelegate(string message); + static SWIGStringDelegate stringDelegate = new SWIGStringDelegate(CreateString); + + [global::System.Runtime.InteropServices.DllImport("$dllimport", EntryPoint="SWIGRegisterStringCallback_$module")] + public static extern void SWIGRegisterStringCallback_$module(SWIGStringDelegate stringDelegate); + + static string CreateString(string cString) { + return cString; + } + + static SWIGStringHelper() { + SWIGRegisterStringCallback_$module(stringDelegate); + } + } + + static protected SWIGStringHelper swigStringHelper = new SWIGStringHelper(); +%} + +%insert(runtime) %{ +#ifdef __cplusplus +extern "C" +#endif +SWIGEXPORT void SWIGSTDCALL SWIGRegisterStringCallback_$module(SWIG_CSharpStringHelperCallback callback) { + SWIG_csharp_string_callback = callback; +} +%} +#endif // SWIG_CSHARP_NO_STRING_HELPER + +#if !defined(SWIG_CSHARP_NO_IMCLASS_STATIC_CONSTRUCTOR) +// Ensure the class is not marked beforefieldinit +%pragma(csharp) imclasscode=%{ + static $imclassname() { + } +%} +#endif + +%insert(runtime) %{ +/* Contract support */ + +#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, msg, ""); return nullreturn; } else +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/csharpkw.swg b/macx64/bin/swig/share/swig/4.0.0/csharp/csharpkw.swg new file mode 100644 index 00000000..824f6187 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/csharpkw.swg @@ -0,0 +1,97 @@ +#ifndef CSHARP_CSHARPKW_SWG_ +#define CSHARP_CSHARPKW_SWG_ + +/* Warnings for C# keywords */ +#define CSHARPKW(x) %keywordwarn("'" `x` "' is a C# keyword, renaming to '" `x` "_'",rename="%s_") `x` + +#define CSHARPCLASSKW(x) %keywordwarn("'" `x` "' is a special method name used in the C# wrapper classes, class renamed to '" `x` "_'",%$isclass,rename="%s_") `x` + +/* + from + http://www.jaggersoft.com/csharp_grammar.html#1.7%20Keywords + +*/ + +CSHARPKW(abstract); +CSHARPKW(as); +CSHARPKW(base); +CSHARPKW(bool); +CSHARPKW(break); +CSHARPKW(byte); +CSHARPKW(case); +CSHARPKW(catch); +CSHARPKW(char); +CSHARPKW(checked); +CSHARPKW(class); +CSHARPKW(const); +CSHARPKW(continue); +CSHARPKW(decimal); +CSHARPKW(default); +CSHARPKW(delegate); +CSHARPKW(do); +CSHARPKW(double); +CSHARPKW(else); +CSHARPKW(enum); +CSHARPKW(event); +CSHARPKW(explicit); +CSHARPKW(extern); +CSHARPKW(false); +CSHARPKW(finally); +CSHARPKW(fixed); +CSHARPKW(float); +CSHARPKW(for); +CSHARPKW(foreach); +CSHARPKW(goto); +CSHARPKW(if); +CSHARPKW(implicit); +CSHARPKW(in); +CSHARPKW(int); +CSHARPKW(interface); +CSHARPKW(internal); +CSHARPKW(is); +CSHARPKW(lock); +CSHARPKW(long); +CSHARPKW(namespace); +CSHARPKW(new); +CSHARPKW(null); +CSHARPKW(object); +CSHARPKW(operator); +CSHARPKW(out); +CSHARPKW(override); +CSHARPKW(params); +CSHARPKW(private); +CSHARPKW(protected); +CSHARPKW(public); +CSHARPKW(readonly); +CSHARPKW(ref); +CSHARPKW(return); +CSHARPKW(sbyte); +CSHARPKW(sealed); +CSHARPKW(short); +CSHARPKW(sizeof); +CSHARPKW(stackalloc); +CSHARPKW(static); +CSHARPKW(struct); +CSHARPKW(string); +CSHARPKW(switch); +CSHARPKW(this); +CSHARPKW(throw); +CSHARPKW(true); +CSHARPKW(try); +CSHARPKW(typeof); +CSHARPKW(uint); +CSHARPKW(ulong); +CSHARPKW(unchecked); +CSHARPKW(unsafe); +CSHARPKW(ushort); +CSHARPKW(using); +CSHARPKW(virtual); +CSHARPKW(void); +CSHARPKW(volatile); +CSHARPKW(while); + +CSHARPCLASSKW(delete); + +#undef CSHARPKW + +#endif //CSHARP_CSHARPKW_SWG_ diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/director.swg b/macx64/bin/swig/share/swig/4.0.0/csharp/director.swg new file mode 100644 index 00000000..5d2ab5d9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/director.swg @@ -0,0 +1,50 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that C# proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#if defined(DEBUG_DIRECTOR_OWNED) +#include +#endif +#include +#include + +namespace Swig { + /* Director base class - not currently used in C# directors */ + class Director { + }; + + /* Base class for director exceptions */ + class DirectorException : public std::exception { + protected: + std::string swig_msg; + + public: + DirectorException(const char *msg) : swig_msg(msg) { + } + + DirectorException(const std::string &msg) : swig_msg(msg) { + } + + virtual ~DirectorException() throw() { + } + + const char *what() const throw() { + return swig_msg.c_str(); + } + }; + + /* Pure virtual method exception */ + class DirectorPureVirtualException : public DirectorException { + public: + DirectorPureVirtualException(const char *msg) : DirectorException(std::string("Attempt to invoke pure virtual method ") + msg) { + } + + static void raise(const char *msg) { + throw DirectorPureVirtualException(msg); + } + }; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/enums.swg b/macx64/bin/swig/share/swig/4.0.0/csharp/enums.swg new file mode 100644 index 00000000..5cc26547 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/enums.swg @@ -0,0 +1,86 @@ +/* ----------------------------------------------------------------------------- + * enums.swg + * + * Include this file in order for C/C++ enums to be wrapped by proper C# enums. + * Note that the PINVOKE layer handles the enum as an int. + * ----------------------------------------------------------------------------- */ + +// const enum SWIGTYPE & typemaps +%typemap(ctype) const enum SWIGTYPE & "int" +%typemap(imtype) const enum SWIGTYPE & "int" +%typemap(cstype) const enum SWIGTYPE & "$*csclassname" + +%typemap(in) const enum SWIGTYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} +%typemap(out) const enum SWIGTYPE & %{ $result = (int)*$1; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & +%{ static $*1_ltype temp = ($*1_ltype)$input; + $result = &temp; %} +%typemap(directorin) const enum SWIGTYPE & "$input = (int)$1;" +%typemap(csdirectorin) const enum SWIGTYPE & "($*csclassname)$iminput" +%typemap(csdirectorout) const enum SWIGTYPE & "(int)$cscall" + +%typecheck(SWIG_TYPECHECK_POINTER) const enum SWIGTYPE & "" + +%typemap(throws, canthrow=1) const enum SWIGTYPE & +%{ (void)$1; + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, "C++ $1_type exception thrown"); + return $null; %} + +%typemap(csin) const enum SWIGTYPE & "(int)$csinput" +%typemap(csout, excode=SWIGEXCODE) const enum SWIGTYPE & { + $*csclassname ret = ($*csclassname)$imcall;$excode + return ret; + } + +%typemap(csvarout, excode=SWIGEXCODE2) const enum SWIGTYPE & %{ + get { + $*csclassname ret = ($*csclassname)$imcall;$excode + return ret; + } %} + + +// enum SWIGTYPE typemaps +%typemap(ctype) enum SWIGTYPE "int" +%typemap(imtype) enum SWIGTYPE "int" +%typemap(cstype) enum SWIGTYPE "$csclassname" + +%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %} +%typemap(out) enum SWIGTYPE %{ $result = (int)$1; %} + +%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} +%typemap(directorin) enum SWIGTYPE "$input = (int)$1;" +%typemap(csdirectorin) enum SWIGTYPE "($csclassname)$iminput" +%typemap(csdirectorout) enum SWIGTYPE "(int)$cscall" + +%typecheck(SWIG_TYPECHECK_POINTER) enum SWIGTYPE "" + +%typemap(throws, canthrow=1) enum SWIGTYPE +%{ (void)$1; + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, "C++ $1_type exception thrown"); + return $null; %} + +%typemap(csin) enum SWIGTYPE "(int)$csinput" +%typemap(csout, excode=SWIGEXCODE) enum SWIGTYPE { + $csclassname ret = ($csclassname)$imcall;$excode + return ret; + } + +%typemap(csvarout, excode=SWIGEXCODE2) enum SWIGTYPE %{ + get { + $csclassname ret = ($csclassname)$imcall;$excode + return ret; + } %} + +%typemap(csbase) enum SWIGTYPE "" +%typemap(csclassmodifiers) enum SWIGTYPE "public enum" +%typemap(cscode) enum SWIGTYPE "" +%typemap(csimports) enum SWIGTYPE "" +%typemap(csinterfaces) enum SWIGTYPE "" + +%typemap(csbody) enum SWIGTYPE "" + +%csenum(proper); + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/enumsimple.swg b/macx64/bin/swig/share/swig/4.0.0/csharp/enumsimple.swg new file mode 100644 index 00000000..24e4bcf1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/enumsimple.swg @@ -0,0 +1,88 @@ +/* ----------------------------------------------------------------------------- + * enumsimple.swg + * + * This file provides backwards compatible enum wrapping. SWIG versions 1.3.21 + * and earlier wrapped global enums with constant integers in the module + * class. Enums declared within a C++ class were wrapped by constant integers + * in the C# proxy class. + * ----------------------------------------------------------------------------- */ + +// const enum SWIGTYPE & typemaps +%typemap(ctype) const enum SWIGTYPE & "int" +%typemap(imtype) const enum SWIGTYPE & "int" +%typemap(cstype) const enum SWIGTYPE & "int" + +%typemap(in) const enum SWIGTYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} +%typemap(out) const enum SWIGTYPE & %{ $result = (int)*$1; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & +%{ static $*1_ltype temp = ($*1_ltype)$input; + $result = &temp; %} +%typemap(directorin) const enum SWIGTYPE & "$input = (int)$1;" +%typemap(csdirectorin) const enum SWIGTYPE & "$iminput" +%typemap(csdirectorout) const enum SWIGTYPE & "$cscall" + +%typecheck(SWIG_TYPECHECK_INT32) const enum SWIGTYPE & "" + +%typemap(throws, canthrow=1) const enum SWIGTYPE & +%{ (void)$1; + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, "C++ $1_type exception thrown"); + return $null; %} + +%typemap(csin) const enum SWIGTYPE & "$csinput" +%typemap(csout, excode=SWIGEXCODE) const enum SWIGTYPE & { + int ret = $imcall;$excode + return ret; + } + +%typemap(csvarout, excode=SWIGEXCODE2) const enum SWIGTYPE & %{ + get { + int ret = $imcall;$excode + return ret; + } %} + + +// enum SWIGTYPE typemaps +%typemap(ctype) enum SWIGTYPE "int" +%typemap(imtype) enum SWIGTYPE "int" +%typemap(cstype) enum SWIGTYPE "int" + +%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %} +%typemap(out) enum SWIGTYPE %{ $result = (int)$1; %} + +%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} +%typemap(directorin) enum SWIGTYPE "$input = (int)$1;" +%typemap(csdirectorin) enum SWIGTYPE "$iminput" +%typemap(csdirectorout) enum SWIGTYPE "$cscall" + +%typecheck(SWIG_TYPECHECK_INT32) enum SWIGTYPE "" + +%typemap(throws, canthrow=1) enum SWIGTYPE +%{ (void)$1; + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, "C++ $1_type exception thrown"); + return $null; %} + +%typemap(csin) enum SWIGTYPE "$csinput" +%typemap(csout, excode=SWIGEXCODE) enum SWIGTYPE { + int ret = $imcall;$excode + return ret; + } + +%typemap(csvarout, excode=SWIGEXCODE2) enum SWIGTYPE %{ + get { + int ret = $imcall;$excode + return ret; + } %} + +%typemap(csbase) enum SWIGTYPE "" +%typemap(csclassmodifiers) enum SWIGTYPE "" +%typemap(cscode) enum SWIGTYPE "" +%typemap(csimports) enum SWIGTYPE "" +%typemap(csinterfaces) enum SWIGTYPE "" + +%typemap(csbody) enum SWIGTYPE "" + +%csenum(simple); + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/enumtypesafe.swg b/macx64/bin/swig/share/swig/4.0.0/csharp/enumtypesafe.swg new file mode 100644 index 00000000..fd680173 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/enumtypesafe.swg @@ -0,0 +1,130 @@ +/* ----------------------------------------------------------------------------- + * enumtypesafe.swg + * + * Include this file in order for C/C++ enums to be wrapped by the so called + * typesafe enum pattern. Each enum has an equivalent C# class named after the + * enum and each enum item is a static instance of this class. + * ----------------------------------------------------------------------------- */ + +// const enum SWIGTYPE & typemaps +%typemap(ctype) const enum SWIGTYPE & "int" +%typemap(imtype) const enum SWIGTYPE & "int" +%typemap(cstype) const enum SWIGTYPE & "$*csclassname" + +%typemap(in) const enum SWIGTYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} +%typemap(out) const enum SWIGTYPE & %{ $result = (int)*$1; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & +%{ static $*1_ltype temp = ($*1_ltype)$input; + $result = &temp; %} +%typemap(directorin) const enum SWIGTYPE & "$input = (int)$1;" +%typemap(csdirectorin) const enum SWIGTYPE & "$*csclassname.swigToEnum($iminput)" +%typemap(csdirectorout) const enum SWIGTYPE & "$cscall.swigValue" + +%typecheck(SWIG_TYPECHECK_POINTER) const enum SWIGTYPE & "" + +%typemap(throws, canthrow=1) const enum SWIGTYPE & +%{ (void)$1; + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, "C++ $1_type exception thrown"); + return $null; %} + +%typemap(csin) const enum SWIGTYPE & "$csinput.swigValue" +%typemap(csout, excode=SWIGEXCODE) const enum SWIGTYPE & { + $*csclassname ret = $*csclassname.swigToEnum($imcall);$excode + return ret; + } + +%typemap(csvarout, excode=SWIGEXCODE2) const enum SWIGTYPE & %{ + get { + $*csclassname ret = $*csclassname.swigToEnum($imcall);$excode + return ret; + } %} + + +// enum SWIGTYPE typemaps +%typemap(ctype) enum SWIGTYPE "int" +%typemap(imtype) enum SWIGTYPE "int" +%typemap(cstype) enum SWIGTYPE "$csclassname" + +%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %} +%typemap(out) enum SWIGTYPE %{ $result = (int)$1; %} + +%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} +%typemap(directorin) enum SWIGTYPE "$input = (int)$1;" +%typemap(csdirectorin) enum SWIGTYPE "$csclassname.swigToEnum($iminput)" +%typemap(csdirectorout) enum SWIGTYPE "$cscall.swigValue" + +%typecheck(SWIG_TYPECHECK_POINTER) enum SWIGTYPE "" + +%typemap(throws, canthrow=1) enum SWIGTYPE +%{ (void)$1; + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, "C++ $1_type exception thrown"); + return $null; %} + +%typemap(csin) enum SWIGTYPE "$csinput.swigValue" +%typemap(csout, excode=SWIGEXCODE) enum SWIGTYPE { + $csclassname ret = $csclassname.swigToEnum($imcall);$excode + return ret; + } + +%typemap(csvarout, excode=SWIGEXCODE2) enum SWIGTYPE %{ + get { + $csclassname ret = $csclassname.swigToEnum($imcall);$excode + return ret; + } %} + +%typemap(csbase) enum SWIGTYPE "" +%typemap(csclassmodifiers) enum SWIGTYPE "public sealed class" +%typemap(cscode) enum SWIGTYPE "" +%typemap(csimports) enum SWIGTYPE "" +%typemap(csinterfaces) enum SWIGTYPE "" + +/* + * The swigToEnum method is used to find the C# enum from a C++ enum integer value. The default one here takes + * advantage of the fact that most enums do not have initial values specified, so the lookup is fast. If initial + * values are specified then a lengthy linear search through all possible enums might occur. Specific typemaps could be + * written to possibly optimise this lookup by taking advantage of characteristics peculiar to the targeted enum. + * The special variable, $enumvalues, is replaced with a comma separated list of all the enum values. + */ +%typemap(csbody) enum SWIGTYPE %{ + public readonly int swigValue; + + public static $csclassname swigToEnum(int swigValue) { + if (swigValue < swigValues.Length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.Length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new global::System.ArgumentOutOfRangeException("No enum $csclassname with value " + swigValue); + } + + public override string ToString() { + return swigName; + } + + private $csclassname(string swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private $csclassname(string swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue+1; + } + + private $csclassname(string swigName, $csclassname swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue+1; + } + + private static $csclassname[] swigValues = { $enumvalues }; + private static int swigNext = 0; + private readonly string swigName; +%} + +%csenum(typesafe); + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_array.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_array.i new file mode 100644 index 00000000..a4f0f964 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_array.i @@ -0,0 +1,227 @@ +/* ----------------------------------------------------------------------------- + * std_array.i + * + * SWIG typemaps for std::array + * C# implementation + * The C# wrapper is made to look and feel like a C# System.Collections.Generic.IReadOnlyList<> collection. + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +#include +%} + +%include + + +%define SWIG_STD_ARRAY_INTERNAL(T, N) +%typemap(csinterfaces) std::array< T, N > "global::System.IDisposable, global::System.Collections.IEnumerable\n , global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)>\n"; +%proxycode %{ + public $csclassname(global::System.Collections.ICollection c) : this() { + if (c == null) + throw new global::System.ArgumentNullException("c"); + int end = global::System.Math.Min(this.Count, c.Count); + int i = 0; + foreach ($typemap(cstype, T) elem in c) { + if (i >= end) + break; + this[i++] = elem; + } + } + + public int Count { + get { + return (int)size(); + } + } + + public $typemap(cstype, T) this[int index] { + get { + return getitem(index); + } + set { + setitem(index, value); + } + } + + public bool IsEmpty { + get { + return empty(); + } + } + + public void CopyTo($typemap(cstype, T)[] array) + { + CopyTo(0, array, 0, this.Count); + } + + public void CopyTo($typemap(cstype, T)[] array, int arrayIndex) + { + CopyTo(0, array, arrayIndex, this.Count); + } + + public void CopyTo(int index, $typemap(cstype, T)[] array, int arrayIndex, int count) + { + if (array == null) + throw new global::System.ArgumentNullException("array"); + if (index < 0) + throw new global::System.ArgumentOutOfRangeException("index", "Value is less than zero"); + if (arrayIndex < 0) + throw new global::System.ArgumentOutOfRangeException("arrayIndex", "Value is less than zero"); + if (count < 0) + throw new global::System.ArgumentOutOfRangeException("count", "Value is less than zero"); + if (array.Rank > 1) + throw new global::System.ArgumentException("Multi dimensional array.", "array"); + if (index+count > this.Count || arrayIndex+count > array.Length) + throw new global::System.ArgumentException("Number of elements to copy is too large."); + for (int i=0; i global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)>.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + global::System.Collections.IEnumerator global::System.Collections.IEnumerable.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + public $csclassnameEnumerator GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + // Type-safe enumerator + /// Note that the IEnumerator documentation requires an InvalidOperationException to be thrown + /// whenever the collection is modified. This has been done for changes in the size of the + /// collection but not when one of the elements of the collection is modified as it is a bit + /// tricky to detect unmanaged code that modifies the collection under our feet. + public sealed class $csclassnameEnumerator : global::System.Collections.IEnumerator + , global::System.Collections.Generic.IEnumerator<$typemap(cstype, T)> + { + private $csclassname collectionRef; + private int currentIndex; + private object currentObject; + private int currentSize; + + public $csclassnameEnumerator($csclassname collection) { + collectionRef = collection; + currentIndex = -1; + currentObject = null; + currentSize = collectionRef.Count; + } + + // Type-safe iterator Current + public $typemap(cstype, T) Current { + get { + if (currentIndex == -1) + throw new global::System.InvalidOperationException("Enumeration not started."); + if (currentIndex > currentSize - 1) + throw new global::System.InvalidOperationException("Enumeration finished."); + if (currentObject == null) + throw new global::System.InvalidOperationException("Collection modified."); + return ($typemap(cstype, T))currentObject; + } + } + + // Type-unsafe IEnumerator.Current + object global::System.Collections.IEnumerator.Current { + get { + return Current; + } + } + + public bool MoveNext() { + int size = collectionRef.Count; + bool moveOkay = (currentIndex+1 < size) && (size == currentSize); + if (moveOkay) { + currentIndex++; + currentObject = collectionRef[currentIndex]; + } else { + currentObject = null; + } + return moveOkay; + } + + public void Reset() { + currentIndex = -1; + currentObject = null; + if (collectionRef.Count != currentSize) { + throw new global::System.InvalidOperationException("Collection modified."); + } + } + + public void Dispose() { + currentIndex = -1; + currentObject = null; + } + } +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + array(); + array(const array &other); + + size_type size() const; + bool empty() const; + + %rename(Fill) fill; + void fill(const value_type& value); + + %rename(Swap) swap; + void swap(array& other); + + %extend { + T getitemcopy(int index) throw (std::out_of_range) { + if (index>=0 && index<(int)$self->size()) + return (*$self)[index]; + else + throw std::out_of_range("index"); + } + const_reference getitem(int index) throw (std::out_of_range) { + if (index>=0 && index<(int)$self->size()) + return (*$self)[index]; + else + throw std::out_of_range("index"); + } + void setitem(int index, const_reference val) throw (std::out_of_range) { + if (index>=0 && index<(int)$self->size()) + (*$self)[index] = val; + else + throw std::out_of_range("index"); + } + void Reverse() { + std::reverse($self->begin(), $self->end()); + } + void Reverse(int index, int count) throw (std::out_of_range, std::invalid_argument) { + if (index < 0) + throw std::out_of_range("index"); + if (count < 0) + throw std::out_of_range("count"); + if (index >= (int)$self->size()+1 || index+count > (int)$self->size()) + throw std::invalid_argument("invalid range"); + std::reverse($self->begin()+index, $self->begin()+index+count); + } + } +%enddef + + +%csmethodmodifiers std::array::empty "private" +%csmethodmodifiers std::array::getitemcopy "private" +%csmethodmodifiers std::array::getitem "private" +%csmethodmodifiers std::array::setitem "private" +%csmethodmodifiers std::array::size "private" + +namespace std { + template class array { + SWIG_STD_ARRAY_INTERNAL(T, N) + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_auto_ptr.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_auto_ptr.i new file mode 100644 index 00000000..d7e5f167 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_auto_ptr.i @@ -0,0 +1,25 @@ +/* + The typemaps here allow to handle functions returning std::auto_ptr<>, + which is the most common use of this type. If you have functions taking it + as parameter, these typemaps can't be used for them and you need to do + something else (e.g. use shared_ptr<> which SWIG supports fully). + */ + +%define %auto_ptr(TYPE) +%typemap (ctype) std::auto_ptr "void *" +%typemap (imtype, out="System.IntPtr") std::auto_ptr "HandleRef" +%typemap (cstype) std::auto_ptr "$typemap(cstype, TYPE)" +%typemap (out) std::auto_ptr %{ + $result = (void *)$1.release(); +%} +%typemap(csout, excode=SWIGEXCODE) std::auto_ptr { + System.IntPtr cPtr = $imcall; + $typemap(cstype, TYPE) ret = (cPtr == System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode + return ret; + } +%template() std::auto_ptr; +%enddef + +namespace std { + template class auto_ptr {}; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_common.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_common.i new file mode 100644 index 00000000..cee11e8c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_common.i @@ -0,0 +1,5 @@ +%include + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_complex.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_complex.i new file mode 100644 index 00000000..6a0cc545 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_complex.i @@ -0,0 +1,95 @@ +/* ----------------------------------------------------------------------------- + * std_complex.i + * + * Typemaps for handling std::complex and std::complex as a .NET + * System.Numerics.Complex type. Requires .NET 4 minimum. + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +%fragment("SwigSystemNumericsComplex", "header") { +extern "C" { +// Identical to the layout of System.Numerics.Complex, but does assume that it is +// LayoutKind.Sequential on the managed side +struct SwigSystemNumericsComplex { + double real; + double imag; +}; +} + +SWIGINTERN SwigSystemNumericsComplex SwigCreateSystemNumericsComplex(double real, double imag) { + SwigSystemNumericsComplex cpx; + cpx.real = real; + cpx.imag = imag; + return cpx; +} +} + +namespace std { + +%naturalvar complex; + +template +class complex +{ +public: + complex(T re = T(), T im = T()); +}; + +} + +%define SWIG_COMPLEX_TYPEMAPS(T) +%typemap(ctype, fragment="SwigSystemNumericsComplex") std::complex, const std::complex & "SwigSystemNumericsComplex" +%typemap(imtype) std::complex, const std::complex & "System.Numerics.Complex" +%typemap(cstype) std::complex, const std::complex & "System.Numerics.Complex" + +%typemap(in) std::complex +%{$1 = std::complex< double >($input.real, $input.imag);%} + +%typemap(in) const std::complex &($*1_ltype temp) +%{temp = std::complex< T >((T)$input.real, (T)$input.imag); + $1 = &temp;%} + +%typemap(out, null="SwigCreateSystemNumericsComplex(0.0, 0.0)") std::complex +%{$result = SwigCreateSystemNumericsComplex($1.real(), $1.imag());%} + +%typemap(out, null="SwigCreateSystemNumericsComplex(0.0, 0.0)") const std::complex & +%{$result = SwigCreateSystemNumericsComplex($1->real(), $1->imag());%} + +%typemap(cstype) std::complex, const std::complex & "System.Numerics.Complex" + +%typemap(csin) std::complex, const std::complex & "$csinput" + +%typemap(csout, excode=SWIGEXCODE) std::complex, const std::complex & { + System.Numerics.Complex ret = $imcall;$excode + return ret; + } + +%typemap(csvarin, excode=SWIGEXCODE2) const std::complex & %{ + set { + $imcall;$excode + } + %} + +%typemap(csvarout, excode=SWIGEXCODE2) const std::complex & %{ + get { + System.Numerics.Complex ret = $imcall;$excode + return ret; + } + %} + +%template() std::complex; +%enddef + +// By default, typemaps for both std::complex and std::complex +// are defined, but one of them can be disabled by predefining the +// corresponding symbol before including this file. +#ifndef SWIG_NO_STD_COMPLEX_DOUBLE +SWIG_COMPLEX_TYPEMAPS(double) +#endif + +#ifndef SWIG_NO_STD_COMPLEX_FLOAT +SWIG_COMPLEX_TYPEMAPS(float) +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_except.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_except.i new file mode 100644 index 00000000..c983bd0f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_except.i @@ -0,0 +1,32 @@ +/* ----------------------------------------------------------------------------- + * std_except.i + * + * Typemaps used by the STL wrappers that throw exceptions. These typemaps are + * used when methods are declared with an STL exception specification, such as + * size_t at() const throw (std::out_of_range); + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +%} + +namespace std +{ + %ignore exception; + struct exception {}; +} + +%typemap(throws, canthrow=1) std::bad_cast "SWIG_CSharpSetPendingException(SWIG_CSharpInvalidCastException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::bad_exception "SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::domain_error "SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::exception "SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::invalid_argument "SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentException, $1.what(), \"\");\n return $null;" +%typemap(throws, canthrow=1) std::length_error "SWIG_CSharpSetPendingException(SWIG_CSharpIndexOutOfRangeException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::logic_error "SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::out_of_range "SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, 0, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::overflow_error "SWIG_CSharpSetPendingException(SWIG_CSharpOverflowException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::range_error "SWIG_CSharpSetPendingException(SWIG_CSharpIndexOutOfRangeException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::runtime_error "SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::underflow_error "SWIG_CSharpSetPendingException(SWIG_CSharpOverflowException, $1.what());\n return $null;" + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_list.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_list.i new file mode 100644 index 00000000..674aba0a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_list.i @@ -0,0 +1,519 @@ +/* ----------------------------------------------------------------------------- + * std_list.i + * + * SWIG typemaps for std::list + * C# implementation + * The C# wrapper is made to look and feel like a C# System.Collections.Generic.LinkedList<> collection. + * + * Note that IEnumerable<> is implemented in the proxy class which is useful for using LINQ with + * C++ std::list wrappers. The ICollection<> interface is also implemented to provide enhanced functionality + * whenever we are confident that the required C++ operator== is available. This is the case for when + * T is a primitive type or a pointer. If T does define an operator==, then use the SWIG_STD_LIST_ENHANCED + * macro to obtain this enhanced functionality, for example: + * + * SWIG_STD_LIST_ENHANCED(SomeNamespace::Klass) + * %template(ListKlass) std::list; + * ----------------------------------------------------------------------------- */ + +%include + +// MACRO for use within the std::list class body +%define SWIG_STD_LIST_MINIMUM_INTERNAL(CSINTERFACE, CTYPE...) +%typemap(csinterfaces) std::list< CTYPE > "global::System.IDisposable, global::System.Collections.IEnumerable, global::System.Collections.Generic.CSINTERFACE<$typemap(cstype, CTYPE)>\n"; + +%apply void *VOID_INT_PTR { std::list< CTYPE >::iterator * }; + +%proxycode %{ + public $csclassname(global::System.Collections.IEnumerable c) : this() { + if (c == null) + throw new global::System.ArgumentNullException("c"); + foreach ($typemap(cstype, CTYPE) element in c) { + this.AddLast(element); + } + } + + public bool IsReadOnly { + get { + return false; + } + } + + public int Count { + get { + return (int)size(); + } + } + + public $csclassnameNode First { + get { + if (Count == 0) + return null; + return new $csclassnameNode(getFirstIter(), this); + } + } + + public $csclassnameNode Last { + get { + if (Count == 0) + return null; + return new $csclassnameNode(getLastIter(), this); + } + } + + public $csclassnameNode AddFirst($typemap(cstype, CTYPE) value) { + push_front(value); + return new $csclassnameNode(getFirstIter(), this); + } + + public void AddFirst($csclassnameNode newNode) { + ValidateNewNode(newNode); + if (!newNode.inlist) { + push_front(newNode.csharpvalue); + newNode.iter = getFirstIter(); + newNode.inlist = true; + } else { + throw new global::System.InvalidOperationException("The " + newNode.GetType().Name + " node already belongs to a " + this.GetType().Name); + } + } + + public $csclassnameNode AddLast($typemap(cstype, CTYPE) value) { + push_back(value); + return new $csclassnameNode(getLastIter(), this); + } + + public void AddLast($csclassnameNode newNode) { + ValidateNewNode(newNode); + if (!newNode.inlist) { + push_back(newNode.csharpvalue); + newNode.iter = getLastIter(); + newNode.inlist = true; + } else { + throw new global::System.InvalidOperationException("The " + newNode.GetType().Name + " node already belongs to a " + this.GetType().Name); + } + } + + public $csclassnameNode AddBefore($csclassnameNode node, $typemap(cstype, CTYPE) value) { + return new $csclassnameNode(insertNode(node.iter, value), this); + } + + public void AddBefore($csclassnameNode node, $csclassnameNode newNode) { + ValidateNode(node); + ValidateNewNode(newNode); + if (!newNode.inlist) { + newNode.iter = insertNode(node.iter, newNode.csharpvalue); + newNode.inlist = true; + } else { + throw new global::System.InvalidOperationException("The " + newNode.GetType().Name + " node already belongs to a " + this.GetType().Name); + } + } + + public $csclassnameNode AddAfter($csclassnameNode node, $typemap(cstype, CTYPE) value) { + node = node.Next; + return new $csclassnameNode(insertNode(node.iter, value), this); + } + + public void AddAfter($csclassnameNode node, $csclassnameNode newNode) { + ValidateNode(node); + ValidateNewNode(newNode); + if (!newNode.inlist) { + if (node == this.Last) + AddLast(newNode); + else + { + node = node.Next; + newNode.iter = insertNode(node.iter, newNode.csharpvalue); + newNode.inlist = true; + } + } else { + throw new global::System.InvalidOperationException("The " + newNode.GetType().Name + " node already belongs to a " + this.GetType().Name); + } + } + + public void Add($typemap(cstype, CTYPE) value) { + AddLast(value); + } + + public void Remove($csclassnameNode node) { + ValidateNode(node); + eraseIter(node.iter); + } + + public void CopyTo($typemap(cstype, CTYPE)[] array, int index) { + if (array == null) + throw new global::System.ArgumentNullException("array"); + if (index < 0 || index > array.Length) + throw new global::System.ArgumentOutOfRangeException("index", "Value is less than zero"); + if (array.Rank > 1) + throw new global::System.ArgumentException("Multi dimensional array.", "array"); + $csclassnameNode node = this.First; + if (node != null) { + do { + array[index++] = node.Value; + node = node.Next; + } while (node != null); + } + } + + internal void ValidateNode($csclassnameNode node) { + if (node == null) { + throw new System.ArgumentNullException("node"); + } + if (!node.inlist || node.list != this) { + throw new System.InvalidOperationException("node"); + } + } + + internal void ValidateNewNode($csclassnameNode node) { + if (node == null) { + throw new System.ArgumentNullException("node"); + } + } + + global::System.Collections.Generic.IEnumerator<$typemap(cstype, CTYPE)> global::System.Collections.Generic.IEnumerable<$typemap(cstype, CTYPE)>.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + global::System.Collections.IEnumerator global::System.Collections.IEnumerable.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + public $csclassnameEnumerator GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + public sealed class $csclassnameEnumerator : global::System.Collections.IEnumerator, + global::System.Collections.Generic.IEnumerator<$typemap(cstype, CTYPE)> + { + private $csclassname collectionRef; + private $csclassnameNode currentNode; + private int currentIndex; + private object currentObject; + private int currentSize; + + public $csclassnameEnumerator($csclassname collection) { + collectionRef = collection; + currentNode = collection.First; + currentIndex = 0; + currentObject = null; + currentSize = collectionRef.Count; + } + + // Type-safe iterator Current + public $typemap(cstype, CTYPE) Current { + get { + if (currentIndex == -1) + throw new global::System.InvalidOperationException("Enumeration not started."); + if (currentIndex > currentSize) + throw new global::System.InvalidOperationException("Enumeration finished."); + if (currentObject == null) + throw new global::System.InvalidOperationException("Collection modified."); + return ($typemap(cstype, CTYPE))currentObject; + } + } + + // Type-unsafe IEnumerator.Current + object global::System.Collections.IEnumerator.Current { + get { + return Current; + } + } + + public bool MoveNext() { + if (currentNode == null) { + currentIndex = collectionRef.Count + 1; + return false; + } + ++currentIndex; + currentObject = currentNode.Value; + currentNode = currentNode.Next; + return true; + } + + public void Reset() { + currentIndex = -1; + currentObject = null; + if (collectionRef.Count != currentSize) { + throw new global::System.InvalidOperationException("Collection modified."); + } + } + + public void Dispose() { + currentIndex = -1; + currentObject = null; + } + } + + public sealed class $csclassnameNode { + internal $csclassname list; + internal System.IntPtr iter; + internal $typemap(cstype, CTYPE) csharpvalue; + internal bool inlist; + + public $csclassnameNode($typemap(cstype, CTYPE) value) { + csharpvalue = value; + inlist = false; + } + + internal $csclassnameNode(System.IntPtr iter, $csclassname list) { + this.list = list; + this.iter = iter; + inlist = true; + } + + public $csclassname List { + get { + return this.list; + } + } + + public $csclassnameNode Next { + get { + if (list.getNextIter(iter) == System.IntPtr.Zero) + return null; + return new $csclassnameNode(list.getNextIter(iter), list); + } + } + + public $csclassnameNode Previous { + get { + if (list.getPrevIter(iter) == System.IntPtr.Zero) + return null; + return new $csclassnameNode(list.getPrevIter(iter), list); + } + } + + public $typemap(cstype, CTYPE) Value { + get { + return list.getItem(this.iter); + } + set { + list.setItem(this.iter, value); + } + } + + public static bool operator==($csclassnameNode node1, $csclassnameNode node2) { + if (object.ReferenceEquals(node1, null) && object.ReferenceEquals(node2, null)) + return true; + if (object.ReferenceEquals(node1, null) || object.ReferenceEquals(node2, null)) + return false; + return node1.Equals(node2); + } + + public static bool operator!=($csclassnameNode node1, $csclassnameNode node2) { + if (node1 == null && node2 == null) + return false; + if (node1 == null || node2 == null) + return true; + return !node1.Equals(node2); + } + + public bool Equals($csclassnameNode node) { + if (node == null) + return false; + if (!node.inlist || !this.inlist) + return object.ReferenceEquals(this, node); + return list.equals(this.iter, node.iter); + } + + public override bool Equals(object node) { + return Equals(($csclassnameNode)node); + } + + public override int GetHashCode() { + int hash = 13; + if (inlist) { + hash = (hash * 7) + this.list.GetHashCode(); + hash = (hash * 7) + this.Value.GetHashCode(); + hash = (hash * 7) + this.list.getNextIter(this.iter).GetHashCode(); + hash = (hash * 7) + this.list.getPrevIter(this.iter).GetHashCode(); + } else { + hash = (hash * 7) + this.csharpvalue.GetHashCode(); + } + return hash; + } + + public void Dispose() { + list.deleteIter(this.iter); + } + } +%} + +public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef CTYPE value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + class iterator; + + void push_front(CTYPE const& x); + void push_back(CTYPE const& x); + %rename(RemoveFirst) pop_front; + void pop_front(); + %rename(RemoveLast) pop_back; + void pop_back(); + size_type size() const; + %rename(Clear) clear; + void clear(); + %extend { + const_reference getItem(iterator *iter) { + return **iter; + } + + void setItem(iterator *iter, CTYPE const& val) { + *(*iter) = val; + } + + iterator *getFirstIter() { + if ($self->size() == 0) + return NULL; + return new std::list< CTYPE >::iterator($self->begin()); + } + + iterator *getLastIter() { + if ($self->size() == 0) + return NULL; + return new std::list< CTYPE >::iterator(--$self->end()); + } + + iterator *getNextIter(iterator *iter) { + std::list< CTYPE >::iterator it = *iter; + if (std::distance(it, --$self->end()) != 0) { + std::list< CTYPE >::iterator* itnext = new std::list< CTYPE >::iterator(++it); + return itnext; + } + return NULL; + } + + iterator *getPrevIter(iterator *iter) { + std::list< CTYPE >::iterator it = *iter; + if (std::distance($self->begin(), it) != 0) { + std::list< CTYPE >::iterator* itprev = new std::list< CTYPE >::iterator(--it); + return itprev; + } + return NULL; + } + + iterator *insertNode(iterator *iter, CTYPE const& value) { + std::list< CTYPE >::iterator it = $self->insert(*iter, value); + return new std::list< CTYPE >::iterator(it); + } + + void eraseIter(iterator *iter) { + std::list< CTYPE >::iterator it = *iter; + $self->erase(it); + } + + void deleteIter(iterator *iter) { + delete iter; + } + + bool equals(iterator *iter1, iterator *iter2) { + if (iter1 == NULL && iter2 == NULL) + return true; + std::list< CTYPE >::iterator it1 = *iter1; + std::list< CTYPE >::iterator it2 = *iter2; + return it1 == it2; + } + } +%enddef + +// Extra methods added to the collection class if operator== is defined for the class being wrapped +// The class will then implement ICollection<>, which adds extra functionality +%define SWIG_STD_LIST_EXTRA_OP_EQUALS_EQUALS(CTYPE...) + %extend { + bool Contains(CTYPE const& value) { + return std::find($self->begin(), $self->end(), value) != $self->end(); + } + + bool Remove(CTYPE const& value) { + std::list< CTYPE >::iterator it = std::find($self->begin(), $self->end(), value); + if (it != $self->end()) { + $self->erase(it); + return true; + } + return false; + } + + iterator *find(CTYPE const& value) { + if (std::find($self->begin(), $self->end(), value) != $self->end()) { + return new std::list< CTYPE >::iterator(std::find($self->begin(), $self->end(), value)); + } + return NULL; + } + } +%proxycode %{ + public $csclassnameNode Find($typemap(cstype, CTYPE) value) { + System.IntPtr tmp = find(value); + if (tmp != System.IntPtr.Zero) { + return new $csclassnameNode(tmp, this); + } + return null; + } +%} +%enddef + +// Macros for std::list class specializations/enhancements +%define SWIG_STD_LIST_ENHANCED(CTYPE...) +namespace std { + template<> class list< CTYPE > { + SWIG_STD_LIST_MINIMUM_INTERNAL(ICollection, %arg(CTYPE)); + SWIG_STD_LIST_EXTRA_OP_EQUALS_EQUALS(CTYPE) + }; +} +%enddef + + +%{ +#include +#include +#include +%} + +%csmethodmodifiers std::list::size "private" +%csmethodmodifiers std::list::getItem "private" +%csmethodmodifiers std::list::setItem "private" +%csmethodmodifiers std::list::push_front "private" +%csmethodmodifiers std::list::push_back "private" +%csmethodmodifiers std::list::getFirstIter "private" +%csmethodmodifiers std::list::getNextIter "private" +%csmethodmodifiers std::list::getPrevIter "private" +%csmethodmodifiers std::list::getLastIter "private" +%csmethodmodifiers std::list::find "private" +%csmethodmodifiers std::list::deleteIter "private" + +namespace std { + // primary (unspecialized) class template for std::list + // does not require operator== to be defined + template + class list { + SWIG_STD_LIST_MINIMUM_INTERNAL(IEnumerable, T) + }; + // specialization for pointers + template + class list { + SWIG_STD_LIST_MINIMUM_INTERNAL(ICollection, T *) + SWIG_STD_LIST_EXTRA_OP_EQUALS_EQUALS(T *) + }; +} + +// template specializations for std::list +// these provide extra collections methods as operator== is defined +SWIG_STD_LIST_ENHANCED(char) +SWIG_STD_LIST_ENHANCED(signed char) +SWIG_STD_LIST_ENHANCED(unsigned char) +SWIG_STD_LIST_ENHANCED(short) +SWIG_STD_LIST_ENHANCED(unsigned short) +SWIG_STD_LIST_ENHANCED(int) +SWIG_STD_LIST_ENHANCED(unsigned int) +SWIG_STD_LIST_ENHANCED(long) +SWIG_STD_LIST_ENHANCED(unsigned long) +SWIG_STD_LIST_ENHANCED(long long) +SWIG_STD_LIST_ENHANCED(unsigned long long) +SWIG_STD_LIST_ENHANCED(float) +SWIG_STD_LIST_ENHANCED(double) +SWIG_STD_LIST_ENHANCED(std::string) // also requires a %include +SWIG_STD_LIST_ENHANCED(std::wstring) // also requires a %include diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_map.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_map.i new file mode 100644 index 00000000..e538a03a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_map.i @@ -0,0 +1,312 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map< K, T, C > + * + * The C# wrapper is made to look and feel like a C# System.Collections.Generic.IDictionary<>. + * + * Using this wrapper is fairly simple. For example, to create a map from integers to doubles use: + * + * %include + * %template(MapIntDouble) std::map + * + * Notes: + * 1) IEnumerable<> is implemented in the proxy class which is useful for using LINQ with + * C++ std::map wrappers. + * + * Warning: heavy macro usage in this file. Use swig -E to get a sane view on the real file contents! + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +#include +%} + +/* K is the C++ key type, T is the C++ value type */ +%define SWIG_STD_MAP_INTERNAL(K, T, C) + +%typemap(csinterfaces) std::map< K, T, C > "global::System.IDisposable \n , global::System.Collections.Generic.IDictionary<$typemap(cstype, K), $typemap(cstype, T)>\n"; +%proxycode %{ + + public $typemap(cstype, T) this[$typemap(cstype, K) key] { + get { + return getitem(key); + } + + set { + setitem(key, value); + } + } + + public bool TryGetValue($typemap(cstype, K) key, out $typemap(cstype, T) value) { + if (this.ContainsKey(key)) { + value = this[key]; + return true; + } + value = default($typemap(cstype, T)); + return false; + } + + public int Count { + get { + return (int)size(); + } + } + + public bool IsReadOnly { + get { + return false; + } + } + + public global::System.Collections.Generic.ICollection<$typemap(cstype, K)> Keys { + get { + global::System.Collections.Generic.ICollection<$typemap(cstype, K)> keys = new global::System.Collections.Generic.List<$typemap(cstype, K)>(); + int size = this.Count; + if (size > 0) { + global::System.IntPtr iter = create_iterator_begin(); + for (int i = 0; i < size; i++) { + keys.Add(get_next_key(iter)); + } + destroy_iterator(iter); + } + return keys; + } + } + + public global::System.Collections.Generic.ICollection<$typemap(cstype, T)> Values { + get { + global::System.Collections.Generic.ICollection<$typemap(cstype, T)> vals = new global::System.Collections.Generic.List<$typemap(cstype, T)>(); + foreach (global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)> pair in this) { + vals.Add(pair.Value); + } + return vals; + } + } + + public void Add(global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)> item) { + Add(item.Key, item.Value); + } + + public bool Remove(global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)> item) { + if (Contains(item)) { + return Remove(item.Key); + } else { + return false; + } + } + + public bool Contains(global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)> item) { + if (this[item.Key] == item.Value) { + return true; + } else { + return false; + } + } + + public void CopyTo(global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)>[] array) { + CopyTo(array, 0); + } + + public void CopyTo(global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)>[] array, int arrayIndex) { + if (array == null) + throw new global::System.ArgumentNullException("array"); + if (arrayIndex < 0) + throw new global::System.ArgumentOutOfRangeException("arrayIndex", "Value is less than zero"); + if (array.Rank > 1) + throw new global::System.ArgumentException("Multi dimensional array.", "array"); + if (arrayIndex+this.Count > array.Length) + throw new global::System.ArgumentException("Number of elements to copy is too large."); + + global::System.Collections.Generic.IList<$typemap(cstype, K)> keyList = new global::System.Collections.Generic.List<$typemap(cstype, K)>(this.Keys); + for (int i = 0; i < keyList.Count; i++) { + $typemap(cstype, K) currentKey = keyList[i]; + array.SetValue(new global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)>(currentKey, this[currentKey]), arrayIndex+i); + } + } + + global::System.Collections.Generic.IEnumerator> global::System.Collections.Generic.IEnumerable>.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + global::System.Collections.IEnumerator global::System.Collections.IEnumerable.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + public $csclassnameEnumerator GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + // Type-safe enumerator + /// Note that the IEnumerator documentation requires an InvalidOperationException to be thrown + /// whenever the collection is modified. This has been done for changes in the size of the + /// collection but not when one of the elements of the collection is modified as it is a bit + /// tricky to detect unmanaged code that modifies the collection under our feet. + public sealed class $csclassnameEnumerator : global::System.Collections.IEnumerator, + global::System.Collections.Generic.IEnumerator> + { + private $csclassname collectionRef; + private global::System.Collections.Generic.IList<$typemap(cstype, K)> keyCollection; + private int currentIndex; + private object currentObject; + private int currentSize; + + public $csclassnameEnumerator($csclassname collection) { + collectionRef = collection; + keyCollection = new global::System.Collections.Generic.List<$typemap(cstype, K)>(collection.Keys); + currentIndex = -1; + currentObject = null; + currentSize = collectionRef.Count; + } + + // Type-safe iterator Current + public global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)> Current { + get { + if (currentIndex == -1) + throw new global::System.InvalidOperationException("Enumeration not started."); + if (currentIndex > currentSize - 1) + throw new global::System.InvalidOperationException("Enumeration finished."); + if (currentObject == null) + throw new global::System.InvalidOperationException("Collection modified."); + return (global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)>)currentObject; + } + } + + // Type-unsafe IEnumerator.Current + object global::System.Collections.IEnumerator.Current { + get { + return Current; + } + } + + public bool MoveNext() { + int size = collectionRef.Count; + bool moveOkay = (currentIndex+1 < size) && (size == currentSize); + if (moveOkay) { + currentIndex++; + $typemap(cstype, K) currentKey = keyCollection[currentIndex]; + currentObject = new global::System.Collections.Generic.KeyValuePair<$typemap(cstype, K), $typemap(cstype, T)>(currentKey, collectionRef[currentKey]); + } else { + currentObject = null; + } + return moveOkay; + } + + public void Reset() { + currentIndex = -1; + currentObject = null; + if (collectionRef.Count != currentSize) { + throw new global::System.InvalidOperationException("Collection modified."); + } + } + + public void Dispose() { + currentIndex = -1; + currentObject = null; + } + } + +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + size_type size() const; + bool empty() const; + %rename(Clear) clear; + void clear(); + %extend { + const mapped_type& getitem(const key_type& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator iter = $self->find(key); + if (iter != $self->end()) + return iter->second; + else + throw std::out_of_range("key not found"); + } + + void setitem(const key_type& key, const mapped_type& x) { + (*$self)[key] = x; + } + + bool ContainsKey(const key_type& key) { + std::map< K, T, C >::iterator iter = $self->find(key); + return iter != $self->end(); + } + + void Add(const key_type& key, const mapped_type& value) throw (std::out_of_range) { + std::map< K, T, C >::iterator iter = $self->find(key); + if (iter != $self->end()) + throw std::out_of_range("key already exists"); + $self->insert(std::pair< K, T >(key, value)); + } + + bool Remove(const key_type& key) { + std::map< K, T, C >::iterator iter = $self->find(key); + if (iter != $self->end()) { + $self->erase(iter); + return true; + } + return false; + } + + // create_iterator_begin(), get_next_key() and destroy_iterator work together to provide a collection of keys to C# + %apply void *VOID_INT_PTR { std::map< K, T, C >::iterator *create_iterator_begin } + %apply void *VOID_INT_PTR { std::map< K, T, C >::iterator *swigiterator } + + std::map< K, T, C >::iterator *create_iterator_begin() { + return new std::map< K, T, C >::iterator($self->begin()); + } + + const key_type& get_next_key(std::map< K, T, C >::iterator *swigiterator) { + std::map< K, T, C >::iterator iter = *swigiterator; + (*swigiterator)++; + return (*iter).first; + } + + void destroy_iterator(std::map< K, T, C >::iterator *swigiterator) { + delete swigiterator; + } + } + + +%enddef + +%csmethodmodifiers std::map::size "private" +%csmethodmodifiers std::map::getitem "private" +%csmethodmodifiers std::map::setitem "private" +%csmethodmodifiers std::map::create_iterator_begin "private" +%csmethodmodifiers std::map::get_next_key "private" +%csmethodmodifiers std::map::destroy_iterator "private" + +// Default implementation +namespace std { + template > class map { + SWIG_STD_MAP_INTERNAL(K, T, C) + }; +} + + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_pair.i new file mode 100644 index 00000000..732347db --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_pair.i @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_set.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_set.i new file mode 100644 index 00000000..3b2492e0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_set.i @@ -0,0 +1,311 @@ +/* ----------------------------------------------------------------------------- + * std_set.i + * + * SWIG typemaps for std::set. + * + * Note that ISet<> used here requires .NET 4 or later. + * + * The C# wrapper implements ISet<> interface and shares performance + * characteristics of C# System.Collections.Generic.SortedSet<> class, but + * doesn't provide quite all of its methods. + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +#include +%} + +%csmethodmodifiers std::set::size "private" +%csmethodmodifiers std::set::getitem "private" +%csmethodmodifiers std::set::create_iterator_begin "private" +%csmethodmodifiers std::set::get_next "private" +%csmethodmodifiers std::set::destroy_iterator "private" + +namespace std { + +// TODO: Add support for comparator and allocator template parameters. +template +class set { + +%typemap(csinterfaces) std::set "global::System.IDisposable, global::System.Collections.Generic.ISet<$typemap(cstype, T)>\n"; +%proxycode %{ + void global::System.Collections.Generic.ICollection<$typemap(cstype, T)>.Add(string item) { + ((global::System.Collections.Generic.ISet<$typemap(cstype, T)>)this).Add(item); + } + + public bool TryGetValue($typemap(cstype, T) equalValue, out $typemap(cstype, T) actualValue) { + try { + actualValue = getitem(equalValue); + return true; + } catch { + actualValue = default($typemap(cstype, T)); + return false; + } + } + + public int Count { + get { + return (int)size(); + } + } + + public bool IsReadOnly { + get { + return false; + } + } + + public void CopyTo($typemap(cstype, T)[] array) { + CopyTo(array, 0); + } + + public void CopyTo($typemap(cstype, T)[] array, int arrayIndex) { + if (array == null) + throw new global::System.ArgumentNullException("array"); + if (arrayIndex < 0) + throw new global::System.ArgumentOutOfRangeException("arrayIndex", "Value is less than zero"); + if (array.Rank > 1) + throw new global::System.ArgumentException("Multi dimensional array.", "array"); + if (arrayIndex+this.Count > array.Length) + throw new global::System.ArgumentException("Number of elements to copy is too large."); + + foreach ($typemap(cstype, T) item in this) { + array.SetValue(item, arrayIndex++); + } + } + + public void ExceptWith(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + foreach ($typemap(cstype, T) item in other) { + Remove(item); + } + } + + public void IntersectWith(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + $csclassname old = new $csclassname(this); + + Clear(); + foreach ($typemap(cstype, T) item in other) { + if (old.Contains(item)) + Add(item); + } + } + + private static int count_enum(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + int count = 0; + foreach ($typemap(cstype, T) item in other) { + count++; + } + + return count; + } + + public bool IsProperSubsetOf(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + return IsSubsetOf(other) && Count < count_enum(other); + } + + public bool IsProperSupersetOf(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + return IsSupersetOf(other) && Count > count_enum(other); + } + + public bool IsSubsetOf(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + int countContained = 0; + + foreach ($typemap(cstype, T) item in other) { + if (Contains(item)) + countContained++; + } + + return countContained == Count; + } + + public bool IsSupersetOf(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + foreach ($typemap(cstype, T) item in other) { + if (!Contains(item)) + return false; + } + + return true; + } + + public bool Overlaps(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + foreach ($typemap(cstype, T) item in other) { + if (Contains(item)) + return true; + } + + return false; + } + + public bool SetEquals(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + return IsSupersetOf(other) && Count == count_enum(other); + } + + public void SymmetricExceptWith(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + foreach ($typemap(cstype, T) item in other) { + if (!Remove(item)) + Add(item); + } + } + + public void UnionWith(global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)> other) { + foreach ($typemap(cstype, T) item in other) { + Add(item); + } + } + + private global::System.Collections.Generic.ICollection<$typemap(cstype, T)> Items { + get { + global::System.Collections.Generic.ICollection<$typemap(cstype, T)> items = new global::System.Collections.Generic.List<$typemap(cstype, T)>(); + int size = this.Count; + if (size > 0) { + global::System.IntPtr iter = create_iterator_begin(); + for (int i = 0; i < size; i++) { + items.Add(get_next(iter)); + } + destroy_iterator(iter); + } + return items; + } + } + + global::System.Collections.Generic.IEnumerator<$typemap(cstype, T)> global::System.Collections.Generic.IEnumerable<$typemap(cstype, T)>.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + global::System.Collections.IEnumerator global::System.Collections.IEnumerable.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + public $csclassnameEnumerator GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + // Type-safe enumerator + /// Note that the IEnumerator documentation requires an InvalidOperationException to be thrown + /// whenever the collection is modified. This has been done for changes in the size of the + /// collection but not when one of the elements of the collection is modified as it is a bit + /// tricky to detect unmanaged code that modifies the collection under our feet. + public sealed class $csclassnameEnumerator : global::System.Collections.IEnumerator, + global::System.Collections.Generic.IEnumerator<$typemap(cstype, T)> + { + private $csclassname collectionRef; + private global::System.Collections.Generic.IList<$typemap(cstype, T)> ItemsCollection; + private int currentIndex; + private $typemap(cstype, T) currentObject; + private int currentSize; + + public $csclassnameEnumerator($csclassname collection) { + collectionRef = collection; + ItemsCollection = new global::System.Collections.Generic.List<$typemap(cstype, T)>(collection.Items); + currentIndex = -1; + currentObject = null; + currentSize = collectionRef.Count; + } + + // Type-safe iterator Current + public $typemap(cstype, T) Current { + get { + if (currentIndex == -1) + throw new global::System.InvalidOperationException("Enumeration not started."); + if (currentIndex > currentSize - 1) + throw new global::System.InvalidOperationException("Enumeration finished."); + if (currentObject == null) + throw new global::System.InvalidOperationException("Collection modified."); + return currentObject; + } + } + + // Type-unsafe IEnumerator.Current + object global::System.Collections.IEnumerator.Current { + get { + return Current; + } + } + + public bool MoveNext() { + int size = collectionRef.Count; + bool moveOkay = (currentIndex+1 < size) && (size == currentSize); + if (moveOkay) { + currentIndex++; + currentObject = ItemsCollection[currentIndex]; + } else { + currentObject = null; + } + return moveOkay; + } + + public void Reset() { + currentIndex = -1; + currentObject = null; + if (collectionRef.Count != currentSize) { + throw new global::System.InvalidOperationException("Collection modified."); + } + } + + public void Dispose() { + currentIndex = -1; + currentObject = null; + } + } + +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T key_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + set(); + set(const set& other); + size_type size() const; + bool empty() const; + %rename(Clear) clear; + void clear(); + %extend { + bool Add(const value_type& item) { + return $self->insert(item).second; + } + + bool Contains(const value_type& item) { + return $self->count(item) != 0; + } + + bool Remove(const value_type& item) { + return $self->erase(item) != 0; + } + + const value_type& getitem(const value_type& item) throw (std::out_of_range) { + std::set::iterator iter = $self->find(item); + if (iter == $self->end()) + throw std::out_of_range("item not found"); + + return *iter; + } + + // create_iterator_begin(), get_next() and destroy_iterator work together to provide a collection of items to C# + %apply void *VOID_INT_PTR { std::set::iterator *create_iterator_begin } + %apply void *VOID_INT_PTR { std::set::iterator *swigiterator } + + std::set::iterator *create_iterator_begin() { + return new std::set::iterator($self->begin()); + } + + const key_type& get_next(std::set::iterator *swigiterator) { + std::set::iterator iter = *swigiterator; + (*swigiterator)++; + return *iter; + } + + void destroy_iterator(std::set::iterator *swigiterator) { + delete swigiterator; + } + } +}; + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_shared_ptr.i new file mode 100644 index 00000000..df873679 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_shared_ptr.i @@ -0,0 +1,2 @@ +#define SWIG_SHARED_PTR_NAMESPACE std +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_string.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_string.i new file mode 100644 index 00000000..5f8fa44c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_string.i @@ -0,0 +1,111 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * Typemaps for std::string and const std::string& + * These are mapped to a C# String and are passed around by value. + * + * To use non-const std::string references use the following %apply. Note + * that they are passed by value. + * %apply const std::string & {std::string &}; + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +namespace std { + +%naturalvar string; + +class string; + +// string +%typemap(ctype) string "char *" +%typemap(imtype) string "string" +%typemap(cstype) string "string" + +%typemap(csdirectorin) string "$iminput" +%typemap(csdirectorout) string "$cscall" + +%typemap(in, canthrow=1) string +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null string", 0); + return $null; + } + $1.assign($input); %} +%typemap(out) string %{ $result = SWIG_csharp_string_callback($1.c_str()); %} + +%typemap(directorout, canthrow=1) string +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null string", 0); + return $null; + } + $result.assign($input); %} + +%typemap(directorin) string %{ $input = SWIG_csharp_string_callback($1.c_str()); %} + +%typemap(csin) string "$csinput" +%typemap(csout, excode=SWIGEXCODE) string { + string ret = $imcall;$excode + return ret; + } + +%typemap(typecheck) string = char *; + +%typemap(throws, canthrow=1) string +%{ SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, $1.c_str()); + return $null; %} + +// const string & +%typemap(ctype) const string & "char *" +%typemap(imtype) const string & "string" +%typemap(cstype) const string & "string" + +%typemap(csdirectorin) const string & "$iminput" +%typemap(csdirectorout) const string & "$cscall" + +%typemap(in, canthrow=1) const string & +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null string", 0); + return $null; + } + $*1_ltype $1_str($input); + $1 = &$1_str; %} +%typemap(out) const string & %{ $result = SWIG_csharp_string_callback($1->c_str()); %} + +%typemap(csin) const string & "$csinput" +%typemap(csout, excode=SWIGEXCODE) const string & { + string ret = $imcall;$excode + return ret; + } + +%typemap(directorout, canthrow=1, warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const string & +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null string", 0); + return $null; + } + /* possible thread/reentrant code problem */ + static $*1_ltype $1_str; + $1_str = $input; + $result = &$1_str; %} + +%typemap(directorin) const string & %{ $input = SWIG_csharp_string_callback($1.c_str()); %} + +%typemap(csvarin, excode=SWIGEXCODE2) const string & %{ + set { + $imcall;$excode + } %} +%typemap(csvarout, excode=SWIGEXCODE2) const string & %{ + get { + string ret = $imcall;$excode + return ret; + } %} + +%typemap(typecheck) const string & = char *; + +%typemap(throws, canthrow=1) const string & +%{ SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, $1.c_str()); + return $null; %} + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_vector.i new file mode 100644 index 00000000..e2811290 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_vector.i @@ -0,0 +1,418 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * + * SWIG typemaps for std::vector + * C# implementation + * The C# wrapper is made to look and feel like a C# System.Collections.Generic.List<> collection. + * + * Note that IEnumerable<> is implemented in the proxy class which is useful for using LINQ with + * C++ std::vector wrappers. The IList<> interface is also implemented to provide enhanced functionality + * whenever we are confident that the required C++ operator== is available. This is the case for when + * T is a primitive type or a pointer. If T does define an operator==, then use the SWIG_STD_VECTOR_ENHANCED + * macro to obtain this enhanced functionality, for example: + * + * SWIG_STD_VECTOR_ENHANCED(SomeNamespace::Klass) + * %template(VectKlass) std::vector; + * ----------------------------------------------------------------------------- */ + +%include + +// MACRO for use within the std::vector class body +%define SWIG_STD_VECTOR_MINIMUM_INTERNAL(CSINTERFACE, CONST_REFERENCE, CTYPE...) +%typemap(csinterfaces) std::vector< CTYPE > "global::System.IDisposable, global::System.Collections.IEnumerable, global::System.Collections.Generic.CSINTERFACE<$typemap(cstype, CTYPE)>\n"; +%proxycode %{ + public $csclassname(global::System.Collections.IEnumerable c) : this() { + if (c == null) + throw new global::System.ArgumentNullException("c"); + foreach ($typemap(cstype, CTYPE) element in c) { + this.Add(element); + } + } + + public $csclassname(global::System.Collections.Generic.IEnumerable<$typemap(cstype, CTYPE)> c) : this() { + if (c == null) + throw new global::System.ArgumentNullException("c"); + foreach ($typemap(cstype, CTYPE) element in c) { + this.Add(element); + } + } + + public bool IsFixedSize { + get { + return false; + } + } + + public bool IsReadOnly { + get { + return false; + } + } + + public $typemap(cstype, CTYPE) this[int index] { + get { + return getitem(index); + } + set { + setitem(index, value); + } + } + + public int Capacity { + get { + return (int)capacity(); + } + set { + if (value < size()) + throw new global::System.ArgumentOutOfRangeException("Capacity"); + reserve(($typemap(cstype, size_t))value); + } + } + + public int Count { + get { + return (int)size(); + } + } + + public bool IsSynchronized { + get { + return false; + } + } + + public void CopyTo($typemap(cstype, CTYPE)[] array) + { + CopyTo(0, array, 0, this.Count); + } + + public void CopyTo($typemap(cstype, CTYPE)[] array, int arrayIndex) + { + CopyTo(0, array, arrayIndex, this.Count); + } + + public void CopyTo(int index, $typemap(cstype, CTYPE)[] array, int arrayIndex, int count) + { + if (array == null) + throw new global::System.ArgumentNullException("array"); + if (index < 0) + throw new global::System.ArgumentOutOfRangeException("index", "Value is less than zero"); + if (arrayIndex < 0) + throw new global::System.ArgumentOutOfRangeException("arrayIndex", "Value is less than zero"); + if (count < 0) + throw new global::System.ArgumentOutOfRangeException("count", "Value is less than zero"); + if (array.Rank > 1) + throw new global::System.ArgumentException("Multi dimensional array.", "array"); + if (index+count > this.Count || arrayIndex+count > array.Length) + throw new global::System.ArgumentException("Number of elements to copy is too large."); + for (int i=0; i global::System.Collections.Generic.IEnumerable<$typemap(cstype, CTYPE)>.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + global::System.Collections.IEnumerator global::System.Collections.IEnumerable.GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + public $csclassnameEnumerator GetEnumerator() { + return new $csclassnameEnumerator(this); + } + + // Type-safe enumerator + /// Note that the IEnumerator documentation requires an InvalidOperationException to be thrown + /// whenever the collection is modified. This has been done for changes in the size of the + /// collection but not when one of the elements of the collection is modified as it is a bit + /// tricky to detect unmanaged code that modifies the collection under our feet. + public sealed class $csclassnameEnumerator : global::System.Collections.IEnumerator + , global::System.Collections.Generic.IEnumerator<$typemap(cstype, CTYPE)> + { + private $csclassname collectionRef; + private int currentIndex; + private object currentObject; + private int currentSize; + + public $csclassnameEnumerator($csclassname collection) { + collectionRef = collection; + currentIndex = -1; + currentObject = null; + currentSize = collectionRef.Count; + } + + // Type-safe iterator Current + public $typemap(cstype, CTYPE) Current { + get { + if (currentIndex == -1) + throw new global::System.InvalidOperationException("Enumeration not started."); + if (currentIndex > currentSize - 1) + throw new global::System.InvalidOperationException("Enumeration finished."); + if (currentObject == null) + throw new global::System.InvalidOperationException("Collection modified."); + return ($typemap(cstype, CTYPE))currentObject; + } + } + + // Type-unsafe IEnumerator.Current + object global::System.Collections.IEnumerator.Current { + get { + return Current; + } + } + + public bool MoveNext() { + int size = collectionRef.Count; + bool moveOkay = (currentIndex+1 < size) && (size == currentSize); + if (moveOkay) { + currentIndex++; + currentObject = collectionRef[currentIndex]; + } else { + currentObject = null; + } + return moveOkay; + } + + public void Reset() { + currentIndex = -1; + currentObject = null; + if (collectionRef.Count != currentSize) { + throw new global::System.InvalidOperationException("Collection modified."); + } + } + + public void Dispose() { + currentIndex = -1; + currentObject = null; + } + } +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef CTYPE value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef CONST_REFERENCE const_reference; + + %rename(Clear) clear; + void clear(); + %rename(Add) push_back; + void push_back(CTYPE const& x); + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + %newobject GetRange(int index, int count); + %newobject Repeat(CTYPE const& value, int count); + + vector(); + vector(const vector &other); + + %extend { + vector(int capacity) throw (std::out_of_range) { + std::vector< CTYPE >* pv = 0; + if (capacity >= 0) { + pv = new std::vector< CTYPE >(); + pv->reserve(capacity); + } else { + throw std::out_of_range("capacity"); + } + return pv; + } + CTYPE getitemcopy(int index) throw (std::out_of_range) { + if (index>=0 && index<(int)$self->size()) + return (*$self)[index]; + else + throw std::out_of_range("index"); + } + CONST_REFERENCE getitem(int index) throw (std::out_of_range) { + if (index>=0 && index<(int)$self->size()) + return (*$self)[index]; + else + throw std::out_of_range("index"); + } + void setitem(int index, CTYPE const& val) throw (std::out_of_range) { + if (index>=0 && index<(int)$self->size()) + (*$self)[index] = val; + else + throw std::out_of_range("index"); + } + // Takes a deep copy of the elements unlike ArrayList.AddRange + void AddRange(const std::vector< CTYPE >& values) { + $self->insert($self->end(), values.begin(), values.end()); + } + // Takes a deep copy of the elements unlike ArrayList.GetRange + std::vector< CTYPE > *GetRange(int index, int count) throw (std::out_of_range, std::invalid_argument) { + if (index < 0) + throw std::out_of_range("index"); + if (count < 0) + throw std::out_of_range("count"); + if (index >= (int)$self->size()+1 || index+count > (int)$self->size()) + throw std::invalid_argument("invalid range"); + return new std::vector< CTYPE >($self->begin()+index, $self->begin()+index+count); + } + void Insert(int index, CTYPE const& x) throw (std::out_of_range) { + if (index>=0 && index<(int)$self->size()+1) + $self->insert($self->begin()+index, x); + else + throw std::out_of_range("index"); + } + // Takes a deep copy of the elements unlike ArrayList.InsertRange + void InsertRange(int index, const std::vector< CTYPE >& values) throw (std::out_of_range) { + if (index>=0 && index<(int)$self->size()+1) + $self->insert($self->begin()+index, values.begin(), values.end()); + else + throw std::out_of_range("index"); + } + void RemoveAt(int index) throw (std::out_of_range) { + if (index>=0 && index<(int)$self->size()) + $self->erase($self->begin() + index); + else + throw std::out_of_range("index"); + } + void RemoveRange(int index, int count) throw (std::out_of_range, std::invalid_argument) { + if (index < 0) + throw std::out_of_range("index"); + if (count < 0) + throw std::out_of_range("count"); + if (index >= (int)$self->size()+1 || index+count > (int)$self->size()) + throw std::invalid_argument("invalid range"); + $self->erase($self->begin()+index, $self->begin()+index+count); + } + static std::vector< CTYPE > *Repeat(CTYPE const& value, int count) throw (std::out_of_range) { + if (count < 0) + throw std::out_of_range("count"); + return new std::vector< CTYPE >(count, value); + } + void Reverse() { + std::reverse($self->begin(), $self->end()); + } + void Reverse(int index, int count) throw (std::out_of_range, std::invalid_argument) { + if (index < 0) + throw std::out_of_range("index"); + if (count < 0) + throw std::out_of_range("count"); + if (index >= (int)$self->size()+1 || index+count > (int)$self->size()) + throw std::invalid_argument("invalid range"); + std::reverse($self->begin()+index, $self->begin()+index+count); + } + // Takes a deep copy of the elements unlike ArrayList.SetRange + void SetRange(int index, const std::vector< CTYPE >& values) throw (std::out_of_range) { + if (index < 0) + throw std::out_of_range("index"); + if (index+values.size() > $self->size()) + throw std::out_of_range("index"); + std::copy(values.begin(), values.end(), $self->begin()+index); + } + } +%enddef + +// Extra methods added to the collection class if operator== is defined for the class being wrapped +// The class will then implement IList<>, which adds extra functionality +%define SWIG_STD_VECTOR_EXTRA_OP_EQUALS_EQUALS(CTYPE...) + %extend { + bool Contains(CTYPE const& value) { + return std::find($self->begin(), $self->end(), value) != $self->end(); + } + int IndexOf(CTYPE const& value) { + int index = -1; + std::vector< CTYPE >::iterator it = std::find($self->begin(), $self->end(), value); + if (it != $self->end()) + index = (int)(it - $self->begin()); + return index; + } + int LastIndexOf(CTYPE const& value) { + int index = -1; + std::vector< CTYPE >::reverse_iterator rit = std::find($self->rbegin(), $self->rend(), value); + if (rit != $self->rend()) + index = (int)($self->rend() - 1 - rit); + return index; + } + bool Remove(CTYPE const& value) { + std::vector< CTYPE >::iterator it = std::find($self->begin(), $self->end(), value); + if (it != $self->end()) { + $self->erase(it); + return true; + } + return false; + } + } +%enddef + +// Macros for std::vector class specializations/enhancements +%define SWIG_STD_VECTOR_ENHANCED(CTYPE...) +namespace std { + template<> class vector< CTYPE > { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(IList, const value_type&, %arg(CTYPE)) + SWIG_STD_VECTOR_EXTRA_OP_EQUALS_EQUALS(CTYPE) + }; +} +%enddef + +// Legacy macros +%define SWIG_STD_VECTOR_SPECIALIZE(CSTYPE, CTYPE...) +#warning SWIG_STD_VECTOR_SPECIALIZE macro deprecated, please see csharp/std_vector.i and switch to SWIG_STD_VECTOR_ENHANCED +SWIG_STD_VECTOR_ENHANCED(CTYPE) +%enddef + +%define SWIG_STD_VECTOR_SPECIALIZE_MINIMUM(CSTYPE, CTYPE...) +#warning SWIG_STD_VECTOR_SPECIALIZE_MINIMUM macro deprecated, it is no longer required +%enddef + +%{ +#include +#include +#include +%} + +%csmethodmodifiers std::vector::getitemcopy "private" +%csmethodmodifiers std::vector::getitem "private" +%csmethodmodifiers std::vector::setitem "private" +%csmethodmodifiers std::vector::size "private" +%csmethodmodifiers std::vector::capacity "private" +%csmethodmodifiers std::vector::reserve "private" + +namespace std { + // primary (unspecialized) class template for std::vector + // does not require operator== to be defined + template class vector { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(IEnumerable, const value_type&, T) + }; + // specialization for pointers + template class vector { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(IList, const value_type&, T *) + SWIG_STD_VECTOR_EXTRA_OP_EQUALS_EQUALS(T *) + }; + // bool is specialized in the C++ standard - const_reference in particular + template<> class vector { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(IList, bool, bool) + SWIG_STD_VECTOR_EXTRA_OP_EQUALS_EQUALS(bool) + }; +} + +// template specializations for std::vector +// these provide extra collections methods as operator== is defined +SWIG_STD_VECTOR_ENHANCED(char) +SWIG_STD_VECTOR_ENHANCED(signed char) +SWIG_STD_VECTOR_ENHANCED(unsigned char) +SWIG_STD_VECTOR_ENHANCED(short) +SWIG_STD_VECTOR_ENHANCED(unsigned short) +SWIG_STD_VECTOR_ENHANCED(int) +SWIG_STD_VECTOR_ENHANCED(unsigned int) +SWIG_STD_VECTOR_ENHANCED(long) +SWIG_STD_VECTOR_ENHANCED(unsigned long) +SWIG_STD_VECTOR_ENHANCED(long long) +SWIG_STD_VECTOR_ENHANCED(unsigned long long) +SWIG_STD_VECTOR_ENHANCED(float) +SWIG_STD_VECTOR_ENHANCED(double) +SWIG_STD_VECTOR_ENHANCED(std::string) // also requires a %include +SWIG_STD_VECTOR_ENHANCED(std::wstring) // also requires a %include + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/std_wstring.i b/macx64/bin/swig/share/swig/4.0.0/csharp/std_wstring.i new file mode 100644 index 00000000..09bdaaaa --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/std_wstring.i @@ -0,0 +1,114 @@ +/* ----------------------------------------------------------------------------- + * std_wstring.i + * + * Typemaps for std::wstring and const std::wstring& + * These are mapped to a C# String and are passed around by value. + * + * To use non-const std::wstring references use the following %apply. Note + * that they are passed by value. + * %apply const std::wstring & {std::wstring &}; + * ----------------------------------------------------------------------------- */ + +%include + +%{ +#include +%} + +namespace std { + +%naturalvar wstring; + +class wstring; + +// wstring +%typemap(ctype, out="void *") wstring "wchar_t *" +%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]") wstring "string" +%typemap(cstype) wstring "string" +%typemap(csdirectorin) wstring "$iminput" +%typemap(csdirectorout) wstring "$cscall" + +%typemap(in, canthrow=1) wstring +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); + return $null; + } + $1.assign($input); %} +%typemap(out) wstring %{ $result = SWIG_csharp_wstring_callback($1.c_str()); %} + +%typemap(directorout, canthrow=1) wstring +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); + return $null; + } + $result.assign($input); %} + +%typemap(directorin) wstring %{ $input = SWIG_csharp_wstring_callback($1.c_str()); %} + +%typemap(csin) wstring "$csinput" +%typemap(csout, excode=SWIGEXCODE) wstring { + string ret = $imcall;$excode + return ret; + } + +%typemap(typecheck) wstring = wchar_t *; + +%typemap(throws, canthrow=1) wstring +%{ std::string message($1.begin(), $1.end()); + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, message.c_str()); + return $null; %} + +// const wstring & +%typemap(ctype, out="void *") const wstring & "wchar_t *" +%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]") const wstring & "string" +%typemap(cstype) const wstring & "string" + +%typemap(csdirectorin) const wstring & "$iminput" +%typemap(csdirectorout) const wstring & "$cscall" + +%typemap(in, canthrow=1) const wstring & +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); + return $null; + } + std::wstring $1_str($input); + $1 = &$1_str; %} +%typemap(out) const wstring & %{ $result = SWIG_csharp_wstring_callback($1->c_str()); %} + +%typemap(csin) const wstring & "$csinput" +%typemap(csout, excode=SWIGEXCODE) const wstring & { + string ret = $imcall;$excode + return ret; + } + +%typemap(directorout, canthrow=1, warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const wstring & +%{ if (!$input) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); + return $null; + } + /* possible thread/reentrant code problem */ + static std::wstring $1_str; + $1_str = $input; + $result = &$1_str; %} + +%typemap(directorin) const wstring & %{ $input = SWIG_csharp_wstring_callback($1.c_str()); %} + +%typemap(csvarin, excode=SWIGEXCODE2) const wstring & %{ + set { + $imcall;$excode + } %} +%typemap(csvarout, excode=SWIGEXCODE2) const wstring & %{ + get { + string ret = $imcall;$excode + return ret; + } %} + +%typemap(typecheck) const wstring & = wchar_t *; + +%typemap(throws, canthrow=1) const wstring & +%{ std::string message($1.begin(), $1.end()); + SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, message.c_str()); + return $null; %} + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/stl.i b/macx64/bin/swig/share/swig/4.0.0/csharp/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/swiginterface.i b/macx64/bin/swig/share/swig/4.0.0/csharp/swiginterface.i new file mode 100644 index 00000000..e5bfd23a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/swiginterface.i @@ -0,0 +1,63 @@ +/* ----------------------------------------------------------------------------- + * swiginterface.i + * + * SWIG interface feature and typemaps implementation providing: + * %interface + * %interface_impl + * %interface_custom + * ----------------------------------------------------------------------------- */ + +%define INTERFACE_TYPEMAPS(CTYPE...) +%typemap(cstype) CTYPE "$&csinterfacename" +%typemap(cstype) CTYPE *, CTYPE [], CTYPE & "$csinterfacename" +%typemap(cstype) CTYPE *const& "$*csinterfacename" +%typemap(csin) CTYPE, CTYPE & "$csinput.GetInterfaceCPtr()" +%typemap(csin) CTYPE *, CTYPE *const&, CTYPE [] "$csinput == null ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : $csinput.GetInterfaceCPtr()" +%typemap(csout, excode=SWIGEXCODE) CTYPE { + $&csclassname ret = new $&csclassname($imcall, true);$excode + return ($&csinterfacename)ret; + } +%typemap(csout, excode=SWIGEXCODE) CTYPE & { + $csclassname ret = new $csclassname($imcall, $owner);$excode + return ($csinterfacename)ret; + } +%typemap(csout, excode=SWIGEXCODE) CTYPE *, CTYPE [] { + global::System.IntPtr cPtr = $imcall; + $csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $csclassname(cPtr, $owner);$excode + return ($csinterfacename)ret; + } +%typemap(csout, excode=SWIGEXCODE) CTYPE *const& { + global::System.IntPtr cPtr = $imcall; + $*csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $*csclassname(cPtr, $owner);$excode + return ($*csinterfacename)ret; + } +%typemap(csdirectorin) CTYPE "($&csinterfacename)new $&csclassname($iminput, true)" +%typemap(csdirectorin) CTYPE & "($csinterfacename)new $csclassname($iminput, false)" +%typemap(csdirectorin) CTYPE *, CTYPE [] "($iminput == global::System.IntPtr.Zero) ? null : ($csinterfacename)new $csclassname($iminput, false)" +%typemap(csdirectorin) CTYPE *const& "($iminput == global::System.IntPtr.Zero) ? null : ($*csinterfacename)new $*csclassname($iminput, false)" +%typemap(csdirectorout) CTYPE, CTYPE *, CTYPE *const&, CTYPE [], CTYPE & "$cscall.GetInterfaceCPtr()" +%typemap(csinterfacecode, declaration=" [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]\n global::System.Runtime.InteropServices.HandleRef GetInterfaceCPtr();\n", cptrmethod="$interfacename_GetInterfaceCPtr") CTYPE %{ + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + global::System.Runtime.InteropServices.HandleRef $interfacename.GetInterfaceCPtr() { + return new global::System.Runtime.InteropServices.HandleRef(this, $imclassname.$csclazzname$interfacename_GetInterfaceCPtr(swigCPtr.Handle)); + } +%} +%enddef + +%define %interface(CTYPE...) +%feature("interface", name="%sSwigInterface") CTYPE; +INTERFACE_TYPEMAPS(CTYPE) +%enddef + +%define %interface_impl(CTYPE...) +%rename("%sSwigImpl") CTYPE; +%feature("interface", name="%(rstrip:[SwigImpl])s") CTYPE; +INTERFACE_TYPEMAPS(CTYPE) +%enddef + +%define %interface_custom(PROXY, INTERFACE, CTYPE...) +%rename(PROXY) CTYPE; +%feature("interface", name=INTERFACE) CTYPE; +INTERFACE_TYPEMAPS(CTYPE) +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/swigtype_inout.i b/macx64/bin/swig/share/swig/4.0.0/csharp/swigtype_inout.i new file mode 100644 index 00000000..e7312e8f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/swigtype_inout.i @@ -0,0 +1,34 @@ +/* ----------------------------------------------------------------------------- + * swigtype_inout.i + * + * Pointer pointer and pointer reference handling typemap library for non-primitive types + * + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointer references and pointer to pointers. + * + * These are named typemaps (OUTPUT) and can be used like any named typemap. + * Alternatively they can be made the default by using %apply: + * %apply SWIGTYPE *& OUTPUT { SWIGTYPE *& } + * ----------------------------------------------------------------------------- */ + +/* + * OUTPUT typemaps. Example usage wrapping: + * + * void f(XXX *& x) { x = new XXX(111); } + * + * would be: + * + * XXX x = null; + * f(out x); + * // use x + * x.Dispose(); // manually clear memory or otherwise leave out and leave it to the garbage collector + */ +%typemap(ctype) SWIGTYPE *& OUTPUT "void **" +%typemap(imtype, out="global::System.IntPtr") SWIGTYPE *& OUTPUT "out global::System.IntPtr" +%typemap(cstype) SWIGTYPE *& OUTPUT "out $*csclassname" +%typemap(csin, + pre=" global::System.IntPtr cPtr_$csinput = global::System.IntPtr.Zero;", + post=" $csinput = (cPtr_$csinput == global::System.IntPtr.Zero) ? null : new $*csclassname(cPtr_$csinput, true);", + cshin="out $csinput") SWIGTYPE *& OUTPUT "out cPtr_$csinput" +%typemap(in) SWIGTYPE *& OUTPUT %{ $1 = ($1_ltype)$input; %} +%typemap(freearg) SWIGTYPE *& OUTPUT "" diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/csharp/typemaps.i new file mode 100644 index 00000000..b6f9bddb --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/typemaps.i @@ -0,0 +1,253 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Pointer and reference handling typemap library + * + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers and C++ references. + * ----------------------------------------------------------------------------- */ + +/* +INPUT typemaps +-------------- + +These typemaps are used for pointer/reference parameters that are input only +and are mapped to a C# input parameter. + +The following typemaps can be applied to turn a pointer or reference into a simple +input value. That is, instead of passing a pointer or reference to an object, +you would use a real value instead. + + bool *INPUT, bool &INPUT + signed char *INPUT, signed char &INPUT + unsigned char *INPUT, unsigned char &INPUT + short *INPUT, short &INPUT + unsigned short *INPUT, unsigned short &INPUT + int *INPUT, int &INPUT + unsigned int *INPUT, unsigned int &INPUT + long *INPUT, long &INPUT + unsigned long *INPUT, unsigned long &INPUT + long long *INPUT, long long &INPUT + unsigned long long *INPUT, unsigned long long &INPUT + float *INPUT, float &INPUT + double *INPUT, double &INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +In C# you could then use it like this: + double answer = modulename.fadd(10.0, 20.0); +*/ + +%define INPUT_TYPEMAP(TYPE, CTYPE, CSTYPE) +%typemap(ctype, out="void *") TYPE *INPUT, TYPE &INPUT "CTYPE" +%typemap(imtype, out="global::System.IntPtr") TYPE *INPUT, TYPE &INPUT "CSTYPE" +%typemap(cstype, out="$csclassname") TYPE *INPUT, TYPE &INPUT "CSTYPE" +%typemap(csin) TYPE *INPUT, TYPE &INPUT "$csinput" + +%typemap(in) TYPE *INPUT, TYPE &INPUT +%{ $1 = ($1_ltype)&$input; %} + +%typemap(typecheck) TYPE *INPUT = TYPE; +%typemap(typecheck) TYPE &INPUT = TYPE; +%enddef + +INPUT_TYPEMAP(bool, unsigned int, bool) +//INPUT_TYPEMAP(char, char, char) +INPUT_TYPEMAP(signed char, signed char, sbyte) +INPUT_TYPEMAP(unsigned char, unsigned char, byte) +INPUT_TYPEMAP(short, short, short) +INPUT_TYPEMAP(unsigned short, unsigned short, ushort) +INPUT_TYPEMAP(int, int, int) +INPUT_TYPEMAP(unsigned int, unsigned int, uint) +INPUT_TYPEMAP(long, long, int) +INPUT_TYPEMAP(unsigned long, unsigned long, uint) +INPUT_TYPEMAP(long long, long long, long) +INPUT_TYPEMAP(unsigned long long, unsigned long long, ulong) +INPUT_TYPEMAP(float, float, float) +INPUT_TYPEMAP(double, double, double) + +#undef INPUT_TYPEMAP + +/* +OUTPUT typemaps +--------------- + +These typemaps are used for pointer/reference parameters that are output only and +are mapped to a C# output parameter. + +The following typemaps can be applied to turn a pointer or reference into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In C#, the 'out' keyword is +used when passing the parameter to a function that takes an output parameter. + + bool *OUTPUT, bool &OUTPUT + signed char *OUTPUT, signed char &OUTPUT + unsigned char *OUTPUT, unsigned char &OUTPUT + short *OUTPUT, short &OUTPUT + unsigned short *OUTPUT, unsigned short &OUTPUT + int *OUTPUT, int &OUTPUT + unsigned int *OUTPUT, unsigned int &OUTPUT + long *OUTPUT, long &OUTPUT + unsigned long *OUTPUT, unsigned long &OUTPUT + long long *OUTPUT, long long &OUTPUT + unsigned long long *OUTPUT, unsigned long long &OUTPUT + float *OUTPUT, float &OUTPUT + double *OUTPUT, double &OUTPUT + +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): + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The C# output of the function would be the function return value and the +value returned in the second output parameter. In C# you would use it like this: + + double dptr; + double fraction = modulename.modf(5, out dptr); +*/ + +%define OUTPUT_TYPEMAP(TYPE, CTYPE, CSTYPE, TYPECHECKPRECEDENCE) +%typemap(ctype, out="void *") TYPE *OUTPUT, TYPE &OUTPUT "CTYPE *" +%typemap(imtype, out="global::System.IntPtr") TYPE *OUTPUT, TYPE &OUTPUT "out CSTYPE" +%typemap(cstype, out="$csclassname") TYPE *OUTPUT, TYPE &OUTPUT "out CSTYPE" +%typemap(csin) TYPE *OUTPUT, TYPE &OUTPUT "out $csinput" + +%typemap(in) TYPE *OUTPUT, TYPE &OUTPUT +%{ $1 = ($1_ltype)$input; %} + +%typecheck(SWIG_TYPECHECK_##TYPECHECKPRECEDENCE) TYPE *OUTPUT, TYPE &OUTPUT "" +%enddef + +OUTPUT_TYPEMAP(bool, unsigned int, bool, BOOL_PTR) +//OUTPUT_TYPEMAP(char, char, char, CHAR_PTR) +OUTPUT_TYPEMAP(signed char, signed char, sbyte, INT8_PTR) +OUTPUT_TYPEMAP(unsigned char, unsigned char, byte, UINT8_PTR) +OUTPUT_TYPEMAP(short, short, short, INT16_PTR) +OUTPUT_TYPEMAP(unsigned short, unsigned short, ushort, UINT16_PTR) +OUTPUT_TYPEMAP(int, int, int, INT32_PTR) +OUTPUT_TYPEMAP(unsigned int, unsigned int, uint, UINT32_PTR) +OUTPUT_TYPEMAP(long, long, int, INT32_PTR) +OUTPUT_TYPEMAP(unsigned long, unsigned long, uint, UINT32_PTR) +OUTPUT_TYPEMAP(long long, long long, long, INT64_PTR) +OUTPUT_TYPEMAP(unsigned long long, unsigned long long, ulong, UINT64_PTR) +OUTPUT_TYPEMAP(float, float, float, FLOAT_PTR) +OUTPUT_TYPEMAP(double, double, double, DOUBLE_PTR) + +#undef OUTPUT_TYPEMAP + +%typemap(in) bool *OUTPUT, bool &OUTPUT +%{ *$input = 0; + $1 = ($1_ltype)$input; %} + + +/* +INOUT typemaps +-------------- + +These typemaps are for pointer/reference parameters that are both input and +output and are mapped to a C# reference parameter. + +The following typemaps can be applied to turn a pointer or reference into a +reference parameters, that is the parameter is both an input and an output. +In C#, the 'ref' keyword is used for reference parameters. + + bool *INOUT, bool &INOUT + signed char *INOUT, signed char &INOUT + unsigned char *INOUT, unsigned char &INOUT + short *INOUT, short &INOUT + unsigned short *INOUT, unsigned short &INOUT + int *INOUT, int &INOUT + unsigned int *INOUT, unsigned int &INOUT + long *INOUT, long &INOUT + unsigned long *INOUT, unsigned long &INOUT + long long *INOUT, long long &INOUT + unsigned long long *INOUT, unsigned long long &INOUT + float *INOUT, float &INOUT + double *INOUT, double &INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include + void neg(double *INOUT); + +or you can use the %apply directive : + + %include + %apply double *INOUT { double *x }; + void neg(double *x); + +The C# output of the function would be the new value returned by the +reference parameter. In C# you would use it like this: + + + double x = 5.0; + neg(ref x); + +The implementation of the OUTPUT and INOUT typemaps is different to the scripting +languages in that the scripting languages will return the output value as part +of the function return value. + +*/ + +%define INOUT_TYPEMAP(TYPE, CTYPE, CSTYPE, TYPECHECKPRECEDENCE) +%typemap(ctype, out="void *") TYPE *INOUT, TYPE &INOUT "CTYPE *" +%typemap(imtype, out="global::System.IntPtr") TYPE *INOUT, TYPE &INOUT "ref CSTYPE" +%typemap(cstype, out="$csclassname") TYPE *INOUT, TYPE &INOUT "ref CSTYPE" +%typemap(csin) TYPE *INOUT, TYPE &INOUT "ref $csinput" + +%typemap(in) TYPE *INOUT, TYPE &INOUT +%{ $1 = ($1_ltype)$input; %} + +%typecheck(SWIG_TYPECHECK_##TYPECHECKPRECEDENCE) TYPE *INOUT, TYPE &INOUT "" +%enddef + +INOUT_TYPEMAP(bool, unsigned int, bool, BOOL_PTR) +//INOUT_TYPEMAP(char, char, char, CHAR_PTR) +INOUT_TYPEMAP(signed char, signed char, sbyte, INT8_PTR) +INOUT_TYPEMAP(unsigned char, unsigned char, byte, UINT8_PTR) +INOUT_TYPEMAP(short, short, short, INT16_PTR) +INOUT_TYPEMAP(unsigned short, unsigned short, ushort, UINT16_PTR) +INOUT_TYPEMAP(int, int, int, INT32_PTR) +INOUT_TYPEMAP(unsigned int, unsigned int, uint, UINT32_PTR) +INOUT_TYPEMAP(long, long, int, INT32_PTR) +INOUT_TYPEMAP(unsigned long, unsigned long, uint, UINT32_PTR) +INOUT_TYPEMAP(long long, long long, long, INT64_PTR) +INOUT_TYPEMAP(unsigned long long, unsigned long long, ulong, UINT64_PTR) +INOUT_TYPEMAP(float, float, float, FLOAT_PTR) +INOUT_TYPEMAP(double, double, double, DOUBLE_PTR) + +#undef INOUT_TYPEMAP + diff --git a/macx64/bin/swig/share/swig/4.0.0/csharp/wchar.i b/macx64/bin/swig/share/swig/4.0.0/csharp/wchar.i new file mode 100644 index 00000000..9361edf6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/csharp/wchar.i @@ -0,0 +1,102 @@ +/* ----------------------------------------------------------------------------- + * wchar.i + * + * Typemaps for the wchar_t type + * These are mapped to a C# String and are passed around by value. + * + * Support code for wide strings can be turned off by defining SWIG_CSHARP_NO_WSTRING_HELPER + * + * ----------------------------------------------------------------------------- */ + +#if !defined(SWIG_CSHARP_NO_WSTRING_HELPER) +#if !defined(SWIG_CSHARP_WSTRING_HELPER_) +#define SWIG_CSHARP_WSTRING_HELPER_ +%insert(runtime) %{ +/* Callback for returning strings to C# without leaking memory */ +typedef void * (SWIGSTDCALL* SWIG_CSharpWStringHelperCallback)(const wchar_t *); +static SWIG_CSharpWStringHelperCallback SWIG_csharp_wstring_callback = NULL; +%} + +%pragma(csharp) imclasscode=%{ + protected class SWIGWStringHelper { + + public delegate string SWIGWStringDelegate(global::System.IntPtr message); + static SWIGWStringDelegate wstringDelegate = new SWIGWStringDelegate(CreateWString); + + [global::System.Runtime.InteropServices.DllImport("$dllimport", EntryPoint="SWIGRegisterWStringCallback_$module")] + public static extern void SWIGRegisterWStringCallback_$module(SWIGWStringDelegate wstringDelegate); + + static string CreateWString([global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]global::System.IntPtr cString) { + return global::System.Runtime.InteropServices.Marshal.PtrToStringUni(cString); + } + + static SWIGWStringHelper() { + SWIGRegisterWStringCallback_$module(wstringDelegate); + } + } + + static protected SWIGWStringHelper swigWStringHelper = new SWIGWStringHelper(); +%} + +%insert(runtime) %{ +#ifdef __cplusplus +extern "C" +#endif +SWIGEXPORT void SWIGSTDCALL SWIGRegisterWStringCallback_$module(SWIG_CSharpWStringHelperCallback callback) { + SWIG_csharp_wstring_callback = callback; +} +%} +#endif // SWIG_CSHARP_WSTRING_HELPER_ +#endif // SWIG_CSHARP_NO_WSTRING_HELPER + + +// wchar_t +%typemap(ctype) wchar_t "wchar_t" +%typemap(imtype) wchar_t "char" +%typemap(cstype) wchar_t "char" + +%typemap(csin) wchar_t "$csinput" +%typemap(csout, excode=SWIGEXCODE) wchar_t { + char ret = $imcall;$excode + return ret; + } +%typemap(csvarin, excode=SWIGEXCODE2) wchar_t %{ + set { + $imcall;$excode + } %} +%typemap(csvarout, excode=SWIGEXCODE2) wchar_t %{ + get { + char ret = $imcall;$excode + return ret; + } %} + +%typemap(in) wchar_t %{ $1 = ($1_ltype)$input; %} +%typemap(out) wchar_t %{ $result = (wchar_t)$1; %} + +%typemap(typecheck) wchar_t = char; + +// wchar_t * +%typemap(ctype) wchar_t * "wchar_t *" +%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", out="global::System.IntPtr" ) wchar_t * "string" +%typemap(cstype) wchar_t * "string" + +%typemap(csin) wchar_t * "$csinput" +%typemap(csout, excode=SWIGEXCODE) wchar_t * { + string ret = global::System.Runtime.InteropServices.Marshal.PtrToStringUni($imcall);$excode + return ret; + } +%typemap(csvarin, excode=SWIGEXCODE2) wchar_t * %{ + set { + $imcall;$excode + } %} +%typemap(csvarout, excode=SWIGEXCODE2) wchar_t * %{ + get { + string ret = $imcall;$excode + return ret; + } %} + +%typemap(in) wchar_t * %{ $1 = ($1_ltype)$input; %} +%typemap(out) wchar_t * %{ $result = (wchar_t *)$1; %} + +%typemap(typecheck) wchar_t * = char *; + diff --git a/macx64/bin/swig/share/swig/4.0.0/cstring.i b/macx64/bin/swig/share/swig/4.0.0/cstring.i new file mode 100644 index 00000000..6829f759 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/cstring.i @@ -0,0 +1,12 @@ +/* ----------------------------------------------------------------------------- + * cstring.i + * ----------------------------------------------------------------------------- */ + +%echo "cstring.i not implemented for this target" +#define SWIG_CSTRING_UNIMPL + +/* old name keep for compatibility */ +#define _CSTRING_UNIMPL + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/cwstring.i b/macx64/bin/swig/share/swig/4.0.0/cwstring.i new file mode 100644 index 00000000..f0631d32 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/cwstring.i @@ -0,0 +1,11 @@ +/* ----------------------------------------------------------------------------- + * cwstring.i + * ----------------------------------------------------------------------------- */ + +%echo "cwstring.i not implemented for this target" +#define SWIG_CWSTRING_UNIMPL + + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/d/boost_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/d/boost_shared_ptr.i new file mode 100644 index 00000000..4a220a58 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/boost_shared_ptr.i @@ -0,0 +1,293 @@ +%include + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_SHARED_PTR_TYPEMAPS(CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor mods +%feature("unref") TYPE +//"if (debug_shared) { cout << \"deleting use_count: \" << (*smartarg1).use_count() << \" [\" << (boost::get_deleter(*smartarg1) ? std::string(\"CANNOT BE DETERMINED SAFELY\") : ((*smartarg1).get() ? (*smartarg1)->getValue() : std::string(\"NULL PTR\"))) << \"]\" << endl << flush; }\n" + "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +// plain value +%typemap(in, canthrow=1) CONST TYPE ($&1_type argp = 0) %{ + argp = ((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input) ? ((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input)->get() : 0; + if (!argp) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Attempt to dereference null $1_type"); + return $null; + } + $1 = *argp; %} +%typemap(out) CONST TYPE +%{ $result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); %} + +%typemap(directorin) CONST TYPE +%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (new $1_ltype((const $1_ltype &)$1)); %} + +%typemap(directorout) CONST TYPE +%{ if (!$input) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Attempt to dereference null $1_type"); + return $null; + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input; + $result = *smartarg->get(); +%} + +// plain pointer +%typemap(in, canthrow=1) CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input; + $1 = (TYPE *)(smartarg ? smartarg->get() : 0); %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * %{ + $result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; +%} + +%typemap(directorin) CONST TYPE * +%{ $input = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; %} + +%typemap(directorout) CONST TYPE * %{ +#error "typemaps for $1_type not available" +%} + +// plain reference +%typemap(in, canthrow=1) CONST TYPE & %{ + $1 = ($1_ltype)(((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input) ? ((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input)->get() : 0); + if (!$1) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "$1_type reference is null"); + return $null; + } %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE & +%{ $result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); %} + +%typemap(directorin) CONST TYPE & +%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (&$1 SWIG_NO_NULL_DELETER_0); %} + +%typemap(directorout) CONST TYPE & %{ +#error "typemaps for $1_type not available" +%} + +// plain pointer by reference +%typemap(in) TYPE *CONST& ($*1_ltype temp = 0) +%{ temp = (TYPE *)(((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input) ? ((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input)->get() : 0); + $1 = &temp; %} +%typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& +%{ $result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner); %} + +%typemap(directorin) TYPE *CONST& +%{ $input = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; %} + +%typemap(directorout) TYPE *CONST& %{ +#error "typemaps for $1_type not available" +%} + +// shared_ptr by value +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ if ($input) $1 = *($&1_ltype)$input; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ $result = $1 ? new $1_ltype($1) : 0; %} + +%typemap(directorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ $input = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ if ($input) { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)$input; + $result = *smartarg; + } +%} + +// shared_ptr by reference +%typemap(in, canthrow=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & ($*1_ltype tempnull) +%{ $1 = $input ? ($1_ltype)$input : &tempnull; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & +%{ $result = *$1 ? new $*1_ltype(*$1) : 0; %} + +%typemap(directorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & +%{ $input = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "typemaps for $1_type not available" +%} + +// shared_ptr by pointer +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * ($*1_ltype tempnull) +%{ $1 = $input ? ($1_ltype)$input : &tempnull; %} +%typemap(out, fragment="SWIG_null_deleter") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * +%{ $result = ($1 && *$1) ? new $*1_ltype(*($1_ltype)$1) : 0; + if ($owner) delete $1; %} + +%typemap(directorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * +%{ $input = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "typemaps for $1_type not available" +%} + +// shared_ptr by pointer reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempnull, $*1_ltype temp = 0) +%{ temp = $input ? *($1_ltype)&$input : &tempnull; + $1 = &temp; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& +%{ *($1_ltype)&$result = (*$1 && **$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(**$1) : 0; %} + +%typemap(directorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& +%{ $input = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "typemaps for $1_type not available" +%} + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%typemap (ctype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "void *" +%typemap (imtype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "void*" +%typemap (dtype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "$typemap(dtype, TYPE)" + +%typemap(din) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "$typemap(dtype, TYPE).swigGetCPtr($dinput)" + +%typemap(ddirectorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "$typemap(dtype, TYPE).swigGetCPtr($dcall)" + +%typemap(ddirectorin) CONST TYPE, + CONST TYPE *, + CONST TYPE &, + TYPE *CONST& "($winput is null) ? null : new $typemap(dtype, TYPE)($winput, true)" + +%typemap(ddirectorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "($winput is null) ? null : new $typemap(dtype, TYPE)($winput, true)" + + +%typemap(dout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + void* cPtr = $imcall; + auto ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode + return ret; +} +%typemap(dout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & { + void* cPtr = $imcall; + auto ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode + return ret; +} +%typemap(dout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * { + void* cPtr = $imcall; + auto ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode + return ret; +} +%typemap(dout, excode=SWIGEXCODE) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + void* cPtr = $imcall; + auto ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode + return ret; +} + + +%typemap(dout, excode=SWIGEXCODE) CONST TYPE { + auto ret = new $typemap(dtype, TYPE)($imcall, true);$excode + return ret; +} +%typemap(dout, excode=SWIGEXCODE) CONST TYPE & { + auto ret = new $typemap(dtype, TYPE)($imcall, true);$excode + return ret; +} +%typemap(dout, excode=SWIGEXCODE) CONST TYPE * { + void* cPtr = $imcall; + auto ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode + return ret; +} +%typemap(dout, excode=SWIGEXCODE) TYPE *CONST& { + void* cPtr = $imcall; + auto ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode + return ret; +} + +// Proxy classes (base classes, ie, not derived classes) +%typemap(dbody) SWIGTYPE %{ +private void* swigCPtr; +private bool swigCMemOwn; + +public this(void* cObject, bool ownCObject) { + swigCPtr = cObject; + swigCMemOwn = ownCObject; +} + +public static void* swigGetCPtr(typeof(this) obj) { + return (obj is null) ? null : obj.swigCPtr; +} +%} + +// Derived proxy classes +%typemap(dbody_derived) SWIGTYPE %{ +private void* swigCPtr; +private bool swigCMemOwn; + +public this(void* cObject, bool ownCObject) { + super($imdmodule.$dclazznameSmartPtrUpcast(cObject), ownCObject); + swigCPtr = cObject; + swigCMemOwn = ownCObject; +} + +public static void* swigGetCPtr(typeof(this) obj) { + return (obj is null) ? null : obj.swigCPtr; +} +%} + +%typemap(ddispose, methodname="dispose", methodmodifiers="public") TYPE { + synchronized(this) { + if (swigCPtr !is null) { + if (swigCMemOwn) { + swigCMemOwn = false; + $imcall; + } + swigCPtr = null; + } + } +} + +%typemap(ddispose_derived, methodname="dispose", methodmodifiers="public") TYPE { + synchronized(this) { + if (swigCPtr !is null) { + if (swigCMemOwn) { + swigCMemOwn = false; + $imcall; + } + swigCPtr = null; + super.dispose(); + } + } +} + +// Typecheck typemaps +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& + "" + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/d/carrays.i b/macx64/bin/swig/share/swig/4.0.0/d/carrays.i new file mode 100644 index 00000000..f2803ea4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/carrays.i @@ -0,0 +1,111 @@ +/* ----------------------------------------------------------------------------- + * carrays.i + * + * D-specific version of ../carrays.i. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %array_functions(TYPE,NAME) + * + * Generates functions for creating and accessing elements of a C array + * (as pointers). Creates the following functions: + * + * TYPE *new_NAME(int nelements) + * void delete_NAME(TYPE *); + * TYPE NAME_getitem(TYPE *, int index); + * void NAME_setitem(TYPE *, int index, TYPE value); + * + * ----------------------------------------------------------------------------- */ + +%define %array_functions(TYPE,NAME) +%{ +static TYPE *new_##NAME(int nelements) { %} +#ifdef __cplusplus +%{ return new TYPE[nelements](); %} +#else +%{ return (TYPE *) calloc(nelements,sizeof(TYPE)); %} +#endif +%{} + +static void delete_##NAME(TYPE *ary) { %} +#ifdef __cplusplus +%{ delete [] ary; %} +#else +%{ free(ary); %} +#endif +%{} + +static TYPE NAME##_getitem(TYPE *ary, int index) { + return ary[index]; +} +static void NAME##_setitem(TYPE *ary, int index, TYPE value) { + ary[index] = value; +} +%} + +TYPE *new_##NAME(int nelements); +void delete_##NAME(TYPE *ary); +TYPE NAME##_getitem(TYPE *ary, int index); +void NAME##_setitem(TYPE *ary, int index, TYPE value); + +%enddef + + +/* ----------------------------------------------------------------------------- + * %array_class(TYPE,NAME) + * + * Generates a class wrapper around a C array. The class has the following + * interface: + * + * struct NAME { + * NAME(int nelements); + * ~NAME(); + * TYPE getitem(int index); + * void setitem(int index, TYPE value); + * TYPE * ptr(); + * static NAME *frompointer(TYPE *t); + * } + * + * ----------------------------------------------------------------------------- */ + +%define %array_class(TYPE,NAME) +%{ +typedef TYPE NAME; +%} + +typedef struct {} NAME; + +%extend NAME { +#ifdef __cplusplus + NAME(int nelements) { + return new TYPE[nelements](); + } + ~NAME() { + delete [] self; + } +#else + NAME(int nelements) { + return (TYPE *) calloc(nelements,sizeof(TYPE)); + } + ~NAME() { + free(self); + } +#endif + + TYPE getitem(int index) { + return self[index]; + } + void setitem(int index, TYPE value) { + self[index] = value; + } + TYPE * ptr() { + return self; + } + static NAME *frompointer(TYPE *t) { + return (NAME *) t; + } +}; + +%types(NAME = TYPE); + +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/d/cpointer.i b/macx64/bin/swig/share/swig/4.0.0/d/cpointer.i new file mode 100644 index 00000000..75e610f6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/cpointer.i @@ -0,0 +1,171 @@ +/* ----------------------------------------------------------------------------- + * cpointer.i + * + * D-specific version of ../cpointer.i. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %pointer_class(type,name) + * + * Places a simple proxy around a simple type like 'int', 'float', or whatever. + * The proxy provides this interface: + * + * class type { + * public: + * type(); + * ~type(); + * type value(); + * void assign(type value); + * }; + * + * Example: + * + * %pointer_class(int, intp); + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = intp() + * >>> a.assign(10) + * >>> a.value() + * 10 + * >>> b = intp() + * >>> b.assign(20) + * >>> print add(a,b) + * 30 + * + * As a general rule, this macro should not be used on class/structures that + * are already defined in the interface. + * ----------------------------------------------------------------------------- */ + + +%define %pointer_class(TYPE, NAME) +%{ +typedef TYPE NAME; +%} + +typedef struct { +} NAME; + +%extend NAME { +#ifdef __cplusplus +NAME() { + return new TYPE(); +} +~NAME() { + if (self) delete self; +} +#else +NAME() { + return (TYPE *) calloc(1,sizeof(TYPE)); +} +~NAME() { + if (self) free(self); +} +#endif +} + +%extend NAME { + +void assign(TYPE value) { + *self = value; +} +TYPE value() { + return *self; +} +TYPE * ptr() { + return self; +} +static NAME * frompointer(TYPE *t) { + return (NAME *) t; +} + +} + +%types(NAME = TYPE); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_functions(type,name) + * + * Create functions for allocating/deallocating pointers. This can be used + * if you don't want to create a proxy class or if the pointer is complex. + * + * %pointer_functions(int, intp) + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = copy_intp(10) + * >>> intp_value(a) + * 10 + * >>> b = new_intp() + * >>> intp_assign(b,20) + * >>> print add(a,b) + * 30 + * >>> delete_intp(a) + * >>> delete_intp(b) + * + * ----------------------------------------------------------------------------- */ + +%define %pointer_functions(TYPE,NAME) +%{ +static TYPE *new_##NAME() { %} +#ifdef __cplusplus +%{ return new TYPE(); %} +#else +%{ return (TYPE *) calloc(1,sizeof(TYPE)); %} +#endif +%{} + +static TYPE *copy_##NAME(TYPE value) { %} +#ifdef __cplusplus +%{ return new TYPE(value); %} +#else +%{ TYPE *self = (TYPE *) calloc(1,sizeof(TYPE)); + *self = value; + return self; %} +#endif +%{} + +static void delete_##NAME(TYPE *self) { %} +#ifdef __cplusplus +%{ if (self) delete self; %} +#else +%{ if (self) free(self); %} +#endif +%{} + +static void NAME ##_assign(TYPE *self, TYPE value) { + *self = value; +} + +static TYPE NAME ##_value(TYPE *self) { + return *self; +} +%} + +TYPE *new_##NAME(); +TYPE *copy_##NAME(TYPE value); +void delete_##NAME(TYPE *self); +void NAME##_assign(TYPE *self, TYPE value); +TYPE NAME##_value(TYPE *self); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_cast(type1,type2,name) + * + * Generates a pointer casting function. + * ----------------------------------------------------------------------------- */ + +%define %pointer_cast(TYPE1,TYPE2,NAME) +%inline %{ +TYPE2 NAME(TYPE1 x) { + return (TYPE2) x; +} +%} +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/d/d.swg b/macx64/bin/swig/share/swig/4.0.0/d/d.swg new file mode 100644 index 00000000..f5bb4596 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/d.swg @@ -0,0 +1,46 @@ +/* ----------------------------------------------------------------------------- + * d.swg + * + * Main library file for the D language module. See the D chapter in the SWIG + * manual for explanation on the typemaps, pragmas, etc. used. + * ----------------------------------------------------------------------------- */ + +// Typemaps for exception handling. +%include + +// Typemaps for primitive types. +%include + +// Typemaps for non-primitive types (C/C++ classes and structs). +%include + +// Typemaps for enumeration types. +%include + +// Typemaps for member function pointers. +%include + +// Typemaps for wrapping pointers to/arrays of C chars as D strings. +%include + +// Typemaps for handling void function return types and empty parameter lists. +%include + +// Typemaps containing D code used when generating D proxy classes. +%include + +// Mapping of C++ operator overloading methods to D. +%include + +// Helper code string and exception handling. +%include + +// Wrapper loader code for dynamically linking the C wrapper library from the D +// wrapper module. +%include + +// List of all reserved D keywords. +%include + +// D-specific directives. +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/d/dclassgen.swg b/macx64/bin/swig/share/swig/4.0.0/d/dclassgen.swg new file mode 100644 index 00000000..84fa03a0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/dclassgen.swg @@ -0,0 +1,142 @@ +/* ----------------------------------------------------------------------------- + * dclassgen.swg + * + * Typemaps containing D code used when generating D proxy classes. + * ----------------------------------------------------------------------------- */ + +%typemap(dbase) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(dclassmodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) "class" +%typemap(dcode) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(dimports) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(dinterfaces) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(dinterfaces_derived) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) "" + +// See . +%typemap(dclassmodifiers) enum SWIGTYPE "enum" +%typemap(dcode) enum SWIGTYPE "" + + +/* + * Proxy classes. + */ + +%typemap(dconstructor, excode=SWIGEXCODE,directorconnect="\n swigDirectorConnect();") SWIGTYPE { + this($imcall, true);$excode$directorconnect +} + +%typemap(ddestructor) SWIGTYPE %{ +~this() { + dispose(); +} +%} + +// We do not use »override« attribute for generated dispose() methods to stay +// somewhat compatible to Phobos and older Tango versions where Object.dispose() +// does not exist. +%typemap(ddispose, methodname="dispose", methodmodifiers="public", parameters="") SWIGTYPE { + synchronized(this) { + if (swigCPtr !is null) { + if (swigCMemOwn) { + swigCMemOwn = false; + $imcall; + } + swigCPtr = null; + } + } +} + +%typemap(ddispose_derived, methodname="dispose", methodmodifiers="public", parameters="") SWIGTYPE { + synchronized(this) { + if (swigCPtr !is null) { + if (swigCMemOwn) { + swigCMemOwn = false; + $imcall; + } + swigCPtr = null; + super.dispose(); + } + } +} + + +// Unfortunately, the »package« visibility attribute does not work in D when the +// module in question is in the root package (happens if no -package is specified +// at the SWIG command line), so we are stuck with public visibility for +// swigGetCPtr(). +%typemap(dbody) SWIGTYPE %{ +private void* swigCPtr; +protected bool swigCMemOwn; + +public this(void* cObject, bool ownCObject) { + swigCPtr = cObject; + swigCMemOwn = ownCObject; +} + +public static void* swigGetCPtr(typeof(this) obj) { + return (obj is null) ? null : obj.swigCPtr; +} + +mixin $imdmodule.SwigOperatorDefinitions; +%} + + +%typemap(dbody_derived) SWIGTYPE %{ +private void* swigCPtr; + +public this(void* cObject, bool ownCObject) { + super($imdmodule.$dclazznameUpcast(cObject), ownCObject); + swigCPtr = cObject; +} + +public static void* swigGetCPtr(typeof(this) obj) { + return (obj is null) ? null : obj.swigCPtr; +} + +mixin $imdmodule.SwigOperatorDefinitions; +%} + + +/* + * Type wrapper classes. + */ + +%typemap(dbody) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] %{ +private void* swigCPtr; + +public this(void* cObject, bool futureUse) { + swigCPtr = cObject; +} + +protected this() { + swigCPtr = null; +} + +public static void* swigGetCPtr(typeof(this) obj) { + return (obj is null) ? null : obj.swigCPtr; +} + +mixin $imdmodule.SwigOperatorDefinitions; +%} + + +/* + * Member function pointer wrapper classes (see ). + */ + +%typemap(dbody) SWIGTYPE (CLASS::*) %{ +private char* swigCPtr; + +public this(char* cMemberPtr, bool futureUse) { + swigCPtr = cMemberPtr; +} + +protected this() { + swigCPtr = null; +} + +package static char* swigGetCMemberPtr(typeof(this) obj) { + return (obj is null) ? null : obj.swigCPtr; +} + +mixin $imdmodule.SwigOperatorDefinitions; +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/d/ddirectives.swg b/macx64/bin/swig/share/swig/4.0.0/d/ddirectives.swg new file mode 100644 index 00000000..145cf01f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/ddirectives.swg @@ -0,0 +1,11 @@ +/* ----------------------------------------------------------------------------- + * ddirectives.swg + * + * D-specifiv directives. + * ----------------------------------------------------------------------------- */ + +#define %dmanifestconst %feature("d:manifestconst") +#define %dconstvalue(value) %feature("d:constvalue",value) +#define %dmethodmodifiers %feature("d:methodmodifiers") +#define %dnothrowexception %feature("except") +#define %proxycode %insert("proxycode") diff --git a/macx64/bin/swig/share/swig/4.0.0/d/denums.swg b/macx64/bin/swig/share/swig/4.0.0/d/denums.swg new file mode 100644 index 00000000..3f812466 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/denums.swg @@ -0,0 +1,60 @@ +/* ----------------------------------------------------------------------------- + * denums.swg + * + * Typemaps for enumerations. + * ----------------------------------------------------------------------------- */ + + +/* + * Typemaps for enumeration types. + */ + +%typemap(ctype) enum SWIGTYPE "int" +%typemap(imtype) enum SWIGTYPE "int" +%typemap(dtype, cprimitive="1") enum SWIGTYPE "$dclassname" + +%typecheck(SWIG_TYPECHECK_POINTER) enum SWIGTYPE "" + +%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %} +%typemap(out) enum SWIGTYPE %{ $result = (int)$1; %} + +%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} +%typemap(directorin) enum SWIGTYPE "$input = (int)$1;" +%typemap(ddirectorin) enum SWIGTYPE "cast($dclassname)$winput" +%typemap(ddirectorout) enum SWIGTYPE "cast(int)$dcall" + +%typemap(din) enum SWIGTYPE "cast(int)$dinput" +%typemap(dout, excode=SWIGEXCODE) enum SWIGTYPE { + $dclassname ret = cast($dclassname)$imcall;$excode + return ret; +} + + +/* + * Typemaps for (const) references to enumeration types. + */ + +%typemap(ctype) const enum SWIGTYPE & "int" +%typemap(imtype) const enum SWIGTYPE & "int" +%typemap(dtype) const enum SWIGTYPE & "$*dclassname" + +%typecheck(SWIG_TYPECHECK_POINTER) const enum SWIGTYPE & "" + +%typemap(in) const enum SWIGTYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} +%typemap(out) const enum SWIGTYPE & %{ $result = (int)*$1; %} + +%typemap(directorin) const enum SWIGTYPE & "$input = (int)$1;" +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & +%{ static $*1_ltype temp = ($*1_ltype)$input; + $result = &temp; %} + +%typemap(ddirectorin) const enum SWIGTYPE & "cast($*dclassname)$winput" +%typemap(ddirectorout) const enum SWIGTYPE & "cast(int)$dcall" + +%typemap(din) const enum SWIGTYPE & "cast(int)$dinput" +%typemap(dout, excode=SWIGEXCODE) const enum SWIGTYPE & { + $*dclassname ret = cast($*dclassname)$imcall;$excode + return ret; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/d/dexception.swg b/macx64/bin/swig/share/swig/4.0.0/d/dexception.swg new file mode 100644 index 00000000..1aadbaad --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/dexception.swg @@ -0,0 +1,30 @@ +/* ----------------------------------------------------------------------------- + * dexception.swg + * + * Typemaps used for propagating C++ exceptions to D. + * ----------------------------------------------------------------------------- */ + +// Code which is inserted into the dout typemaps and class constructors via +// excode if exceptions can be thrown. +%define SWIGEXCODE "\n if ($imdmodule.SwigPendingException.isPending) throw $imdmodule.SwigPendingException.retrieve();" %enddef + +%typemap(throws, canthrow=1) int, + long, + short, + unsigned int, + unsigned long, + unsigned short +%{ char error_msg[256]; + sprintf(error_msg, "C++ $1_type exception thrown, value: %d", $1); + SWIG_DSetPendingException(SWIG_DException, error_msg); + return $null; %} + +%typemap(throws, canthrow=1) SWIGTYPE, SWIGTYPE &, SWIGTYPE *, SWIGTYPE [ANY], + enum SWIGTYPE, const enum SWIGTYPE & +%{ (void)$1; + SWIG_DSetPendingException(SWIG_DException, "C++ $1_type exception thrown"); + return $null; %} + +%typemap(throws, canthrow=1) char * +%{ SWIG_DSetPendingException(SWIG_DException, $1); + return $null; %} diff --git a/macx64/bin/swig/share/swig/4.0.0/d/dhead.swg b/macx64/bin/swig/share/swig/4.0.0/d/dhead.swg new file mode 100644 index 00000000..50e9c2e8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/dhead.swg @@ -0,0 +1,298 @@ +/* ----------------------------------------------------------------------------- + * dhead.swg + * + * Support code for exceptions if the SWIG_D_NO_EXCEPTION_HELPER is not defined + * Support code for strings if the SWIG_D_NO_STRING_HELPER is not defined + * + * Support code for function pointers. ----------------------------------------------------------------------------- */ + +%insert(runtime) %{ +#include +#include +#include + +/* Contract support. */ +#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_DSetPendingException(SWIG_DException, msg); return nullreturn; } else +%} + + +/* + * Exception support code. + */ + +#if !defined(SWIG_D_NO_EXCEPTION_HELPER) +%insert(runtime) %{ +// Support for throwing D exceptions from C/C++. +typedef enum { + SWIG_DException = 0, + SWIG_DIllegalArgumentException, + SWIG_DIllegalElementException, + SWIG_DIOException, + SWIG_DNoSuchElementException +} SWIG_DExceptionCodes; + +typedef void (* SWIG_DExceptionCallback_t)(const char *); + +typedef struct { + SWIG_DExceptionCodes code; + SWIG_DExceptionCallback_t callback; +} SWIG_DException_t; + +static SWIG_DException_t SWIG_d_exceptions[] = { + { SWIG_DException, NULL }, + { SWIG_DIllegalArgumentException, NULL }, + { SWIG_DIllegalElementException, NULL }, + { SWIG_DIOException, NULL }, + { SWIG_DNoSuchElementException, NULL } +}; + +static void SWIGUNUSED SWIG_DSetPendingException(SWIG_DExceptionCodes code, const char *msg) { + if ((size_t)code < sizeof(SWIG_d_exceptions)/sizeof(SWIG_DException_t)) { + SWIG_d_exceptions[code].callback(msg); + } else { + SWIG_d_exceptions[SWIG_DException].callback(msg); + } +} + +#ifdef __cplusplus +extern "C" +#endif +SWIGEXPORT void SWIGRegisterExceptionCallbacks_$module( + SWIG_DExceptionCallback_t exceptionCallback, + SWIG_DExceptionCallback_t illegalArgumentCallback, + SWIG_DExceptionCallback_t illegalElementCallback, + SWIG_DExceptionCallback_t ioCallback, + SWIG_DExceptionCallback_t noSuchElementCallback) { + SWIG_d_exceptions[SWIG_DException].callback = exceptionCallback; + SWIG_d_exceptions[SWIG_DIllegalArgumentException].callback = illegalArgumentCallback; + SWIG_d_exceptions[SWIG_DIllegalElementException].callback = illegalElementCallback; + SWIG_d_exceptions[SWIG_DIOException].callback = ioCallback; + SWIG_d_exceptions[SWIG_DNoSuchElementException].callback = noSuchElementCallback; +} +%} + +#if (SWIG_D_VERSION == 1) +%pragma(d) imdmoduleimports=%{ +// Exception throwing support currently requires Tango, but there is no reason +// why it could not support Phobos. +static import tango.core.Exception; +static import tango.core.Thread; +static import tango.stdc.stringz; +%} + +%pragma(d) imdmodulecode=%{ +private class SwigExceptionHelper { + static this() { + swigRegisterExceptionCallbacks$module( + &setException, + &setIllegalArgumentException, + &setIllegalElementException, + &setIOException, + &setNoSuchElementException); + } + + static void setException(char* message) { + auto exception = new object.Exception(tango.stdc.stringz.fromStringz(message).dup); + SwigPendingException.set(exception); + } + + static void setIllegalArgumentException(char* message) { + auto exception = new tango.core.Exception.IllegalArgumentException(tango.stdc.stringz.fromStringz(message).dup); + SwigPendingException.set(exception); + } + + static void setIllegalElementException(char* message) { + auto exception = new tango.core.Exception.IllegalElementException(tango.stdc.stringz.fromStringz(message).dup); + SwigPendingException.set(exception); + } + + static void setIOException(char* message) { + auto exception = new tango.core.Exception.IOException(tango.stdc.stringz.fromStringz(message).dup); + SwigPendingException.set(exception); + } + + static void setNoSuchElementException(char* message) { + auto exception = new tango.core.Exception.NoSuchElementException(tango.stdc.stringz.fromStringz(message).dup); + SwigPendingException.set(exception); + } +} + +package class SwigPendingException { +public: + static this() { + m_sPendingException = new ThreadLocalData(null); + } + + static bool isPending() { + return m_sPendingException.val !is null; + } + + static void set(object.Exception e) { + auto pending = m_sPendingException.val; + if (pending !is null) { + e.next = pending; + throw new object.Exception("FATAL: An earlier pending exception from C/C++ " ~ + "code was missed and thus not thrown (" ~ pending.classinfo.name ~ ": " ~ + pending.msg ~ ")!", e); + } + m_sPendingException.val = e; + } + + static object.Exception retrieve() { + auto e = m_sPendingException.val; + m_sPendingException.val = null; + return e; + } + +private: + // The reference to the pending exception (if any) is stored thread-local. + alias tango.core.Thread.ThreadLocal!(object.Exception) ThreadLocalData; + static ThreadLocalData m_sPendingException; +} +alias void function(char* message) SwigExceptionCallback; +%} +#else +%pragma(d) imdmoduleimports=%{ +static import std.conv; +%} + +%pragma(d) imdmodulecode=%{ +private class SwigExceptionHelper { + static this() { + // The D1/Tango version maps C++ exceptions to multiple exception types. + swigRegisterExceptionCallbacks$module( + &setException, + &setException, + &setException, + &setException, + &setException + ); + } + + static void setException(const char* message) { + auto exception = new object.Exception(std.conv.to!string(message)); + SwigPendingException.set(exception); + } +} + +package struct SwigPendingException { +public: + static this() { + m_sPendingException = null; + } + + static bool isPending() { + return m_sPendingException !is null; + } + + static void set(object.Exception e) { + if (m_sPendingException !is null) { + e.next = m_sPendingException; + throw new object.Exception("FATAL: An earlier pending exception from C/C++ code " ~ + "was missed and thus not thrown (" ~ m_sPendingException.classinfo.name ~ + ": " ~ m_sPendingException.msg ~ ")!", e); + } + + m_sPendingException = e; + } + + static object.Exception retrieve() { + auto e = m_sPendingException; + m_sPendingException = null; + return e; + } + +private: + // The reference to the pending exception (if any) is stored thread-local. + static object.Exception m_sPendingException; +} +alias void function(const char* message) SwigExceptionCallback; +%} +#endif +// Callback registering function in wrapperloader.swg. +#endif // SWIG_D_NO_EXCEPTION_HELPER + + +/* + * String support code. + */ + +#if !defined(SWIG_D_NO_STRING_HELPER) +%insert(runtime) %{ +// Callback for returning strings to D without leaking memory. +typedef char * (* SWIG_DStringHelperCallback)(const char *); +static SWIG_DStringHelperCallback SWIG_d_string_callback = NULL; + +#ifdef __cplusplus +extern "C" +#endif +SWIGEXPORT void SWIGRegisterStringCallback_$module(SWIG_DStringHelperCallback callback) { + SWIG_d_string_callback = callback; +} +%} + +#if (SWIG_D_VERSION == 1) +%pragma(d) imdmoduleimports = "static import tango.stdc.stringz;"; + +%pragma(d) imdmodulecode = %{ +private class SwigStringHelper { + static this() { + swigRegisterStringCallback$module(&createString); + } + + static char* createString(char* cString) { + // We are effectively dup'ing the string here. + return tango.stdc.stringz.toStringz(tango.stdc.stringz.fromStringz(cString)); + } +} +alias char* function(char* cString) SwigStringCallback; +%} +#else +%pragma(d) imdmoduleimports = %{ +static import std.conv; +static import std.string; +%} + +%pragma(d) imdmodulecode = %{ +private class SwigStringHelper { + static this() { + swigRegisterStringCallback$module(&createString); + } + + static const(char)* createString(const(char*) cString) { + // We are effectively dup'ing the string here. + // TODO: Is this also correct for D2/Phobos? + return std.string.toStringz(std.conv.to!string(cString)); + } +} +alias const(char)* function(const(char*) cString) SwigStringCallback; +%} +#endif +// Callback registering function in wrapperloader.swg. +#endif // SWIG_D_NO_STRING_HELPER + + +/* + * Function pointer support code. + */ +#if (SWIG_D_VERSION == 1) +%pragma(d) imdmodulecode = %{ +template SwigExternC(T) { + static if (is(typeof(*(T.init)) R == return)) { + static if (is(typeof(*(T.init)) P == function)) { + alias extern(C) R function(P) SwigExternC; + } + } +} +%} +#else +%pragma(d) imdmodulecode = %{ +template SwigExternC(T) if (is(typeof(*(T.init)) P == function)) { + static if (is(typeof(*(T.init)) R == return)) { + static if (is(typeof(*(T.init)) P == function)) { + alias extern(C) R function(P) SwigExternC; + } + } +} +%} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/d/director.swg b/macx64/bin/swig/share/swig/4.0.0/d/director.swg new file mode 100644 index 00000000..02da0e0a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/director.swg @@ -0,0 +1,49 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that D proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#if defined(DEBUG_DIRECTOR_OWNED) +#include +#endif +#include +#include + +namespace Swig { + + // Director base class – not used in D directors. + class Director { + }; + + // Base class for director exceptions. + class DirectorException : public std::exception { + protected: + std::string swig_msg; + + public: + DirectorException(const std::string &msg) : swig_msg(msg) { + } + + virtual ~DirectorException() throw() { + } + + const char *what() const throw() { + return swig_msg.c_str(); + } + }; + + // Exception which is thrown when attempting to call a pure virtual method + // from D code through the director layer. + class DirectorPureVirtualException : public DirectorException { + public: + DirectorPureVirtualException(const char *msg) : DirectorException(std::string("Attempted to invoke pure virtual method ") + msg) { + } + + static void raise(const char *msg) { + throw DirectorPureVirtualException(msg); + } + }; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/d/dkw.swg b/macx64/bin/swig/share/swig/4.0.0/d/dkw.swg new file mode 100644 index 00000000..581093f9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/dkw.swg @@ -0,0 +1,128 @@ +#ifndef D_DKW_SWG_ +#define D_DKW_SWG_ + +/* Warnings for D keywords */ +#define DKEYWORD(x) %keywordwarn("'" `x` "' is a D keyword, renaming to '_" `x` "'",rename="_%s") `x` + +// Source: http://www.digitalmars.com/d/{1.0,2.0}/lex.html and +DKEYWORD(Error); +DKEYWORD(Exception); +DKEYWORD(Object); +DKEYWORD(__FILE__); +DKEYWORD(__LINE__); +DKEYWORD(__gshared); +DKEYWORD(__thread); +DKEYWORD(__traits); +DKEYWORD(abstract); +DKEYWORD(alias); +DKEYWORD(align); +DKEYWORD(asm); +DKEYWORD(assert); +DKEYWORD(auto); +DKEYWORD(body); +DKEYWORD(bool); +DKEYWORD(break); +DKEYWORD(byte); +DKEYWORD(case); +DKEYWORD(cast); +DKEYWORD(catch); +DKEYWORD(cdouble); +DKEYWORD(cent); +DKEYWORD(cfloat); +DKEYWORD(char); +DKEYWORD(class); +DKEYWORD(const); +DKEYWORD(continue); +DKEYWORD(creal); +DKEYWORD(dchar); +DKEYWORD(debug); +DKEYWORD(default); +DKEYWORD(delegate); +DKEYWORD(delete); +DKEYWORD(deprecated); +DKEYWORD(do); +DKEYWORD(double); +DKEYWORD(dstring); +DKEYWORD(else); +DKEYWORD(enum); +DKEYWORD(export); +DKEYWORD(extern); +DKEYWORD(false); +DKEYWORD(final); +DKEYWORD(finally); +DKEYWORD(float); +DKEYWORD(for); +DKEYWORD(foreach); +DKEYWORD(foreach_reverse); +DKEYWORD(function); +DKEYWORD(goto); +DKEYWORD(idouble); +DKEYWORD(if); +DKEYWORD(ifloat); +DKEYWORD(immutable); +DKEYWORD(import); +DKEYWORD(in); +DKEYWORD(inout); +DKEYWORD(int); +DKEYWORD(interface); +DKEYWORD(invariant); +DKEYWORD(ireal); +DKEYWORD(is); +DKEYWORD(lazy); +DKEYWORD(long); +DKEYWORD(macro); +DKEYWORD(mixin); +DKEYWORD(module); +DKEYWORD(new); +DKEYWORD(nothrow); +DKEYWORD(null); +DKEYWORD(out); +DKEYWORD(override); +DKEYWORD(package); +DKEYWORD(pragma); +DKEYWORD(private); +DKEYWORD(protected); +DKEYWORD(public); +DKEYWORD(pure); +DKEYWORD(real); +DKEYWORD(ref); +DKEYWORD(return); +DKEYWORD(scope); +DKEYWORD(shared); +DKEYWORD(short); +DKEYWORD(static); +DKEYWORD(string); +DKEYWORD(struct); +DKEYWORD(super); +DKEYWORD(switch); +DKEYWORD(synchronized); +DKEYWORD(template); +DKEYWORD(this); +DKEYWORD(throw); +DKEYWORD(true); +DKEYWORD(try); +DKEYWORD(typedef); +DKEYWORD(typeid); +DKEYWORD(typeof); +DKEYWORD(ubyte); +DKEYWORD(ucent); +DKEYWORD(uint); +DKEYWORD(ulong); +DKEYWORD(union); +DKEYWORD(unittest); +DKEYWORD(ushort); +DKEYWORD(version); +DKEYWORD(void); +DKEYWORD(volatile); +DKEYWORD(wchar); +DKEYWORD(while); +DKEYWORD(with); +DKEYWORD(wstring); + +// Not really a keyword, but dispose() methods are generated in proxy classes +// and it's a special method name for D1/Tango. +DKEYWORD(dispose); + +#undef DKEYWORD + +#endif //D_DKW_SWG_ diff --git a/macx64/bin/swig/share/swig/4.0.0/d/dmemberfunctionpointers.swg b/macx64/bin/swig/share/swig/4.0.0/d/dmemberfunctionpointers.swg new file mode 100644 index 00000000..a07d0a5d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/dmemberfunctionpointers.swg @@ -0,0 +1,94 @@ +/* ----------------------------------------------------------------------------- + * dmemberfunctionpointers.swg + * + * Typemaps for member function pointers. + * ----------------------------------------------------------------------------- */ + + +%typemap(ctype) SWIGTYPE (CLASS::*) "char *" +%typemap(imtype) SWIGTYPE (CLASS::*) "char*" +%typemap(dtype) SWIGTYPE (CLASS::*) "$dclassname" + +%typecheck(SWIG_TYPECHECK_POINTER) + SWIGTYPE (CLASS::*) + "" + + +/* + * Conversion generation typemaps. + */ + +%typemap(in, fragment="SWIG_UnPackData") SWIGTYPE (CLASS::*) %{ + SWIG_UnpackData($input, (void *)&$1, sizeof($1)); +%} +%typemap(out, fragment="SWIG_PackData") SWIGTYPE (CLASS::*) %{ + char buf[128]; + char *data = SWIG_PackData(buf, (void *)&$1, sizeof($1)); + *data = '\0'; + $result = SWIG_d_string_callback(buf); +%} + +%typemap(directorin) SWIGTYPE (CLASS::*) "$input = (void *) $1;" +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE (CLASS::*) + "$result = ($1_ltype)$input;" + +%typemap(ddirectorin) SWIGTYPE (CLASS::*) + "($winput is null) ? null : new $dclassname($winput, false)" +%typemap(ddirectorout) SWIGTYPE (CLASS::*) "$dclassname.swigGetCPtr($dcall)" + +%typemap(din) SWIGTYPE (CLASS::*) "$dclassname.swigGetCMemberPtr($dinput)" +%typemap(dout, excode=SWIGEXCODE) SWIGTYPE (CLASS::*) { + char* cMemberPtr = $imcall; + $dclassname ret = (cMemberPtr is null) ? null : new $dclassname(cMemberPtr, $owner);$excode + return ret; +} + +%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) } +%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) } + +/* + * Helper functions to pack/unpack arbitrary binary data (member function + * pointers in this case) into a string. + */ + +%fragment("SWIG_PackData", "header") { +/* Pack binary data into a string */ +SWIGINTERN char * SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + const unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} +} + +%fragment("SWIG_UnPackData", "header") { +/* Unpack binary data from a string */ +SWIGINTERN const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + char d = *(c++); + unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = ((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = ((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/d/doperators.swg b/macx64/bin/swig/share/swig/4.0.0/d/doperators.swg new file mode 100644 index 00000000..0cb63533 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/doperators.swg @@ -0,0 +1,259 @@ +/* ----------------------------------------------------------------------------- + * doperators.swg + * + * Mapping of C++ operator overloading methods to D. + * ----------------------------------------------------------------------------- */ + +#if (SWIG_D_VERSION == 1) + +%pragma(d) imdmodulecode=%{ +template SwigOperatorDefinitions() { + public override int opEquals(Object o) { + if (auto rhs = cast(typeof(this))o) { + if (swigCPtr == rhs.swigCPtr) return 1; + static if (is(typeof(swigOpEquals(rhs)))) { + return swigOpEquals(rhs) ? 1 : 0; + } else { + return 0; + } + } + return super.opEquals(o); + } +%} +// opEquals is emitted in pure C mode as well to define two proxy classes +// pointing to the same struct as equal. + +#ifdef __cplusplus +%rename(opPos) *::operator+(); +%rename(opPos) *::operator+() const; +%rename(opNeg) *::operator-(); +%rename(opNeg) *::operator-() const; +%rename(opCom) *::operator~(); +%rename(opCom) *::operator~() const; + +%rename(opAdd) *::operator+; +%rename(opAddAssign) *::operator+=; +%rename(opSub) *::operator-; +%rename(opSubAssign) *::operator-=; +%rename(opMul) *::operator*; +%rename(opMulAssign) *::operator*=; +%rename(opDiv) *::operator/; +%rename(opDivAssign) *::operator/=; +%rename(opMod) *::operator%; +%rename(opModAssign) *::operator%=; +%rename(opAnd) *::operator&; +%rename(opAndAssign) *::operator&=; +%rename(opOr) *::operator|; +%rename(opOrAssign) *::operator|=; +%rename(opXor) *::operator^; +%rename(opXorAssign) *::operator^=; +%rename(opShl) *::operator<<; +%rename(opShlAssign) *::operator<<=; +%rename(opShr) *::operator>>; +%rename(opShrAssign) *::operator>>=; + +%rename(opIndex) *::operator[](unsigned) const; +// opIndexAssign is not currently generated, it needs more extensive support +// mechanisms. + +%rename(opCall) *::operator(); + +// !a is not overrideable in D1. +%ignoreoperator(LNOT) operator!; + +// opCmp is used in D. +%rename(swigOpEquals) *::operator==; +%rename(swigOpLt) *::operator<; +%rename(swigOpLtEquals) *::operator<=; +%rename(swigOpGt) *::operator>; +%rename(swigOpGtEquals) *::operator>=; + +// a != b is rewritten as !a.opEquals(b) in D. +%ignoreoperator(NOTEQUAL) operator!=; + +// The logic operators are not overrideable in D. +%ignoreoperator(LAND) operator&&; +%ignoreoperator(LOR) operator||; + +// ++/--a is rewritten as a +/-= 1 in D1,so ignore the prefix operators. +%ignoreoperator(PLUSPLUS) *::operator++(); +%ignoreoperator(MINUSMINUS) *::operator--(); +%rename(swigOpInc) *::operator++(int); +%rename(swigOpDec) *::operator--(int); + +// The C++ assignment operator does not translate well to D where the proxy +// classes have reference semantics. +%ignoreoperator(EQ) operator=; + +%pragma(d) imdmodulecode=%{ + public override int opCmp(Object o) { + static if (is(typeof(swigOpLt(typeof(this).init) && + swigOpEquals(typeof(this).init)))) { + if (auto rhs = cast(typeof(this))o) { + if (swigOpLt(rhs)) { + return -1; + } else if (swigOpEquals(rhs)) { + return 0; + } else { + return 1; + } + } + } + return super.opCmp(o); + } + + public typeof(this) opPostInc(T = int)(T unused = 0) { + static assert( + is(typeof(swigOpInc(int.init))), + "opPostInc called on " ~ typeof(this).stringof ~ ", but no postfix " ~ + "increment operator exists in the corresponding C++ class." + ); + return swigOpInc(int.init); + } + + public typeof(this) opPostDec(T = int)(T unused = 0) { + static assert( + is(typeof(swigOpDec(int.init))), + "opPostInc called on " ~ typeof(this).stringof ~ ", but no postfix " ~ + "decrement operator exists in the corresponding C++ class." + ); + return swigOpDec(int.init); + } +%} +#endif + +%pragma(d) imdmodulecode=%{ +} +%} + +#else +%pragma(d) imdmodulecode=%{ +mixin template SwigOperatorDefinitions() { + public override bool opEquals(Object o) { + if (auto rhs = cast(typeof(this))o) { + if (swigCPtr == rhs.swigCPtr) return true; + static if (is(typeof(swigOpEquals(rhs)))) { + return swigOpEquals(rhs); + } else { + return false; + } + } + return super.opEquals(o); + } +%} +// opEquals is emitted in pure C mode as well to define two proxy classes +// pointing to the same struct as equal. + +#ifdef __cplusplus +%rename(swigOpPos) *::operator+(); +%rename(swigOpPos) *::operator+() const; +%rename(swigOpNeg) *::operator-(); +%rename(swigOpNeg) *::operator-() const; +%rename(swigOpCom) *::operator~(); +%rename(swigOpCom) *::operator~() const; +%rename(swigOpInc) *::operator++(); +%rename(swigOpDec) *::operator--(); +%ignoreoperator(PLUSPLUS) *::operator++(int); +%ignoreoperator(MINUSMINUS) *::operator--(int); +// The postfix increment/decrement operators are ignored because they are +// rewritten to (auto t = e, ++e, t) in D2. The unary * operator (used for +// pointer dereferencing in C/C++) isn't mapped to opUnary("*") by default, +// despite this would be possible in D2 – the difference in member access +// semantics would only lead to confusion in most cases. + +%rename(swigOpAdd) *::operator+; +%rename(swigOpSub) *::operator-; +%rename(swigOpMul) *::operator*; +%rename(swigOpDiv) *::operator/; +%rename(swigOpMod) *::operator%; +%rename(swigOpAnd) *::operator&; +%rename(swigOpOr) *::operator|; +%rename(swigOpXor) *::operator^; +%rename(swigOpShl) *::operator<<; +%rename(swigOpShr) *::operator>>; + +%rename(swigOpAddAssign) *::operator+=; +%rename(swigOpSubAssign) *::operator-=; +%rename(swigOpMulAssign) *::operator*=; +%rename(swigOpDivAssign) *::operator/=; +%rename(swigOpModAssign) *::operator%=; +%rename(swigOpAndAssign) *::operator&=; +%rename(swigOpOrAssign) *::operator|=; +%rename(swigOpXorAssign) *::operator^=; +%rename(swigOpShlAssign) *::operator<<=; +%rename(swigOpShrAssign) *::operator>>=; + +%rename(opIndex) *::operator[]; +// opIndexAssign is not currently generated, it needs more extensive support +// mechanisms. + +%rename(opCall) *::operator(); + +%rename(swigOpEquals) *::operator==; +%rename(swigOpLt) *::operator<; +%rename(swigOpLtEquals) *::operator<=; +%rename(swigOpGt) *::operator>; +%rename(swigOpGtEquals) *::operator>=; + +// a != b is rewritten as !a.opEquals(b) in D. +%ignoreoperator(NOTEQUAL) operator!=; + +// The logic operators are not overrideable in D. +%ignoreoperator(LAND) operator&&; +%ignoreoperator(LOR) operator||; + +// The C++ assignment operator does not translate well to D where the proxy +// classes have reference semantics. +%ignoreoperator(EQ) operator=; + +%pragma(d) imdmodulecode=%{ + public override int opCmp(Object o) { + static if (__traits(compiles, swigOpLt(typeof(this).init) && + swigOpEquals(typeof(this).init))) { + if (auto rhs = cast(typeof(this))o) { + if (swigOpLt(rhs)) { + return -1; + } else if (swigOpEquals(rhs)) { + return 0; + } else { + return 1; + } + } + } + return super.opCmp(o); + } + + private template swigOpBinary(string operator, string name) { + enum swigOpBinary = `public void opOpAssign(string op, T)(T rhs) if (op == "` ~ operator ~ + `" && __traits(compiles, swigOp` ~ name ~ `Assign(rhs))) { swigOp` ~ name ~ `Assign(rhs);}` ~ + `public auto opBinary(string op, T)(T rhs) if (op == "` ~ operator ~ + `" && __traits(compiles, swigOp` ~ name ~ `(rhs))) { return swigOp` ~ name ~ `(rhs);}`; + } + mixin(swigOpBinary!("+", "Add")); + mixin(swigOpBinary!("-", "Sub")); + mixin(swigOpBinary!("*", "Mul")); + mixin(swigOpBinary!("/", "Div")); + mixin(swigOpBinary!("%", "Mod")); + mixin(swigOpBinary!("&", "And")); + mixin(swigOpBinary!("|", "Or")); + mixin(swigOpBinary!("^", "Xor")); + mixin(swigOpBinary!("<<", "Shl")); + mixin(swigOpBinary!(">>", "Shr")); + + private template swigOpUnary(string operator, string name) { + enum swigOpUnary = `public auto opUnary(string op)() if (op == "` ~ operator ~ + `" && __traits(compiles, swigOp` ~ name ~ `())) { return swigOp` ~ name ~ `();}`; + } + mixin(swigOpUnary!("+", "Pos")); + mixin(swigOpUnary!("-", "Neg")); + mixin(swigOpUnary!("~", "Com")); + mixin(swigOpUnary!("++", "Inc")); + mixin(swigOpUnary!("--", "Dec")); +%} +#endif + +%pragma(d) imdmodulecode=%{ +} +%} + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/d/dprimitives.swg b/macx64/bin/swig/share/swig/4.0.0/d/dprimitives.swg new file mode 100644 index 00000000..eaee816d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/dprimitives.swg @@ -0,0 +1,171 @@ +/* ----------------------------------------------------------------------------- + * dprimitves.swg + * + * Typemaps for primitive types. + * ----------------------------------------------------------------------------- */ + +// C long/ulong width depends on the target arch, use stdlib aliases for them. +#if (SWIG_D_VERSION == 1) +%pragma(d) imdmoduleimports = "static import tango.stdc.config;" +%pragma(d) globalproxyimports = "static import tango.stdc.config;" +#define SWIG_LONG_DTYPE tango.stdc.config.c_long +#define SWIG_ULONG_DTYPE tango.stdc.config.c_ulong +#else +%pragma(d) imdmoduleimports = "static import core.stdc.config;" +%pragma(d) globalproxyimports = "static import core.stdc.config;" +#define SWIG_LONG_DTYPE core.stdc.config.c_long +#define SWIG_ULONG_DTYPE core.stdc.config.c_ulong +#endif + +/* + * The SWIG_D_PRIMITIVE macro is used to define the typemaps for the primitive + * types, because are more or less the same for all of them. The few special + * cases are handled below. + */ +%define SWIG_D_PRIMITIVE(TYPE, DTYPE) +%typemap(ctype) TYPE, const TYPE & "TYPE" +%typemap(imtype) TYPE, const TYPE & "DTYPE" +%typemap(dtype, cprimitive="1") TYPE, const TYPE & "DTYPE" + +%typemap(in) TYPE "$1 = ($1_ltype)$input;" +%typemap(out) TYPE "$result = $1;" +%typemap(directorin) TYPE "$input = $1;" +%typemap(directorout) TYPE "$result = ($1_ltype)$input;" +%typemap(ddirectorin) TYPE "$winput" +%typemap(ddirectorout) TYPE "$dcall" + +%typemap(in) const TYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} +%typemap(out) const TYPE & "$result = *$1;" +%typemap(directorin) const TYPE & "$input = $1;" +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const TYPE & +%{ static $*1_ltype temp; + temp = ($*1_ltype)$input; + $result = &temp; %} +%typemap(ddirectorin) const TYPE & "$winput" +%typemap(ddirectorout) const TYPE & "$dcall" + +%typemap(din) TYPE, const TYPE & "$dinput" +%typemap(dout, excode=SWIGEXCODE) TYPE, const TYPE & { + auto ret = $imcall;$excode + return ret; +} +%enddef + + +SWIG_D_PRIMITIVE(bool, bool) +SWIG_D_PRIMITIVE(char, char) +SWIG_D_PRIMITIVE(signed char, byte) +SWIG_D_PRIMITIVE(unsigned char, ubyte) +SWIG_D_PRIMITIVE(short, short) +SWIG_D_PRIMITIVE(unsigned short, ushort) +SWIG_D_PRIMITIVE(int, int) +SWIG_D_PRIMITIVE(unsigned int, uint) +SWIG_D_PRIMITIVE(long, SWIG_LONG_DTYPE) +SWIG_D_PRIMITIVE(unsigned long, SWIG_ULONG_DTYPE) +SWIG_D_PRIMITIVE(size_t, size_t) +SWIG_D_PRIMITIVE(long long, long) +SWIG_D_PRIMITIVE(unsigned long long, ulong) +SWIG_D_PRIMITIVE(float, float) +SWIG_D_PRIMITIVE(double, double) + + +// The C++ boolean type needs some special casing since it is not part of the +// C standard and is thus represented as unsigned int in the C wrapper layer. +%typemap(ctype) bool, const bool & "unsigned int" +%typemap(imtype) bool, const bool & "uint" + +%typemap(in) bool "$1 = $input ? true : false;" +%typemap(in) const bool & ($*1_ltype temp) +%{ temp = $input ? true : false; + $1 = &temp; %} + +%typemap(directorout) bool + "$result = $input ? true : false;" +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const bool & +%{ static $*1_ltype temp; + temp = $input ? true : false; + $result = &temp; %} + +%typemap(ddirectorin) bool "($winput ? true : false)" + +%typemap(dout, excode=SWIGEXCODE) bool, const bool & { + bool ret = $imcall ? true : false;$excode + return ret; +} + + +// Judging from the history of the C# module, the explicit casts are needed for +// certain versions of VC++. +%typemap(out) unsigned long "$result = (unsigned long)$1;" +%typemap(out) const unsigned long & "$result = (unsigned long)*$1;" + + +/* + * Typecheck typemaps. + */ + +%typecheck(SWIG_TYPECHECK_BOOL) + bool, + const bool & + "" + +%typecheck(SWIG_TYPECHECK_CHAR) + char, + const char & + "" + +%typecheck(SWIG_TYPECHECK_INT8) + signed char, + const signed char & + "" + +%typecheck(SWIG_TYPECHECK_UINT8) + unsigned char, + const unsigned char & + "" + +%typecheck(SWIG_TYPECHECK_INT16) + short, + const short & + "" + +%typecheck(SWIG_TYPECHECK_UINT16) + unsigned short, + const unsigned short & + "" + +%typecheck(SWIG_TYPECHECK_INT32) + int, + long, + const int &, + const long & + "" + +%typecheck(SWIG_TYPECHECK_UINT32) + unsigned int, + unsigned long, + const unsigned int &, + const unsigned long & + "" + +%typecheck(SWIG_TYPECHECK_INT64) + long long, + const long long & + "" + +%typecheck(SWIG_TYPECHECK_UINT64) + unsigned long long, + const unsigned long long & + "" + +%typecheck(SWIG_TYPECHECK_FLOAT) + float, + const float & + "" + +%typecheck(SWIG_TYPECHECK_DOUBLE) + double, + const double & + "" diff --git a/macx64/bin/swig/share/swig/4.0.0/d/dstrings.swg b/macx64/bin/swig/share/swig/4.0.0/d/dstrings.swg new file mode 100644 index 00000000..02895c15 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/dstrings.swg @@ -0,0 +1,80 @@ +/* ----------------------------------------------------------------------------- + * dstrings.swg + * + * Typemaps for wrapping pointers to/arrays of C chars as D strings. + * ----------------------------------------------------------------------------- */ + +%define SWIGD_STRING_TYPEMAPS(DW_STRING_TYPE, DP_STRING_TYPE, FROM_STRINGZ, TO_STRINGZ) +%typemap(ctype) char *, char *&, char[ANY], char[] "char *" +%typemap(imtype) char *, char *&, char[ANY], char[] #DW_STRING_TYPE +%typemap(dtype) char *, char *&, char[ANY], char[] #DP_STRING_TYPE + + +/* + * char* typemaps. + */ + +%typemap(in) char * %{ $1 = ($1_ltype)$input; %} +%typemap(out) char * %{ $result = SWIG_d_string_callback((const char *)$1); %} +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) char * %{ $result = ($1_ltype)$input; %} +%typemap(directorin) char * %{ $input = SWIG_d_string_callback((const char *)$1); %} +%typemap(ddirectorin) char * "FROM_STRINGZ($winput)" +%typemap(ddirectorout) char * "TO_STRINGZ($dcall)" + + +/* + * char*& typemaps. + */ + +%typemap(in) char *& ($*1_ltype temp = 0) %{ + temp = ($*1_ltype)$input; + $1 = &temp; +%} +%typemap(out) char *& %{ if ($1) $result = SWIG_d_string_callback((const char *)*$1); %} + + +/* + * char array typemaps. + */ + +%typemap(in) char[ANY], char[] %{ $1 = ($1_ltype)$input; %} +%typemap(out) char[ANY], char[] %{ $result = SWIG_d_string_callback((const char *)$1); %} + +%typemap(directorout) char[ANY], char[] %{ $result = ($1_ltype)$input; %} +%typemap(directorin) char[ANY], char[] %{ $input = SWIG_d_string_callback((const char *)$1); %} + +%typemap(ddirectorin) char[ANY], char[] "$winput" +%typemap(ddirectorout) char[ANY], char[] "$dcall" + + +%typemap(din) char *, char *&, char[ANY], char[] "($dinput ? TO_STRINGZ($dinput) : null)" +%typemap(dout, excode=SWIGEXCODE) char *, char *&, char[ANY], char[] { + DP_STRING_TYPE ret = FROM_STRINGZ ## ($imcall);$excode + return ret; +} + +%typecheck(SWIG_TYPECHECK_STRING) + char *, + char *&, + char[ANY], + char[] + "" +%enddef + + +// We need to have the \0-terminated string conversion functions available in +// the D proxy modules. +#if (SWIG_D_VERSION == 1) +// Could be easily extended to support Phobos as well. +SWIGD_STRING_TYPEMAPS(char*, char[], tango.stdc.stringz.fromStringz, tango.stdc.stringz.toStringz) + +%pragma(d) globalproxyimports = "static import tango.stdc.stringz;"; +#else +SWIGD_STRING_TYPEMAPS(const(char)*, string, std.conv.to!string, std.string.toStringz) + +%pragma(d) globalproxyimports = %{ +static import std.conv; +static import std.string; +%} +#endif +#undef SWIGD_STRING_TYPEMAPS diff --git a/macx64/bin/swig/share/swig/4.0.0/d/dswigtype.swg b/macx64/bin/swig/share/swig/4.0.0/d/dswigtype.swg new file mode 100644 index 00000000..f0d604b6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/dswigtype.swg @@ -0,0 +1,197 @@ +/* ----------------------------------------------------------------------------- + * dswigtype.swg + * + * Typemaps for non-primitive types (C/C++ classes and structs). + * ----------------------------------------------------------------------------- */ + +%typemap(ctype) SWIGTYPE "void *" +%typemap(imtype) SWIGTYPE "void*" +%typemap(dtype) SWIGTYPE "$&dclassname" + +%typemap(ctype) SWIGTYPE [] "void *" +%typemap(imtype) SWIGTYPE [] "void*" +%typemap(dtype) SWIGTYPE [] "$dclassname" + +%typemap(ctype) SWIGTYPE * "void *" +%typemap(imtype) SWIGTYPE * "void*" +%typemap(dtype, nativepointer="$dtype") SWIGTYPE * "$dclassname" + +%typemap(ctype) SWIGTYPE & "void *" +%typemap(imtype) SWIGTYPE & "void*" +%typemap(dtype, nativepointer="$dtype") SWIGTYPE & "$dclassname" + +%typemap(ctype) SWIGTYPE *const& "void *" +%typemap(imtype) SWIGTYPE *const& "void*" +%typemap(dtype) SWIGTYPE *const& "$*dclassname" + +%typecheck(SWIG_TYPECHECK_POINTER) + SWIGTYPE, + SWIGTYPE *, + SWIGTYPE &, + SWIGTYPE [], + SWIGTYPE *const& + "" + + +/* + * By-value conversion typemaps (parameter is converted to a pointer). + */ + +%typemap(in, canthrow=1) SWIGTYPE ($&1_type argp) +%{ argp = ($&1_ltype)$input; + if (!argp) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Attempt to dereference null $1_type"); + return $null; + } + $1 = *argp; %} + +%typemap(out) SWIGTYPE +#ifdef __cplusplus +%{ $result = new $1_ltype((const $1_ltype &)$1); %} +#else +{ + $&1_ltype $1ptr = ($&1_ltype) malloc(sizeof($1_ltype)); + memmove($1ptr, &$1, sizeof($1_type)); + $result = $1ptr; +} +#endif + +%typemap(directorin) SWIGTYPE + "$input = (void *)new $1_ltype((const $1_ltype &)$1);" +%typemap(directorout) SWIGTYPE +%{ if (!$input) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Unexpected null return for type $1_type"); + return $null; + } + $result = *($&1_ltype)$input; %} + +%typemap(ddirectorin) SWIGTYPE "new $&dclassname($winput, true)" +%typemap(ddirectorout) SWIGTYPE "$&dclassname.swigGetCPtr($dcall)" + +%typemap(din) SWIGTYPE "$&dclassname.swigGetCPtr($dinput)" +%typemap(dout, excode=SWIGEXCODE) SWIGTYPE { + $&dclassname ret = new $&dclassname($imcall, true);$excode + return ret; +} + + +/* + * Pointer conversion typemaps. + */ + +%typemap(in) SWIGTYPE * "$1 = ($1_ltype)$input;" +%typemap(out) SWIGTYPE * "$result = (void *)$1;" + +%typemap(directorin) SWIGTYPE * + "$input = (void *) $1;" +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE * + "$result = ($1_ltype)$input;" + +%typemap(ddirectorin, + nativepointer="cast($dtype)$winput" +) SWIGTYPE * "($winput is null) ? null : new $dclassname($winput, false)" + +%typemap(ddirectorout, + nativepointer="cast(void*)$dcall" +) SWIGTYPE * "$dclassname.swigGetCPtr($dcall)" + +%typemap(din, + nativepointer="cast(void*)$dinput" +) SWIGTYPE * "$dclassname.swigGetCPtr($dinput)" + +%typemap(dout, excode=SWIGEXCODE, + nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}" +) SWIGTYPE * { + void* cPtr = $imcall; + $dclassname ret = (cPtr is null) ? null : new $dclassname(cPtr, $owner);$excode + return ret; +} + +// Use the same typemaps for const pointers. +%apply SWIGTYPE * { SWIGTYPE *const } + + +/* + * Reference conversion typemaps. + */ + +%typemap(in, canthrow=1) SWIGTYPE & %{ $1 = ($1_ltype)$input; + if (!$1) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "$1_type type is null"); + return $null; + } %} +%typemap(out) SWIGTYPE & "$result = (void *)$1;" + +%typemap(directorin) SWIGTYPE & + "$input = ($1_ltype) &$1;" +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE & +%{ if (!$input) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Unexpected null return for type $1_type"); + return $null; + } + $result = ($1_ltype)$input; %} + +%typemap(ddirectorin, + nativepointer="cast($dtype)$winput" +) SWIGTYPE & "new $dclassname($winput, false)" +%typemap(ddirectorout, + nativepointer="cast(void*)$dcall" +) SWIGTYPE & "$dclassname.swigGetCPtr($dcall)" + +%typemap(din, + nativepointer="cast(void*)$dinput" +) SWIGTYPE & "$dclassname.swigGetCPtr($dinput)" +%typemap(dout, excode=SWIGEXCODE, + nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}") SWIGTYPE & { + $dclassname ret = new $dclassname($imcall, $owner);$excode + return ret; +} + + +/* + * Array conversion typemaps. + */ + +%typemap(in) SWIGTYPE [] %{ $1 = ($1_ltype)$input; %} +%typemap(out) SWIGTYPE [] %{ $result = $1; %} + +%typemap(din) SWIGTYPE [] "$dclassname.swigGetCPtr($dinput)" +%typemap(dout, excode=SWIGEXCODE) SWIGTYPE [] { + void* cPtr = $imcall; + $dclassname ret = (cPtr is null) ? null : new $dclassname(cPtr, $owner);$excode + return ret; +} + +// Treat references to arrays like references to a single element. +%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } + + +/* + * Pointer reference conversion typemaps. + */ + +%typemap(in) SWIGTYPE *const& ($*1_ltype temp = 0) +%{ temp = ($*1_ltype)$input; + $1 = ($1_ltype)&temp; %} +%typemap(out) SWIGTYPE *const& +%{ $result = (void *)*$1; %} + +%typemap(din) SWIGTYPE *const& "$*dclassname.swigGetCPtr($dinput)" +%typemap(dout, excode=SWIGEXCODE) SWIGTYPE *const& { + void* cPtr = $imcall; + $*dclassname ret = (cPtr is null) ? null : new $*dclassname(cPtr, $owner);$excode + return ret; +} +%typemap(directorin) SWIGTYPE *const& + "$input = (void *) $1;" +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE *const& +%{ static $*1_ltype swig_temp; + swig_temp = ($*1_ltype)$input; + $result = &swig_temp; %} +%typemap(ddirectorin, + nativepointer="cast($dtype)$winput" +) SWIGTYPE *const& "($winput is null) ? null : new $*dclassname($winput, false)" +%typemap(ddirectorout, + nativepointer="cast(void*)$dcall" +) SWIGTYPE *const& "$*dclassname.swigGetCPtr($dcall)" + diff --git a/macx64/bin/swig/share/swig/4.0.0/d/dvoid.swg b/macx64/bin/swig/share/swig/4.0.0/d/dvoid.swg new file mode 100644 index 00000000..805f1e71 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/dvoid.swg @@ -0,0 +1,18 @@ +/* ----------------------------------------------------------------------------- + * dvoid.swg + * + * Typemaps for handling void function return types and empty parameter lists. + * ----------------------------------------------------------------------------- */ + +%typemap(ctype) void "void" +%typemap(imtype) void "void" +%typemap(dtype, cprimitive="1") void "void" + +%typemap(out, null="") void "" +%typemap(ddirectorin) void "$winput" +%typemap(ddirectorout) void "$dcall" +%typemap(directorin) void "" + +%typemap(dout, excode=SWIGEXCODE) void { + $imcall;$excode +} diff --git a/macx64/bin/swig/share/swig/4.0.0/d/std_common.i b/macx64/bin/swig/share/swig/4.0.0/d/std_common.i new file mode 100644 index 00000000..cee11e8c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/std_common.i @@ -0,0 +1,5 @@ +%include + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + diff --git a/macx64/bin/swig/share/swig/4.0.0/d/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/d/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/d/std_except.i b/macx64/bin/swig/share/swig/4.0.0/d/std_except.i new file mode 100644 index 00000000..fbfd6c33 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/std_except.i @@ -0,0 +1,32 @@ +/* ----------------------------------------------------------------------------- + * std_except.i + * + * Typemaps used by the STL wrappers that throw exceptions. These typemaps are + * used when methods are declared with an STL exception specification, such as + * size_t at() const throw (std::out_of_range); + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +%} + +namespace std +{ + %ignore exception; + struct exception {}; +} + +%typemap(throws, canthrow=1) std::bad_cast "SWIG_DSetPendingException(SWIG_DException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::bad_exception "SWIG_DSetPendingException(SWIG_DException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::domain_error "SWIG_DSetPendingException(SWIG_DException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::exception "SWIG_DSetPendingException(SWIG_DException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::invalid_argument "SWIG_DSetPendingException(SWIG_DIllegalArgumentException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::length_error "SWIG_DSetPendingException(SWIG_DNoSuchElementException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::logic_error "SWIG_DSetPendingException(SWIG_DException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::out_of_range "SWIG_DSetPendingException(SWIG_DNoSuchElementException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::overflow_error "SWIG_DSetPendingException(SWIG_DException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::range_error "SWIG_DSetPendingException(SWIG_DException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::runtime_error "SWIG_DSetPendingException(SWIG_DException, $1.what());\n return $null;" +%typemap(throws, canthrow=1) std::underflow_error "SWIG_DSetPendingException(SWIG_DException, $1.what());\n return $null;" + diff --git a/macx64/bin/swig/share/swig/4.0.0/d/std_map.i b/macx64/bin/swig/share/swig/4.0.0/d/std_map.i new file mode 100644 index 00000000..c5e03d06 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/std_map.i @@ -0,0 +1,62 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +namespace std { + template > class map { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + } + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/d/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/d/std_pair.i new file mode 100644 index 00000000..732347db --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/std_pair.i @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/d/std_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/d/std_shared_ptr.i new file mode 100644 index 00000000..df873679 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/std_shared_ptr.i @@ -0,0 +1,2 @@ +#define SWIG_SHARED_PTR_NAMESPACE std +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/d/std_string.i b/macx64/bin/swig/share/swig/4.0.0/d/std_string.i new file mode 100644 index 00000000..8d75d23e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/std_string.i @@ -0,0 +1,98 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * Typemaps for std::string and const std::string& + * These are mapped to a D char[] and are passed around by value. + * + * To use non-const std::string references, use the following %apply. Note + * that they are passed by value. + * %apply const std::string & {std::string &}; + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +namespace std { + +%naturalvar string; + +class string; + +%define SWIGD_STD_STRING_TYPEMAPS(DW_STRING_TYPE, DP_STRING_TYPE, FROM_STRINGZ, TO_STRINGZ) +// string +%typemap(ctype) string, const string & "char *" +%typemap(imtype) string, const string & #DW_STRING_TYPE +%typemap(dtype) string, const string & #DP_STRING_TYPE + +%typemap(in, canthrow=1) string, const string & +%{ if (!$input) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "null string"); + return $null; + } + $1.assign($input); %} +%typemap(in, canthrow=1) const string & +%{ if (!$input) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "null string"); + return $null; + } + $*1_ltype $1_str($input); + $1 = &$1_str; %} + +%typemap(out) string %{ $result = SWIG_d_string_callback($1.c_str()); %} +%typemap(out) const string & %{ $result = SWIG_d_string_callback($1->c_str()); %} + +%typemap(din) string, const string & "($dinput ? TO_STRINGZ($dinput) : null)" +%typemap(dout, excode=SWIGEXCODE) string, const string & { + DP_STRING_TYPE ret = FROM_STRINGZ($imcall);$excode + return ret; +} + +%typemap(directorin) string, const string & %{ $input = SWIG_d_string_callback($1.c_str()); %} + +%typemap(directorout, canthrow=1) string +%{ if (!$input) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "null string"); + return $null; + } + $result.assign($input); %} + +%typemap(directorout, canthrow=1, warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const string & +%{ if (!$input) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "null string"); + return $null; + } + /* possible thread/reentrant code problem */ + static $*1_ltype $1_str; + $1_str = $input; + $result = &$1_str; %} + +%typemap(ddirectorin) string, const string & "FROM_STRINGZ($winput)" +%typemap(ddirectorout) string, const string & "TO_STRINGZ($dcall)" + +%typemap(throws, canthrow=1) string, const string & +%{ SWIG_DSetPendingException(SWIG_DException, $1.c_str()); + return $null; %} + +%typemap(typecheck) string, const string & = char *; +%enddef + +// We need to have the \0-terminated string conversion functions available in +// the D proxy modules. +#if (SWIG_D_VERSION == 1) +// Could be easily extended to support Phobos as well. +SWIGD_STD_STRING_TYPEMAPS(char*, char[], tango.stdc.stringz.fromStringz, tango.stdc.stringz.toStringz) + +%pragma(d) globalproxyimports = "static import tango.stdc.stringz;"; +#else +SWIGD_STD_STRING_TYPEMAPS(const(char)*, string, std.conv.to!string, std.string.toStringz) + +%pragma(d) globalproxyimports = %{ +static import std.conv; +static import std.string; +%} +#endif + +#undef SWIGD_STD_STRING_TYPEMAPS + +} // namespace std diff --git a/macx64/bin/swig/share/swig/4.0.0/d/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/d/std_vector.i new file mode 100644 index 00000000..fb8f7d2e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/std_vector.i @@ -0,0 +1,605 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * + * SWIG typemaps for std::vector, D implementation. + * + * The D wrapper is made to loosely resemble a tango.util.container.more.Vector + * and to provide built-in array-like access. + * + * If T does define an operator==, then use the SWIG_STD_VECTOR_ENHANCED + * macro to obtain enhanced functionality (none yet), for example: + * + * SWIG_STD_VECTOR_ENHANCED(SomeNamespace::Klass) + * %template(VectKlass) std::vector; + * + * Warning: heavy macro usage in this file. Use swig -E to get a sane view on + * the real file contents! + * ----------------------------------------------------------------------------- */ + +// Warning: Use the typemaps here in the expectation that the macros they are in will change name. + +%include + +// MACRO for use within the std::vector class body +%define SWIG_STD_VECTOR_MINIMUM_INTERNAL(CONST_REFERENCE, CTYPE...) +#if (SWIG_D_VERSION == 1) +%typemap(dimports) std::vector< CTYPE > "static import tango.core.Exception;" +%proxycode %{ +public this($typemap(dtype, CTYPE)[] values) { + this(); + append(values); +} + +alias push_back add; +alias push_back push; +alias push_back opCatAssign; +alias size length; +alias opSlice slice; + +public $typemap(dtype, CTYPE) opIndexAssign($typemap(dtype, CTYPE) value, size_t index) { + if (index >= size()) { + throw new tango.core.Exception.NoSuchElementException("Tried to assign to element out of vector bounds."); + } + setElement(index, value); + return value; +} + +public $typemap(dtype, CTYPE) opIndex(size_t index) { + if (index >= size()) { + throw new tango.core.Exception.NoSuchElementException("Tried to read from element out of vector bounds."); + } + return getElement(index); +} + +public void append($typemap(dtype, CTYPE)[] value...) { + foreach (v; value) { + add(v); + } +} + +public $typemap(dtype, CTYPE)[] opSlice() { + $typemap(dtype, CTYPE)[] array = new $typemap(dtype, CTYPE)[size()]; + foreach (i, ref value; array) { + value = getElement(i); + } + return array; +} + +public int opApply(int delegate(ref $typemap(dtype, CTYPE) value) dg) { + int result; + + size_t currentSize = size(); + for (size_t i = 0; i < currentSize; ++i) { + auto value = getElement(i); + result = dg(value); + setElement(i, value); + } + return result; +} + +public int opApply(int delegate(ref size_t index, ref $typemap(dtype, CTYPE) value) dg) { + int result; + + size_t currentSize = size(); + for (size_t i = 0; i < currentSize; ++i) { + auto value = getElement(i); + + // Workaround for http://d.puremagic.com/issues/show_bug.cgi?id=2443. + auto index = i; + + result = dg(index, value); + setElement(i, value); + } + return result; +} + +public void capacity(size_t value) { + if (value < size()) { + throw new tango.core.Exception.IllegalArgumentException("Tried to make the capacity of a vector smaller than its size."); + } + + reserve(value); +} +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef CTYPE value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef CONST_REFERENCE const_reference; + + void clear(); + void push_back(CTYPE const& x); + size_type size() const; + size_type capacity() const; + void reserve(size_type n) throw (std::length_error); + + vector(); + vector(const vector &other); + + %extend { + vector(size_type capacity) throw (std::length_error) { + std::vector< CTYPE >* pv = 0; + pv = new std::vector< CTYPE >(); + + // Might throw std::length_error. + pv->reserve(capacity); + + return pv; + } + + size_type unused() const { + return $self->capacity() - $self->size(); + } + + const_reference remove() throw (std::out_of_range) { + if ($self->empty()) { + throw std::out_of_range("Tried to remove last element from empty vector."); + } + + std::vector< CTYPE >::const_reference value = $self->back(); + $self->pop_back(); + return value; + } + + const_reference remove(size_type index) throw (std::out_of_range) { + if (index >= $self->size()) { + throw std::out_of_range("Tried to remove element with invalid index."); + } + + std::vector< CTYPE >::iterator it = $self->begin() + index; + std::vector< CTYPE >::const_reference value = *it; + $self->erase(it); + return value; + } + } + + // Wrappers for setting/getting items with the possibly thrown exception + // specified (important for SWIG wrapper generation). + %extend { + const_reference getElement(size_type index) throw (std::out_of_range) { + if ((index < 0) || ($self->size() <= index)) { + throw std::out_of_range("Tried to get value of element with invalid index."); + } + return (*$self)[index]; + } + } + + // Use CTYPE const& instead of const_reference to work around SWIG code + // generation issue when using const pointers as vector elements (like + // std::vector< const int* >). + %extend { + void setElement(size_type index, CTYPE const& val) throw (std::out_of_range) { + if ((index < 0) || ($self->size() <= index)) { + throw std::out_of_range("Tried to set value of element with invalid index."); + } + (*$self)[index] = val; + } + } + +%dmethodmodifiers std::vector::getElement "private" +%dmethodmodifiers std::vector::setElement "private" +%dmethodmodifiers std::vector::reserve "private" + +#else + +%typemap(dimports) std::vector< CTYPE > %{ +static import std.algorithm; +static import std.exception; +static import std.range; +static import std.traits; +%} +%proxycode %{ +alias size_t KeyType; +alias $typemap(dtype, CTYPE) ValueType; + +this(ValueType[] values...) { + this(); + reserve(values.length); + foreach (e; values) { + this ~= e; + } +} + +struct Range { + private $typemap(dtype, std::vector< CTYPE >) _outer; + private size_t _a, _b; + + this($typemap(dtype, std::vector< CTYPE >) data, size_t a, size_t b) { + _outer = data; + _a = a; + _b = b; + } + + @property bool empty() const { + assert((cast($typemap(dtype, std::vector< CTYPE >))_outer).length >= _b); + return _a >= _b; + } + + @property Range save() { + return this; + } + + @property ValueType front() { + std.exception.enforce(!empty); + return _outer[_a]; + } + + @property void front(ValueType value) { + std.exception.enforce(!empty); + _outer[_a] = std.algorithm.move(value); + } + + void popFront() { + std.exception.enforce(!empty); + ++_a; + } + + void opIndexAssign(ValueType value, size_t i) { + i += _a; + std.exception.enforce(i < _b && _b <= _outer.length); + _outer[i] = value; + } + + void opIndexOpAssign(string op)(ValueType value, size_t i) { + std.exception.enforce(_outer && _a + i < _b && _b <= _outer.length); + auto element = _outer[i]; + mixin("element "~op~"= value;"); + _outer[i] = element; + } +} + +// TODO: dup? + +Range opSlice() { + return Range(this, 0, length); +} + +Range opSlice(size_t a, size_t b) { + std.exception.enforce(a <= b && b <= length); + return Range(this, a, b); +} + +size_t opDollar() const { + return length; +} + +@property ValueType front() { + std.exception.enforce(!empty); + return getElement(0); +} + +@property void front(ValueType value) { + std.exception.enforce(!empty); + setElement(0, value); +} + +@property ValueType back() { + std.exception.enforce(!empty); + return getElement(length - 1); +} + +@property void back(ValueType value) { + std.exception.enforce(!empty); + setElement(length - 1, value); +} + +ValueType opIndex(size_t i) { + return getElement(i); +} + +void opIndexAssign(ValueType value, size_t i) { + setElement(i, value); +} + +void opIndexOpAssign(string op)(ValueType value, size_t i) { + auto element = this[i]; + mixin("element "~op~"= value;"); + this[i] = element; +} + +ValueType[] opBinary(string op, Stuff)(Stuff stuff) if (op == "~") { + ValueType[] result; + result ~= this[]; + assert(result.length == length); + result ~= stuff[]; + return result; +} + +void opOpAssign(string op, Stuff)(Stuff stuff) if (op == "~") { + static if (is(typeof(insertBack(stuff)))) { + insertBack(stuff); + } else if (is(typeof(insertBack(stuff[])))) { + insertBack(stuff[]); + } else { + static assert(false, "Cannot append " ~ Stuff.stringof ~ " to " ~ typeof(this).stringof); + } +} + +alias size length; + +alias remove removeAny; +alias removeAny stableRemoveAny; + +size_t insertBack(Stuff)(Stuff stuff) +if (std.traits.isImplicitlyConvertible!(Stuff, ValueType)){ + push_back(stuff); + return 1; +} +size_t insertBack(Stuff)(Stuff stuff) +if (std.range.isInputRange!Stuff && + std.traits.isImplicitlyConvertible!(std.range.ElementType!Stuff, ValueType)) { + size_t itemCount; + foreach(item; stuff) { + insertBack(item); + ++itemCount; + } + return itemCount; +} +alias insertBack insert; + +alias pop_back removeBack; +alias pop_back stableRemoveBack; + +size_t insertBefore(Stuff)(Range r, Stuff stuff) +if (std.traits.isImplicitlyConvertible!(Stuff, ValueType)) { + std.exception.enforce(r._outer.swigCPtr == swigCPtr && r._a < length); + insertAt(r._a, stuff); + return 1; +} + +size_t insertBefore(Stuff)(Range r, Stuff stuff) +if (std.range.isInputRange!Stuff && std.traits.isImplicitlyConvertible!(ElementType!Stuff, ValueType)) { + std.exception.enforce(r._outer.swigCPtr == swigCPtr && r._a <= length); + + size_t insertCount; + foreach(i, item; stuff) { + insertAt(r._a + i, item); + ++insertCount; + } + + return insertCount; +} + +size_t insertAfter(Stuff)(Range r, Stuff stuff) { + // TODO: optimize + immutable offset = r._a + r.length; + std.exception.enforce(offset <= length); + auto result = insertBack(stuff); + std.algorithm.bringToFront(this[offset .. length - result], + this[length - result .. length]); + return result; +} + +size_t replace(Stuff)(Range r, Stuff stuff) +if (std.range.isInputRange!Stuff && + std.traits.isImplicitlyConvertible!(ElementType!Stuff, ValueType)) { + immutable offset = r._a; + std.exception.enforce(offset <= length); + size_t result; + for (; !stuff.empty; stuff.popFront()) { + if (r.empty) { + // append the rest + return result + insertBack(stuff); + } + r.front = stuff.front; + r.popFront(); + ++result; + } + // Remove remaining stuff in r + remove(r); + return result; +} + +size_t replace(Stuff)(Range r, Stuff stuff) +if (std.traits.isImplicitlyConvertible!(Stuff, ValueType)) +{ + if (r.empty) + { + insertBefore(r, stuff); + } + else + { + r.front = stuff; + r.popFront(); + remove(r); + } + return 1; +} + +Range linearRemove(Range r) { + std.exception.enforce(r._a <= r._b && r._b <= length); + immutable tailLength = length - r._b; + linearRemove(r._a, r._b); + return this[length - tailLength .. length]; +} +alias remove stableLinearRemove; + +int opApply(int delegate(ref $typemap(dtype, CTYPE) value) dg) { + int result; + + size_t currentSize = size(); + for (size_t i = 0; i < currentSize; ++i) { + auto value = getElement(i); + result = dg(value); + setElement(i, value); + } + return result; +} + +int opApply(int delegate(ref size_t index, ref $typemap(dtype, CTYPE) value) dg) { + int result; + + size_t currentSize = size(); + for (size_t i = 0; i < currentSize; ++i) { + auto value = getElement(i); + + // Workaround for http://d.puremagic.com/issues/show_bug.cgi?id=2443. + auto index = i; + + result = dg(index, value); + setElement(i, value); + } + return result; +} +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef CTYPE value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef CONST_REFERENCE const_reference; + + bool empty() const; + void clear(); + void push_back(CTYPE const& x); + void pop_back(); + size_type size() const; + size_type capacity() const; + void reserve(size_type n) throw (std::length_error); + + vector(); + vector(const vector &other); + + %extend { + vector(size_type capacity) throw (std::length_error) { + std::vector< CTYPE >* pv = 0; + pv = new std::vector< CTYPE >(); + + // Might throw std::length_error. + pv->reserve(capacity); + + return pv; + } + + const_reference remove() throw (std::out_of_range) { + if ($self->empty()) { + throw std::out_of_range("Tried to remove last element from empty vector."); + } + + std::vector< CTYPE >::const_reference value = $self->back(); + $self->pop_back(); + return value; + } + + const_reference remove(size_type index) throw (std::out_of_range) { + if (index >= $self->size()) { + throw std::out_of_range("Tried to remove element with invalid index."); + } + + std::vector< CTYPE >::iterator it = $self->begin() + index; + std::vector< CTYPE >::const_reference value = *it; + $self->erase(it); + return value; + } + + void removeBack(size_type how_many) throw (std::out_of_range) { + std::vector< CTYPE >::iterator end = $self->end(); + std::vector< CTYPE >::iterator start = end - how_many; + $self->erase(start, end); + } + + void linearRemove(size_type start_index, size_type end_index) throw (std::out_of_range) { + std::vector< CTYPE >::iterator start = $self->begin() + start_index; + std::vector< CTYPE >::iterator end = $self->begin() + end_index; + $self->erase(start, end); + } + + void insertAt(size_type index, CTYPE const& x) throw (std::out_of_range) { + std::vector< CTYPE >::iterator it = $self->begin() + index; + $self->insert(it, x); + } + } + + // Wrappers for setting/getting items with the possibly thrown exception + // specified (important for SWIG wrapper generation). + %extend { + const_reference getElement(size_type index) throw (std::out_of_range) { + if ((index < 0) || ($self->size() <= index)) { + throw std::out_of_range("Tried to get value of element with invalid index."); + } + return (*$self)[index]; + } + } + // Use CTYPE const& instead of const_reference to work around SWIG code + // generation issue when using const pointers as vector elements (like + // std::vector< const int* >). + %extend { + void setElement(size_type index, CTYPE const& val) throw (std::out_of_range) { + if ((index < 0) || ($self->size() <= index)) { + throw std::out_of_range("Tried to set value of element with invalid index."); + } + (*$self)[index] = val; + } + } + +%dmethodmodifiers std::vector::getElement "private" +%dmethodmodifiers std::vector::setElement "private" +#endif +%enddef + +// Extra methods added to the collection class if operator== is defined for the class being wrapped +// The class will then implement IList<>, which adds extra functionality +%define SWIG_STD_VECTOR_EXTRA_OP_EQUALS_EQUALS(CTYPE...) + %extend { + } +%enddef + +// For vararg handling in macros, from swigmacros.swg +#define %arg(X...) X + +// Macros for std::vector class specializations/enhancements +%define SWIG_STD_VECTOR_ENHANCED(CTYPE...) +namespace std { + template<> class vector { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(const value_type&, %arg(CTYPE)) + SWIG_STD_VECTOR_EXTRA_OP_EQUALS_EQUALS(CTYPE) + }; +} +%enddef + +%{ +#include +#include +%} + +namespace std { + // primary (unspecialized) class template for std::vector + // does not require operator== to be defined + template class vector { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(const value_type&, T) + }; + // specializations for pointers + template class vector { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(const value_type&, T *) + SWIG_STD_VECTOR_EXTRA_OP_EQUALS_EQUALS(T *) + }; + // bool is a bit different in the C++ standard - const_reference in particular + template<> class vector { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(bool, bool) + SWIG_STD_VECTOR_EXTRA_OP_EQUALS_EQUALS(bool) + }; +} + +// template specializations for std::vector +// these provide extra collections methods as operator== is defined +SWIG_STD_VECTOR_ENHANCED(char) +SWIG_STD_VECTOR_ENHANCED(signed char) +SWIG_STD_VECTOR_ENHANCED(unsigned char) +SWIG_STD_VECTOR_ENHANCED(short) +SWIG_STD_VECTOR_ENHANCED(unsigned short) +SWIG_STD_VECTOR_ENHANCED(int) +SWIG_STD_VECTOR_ENHANCED(unsigned int) +SWIG_STD_VECTOR_ENHANCED(long) +SWIG_STD_VECTOR_ENHANCED(unsigned long) +SWIG_STD_VECTOR_ENHANCED(long long) +SWIG_STD_VECTOR_ENHANCED(unsigned long long) +SWIG_STD_VECTOR_ENHANCED(float) +SWIG_STD_VECTOR_ENHANCED(double) +SWIG_STD_VECTOR_ENHANCED(std::string) // also requires a %include diff --git a/macx64/bin/swig/share/swig/4.0.0/d/stl.i b/macx64/bin/swig/share/swig/4.0.0/d/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/d/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/d/typemaps.i new file mode 100644 index 00000000..4f1b5997 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/typemaps.i @@ -0,0 +1,261 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Pointer and reference handling typemap library + * + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers and C++ references. + * ----------------------------------------------------------------------------- */ + +/* +INPUT typemaps +-------------- + +These typemaps are used for pointer/reference parameters that are input only +and are mapped to a D input parameter. + +The following typemaps can be applied to turn a pointer or reference into a simple +input value. That is, instead of passing a pointer or reference to an object, +you would use a real value instead. + + bool *INPUT, bool &INPUT + signed char *INPUT, signed char &INPUT + unsigned char *INPUT, unsigned char &INPUT + short *INPUT, short &INPUT + unsigned short *INPUT, unsigned short &INPUT + int *INPUT, int &INPUT + unsigned int *INPUT, unsigned int &INPUT + long *INPUT, long &INPUT + unsigned long *INPUT, unsigned long &INPUT + long long *INPUT, long long &INPUT + unsigned long long *INPUT, unsigned long long &INPUT + float *INPUT, float &INPUT + double *INPUT, double &INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +In D you could then use it like this: + double answer = fadd(10.0, 20.0); +*/ + +%define INPUT_TYPEMAP(TYPE, CTYPE, DTYPE) +%typemap(ctype, out="void *") TYPE *INPUT, TYPE &INPUT "CTYPE" +%typemap(imtype, out="void*") TYPE *INPUT, TYPE &INPUT "DTYPE" +%typemap(dtype, out="DTYPE*") TYPE *INPUT, TYPE &INPUT "DTYPE" +%typemap(din) TYPE *INPUT, TYPE &INPUT "$dinput" + +%typemap(in) TYPE *INPUT, TYPE &INPUT +%{ $1 = ($1_ltype)&$input; %} + +%typemap(typecheck) TYPE *INPUT = TYPE; +%typemap(typecheck) TYPE &INPUT = TYPE; +%enddef + +INPUT_TYPEMAP(bool, unsigned int, bool) +//INPUT_TYPEMAP(char, char, char) // Why was this commented out? +INPUT_TYPEMAP(signed char, signed char, byte) +INPUT_TYPEMAP(unsigned char, unsigned char, ubyte) +INPUT_TYPEMAP(short, short, short) +INPUT_TYPEMAP(unsigned short, unsigned short, ushort) +INPUT_TYPEMAP(int, int, int) +INPUT_TYPEMAP(unsigned int, unsigned int, uint) +INPUT_TYPEMAP(long, long, SWIG_LONG_DTYPE) +INPUT_TYPEMAP(unsigned long, unsigned long, SWIG_ULONG_DTYPE) +INPUT_TYPEMAP(long long, long long, long) +INPUT_TYPEMAP(unsigned long long, unsigned long long, ulong) +INPUT_TYPEMAP(float, float, float) +INPUT_TYPEMAP(double, double, double) + +INPUT_TYPEMAP(enum SWIGTYPE, unsigned int, int) +%typemap(dtype) enum SWIGTYPE *INPUT, enum SWIGTYPE &INPUT "$*dclassname" + +#undef INPUT_TYPEMAP + + +/* +OUTPUT typemaps +--------------- + +These typemaps are used for pointer/reference parameters that are output only and +are mapped to a D output parameter. + +The following typemaps can be applied to turn a pointer or reference into an +"output" value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In D, the 'out' keyword is +used when passing the parameter to a function that takes an output parameter. + + bool *OUTPUT, bool &OUTPUT + signed char *OUTPUT, signed char &OUTPUT + unsigned char *OUTPUT, unsigned char &OUTPUT + short *OUTPUT, short &OUTPUT + unsigned short *OUTPUT, unsigned short &OUTPUT + int *OUTPUT, int &OUTPUT + unsigned int *OUTPUT, unsigned int &OUTPUT + long *OUTPUT, long &OUTPUT + unsigned long *OUTPUT, unsigned long &OUTPUT + long long *OUTPUT, long long &OUTPUT + unsigned long long *OUTPUT, unsigned long long &OUTPUT + float *OUTPUT, float &OUTPUT + double *OUTPUT, double &OUTPUT + +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): + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The D output of the function would be the function return value and the +value returned in the second output parameter. In D you would use it like this: + + double dptr; + double fraction = modf(5, dptr); +*/ + +%define OUTPUT_TYPEMAP(TYPE, CTYPE, DTYPE, TYPECHECKPRECEDENCE) +%typemap(ctype, out="void *") TYPE *OUTPUT, TYPE &OUTPUT "CTYPE *" +%typemap(imtype, out="void*") TYPE *OUTPUT, TYPE &OUTPUT "out DTYPE" +%typemap(dtype, out="DTYPE*") TYPE *OUTPUT, TYPE &OUTPUT "out DTYPE" +%typemap(din) TYPE *OUTPUT, TYPE &OUTPUT "$dinput" + +%typemap(in) TYPE *OUTPUT, TYPE &OUTPUT +%{ $1 = ($1_ltype)$input; %} + +%typecheck(SWIG_TYPECHECK_##TYPECHECKPRECEDENCE) TYPE *OUTPUT, TYPE &OUTPUT "" +%enddef + +OUTPUT_TYPEMAP(bool, unsigned int, bool, BOOL_PTR) +//OUTPUT_TYPEMAP(char, char, char, CHAR_PTR) // Why was this commented out? +OUTPUT_TYPEMAP(signed char, signed char, byte, INT8_PTR) +OUTPUT_TYPEMAP(unsigned char, unsigned char, ubyte, UINT8_PTR) +OUTPUT_TYPEMAP(short, short, short, INT16_PTR) +OUTPUT_TYPEMAP(unsigned short, unsigned short, ushort, UINT16_PTR) +OUTPUT_TYPEMAP(int, int, int, INT32_PTR) +OUTPUT_TYPEMAP(unsigned int, unsigned int, uint, UINT32_PTR) +OUTPUT_TYPEMAP(long, long, SWIG_LONG_DTYPE,INT32_PTR) +OUTPUT_TYPEMAP(unsigned long, unsigned long, SWIG_ULONG_DTYPE,UINT32_PTR) +OUTPUT_TYPEMAP(long long, long long, long, INT64_PTR) +OUTPUT_TYPEMAP(unsigned long long, unsigned long long, ulong, UINT64_PTR) +OUTPUT_TYPEMAP(float, float, float, FLOAT_PTR) +OUTPUT_TYPEMAP(double, double, double, DOUBLE_PTR) + +OUTPUT_TYPEMAP(enum SWIGTYPE, unsigned int, int, INT32_PTR) +%typemap(dtype) enum SWIGTYPE *OUTPUT, enum SWIGTYPE &OUTPUT "out $*dclassname" + +#undef OUTPUT_TYPEMAP + +%typemap(in) bool *OUTPUT, bool &OUTPUT +%{ *$input = 0; + $1 = ($1_ltype)$input; %} + + +/* +INOUT typemaps +-------------- + +These typemaps are for pointer/reference parameters that are both input and +output and are mapped to a D reference parameter. + +The following typemaps can be applied to turn a pointer or reference into a +reference parameters, that is the parameter is both an input and an output. +In D, the 'ref' keyword is used for reference parameters. + + bool *INOUT, bool &INOUT + signed char *INOUT, signed char &INOUT + unsigned char *INOUT, unsigned char &INOUT + short *INOUT, short &INOUT + unsigned short *INOUT, unsigned short &INOUT + int *INOUT, int &INOUT + unsigned int *INOUT, unsigned int &INOUT + long *INOUT, long &INOUT + unsigned long *INOUT, unsigned long &INOUT + long long *INOUT, long long &INOUT + unsigned long long *INOUT, unsigned long long &INOUT + float *INOUT, float &INOUT + double *INOUT, double &INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include + void neg(double *INOUT); + +or you can use the %apply directive : + + %include + %apply double *INOUT { double *x }; + void neg(double *x); + +The D output of the function would be the new value returned by the +reference parameter. In D you would use it like this: + + + double x = 5.0; + neg(x); + +The implementation of the OUTPUT and INOUT typemaps is different to the scripting +languages in that the scripting languages will return the output value as part +of the function return value. +*/ + +%define INOUT_TYPEMAP(TYPE, CTYPE, DTYPE, TYPECHECKPRECEDENCE) +%typemap(ctype, out="void *") TYPE *INOUT, TYPE &INOUT "CTYPE *" +%typemap(imtype, out="void*") TYPE *INOUT, TYPE &INOUT "ref DTYPE" +%typemap(dtype, out="DTYPE*") TYPE *INOUT, TYPE &INOUT "ref DTYPE" +%typemap(din) TYPE *INOUT, TYPE &INOUT "$dinput" + +%typemap(in) TYPE *INOUT, TYPE &INOUT +%{ $1 = ($1_ltype)$input; %} + +%typecheck(SWIG_TYPECHECK_##TYPECHECKPRECEDENCE) TYPE *INOUT, TYPE &INOUT "" +%enddef + +INOUT_TYPEMAP(bool, unsigned int, bool, BOOL_PTR) +//INOUT_TYPEMAP(char, char, char, CHAR_PTR) +INOUT_TYPEMAP(signed char, signed char, byte, INT8_PTR) +INOUT_TYPEMAP(unsigned char, unsigned char, ubyte, UINT8_PTR) +INOUT_TYPEMAP(short, short, short, INT16_PTR) +INOUT_TYPEMAP(unsigned short, unsigned short, ushort, UINT16_PTR) +INOUT_TYPEMAP(int, int, int, INT32_PTR) +INOUT_TYPEMAP(unsigned int, unsigned int, uint, UINT32_PTR) +INOUT_TYPEMAP(long, long, SWIG_LONG_DTYPE,INT32_PTR) +INOUT_TYPEMAP(unsigned long, unsigned long, SWIG_ULONG_DTYPE,UINT32_PTR) +INOUT_TYPEMAP(long long, long long, long, INT64_PTR) +INOUT_TYPEMAP(unsigned long long, unsigned long long, ulong, UINT64_PTR) +INOUT_TYPEMAP(float, float, float, FLOAT_PTR) +INOUT_TYPEMAP(double, double, double, DOUBLE_PTR) + +INOUT_TYPEMAP(enum SWIGTYPE, unsigned int, int, INT32_PTR) +%typemap(dtype) enum SWIGTYPE *INOUT, enum SWIGTYPE &INOUT "ref $*dclassname" + +#undef INOUT_TYPEMAP diff --git a/macx64/bin/swig/share/swig/4.0.0/d/wrapperloader.swg b/macx64/bin/swig/share/swig/4.0.0/d/wrapperloader.swg new file mode 100644 index 00000000..b3c1d0dc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/d/wrapperloader.swg @@ -0,0 +1,308 @@ +/* ----------------------------------------------------------------------------- + * wrapperloader.swg + * + * Support code for dynamically linking the C wrapper library from the D + * wrapper module. + * + * The loading code was adapted from the Derelict project and is used with + * permission from Michael Parker, the original author. + * ----------------------------------------------------------------------------- */ + +%pragma(d) wrapperloadercode = %{ +private { + version(linux) { + version = Nix; + } else version(darwin) { + version = Nix; + } else version(OSX) { + version = Nix; + } else version(FreeBSD) { + version = Nix; + version = freebsd; + } else version(freebsd) { + version = Nix; + } else version(Unix) { + version = Nix; + } else version(Posix) { + version = Nix; + } + + version(Tango) { + static import tango.stdc.string; + static import tango.stdc.stringz; + + version (PhobosCompatibility) { + } else { + alias char[] string; + alias wchar[] wstring; + alias dchar[] dstring; + } + } else { + version(D_Version2) { + static import std.conv; + } + static import std.string; + static import std.c.string; + } + + version(D_Version2) { + mixin("alias const(char)* CCPTR;"); + } else { + alias char* CCPTR; + } + + CCPTR swigToCString(string str) { + version(Tango) { + return tango.stdc.stringz.toStringz(str); + } else { + return std.string.toStringz(str); + } + } + + string swigToDString(CCPTR cstr) { + version(Tango) { + return tango.stdc.stringz.fromStringz(cstr); + } else { + version(D_Version2) { + mixin("return std.conv.to!string(cstr);"); + } else { + return std.c.string.toString(cstr); + } + } + } +} + +class SwigSwigSharedLibLoadException : Exception { + this(in string[] libNames, in string[] reasons) { + string msg = "Failed to load one or more shared libraries:"; + foreach(i, n; libNames) { + msg ~= "\n\t" ~ n ~ " - "; + if(i < reasons.length) + msg ~= reasons[i]; + else + msg ~= "Unknown"; + } + super(msg); + } +} + +class SwigSymbolLoadException : Exception { + this(string SwigSharedLibName, string symbolName) { + super("Failed to load symbol " ~ symbolName ~ " from shared library " ~ SwigSharedLibName); + _symbolName = symbolName; + } + + string symbolName() { + return _symbolName; + } + +private: + string _symbolName; +} + +private { + version(Nix) { + version(freebsd) { + // the dl* functions are in libc on FreeBSD + } + else { + pragma(lib, "dl"); + } + + version(Tango) { + import tango.sys.Common; + } else version(linux) { + import std.c.linux.linux; + } else { + extern(C) { + const RTLD_NOW = 2; + + void *dlopen(CCPTR file, int mode); + int dlclose(void* handle); + void *dlsym(void* handle, CCPTR name); + CCPTR dlerror(); + } + } + + alias void* SwigSharedLibHandle; + + SwigSharedLibHandle swigLoadSharedLib(string libName) { + return dlopen(swigToCString(libName), RTLD_NOW); + } + + void swigUnloadSharedLib(SwigSharedLibHandle hlib) { + dlclose(hlib); + } + + void* swigGetSymbol(SwigSharedLibHandle hlib, string symbolName) { + return dlsym(hlib, swigToCString(symbolName)); + } + + string swigGetErrorStr() { + CCPTR err = dlerror(); + if (err is null) { + return "Unknown Error"; + } + return swigToDString(err); + } + } else version(Windows) { + alias ushort WORD; + alias uint DWORD; + alias CCPTR LPCSTR; + alias void* HMODULE; + alias void* HLOCAL; + alias int function() FARPROC; + struct VA_LIST {} + + extern (Windows) { + HMODULE LoadLibraryA(LPCSTR); + FARPROC GetProcAddress(HMODULE, LPCSTR); + void FreeLibrary(HMODULE); + DWORD GetLastError(); + DWORD FormatMessageA(DWORD, in void*, DWORD, DWORD, LPCSTR, DWORD, VA_LIST*); + HLOCAL LocalFree(HLOCAL); + } + + DWORD MAKELANGID(WORD p, WORD s) { + return (((cast(WORD)s) << 10) | cast(WORD)p); + } + + enum { + LANG_NEUTRAL = 0, + SUBLANG_DEFAULT = 1, + FORMAT_MESSAGE_ALLOCATE_BUFFER = 256, + FORMAT_MESSAGE_IGNORE_INSERTS = 512, + FORMAT_MESSAGE_FROM_SYSTEM = 4096 + } + + alias HMODULE SwigSharedLibHandle; + + SwigSharedLibHandle swigLoadSharedLib(string libName) { + return LoadLibraryA(swigToCString(libName)); + } + + void swigUnloadSharedLib(SwigSharedLibHandle hlib) { + FreeLibrary(hlib); + } + + void* swigGetSymbol(SwigSharedLibHandle hlib, string symbolName) { + return GetProcAddress(hlib, swigToCString(symbolName)); + } + + string swigGetErrorStr() { + DWORD errcode = GetLastError(); + + LPCSTR msgBuf; + DWORD i = FormatMessageA( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + null, + errcode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + cast(LPCSTR)&msgBuf, + 0, + null); + + string text = swigToDString(msgBuf); + LocalFree(cast(HLOCAL)msgBuf); + + if (i >= 2) { + i -= 2; + } + return text[0 .. i]; + } + } else { + static assert(0, "Operating system not supported by the wrapper loading code."); + } + + final class SwigSharedLib { + void load(string[] names) { + if (_hlib !is null) return; + + string[] failedLibs; + string[] reasons; + + foreach(n; names) { + _hlib = swigLoadSharedLib(n); + if (_hlib is null) { + failedLibs ~= n; + reasons ~= swigGetErrorStr(); + continue; + } + _name = n; + break; + } + + if (_hlib is null) { + throw new SwigSwigSharedLibLoadException(failedLibs, reasons); + } + } + + void* loadSymbol(string symbolName, bool doThrow = true) { + void* sym = swigGetSymbol(_hlib, symbolName); + if(doThrow && (sym is null)) { + throw new SwigSymbolLoadException(_name, symbolName); + } + return sym; + } + + void unload() { + if(_hlib !is null) { + swigUnloadSharedLib(_hlib); + _hlib = null; + } + } + + private: + string _name; + SwigSharedLibHandle _hlib; + } +} + +static this() { + string[] possibleFileNames; + version (Posix) { + version (OSX) { + possibleFileNames ~= ["lib$wraplibrary.dylib", "lib$wraplibrary.bundle"]; + } + possibleFileNames ~= ["lib$wraplibrary.so"]; + } else version (Windows) { + possibleFileNames ~= ["$wraplibrary.dll", "lib$wraplibrary.so"]; + } else { + static assert(false, "Operating system not supported by the wrapper loading code."); + } + + auto library = new SwigSharedLib; + library.load(possibleFileNames); + + string bindCode(string functionPointer, string symbol) { + return functionPointer ~ " = cast(typeof(" ~ functionPointer ~ + "))library.loadSymbol(`" ~ symbol ~ "`);"; + } + + //#if !defined(SWIG_D_NO_EXCEPTION_HELPER) + mixin(bindCode("swigRegisterExceptionCallbacks$module", "SWIGRegisterExceptionCallbacks_$module")); + //#endif // SWIG_D_NO_EXCEPTION_HELPER + //#if !defined(SWIG_D_NO_STRING_HELPER) + mixin(bindCode("swigRegisterStringCallback$module", "SWIGRegisterStringCallback_$module")); + //#endif // SWIG_D_NO_STRING_HELPER + $wrapperloaderbindcode +} + +//#if !defined(SWIG_D_NO_EXCEPTION_HELPER) +extern(C) void function( + SwigExceptionCallback exceptionCallback, + SwigExceptionCallback illegalArgumentCallback, + SwigExceptionCallback illegalElementCallback, + SwigExceptionCallback ioCallback, + SwigExceptionCallback noSuchElementCallback) swigRegisterExceptionCallbacks$module; +//#endif // SWIG_D_NO_EXCEPTION_HELPER + +//#if !defined(SWIG_D_NO_STRING_HELPER) +extern(C) void function(SwigStringCallback callback) swigRegisterStringCallback$module; +//#endif // SWIG_D_NO_STRING_HELPER +%} + +%pragma(d) wrapperloaderbindcommand = %{ + mixin(bindCode("$function", "$symbol"));%} diff --git a/macx64/bin/swig/share/swig/4.0.0/director_common.swg b/macx64/bin/swig/share/swig/4.0.0/director_common.swg new file mode 100644 index 00000000..9ce93c7e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/director_common.swg @@ -0,0 +1,15 @@ +/* ----------------------------------------------------------------------------- + * director_common.swg + * + * This file contains support for director classes which is common between + * languages. + * ----------------------------------------------------------------------------- */ + +/* + Use -DSWIG_DIRECTOR_STATIC if you prefer to avoid the use of the + 'Swig' namespace. This could be useful for multi-modules projects. +*/ +#ifdef SWIG_DIRECTOR_STATIC +/* Force anonymous (static) namespace */ +#define Swig +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/exception.i b/macx64/bin/swig/share/swig/4.0.0/exception.i new file mode 100644 index 00000000..ee9ce9bc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/exception.i @@ -0,0 +1,322 @@ +/* ----------------------------------------------------------------------------- + * exception.i + * + * SWIG library file providing language independent exception handling + * ----------------------------------------------------------------------------- */ + +#if defined(SWIGUTL) +#error "This version of exception.i should not be used" +#endif + + +%insert("runtime") "swigerrors.swg" + + +#ifdef SWIGPHP7 +%{ +#include "zend_exceptions.h" +#define SWIG_exception(code, msg) do { zend_throw_exception(NULL, (char*)msg, code); goto thrown; } while (0) +%} +#endif + +#ifdef SWIGGUILE +%{ + SWIGINTERN void SWIG_exception_ (int code, const char *msg, + const char *subr) { +#define ERROR(scmerr) \ + scm_error(scm_from_locale_string((char *) (scmerr)), \ + (char *) subr, (char *) msg, \ + SCM_EOL, SCM_BOOL_F) +#define MAP(swigerr, scmerr) \ + case swigerr: \ + ERROR(scmerr); \ + break + switch (code) { + MAP(SWIG_MemoryError, "swig-memory-error"); + MAP(SWIG_IOError, "swig-io-error"); + MAP(SWIG_RuntimeError, "swig-runtime-error"); + MAP(SWIG_IndexError, "swig-index-error"); + MAP(SWIG_TypeError, "swig-type-error"); + MAP(SWIG_DivisionByZero, "swig-division-by-zero"); + MAP(SWIG_OverflowError, "swig-overflow-error"); + MAP(SWIG_SyntaxError, "swig-syntax-error"); + MAP(SWIG_ValueError, "swig-value-error"); + MAP(SWIG_SystemError, "swig-system-error"); + default: + ERROR("swig-error"); + } +#undef ERROR +#undef MAP + } + +#define SWIG_exception(a,b) SWIG_exception_(a, b, FUNC_NAME) +%} +#endif + +#ifdef SWIGMZSCHEME + +%{ +SWIGINTERN void SWIG_exception_ (int code, const char *msg) { +#define ERROR(errname) \ + scheme_signal_error(errname " (%s)", msg); +#define MAP(swigerr, errname) \ + case swigerr: \ + ERROR(errname); \ + break + switch (code) { + MAP(SWIG_MemoryError, "swig-memory-error"); + MAP(SWIG_IOError, "swig-io-error"); + MAP(SWIG_RuntimeError, "swig-runtime-error"); + MAP(SWIG_IndexError, "swig-index-error"); + MAP(SWIG_TypeError, "swig-type-error"); + MAP(SWIG_DivisionByZero, "swig-division-by-zero"); + MAP(SWIG_OverflowError, "swig-overflow-error"); + MAP(SWIG_SyntaxError, "swig-syntax-error"); + MAP(SWIG_ValueError, "swig-value-error"); + MAP(SWIG_SystemError, "swig-system-error"); + default: + ERROR("swig-error"); + } +#undef ERROR +#undef MAP + } + +#define SWIG_exception(a,b) SWIG_exception_(a, b) +%} +#endif + +#ifdef SWIGJAVA +%{ +SWIGINTERN void SWIG_JavaException(JNIEnv *jenv, int code, const char *msg) { + SWIG_JavaExceptionCodes exception_code = SWIG_JavaUnknownError; + switch(code) { + case SWIG_MemoryError: + exception_code = SWIG_JavaOutOfMemoryError; + break; + case SWIG_IOError: + exception_code = SWIG_JavaIOException; + break; + case SWIG_SystemError: + case SWIG_RuntimeError: + exception_code = SWIG_JavaRuntimeException; + break; + case SWIG_OverflowError: + case SWIG_IndexError: + exception_code = SWIG_JavaIndexOutOfBoundsException; + break; + case SWIG_DivisionByZero: + exception_code = SWIG_JavaArithmeticException; + break; + case SWIG_SyntaxError: + case SWIG_ValueError: + case SWIG_TypeError: + exception_code = SWIG_JavaIllegalArgumentException; + break; + case SWIG_UnknownError: + default: + exception_code = SWIG_JavaUnknownError; + break; + } + SWIG_JavaThrowException(jenv, exception_code, msg); +} +%} + +#define SWIG_exception(code, msg)\ +{ SWIG_JavaException(jenv, code, msg); return $null; } +#endif // SWIGJAVA + +#ifdef SWIGOCAML +%{ +SWIGINTERN void SWIG_OCamlException(int code, const char *msg) { + CAMLparam0(); + + SWIG_OCamlExceptionCodes exception_code = SWIG_OCamlUnknownError; + switch (code) { + case SWIG_DivisionByZero: + exception_code = SWIG_OCamlArithmeticException; + break; + case SWIG_IndexError: + exception_code = SWIG_OCamlIndexOutOfBoundsException; + break; + case SWIG_IOError: + case SWIG_SystemError: + exception_code = SWIG_OCamlSystemException; + break; + case SWIG_MemoryError: + exception_code = SWIG_OCamlOutOfMemoryError; + break; + case SWIG_OverflowError: + exception_code = SWIG_OCamlOverflowException; + break; + case SWIG_RuntimeError: + exception_code = SWIG_OCamlRuntimeException; + break; + case SWIG_SyntaxError: + case SWIG_TypeError: + case SWIG_ValueError: + exception_code = SWIG_OCamlIllegalArgumentException; + break; + case SWIG_UnknownError: + default: + exception_code = SWIG_OCamlUnknownError; + break; + } + SWIG_OCamlThrowException(exception_code, msg); + CAMLreturn0; +} +#define SWIG_exception(code, msg) SWIG_OCamlException(code, msg) +%} +#endif + + +#ifdef SWIGCSHARP +%{ +SWIGINTERN void SWIG_CSharpException(int code, const char *msg) { + if (code == SWIG_ValueError) { + SWIG_CSharpExceptionArgumentCodes exception_code = SWIG_CSharpArgumentOutOfRangeException; + SWIG_CSharpSetPendingExceptionArgument(exception_code, msg, 0); + } else { + SWIG_CSharpExceptionCodes exception_code = SWIG_CSharpApplicationException; + switch(code) { + case SWIG_MemoryError: + exception_code = SWIG_CSharpOutOfMemoryException; + break; + case SWIG_IndexError: + exception_code = SWIG_CSharpIndexOutOfRangeException; + break; + case SWIG_DivisionByZero: + exception_code = SWIG_CSharpDivideByZeroException; + break; + case SWIG_IOError: + exception_code = SWIG_CSharpIOException; + break; + case SWIG_OverflowError: + exception_code = SWIG_CSharpOverflowException; + break; + case SWIG_RuntimeError: + case SWIG_TypeError: + case SWIG_SyntaxError: + case SWIG_SystemError: + case SWIG_UnknownError: + default: + exception_code = SWIG_CSharpApplicationException; + break; + } + SWIG_CSharpSetPendingException(exception_code, msg); + } +} +%} + +#define SWIG_exception(code, msg)\ +{ SWIG_CSharpException(code, msg); return $null; } +#endif // SWIGCSHARP + +#ifdef SWIGLUA + +%{ +#define SWIG_exception(a,b)\ +{ lua_pushfstring(L,"%s:%s",#a,b);SWIG_fail; } +%} + +#endif // SWIGLUA + +#ifdef SWIGD +%{ +SWIGINTERN void SWIG_DThrowException(int code, const char *msg) { + SWIG_DExceptionCodes exception_code; + switch(code) { + case SWIG_IndexError: + exception_code = SWIG_DNoSuchElementException; + break; + case SWIG_IOError: + exception_code = SWIG_DIOException; + break; + case SWIG_ValueError: + exception_code = SWIG_DIllegalArgumentException; + break; + case SWIG_DivisionByZero: + case SWIG_MemoryError: + case SWIG_OverflowError: + case SWIG_RuntimeError: + case SWIG_TypeError: + case SWIG_SyntaxError: + case SWIG_SystemError: + case SWIG_UnknownError: + default: + exception_code = SWIG_DException; + break; + } + SWIG_DSetPendingException(exception_code, msg); +} +%} + +#define SWIG_exception(code, msg)\ +{ SWIG_DThrowException(code, msg); return $null; } +#endif // SWIGD + +#ifdef __cplusplus +/* + You can use the SWIG_CATCH_STDEXCEPT macro with the %exception + directive as follows: + + %exception { + try { + $action + } + catch (my_except& e) { + ... + } + SWIG_CATCH_STDEXCEPT // catch std::exception + catch (...) { + SWIG_exception(SWIG_UnknownError, "Unknown exception"); + } + } +*/ +%{ +#include +#include +%} +%define SWIG_CATCH_STDEXCEPT + /* catching std::exception */ + catch (std::invalid_argument& e) { + SWIG_exception(SWIG_ValueError, e.what() ); + } catch (std::domain_error& e) { + SWIG_exception(SWIG_ValueError, e.what() ); + } catch (std::overflow_error& e) { + SWIG_exception(SWIG_OverflowError, e.what() ); + } catch (std::out_of_range& e) { + SWIG_exception(SWIG_IndexError, e.what() ); + } catch (std::length_error& e) { + SWIG_exception(SWIG_IndexError, e.what() ); + } catch (std::runtime_error& e) { + SWIG_exception(SWIG_RuntimeError, e.what() ); + } catch (std::bad_cast& e) { + SWIG_exception(SWIG_TypeError, e.what() ); + } catch (std::exception& e) { + SWIG_exception(SWIG_SystemError, e.what() ); + } +%enddef +%define SWIG_CATCH_UNKNOWN + catch (std::exception& e) { + SWIG_exception(SWIG_SystemError, e.what() ); + } + catch (...) { + SWIG_exception(SWIG_UnknownError, "unknown exception"); + } +%enddef + +/* rethrow the unknown exception */ + +#if defined(SWIGCSHARP) || defined(SWIGD) +%typemap(throws,noblock=1, canthrow=1) (...) { + SWIG_exception(SWIG_RuntimeError,"unknown exception"); +} +#else +%typemap(throws,noblock=1) (...) { + SWIG_exception(SWIG_RuntimeError,"unknown exception"); +} +#endif + +#endif /* __cplusplus */ + +/* exception.i ends here */ diff --git a/macx64/bin/swig/share/swig/4.0.0/go/cdata.i b/macx64/bin/swig/share/swig/4.0.0/go/cdata.i new file mode 100644 index 00000000..b4411af9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/cdata.i @@ -0,0 +1,97 @@ +/* ----------------------------------------------------------------------------- + * cdata.i + * + * SWIG library file containing macros for manipulating raw C data as strings. + * ----------------------------------------------------------------------------- */ + +%{ +typedef struct SWIGCDATA { + char *data; + intgo len; +} SWIGCDATA; +%} + +%fragment("cdata", "header") %{ +struct swigcdata { + intgo size; + void *data; +}; +%} + +%typemap(gotype) SWIGCDATA "[]byte" + +%typemap(imtype) SWIGCDATA "uint64" + +%typemap(out, fragment="cdata") SWIGCDATA(struct swigcdata *swig_out) %{ + swig_out = (struct swigcdata *)malloc(sizeof(*swig_out)); + if (swig_out) { + swig_out->size = $1.len; + swig_out->data = malloc(swig_out->size); + if (swig_out->data) { + memcpy(swig_out->data, $1.data, swig_out->size); + } + } + $result = *(long long *)(void **)&swig_out; +%} + +%typemap(goout) SWIGCDATA %{ + { + type swigcdata struct { size int; data uintptr } + p := (*swigcdata)(unsafe.Pointer(uintptr($1))) + if p == nil || p.data == 0 { + $result = nil + } else { + b := make([]byte, p.size) + a := (*[0x7fffffff]byte)(unsafe.Pointer(p.data))[:p.size] + copy(b, a) + Swig_free(p.data) + Swig_free(uintptr(unsafe.Pointer(p))) + $result = b + } + } +%} + +/* ----------------------------------------------------------------------------- + * %cdata(TYPE [, NAME]) + * + * Convert raw C data to a binary string. + * ----------------------------------------------------------------------------- */ + +%define %cdata(TYPE,NAME...) + +%insert("header") { +#if #NAME == "" +static SWIGCDATA cdata_##TYPE(TYPE *ptr, int nelements) { +#else +static SWIGCDATA cdata_##NAME(TYPE *ptr, int nelements) { +#endif + SWIGCDATA d; + d.data = (char *) ptr; +#if #TYPE != "void" + d.len = nelements*sizeof(TYPE); +#else + d.len = nelements; +#endif + return d; +} +} + +%typemap(default) int nelements "$1 = 1;" + +#if #NAME == "" +SWIGCDATA cdata_##TYPE(TYPE *ptr, int nelements); +#else +SWIGCDATA cdata_##NAME(TYPE *ptr, int nelements); +#endif +%enddef + +%typemap(default) int nelements; + +%rename(cdata) ::cdata_void(void *ptr, int nelements); + +%cdata(void); + +/* Memory move function. Due to multi-argument typemaps this appears + to be wrapped as + void memmove(void *data, const char *s); */ +void memmove(void *data, char *indata, int inlen); diff --git a/macx64/bin/swig/share/swig/4.0.0/go/director.swg b/macx64/bin/swig/share/swig/4.0.0/go/director.swg new file mode 100644 index 00000000..103ba22a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/director.swg @@ -0,0 +1,80 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that Go proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#include +#include + +namespace Swig { + + class DirectorException : public std::exception { + }; +} + +/* Handle memory management for directors. */ + +namespace { + struct GCItem { + virtual ~GCItem() {} + }; + + struct GCItem_var { + GCItem_var(GCItem *item = 0) : _item(item) { + } + + GCItem_var& operator=(GCItem *item) { + GCItem *tmp = _item; + _item = item; + delete tmp; + return *this; + } + + ~GCItem_var() { + delete _item; + } + + GCItem* operator->() { + return _item; + } + + private: + GCItem *_item; + }; + + template + struct GCItem_T : GCItem { + GCItem_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCItem_T() { + delete _ptr; + } + + private: + Type *_ptr; + }; +} + +class Swig_memory { +public: + template + void swig_acquire_pointer(Type* vptr) { + if (vptr) { + swig_owner[vptr] = new GCItem_T(vptr); + } + } +private: + typedef std::map swig_ownership_map; + swig_ownership_map swig_owner; +}; + +template +static void swig_acquire_pointer(Swig_memory** pmem, Type* ptr) { + if (!pmem) { + *pmem = new Swig_memory; + } + (*pmem)->swig_acquire_pointer(ptr); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/go/exception.i b/macx64/bin/swig/share/swig/4.0.0/go/exception.i new file mode 100644 index 00000000..5abd306a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/exception.i @@ -0,0 +1,7 @@ +%typemap(throws,noblock=1) (...) { + SWIG_exception(SWIG_RuntimeError,"unknown exception"); +} + +%insert("runtime") %{ +#define SWIG_exception(code, msg) _swig_gopanic(msg) +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/go/go.swg b/macx64/bin/swig/share/swig/4.0.0/go/go.swg new file mode 100644 index 00000000..c225ed9a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/go.swg @@ -0,0 +1,705 @@ +/* ------------------------------------------------------------ + * go.swg + * + * Go configuration module. + * ------------------------------------------------------------ */ + +%include + +/* Code insertion directives */ +#define %go_import(...) %insert(go_imports) %{__VA_ARGS__%} + +/* Basic types */ + +%typemap(gotype) bool, const bool & "bool" +%typemap(gotype) char, const char & "byte" +%typemap(gotype) signed char, const signed char & "int8" +%typemap(gotype) unsigned char, const unsigned char & "byte" +%typemap(gotype) short, const short & "int16" +%typemap(gotype) unsigned short, const unsigned short & "uint16" +%typemap(gotype) int, const int & "int" +%typemap(gotype) unsigned int, const unsigned int & "uint" +%typemap(gotype) long, const long & "int64" +%typemap(gotype) unsigned long, const unsigned long & "uint64" +%typemap(gotype) long long, const long long & "int64" +%typemap(gotype) unsigned long long, const unsigned long long & "uint64" +%typemap(gotype) float, const float & "float32" +%typemap(gotype) double, const double & "float64" + +%typemap(in) bool, + char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double +%{ $1 = ($1_ltype)$input; %} + +%typemap(in) const bool &, + const char &, + const signed char &, + const unsigned char &, + const short &, + const unsigned short &, + const int &, + const unsigned int &, + const long long &, + const unsigned long long &, + const float &, + const double & +%{ $1 = ($1_ltype)&$input; %} + +%typemap(in) const long & ($*1_ltype temp), + const unsigned long & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = ($1_ltype)&temp; %} + +%typemap(out) bool, + char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double +%{ $result = $1; %} + +%typemap(goout) bool, + char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double +"" + +%typemap(out) const bool &, + const char &, + const signed char &, + const unsigned char &, + const short &, + const unsigned short &, + const int &, + const unsigned int &, + const long &, + const unsigned long &, + const long long &, + const unsigned long long &, + const float &, + const double & +%{ $result = ($*1_ltype)*$1; %} + +%typemap(goout) const bool &, + const char &, + const signed char &, + const unsigned char &, + const short &, + const unsigned short &, + const int &, + const unsigned int &, + const long &, + const unsigned long &, + const long long &, + const unsigned long long &, + const float &, + const double & +"" + +%typemap(out) void "" + +%typemap(goout) void "" + +%typemap(directorin) bool, + char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double +%{ $input = ($1_ltype)$1; %} + +%typemap(godirectorin) bool, + char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double +"" + +%typemap(directorin) const bool &, + const char &, + const signed char &, + const unsigned char &, + const short &, + const unsigned short &, + const int &, + const unsigned int &, + const long &, + const unsigned long &, + const long long &, + const unsigned long long &, + const float &, + const double & +%{ $input = ($*1_ltype)$1; %} + +%typemap(godirectorin) const bool &, + const char &, + const signed char &, + const unsigned char &, + const short &, + const unsigned short &, + const int &, + const unsigned int &, + const long &, + const unsigned long &, + const long long &, + const unsigned long long &, + const float &, + const double & +"" + +%typemap(directorout) bool, + char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double +%{ $result = ($1_ltype)$input; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) const bool &, + const char &, + const signed char &, + const unsigned char &, + const short &, + const unsigned short &, + const int &, + const unsigned int &, + const long &, + const unsigned long &, + const long long &, + const unsigned long long &, + const float &, + const double & +%{ + $result = new $*1_ltype($input); + swig_acquire_pointer(&swig_mem, $result); +%} + +/* The size_t type. */ + +%typemap(gotype) size_t, const size_t & %{int64%} + +%typemap(in) size_t +%{ $1 = (size_t)$input; %} + +%typemap(in) const size_t & +%{ $1 = ($1_ltype)&$input; %} + +%typemap(out) size_t +%{ $result = $1; %} + +%typemap(goout) size_t "" + +%typemap(out) const size_t & +%{ $result = ($*1_ltype)*$1; %} + +%typemap(goout) const size_t & "" + +%typemap(directorin) size_t +%{ $input = (size_t)$1; %} + +%typemap(godirectorin) size_t "" + +%typemap(directorin) const size_t & +%{ $input = ($*1_ltype)$1; %} + +%typemap(godirectorin) const size_t & "" + +%typemap(directorout) size_t +%{ $result = ($1_ltype)$input; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) const size_t & +%{ + $result = new $*1_ltype($input); + swig_acquire_pointer(&swig_mem, $result); +%} + +/* Member pointers. */ + +%typemap(gotype) SWIGTYPE (CLASS::*) +%{$gotypename%} + +%typemap(in) SWIGTYPE (CLASS::*) +%{ $1 = *($&1_ltype)$input; %} + +%typemap(out) SWIGTYPE (CLASS::*) +%{ + struct swig_out_type { intgo size; void* val; } *swig_out; + swig_out = (struct swig_out_type*)malloc(sizeof(*swig_out)); + if (swig_out) { + swig_out->size = sizeof($1_ltype); + swig_out->val = malloc(swig_out->size); + if (swig_out->val) { + *($&1_ltype)(swig_out->val) = $1; + } + } + $result = swig_out; +%} + +%typemap(goout) SWIGTYPE (CLASS::*) +%{ + { + type swig_out_type struct { size int; val uintptr } + p := (*swig_out_type)(unsafe.Pointer($1)) + if p == nil || p.val == 0 { + $result = nil + } else { + m := make([]byte, p.size) + a := (*[1024]byte)(unsafe.Pointer(p.val))[:p.size] + copy(m, a) + Swig_free(p.val) + Swig_free(uintptr(unsafe.Pointer(p))) + $result = &m[0] + } + } +%} + +%typemap(directorin) SWIGTYPE (CLASS::*) +%{ $input = *($&1_ltype)$1; %} + +%typemap(godirectorin) SWIGTYPE (CLASS::*) "" + +%typemap(directorout) SWIGTYPE (CLASS::*) +%{ + $result = new $1_ltype($input); + swig_acquire_pointer(&swig_mem, $result); +%} + +/* Pointers. */ + +/* We can't translate pointers using a typemap, so that is handled in + the C++ code. */ +%typemap(gotype) SWIGTYPE * +%{$gotypename%} + +%typemap(in) SWIGTYPE * +%{ $1 = *($&1_ltype)&$input; %} + +%typemap(out) SWIGTYPE * +%{ *($&1_ltype)&$result = ($1_ltype)$1; %} + +%typemap(goout) SWIGTYPE * "" + +%typemap(directorin) SWIGTYPE * +%{ *($&1_ltype)&$input = ($1_ltype)$1; %} + +%typemap(godirectorin) SWIGTYPE * "" + +%typemap(directorout) SWIGTYPE * +%{ $result = *($&1_ltype)&$input; %} + +/* Pointer references. */ + +%typemap(gotype) SWIGTYPE *const& +%{$gotypename%} + +%typemap(in) SWIGTYPE *const& ($*1_ltype temp = 0) +%{ + temp = *($1_ltype)&$input; + $1 = ($1_ltype)&temp; +%} + +%typemap(out) SWIGTYPE *const& +%{ *($1_ltype)&$result = *$1; %} + +%typemap(goout) SWIGTYPE *const& "" + +/* References. */ + +/* Converting a C++ reference to Go has to be handled in the C++ + code. */ +%typemap(gotype) SWIGTYPE & +%{$gotypename%} + +%typemap(in) SWIGTYPE & +%{ $1 = *($&1_ltype)&$input; %} + +%typemap(out) SWIGTYPE & +%{ *($&1_ltype)&$result = $1; %} + +%typemap(goout) SWIGTYPE & "" + +%typemap(directorin) SWIGTYPE & +%{ $input = ($1_ltype)&$1; %} + +%typemap(godirectorin) SWIGTYPE & "" + +%typemap(directorout) SWIGTYPE & +%{ *($&1_ltype)&$result = $input; %} + +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE *const& +%{ static $*1_ltype swig_temp; + swig_temp = *($1_ltype)&$input; + $result = &swig_temp; %} + +%typemap(gotype) SWIGTYPE && +%{$gotypename%} + +%typemap(in) SWIGTYPE && +%{ $1 = *($&1_ltype)&$input; %} + +%typemap(out) SWIGTYPE && +%{ *($&1_ltype)&$result = $1; %} + +%typemap(goout) SWIGTYPE && "" + +%typemap(directorin) SWIGTYPE && +%{ $input = ($1_ltype)&$1_name; %} + +%typemap(godirectorin) SWIGTYPE && "" + +%typemap(directorout) SWIGTYPE && +%{ *($&1_ltype)&$result = $input; %} + +/* C arrays turn into Go pointers. If we know the length we can use a + slice. */ + +%typemap(gotype) SWIGTYPE [] +%{$gotypename%} + +%typemap(in) SWIGTYPE [] +%{ $1 = *($&1_ltype)&$input; %} + +%typemap(out) SWIGTYPE [] +%{ *($&1_ltype)&$result = $1; %} + +%typemap(goout) SWIGTYPE [] "" + +%typemap(directorin) SWIGTYPE [] +%{ $input = *($1_ltype)&$1; %} + +%typemap(godirectorin) SWIGTYPE [] "" + +%typemap(directorout) SWIGTYPE [] +%{ *($&1_ltype)&$result = $input; %} + +/* Strings. */ + +%typemap(gotype) + char *, char *&, char[ANY], char[] "string" + +/* Needed to avoid confusion with the way the go module handles + references. */ +%typemap(gotype) char&, unsigned char& "*byte" +%typemap(gotype) signed char& "*int8" + +%typemap(in) + char *, char[ANY], char[] +%{ + $1 = ($1_ltype)malloc($input.n + 1); + memcpy($1, $input.p, $input.n); + $1[$input.n] = '\0'; +%} + +%typemap(in) char *& (char *temp) +%{ + temp = (char *)malloc($input.n + 1); + memcpy(temp, $input.p, $input.n); + temp[$input.n] = '\0'; + $1 = ($1_ltype)&temp; +%} + +%typemap(freearg) + char *, char *&, char[ANY], char[] +%{ free($1); %} + +%typemap(out,fragment="AllocateString") + char *, char *&, char[ANY], char[] +%{ $result = Swig_AllocateString((char*)$1, $1 ? strlen((char*)$1) : 0); %} + +%typemap(goout,fragment="CopyString") + char *, char *&, char[ANY], char[] +%{ $result = swigCopyString($1) %} + +%typemap(directorin,fragment="AllocateString") + char *, char *&, char[ANY], char[] +%{ + $input = Swig_AllocateString((char*)$1, $1 ? strlen((char*)$1) : 0); +%} + +%typemap(godirectorin,fragment="CopyString") + char *, char *&, char[ANY], char[] +%{ + $result = swigCopyString($input) +%} + +%typemap(godirectorout) + char *, char *&, char[ANY], char[] +%{ + { + p := Swig_malloc(len($input) + 1) + s := (*[1<<30]byte)(unsafe.Pointer(p))[:len($input) + 1] + copy(s, $input) + s[len($input)] = 0 + $result = *(*string)(unsafe.Pointer(&s)) + } +%} + +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) + char *, char *&, char[ANY], char[] +%{ $result = ($1_ltype)$input.p; %} + +/* String & length */ + +%typemap(gotype) (char *STRING, size_t LENGTH) "string" + +%typemap(in) (char *STRING, size_t LENGTH) +%{ + $1 = ($1_ltype)$input.p; + $2 = ($2_ltype)$input.n; +%} + +%typemap(out,fragment="AllocateString") (char *STRING, size_t LENGTH) +%{ $result = Swig_AllocateString((char*)$1, (size_t)$2); %} + +%typemap(goout,fragment="CopyString") (char *STRING, size_t LENGTH) +%{ $result = swigCopyString($1) %} + +%typemap(directorin,fragment="AllocateString") (char *STRING, size_t LENGTH) +%{ $input = Swig_AllocateString((char*)$1, $2); %} + +%typemap(godirectorin,fragment="CopyString") (char *STRING, size_t LENGTH) +%{ $result = swigCopyString($input) %} + +%typemap(directorout) (char *STRING, size_t LENGTH) +%{ + $1 = ($1_ltype)$input.p; + $2 = ($2_ltype)$input.n; +%} + +/* Enums. We can't do the right thing for enums in typemap(gotype) so + we deliberately don't define them. The right thing would be to + capitalize the name. This is instead done in go.cxx. */ + +%typemap(gotype) enum SWIGTYPE +%{$gotypename%} + +%typemap(in) enum SWIGTYPE +%{ $1 = ($1_ltype)$input; %} + +%typemap(out) enum SWIGTYPE +%{ $result = (intgo)$1; %} + +%typemap(goout) enum SWIGTYPE "" + +%typemap(directorin) enum SWIGTYPE +%{ $input = (intgo)$1; %} + +%typemap(godirectorin) enum SWIGTYPE "" + +%typemap(directorout) enum SWIGTYPE +%{ $result = ($1_ltype)$input; %} + +%typemap(directorin) enum SWIGTYPE & (intgo e) +%{ + e = (intgo)$1; + $input = ($1_ltype)&e; +%} + +%typemap(godirectorin) enum SWIGTYPE & "" + +%typemap(directorout) enum SWIGTYPE & +%{ + $*1_ltype f = ($*1_ltype)*$input; + $result = ($1_ltype)&f; +%} + +/* Arbitrary type. This is a type passed by value in the C/C++ code. + We convert it to a pointer for the Go code. Note that all basic + types are explicitly handled above. */ + +%typemap(gotype) SWIGTYPE +%{$gotypename%} + +%typemap(in) SWIGTYPE ($&1_type argp) +%{ + argp = ($&1_ltype)$input; + if (argp == NULL) { + _swig_gopanic("Attempt to dereference null $1_type"); + } + $1 = ($1_ltype)*argp; +%} + +%typemap(out) SWIGTYPE +#ifdef __cplusplus +%{ *($&1_ltype*)&$result = new $1_ltype($1); %} +#else +{ + $&1_ltype $1ptr = ($&1_ltype)malloc(sizeof($1_ltype)); + memmove($1ptr, &$1, sizeof($1_type)); + *($&1_ltype*)&$result = $1ptr; +} +#endif + +%typemap(goout) SWIGTYPE "" + +%typemap(directorin) SWIGTYPE +%{ $input = new $1_ltype((const $1_ltype &)$1); %} + +%typemap(godirectorin) SWIGTYPE "" + +%typemap(directorout) SWIGTYPE +%{ $result = *($&1_ltype)$input; %} + +/* Exception handling */ + +%typemap(throws) char * +%{ _swig_gopanic($1); %} + +%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE *, SWIGTYPE [], SWIGTYPE [ANY] +%{ + (void)$1; + _swig_gopanic("C++ $1_type exception thrown"); +%} + +/* Typecheck typemaps. The purpose of these is merely to issue a + warning for overloaded C++ functions that cannot be overloaded in + Go as more than one C++ type maps to a single Go type. */ + +%typecheck(SWIG_TYPECHECK_BOOL) /* Go bool */ + bool, + const bool & + "" + +%typecheck(SWIG_TYPECHECK_CHAR) /* Go byte */ + char, + const char &, + unsigned char, + const unsigned char & + "" + +%typecheck(SWIG_TYPECHECK_INT8) /* Go int8 */ + signed char, + const signed char & + "" + +%typecheck(SWIG_TYPECHECK_INT16) /* Go int16 */ + short, + const short & + "" + +%typecheck(SWIG_TYPECHECK_INT16) /* Go uint16 */ + unsigned short, + const unsigned short & + "" + +%typecheck(SWIG_TYPECHECK_INT32) /* Go int */ + int, + const int & + "" + +%typecheck(SWIG_TYPECHECK_INT32) /* Go uint */ + unsigned int, + const unsigned int & + "" + +%typecheck(SWIG_TYPECHECK_INT64) /* Go int64 */ + long, + const long &, + long long, + const long long & + "" + +%typecheck(SWIG_TYPECHECK_INT64) /* Go uint64 */ + unsigned long, + const unsigned long &, + unsigned long long, + const unsigned long long & + "" + +%typecheck(SWIG_TYPECHECK_FLOAT) /* Go float32 */ + float, + const float & + "" + +%typecheck(SWIG_TYPECHECK_DOUBLE) /* Go float64 */ + double, + const double & + "" + +%typecheck(SWIG_TYPECHECK_STRING) /* Go string */ + char *, + char *&, + char[ANY], + char [], + signed char *, + signed char *&, + signed char[ANY], + signed char [], + unsigned char *, + unsigned char *&, + unsigned char[ANY], + unsigned char [] + "" + +%typecheck(SWIG_TYPECHECK_POINTER) + SWIGTYPE, + SWIGTYPE *, + SWIGTYPE &, + SWIGTYPE &&, + SWIGTYPE *const&, + SWIGTYPE [], + SWIGTYPE (CLASS::*) + "" + +%apply SWIGTYPE * { SWIGTYPE *const } +%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) } +%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) } + +/* Go keywords. */ +%include + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/go/gokw.swg b/macx64/bin/swig/share/swig/4.0.0/go/gokw.swg new file mode 100644 index 00000000..dd9f35aa --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/gokw.swg @@ -0,0 +1,33 @@ +/* Rename keywords. */ + +#define GOKW(x) %keywordwarn("'" `x` "' is a Go keyword, renaming to 'X"`x`"'",rename="X%s") `x` +#define GOBN(x) %builtinwarn("'" `x` "' conflicts with a built-in name in Go") "::"`x` + +GOKW(break); +GOKW(case); +GOKW(chan); +GOKW(const); +GOKW(continue); +GOKW(default); +GOKW(defer); +GOKW(else); +GOKW(fallthrough); +GOKW(for); +GOKW(func); +GOKW(go); +GOKW(goto); +GOKW(if); +GOKW(import); +GOKW(interface); +GOKW(package); +GOKW(range); +GOKW(return); +GOKW(select); +GOKW(struct); +GOKW(switch); +GOKW(type); +GOKW(var); + +GOBN(map); + +#undef GOKW diff --git a/macx64/bin/swig/share/swig/4.0.0/go/goruntime.swg b/macx64/bin/swig/share/swig/4.0.0/go/goruntime.swg new file mode 100644 index 00000000..269a4eef --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/goruntime.swg @@ -0,0 +1,402 @@ +/* ------------------------------------------------------------ + * goruntime.swg + * + * Go runtime code for the various generated files. + * ------------------------------------------------------------ */ + +%inline %{ +static void Swig_free(void* p) { + free(p); +} + +static void* Swig_malloc(int c) { + return malloc(c); +} +%} + +%insert(runtime) %{ +#include +#include +#include +#include +#include + +%} + +#if SWIGGO_CGO +%insert(cgo_comment_typedefs) %{ +#include +%} +#endif + +#if SWIGGO_INTGO_SIZE == 32 +%insert(runtime) %{ +typedef int intgo; +typedef unsigned int uintgo; +%} +#if SWIGGO_CGO +%insert(cgo_comment_typedefs) %{ +typedef int intgo; +typedef unsigned int uintgo; +%} +#endif +#elif SWIGGO_INTGO_SIZE == 64 +%insert(runtime) %{ +typedef long long intgo; +typedef unsigned long long uintgo; +%} +#if SWIGGO_CGO +%insert(cgo_comment_typedefs) %{ +typedef long long intgo; +typedef unsigned long long uintgo; +%} +#endif +#else +%insert(runtime) %{ +typedef ptrdiff_t intgo; +typedef size_t uintgo; +%} +#if SWIGGO_CGO +%insert(cgo_comment_typedefs) %{ +typedef ptrdiff_t intgo; +typedef size_t uintgo; +%} +#endif +#endif + +#ifndef SWIGGO_GCCGO +// Set the host compiler struct attribute that will be +// used to match gc's struct layout. For example, on 386 Windows, +// gcc wants to 8-align int64s, but gc does not. +// Use __gcc_struct__ to work around http://gcc.gnu.org/PR52991 on x86, +// and https://golang.org/issue/5603. +// See: https://github.com/golang/go/blob/fcbf04f9b93b4cd8addd05c2ed784118eb50a46c/src/cmd/cgo/out.go#L663 +%insert(runtime) %{ +# if !defined(__clang__) && (defined(__i386__) || defined(__x86_64__)) +# define SWIGSTRUCTPACKED __attribute__((__packed__, __gcc_struct__)) +# else +# define SWIGSTRUCTPACKED __attribute__((__packed__)) +# endif +%} +#else +# define SWIGSTRUCTPACKED +#endif + +%insert(runtime) %{ + +typedef struct { char *p; intgo n; } _gostring_; +typedef struct { void* array; intgo len; intgo cap; } _goslice_; + +%} + +#ifdef SWIGGO_CGO + +%insert(cgo_comment_typedefs) %{ + +typedef struct { char *p; intgo n; } _gostring_; +typedef struct { void* array; intgo len; intgo cap; } _goslice_; + +%} + +#endif + +#ifndef SWIGGO_GCCGO +/* Boilerplate for C/C++ code when using 6g/8g. This code is compiled + with gcc. */ +%insert(runtime) %{ + +#define swiggo_size_assert_eq(x, y, name) typedef char name[(x-y)*(x-y)*-2+1]; +#define swiggo_size_assert(t, n) swiggo_size_assert_eq(sizeof(t), n, swiggo_sizeof_##t##_is_not_##n) + +swiggo_size_assert(char, 1) +swiggo_size_assert(short, 2) +swiggo_size_assert(int, 4) +typedef long long swiggo_long_long; +swiggo_size_assert(swiggo_long_long, 8) +swiggo_size_assert(float, 4) +swiggo_size_assert(double, 8) + +#ifdef __cplusplus +extern "C" { +#endif +extern void crosscall2(void (*fn)(void *, int), void *, int); +extern char* _cgo_topofstack(void) __attribute__ ((weak)); +extern void _cgo_allocate(void *, int); +extern void _cgo_panic(void *, int); +#ifdef __cplusplus +} +#endif + +static char *_swig_topofstack() { + if (_cgo_topofstack) { + return _cgo_topofstack(); + } else { + return 0; + } +} + +static void _swig_gopanic(const char *p) { + struct { + const char *p; + } SWIGSTRUCTPACKED a; + a.p = p; + crosscall2(_cgo_panic, &a, (int) sizeof a); +} + +%} + +#if !SWIGGO_CGO + +/* This is here for backward compatibility, but it will not work + with Go 1.5 or later. Do not use it in new code. */ +%insert(runtime) %{ + +static void *_swig_goallocate(size_t len) { + struct { + size_t len; + void *ret; + } SWIGSTRUCTPACKED a; + a.len = len; + crosscall2(_cgo_allocate, &a, (int) sizeof a); + return a.ret; +} + +%} + +#endif + +#if !SWIGGO_CGO + +/* Boilerplate for C code when using 6g/8g. This code is compiled + with 6c/8c. */ +%insert(gc_header) %{ +#include "runtime.h" +#include "cgocall.h" + +#pragma dataflag 16 +static void *cgocall = runtime·cgocall; +#pragma dataflag 16 +void *·_cgo_runtime_cgocall = &cgocall; + +%} + +#endif + +#else + +/* Boilerplate for C/C++ code when using gccgo. */ +%insert(runtime) %{ +#define SWIGGO_GCCGO + +#ifdef __cplusplus +extern "C" { +#endif +extern void *_cgo_allocate(size_t); +extern void _cgo_panic(const char *); +#ifdef __cplusplus +} +#endif + +#define _swig_goallocate _cgo_allocate +#define _swig_gopanic _cgo_panic +%} + +#if !SWIGGO_CGO + +%insert(runtime) %{ + +/* Implementations of SwigCgocall and friends for different versions + of gccgo. The Go code will call these functions using C names with + a prefix of the module name. The implementations here call the + routine in libgo. The routines to call vary depending on the gccgo + version. We assume that the version of gcc used to compile this + file is the same as the version of gccgo. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define SWIG_GCC_VERSION \ + (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) + +#if SWIG_GCC_VERSION < 40700 +#define SwigDoCgocall() +#define SwigDoCgocallDone() +#define SwigDoCgocallBack() +#define SwigDoCgocallBackDone() +#elif SWIG_GCC_VERSION == 40700 +void SwigDoCgocall(void) __asm__("libgo_syscall.syscall.Entersyscall"); +void SwigDoCgocallDone(void) __asm__("libgo_syscall.syscall.Exitsyscall"); +void SwigDoCgocallBack(void) __asm__("libgo_syscall.syscall.Exitsyscall"); +void SwigDoCgocallBackDone(void) __asm__("libgo_syscall.syscall.Entersyscall"); +#else +void SwigDoCgocall(void) __asm__("syscall.Cgocall"); +void SwigDoCgocallDone(void) __asm__("syscall.CgocallDone"); +void SwigDoCgocallBack(void) __asm__("syscall.CgocallBack"); +void SwigDoCgocallBackDone(void) __asm__("syscall.CgocallBackDone"); +#endif + +#define SWIGSTRINGIFY2(s) #s +#define SWIGSTRINGIFY(s) SWIGSTRINGIFY2(s) + +void SwigCgocall() + __asm__(SWIGSTRINGIFY(SWIGGO_PREFIX) ".SwigCgocall"); +void SwigCgocall() { + SwigDoCgocall(); +} + +void SwigCgocallDone() + __asm__(SWIGSTRINGIFY(SWIGGO_PREFIX) ".SwigCgocallDone"); +void SwigCgocallDone() { + SwigDoCgocallDone(); +} + +void SwigCgocallBack() + __asm__(SWIGSTRINGIFY(SWIGGO_PREFIX) ".SwigCgocallBack"); +void SwigCgocallBack() { + SwigDoCgocallBack(); +} + +void SwigCgocallBackDone() + __asm__(SWIGSTRINGIFY(SWIGGO_PREFIX) ".SwigCgocallBackDone"); +void SwigCgocallBackDone() { + SwigDoCgocallBackDone(); +} + +#undef SWIGSTRINGIFY +#undef SWIGSTRINGIFY2 + +#ifdef __cplusplus +} +#endif + +%} + +#endif + +#endif + +#if !SWIGGO_CGO + +%insert(runtime) %{ + +/* This is here for backward compatibility, but it will not work + with Go 1.5 or later. Do not use it in new code. */ +static _gostring_ _swig_makegostring(const char *p, size_t l) { + _gostring_ ret; + ret.p = (char*)_swig_goallocate(l + 1); + memcpy(ret.p, p, l); + ret.n = l; + return ret; +} + +%} + +#endif + +%insert(runtime) %{ + +#define SWIG_contract_assert(expr, msg) \ + if (!(expr)) { _swig_gopanic(msg); } else +%} + +#ifndef SWIGGO_GCCGO + +%go_import("unsafe", _ "runtime/cgo") + +#if !SWIGGO_CGO +%insert(go_header) %{ +var _cgo_runtime_cgocall func(unsafe.Pointer, uintptr) +%} +#endif + +#else + +%go_import("syscall", "unsafe") + +%insert(go_header) %{ + +type _ syscall.Sockaddr + +%} + +#endif + +%insert(go_header) %{ + +type _ unsafe.Pointer + +%} + +/* Swig_always_false is used to conditionally assign parameters to + Swig_escape_val so that the compiler thinks that they escape. We + only assign them if Swig_always_false is true, which it never is. + We export the variable so that the compiler doesn't realize that it + is never set. */ +%insert(go_header) %{ +var Swig_escape_always_false bool +var Swig_escape_val interface{} +%} + +/* Function pointers are translated by the code in go.cxx into + _swig_fnptr. Member pointers are translated to _swig_memberptr. */ + +%insert(go_header) %{ +type _swig_fnptr *byte +type _swig_memberptr *byte +%} + +/* For directors we need C++ to track a Go pointer. Since we can't + pass a Go pointer into C++, we use a map to track the pointers on + the Go side. */ + +%go_import("sync") + +%insert(go_header) %{ +type _ sync.Mutex +%} + +%insert(go_director) %{ + +var swigDirectorTrack struct { + sync.Mutex + m map[int]interface{} + c int +} + +func swigDirectorAdd(v interface{}) int { + swigDirectorTrack.Lock() + defer swigDirectorTrack.Unlock() + if swigDirectorTrack.m == nil { + swigDirectorTrack.m = make(map[int]interface{}) + } + swigDirectorTrack.c++ + ret := swigDirectorTrack.c + swigDirectorTrack.m[ret] = v + return ret +} + +func swigDirectorLookup(c int) interface{} { + swigDirectorTrack.Lock() + defer swigDirectorTrack.Unlock() + ret := swigDirectorTrack.m[c] + if ret == nil { + panic("C++ director pointer not found (possible use-after-free)") + } + return ret +} + +func swigDirectorDelete(c int) { + swigDirectorTrack.Lock() + defer swigDirectorTrack.Unlock() + if swigDirectorTrack.m[c] == nil { + if c > swigDirectorTrack.c { + panic("C++ director pointer invalid (possible memory corruption") + } else { + panic("C++ director pointer not found (possible use-after-free)") + } + } + delete(swigDirectorTrack.m, c) +} + +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/go/gostring.swg b/macx64/bin/swig/share/swig/4.0.0/go/gostring.swg new file mode 100644 index 00000000..44cbbb8e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/gostring.swg @@ -0,0 +1,29 @@ +/* ------------------------------------------------------------ + * gostring.swg + * + * Support for returning strings from C to Go. + * ------------------------------------------------------------ */ + +// C/C++ code to convert a memory buffer into a Go string allocated in +// C/C++ memory. +%fragment("AllocateString", "runtime") %{ +static _gostring_ Swig_AllocateString(const char *p, size_t l) { + _gostring_ ret; + ret.p = (char*)malloc(l); + memcpy(ret.p, p, l); + ret.n = l; + return ret; +} +%} + +// Go code to convert a string allocated in C++ memory to one +// allocated in Go memory. +%fragment("CopyString", "go_runtime") %{ +type swig_gostring struct { p uintptr; n int } +func swigCopyString(s string) string { + p := *(*swig_gostring)(unsafe.Pointer(&s)) + r := string((*[0x7fffffff]byte)(unsafe.Pointer(p.p))[:p.n]) + Swig_free(p.p) + return r +} +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/go/std_common.i b/macx64/bin/swig/share/swig/4.0.0/go/std_common.i new file mode 100644 index 00000000..c010faca --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/std_common.i @@ -0,0 +1,4 @@ +%include + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; diff --git a/macx64/bin/swig/share/swig/4.0.0/go/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/go/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/go/std_except.i b/macx64/bin/swig/share/swig/4.0.0/go/std_except.i new file mode 100644 index 00000000..4f021a12 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/std_except.i @@ -0,0 +1,31 @@ +/* ----------------------------------------------------------------------------- + * std_except.i + * + * Typemaps used by the STL wrappers that throw exceptions. + * These typemaps are used when methods are declared with an STL exception specification, such as + * size_t at() const throw (std::out_of_range); + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +%} + +namespace std +{ + %ignore exception; + struct exception {}; +} + +%typemap(throws) std::bad_cast %{_swig_gopanic($1.what());%} +%typemap(throws) std::bad_exception %{_swig_gopanic($1.what());%} +%typemap(throws) std::domain_error %{_swig_gopanic($1.what());%} +%typemap(throws) std::exception %{_swig_gopanic($1.what());%} +%typemap(throws) std::invalid_argument %{_swig_gopanic($1.what());%} +%typemap(throws) std::length_error %{_swig_gopanic($1.what());%} +%typemap(throws) std::logic_error %{_swig_gopanic($1.what());%} +%typemap(throws) std::out_of_range %{_swig_gopanic($1.what());%} +%typemap(throws) std::overflow_error %{_swig_gopanic($1.what());%} +%typemap(throws) std::range_error %{_swig_gopanic($1.what());%} +%typemap(throws) std::runtime_error %{_swig_gopanic($1.what());%} +%typemap(throws) std::underflow_error %{_swig_gopanic($1.what());%} diff --git a/macx64/bin/swig/share/swig/4.0.0/go/std_list.i b/macx64/bin/swig/share/swig/4.0.0/go/std_list.i new file mode 100644 index 00000000..ff6f7001 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/std_list.i @@ -0,0 +1,41 @@ +/* ----------------------------------------------------------------------------- + * std_list.i + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +%} + +namespace std { + + template + class list { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + list(); + list(const list& other); + + size_type size() const; + bool empty() const; + %rename(isEmpty) empty; + void clear(); + void push_front(const value_type& x); + void pop_front(); + void push_back(const value_type& x); + void pop_back(); + void remove(value_type x); + void reverse(); + void unique(); + void sort(); + void merge(list& x); + }; + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/go/std_map.i b/macx64/bin/swig/share/swig/4.0.0/go/std_map.i new file mode 100644 index 00000000..773b6d0c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/std_map.i @@ -0,0 +1,66 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template > class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + } + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/go/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/go/std_pair.i new file mode 100644 index 00000000..732347db --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/std_pair.i @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/go/std_string.i b/macx64/bin/swig/share/swig/4.0.0/go/std_string.i new file mode 100644 index 00000000..099ae84d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/std_string.i @@ -0,0 +1,91 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * Typemaps for std::string and const std::string& + * These are mapped to a Go string and are passed around by value. + * + * To use non-const std::string references use the following %apply. Note + * that they are passed by value. + * %apply const std::string & {std::string &}; + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +namespace std { + +%naturalvar string; + +class string; + +%typemap(gotype) string, const string & "string" + +%typemap(in) string +%{ $1.assign($input.p, $input.n); %} + +%typemap(godirectorout) string +%{ + { + p := Swig_malloc(len($input)) + s := (*[1<<30]byte)(unsafe.Pointer(p))[:len($input)] + copy(s, $input) + $result = *(*string)(unsafe.Pointer(&s)) + } +%} + +%typemap(directorout) string +%{ + $result.assign($input.p, $input.n); + free($input.p); +%} + +%typemap(out,fragment="AllocateString") string +%{ $result = Swig_AllocateString($1.data(), $1.length()); %} + +%typemap(goout,fragment="CopyString") string +%{ $result = swigCopyString($1) %} + +%typemap(directorin,fragment="AllocateString") string +%{ $input = Swig_AllocateString($1.data(), $1.length()); %} + +%typemap(godirectorin,fragment="CopyString") string +%{ $result = swigCopyString($input) %} + +%typemap(in) const string & +%{ + $*1_ltype $1_str($input.p, $input.n); + $1 = &$1_str; +%} + +%typemap(godirectorout) const string & +%{ + { + p := Swig_malloc(len($input)) + s := (*[1<<30]byte)(unsafe.Pointer(p))[:len($input)] + copy(s, $input) + $result = *(*string)(unsafe.Pointer(&s)) + } +%} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const string & +%{ + static $*1_ltype $1_str; + $1_str.assign($input.p, $input.n); + free($input.p); + $result = &$1_str; +%} + +%typemap(out,fragment="AllocateString") const string & +%{ $result = Swig_AllocateString((*$1).data(), (*$1).length()); %} + +%typemap(goout,fragment="CopyString") const string & +%{ $result = swigCopyString($1) %} + +%typemap(directorin,fragment="AllocateString") const string & +%{ $input = Swig_AllocateString($1.data(), $1.length()); %} + +%typemap(godirectorin,fragment="CopyString") const string & +%{ $result = swigCopyString($input) %} + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/go/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/go/std_vector.i new file mode 100644 index 00000000..679c7075 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/std_vector.i @@ -0,0 +1,92 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +%} + +namespace std { + + template class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(); + vector(size_type n); + vector(const vector& other); + + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %rename(add) push_back; + void push_back(const value_type& x); + %extend { + const_reference get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef bool value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef bool const_reference; + + vector(); + vector(size_type n); + vector(const vector& other); + + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %rename(add) push_back; + void push_back(const value_type& x); + %extend { + bool get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/go/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/go/typemaps.i new file mode 100644 index 00000000..d2e60d37 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/go/typemaps.i @@ -0,0 +1,298 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Pointer and reference handling typemap library + * + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers and C++ references. + * ----------------------------------------------------------------------------- */ + +/* +INPUT typemaps +-------------- + +These typemaps remap a C pointer or C++ reference to be an "INPUT" value which is +passed by value instead of reference. + +The following typemaps can be applied to turn a pointer or reference into a simple +input value. That is, instead of passing a pointer or reference to an object, +you would use a real value instead. + + bool *INPUT, bool &INPUT + signed char *INPUT, signed char &INPUT + unsigned char *INPUT, unsigned char &INPUT + short *INPUT, short &INPUT + unsigned short *INPUT, unsigned short &INPUT + int *INPUT, int &INPUT + unsigned int *INPUT, unsigned int &INPUT + long *INPUT, long &INPUT + unsigned long *INPUT, unsigned long &INPUT + long long *INPUT, long long &INPUT + unsigned long long *INPUT, unsigned long long &INPUT + float *INPUT, float &INPUT + double *INPUT, double &INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +In Go you could then use it like this: + answer := modulename.Fadd(10.0, 20.0) + +There are no char *INPUT typemaps, however you can apply the signed +char * typemaps instead: + %include + %apply signed char *INPUT {char *input}; + void f(char *input); +*/ + +%define INPUT_TYPEMAP(TYPE, GOTYPE) +%typemap(gotype) TYPE *INPUT, TYPE &INPUT "GOTYPE" + + %typemap(in) TYPE *INPUT, TYPE &INPUT +%{ $1 = ($1_ltype)&$input; %} + +%typemap(out) TYPE *INPUT, TYPE &INPUT "" + +%typemap(goout) TYPE *INPUT, TYPE &INPUT "" + +%typemap(freearg) TYPE *INPUT, TYPE &INPUT "" + +%typemap(argout) TYPE *INPUT, TYPE &INPUT "" + +// %typemap(typecheck) TYPE *INPUT = TYPE; +// %typemap(typecheck) TYPE &INPUT = TYPE; +%enddef + +INPUT_TYPEMAP(bool, bool); +INPUT_TYPEMAP(signed char, int8); +INPUT_TYPEMAP(char, byte); +INPUT_TYPEMAP(unsigned char, byte); +INPUT_TYPEMAP(short, int16); +INPUT_TYPEMAP(unsigned short, uint16); +INPUT_TYPEMAP(int, int); +INPUT_TYPEMAP(unsigned int, uint); +INPUT_TYPEMAP(long, int64); +INPUT_TYPEMAP(unsigned long, uint64); +INPUT_TYPEMAP(long long, int64); +INPUT_TYPEMAP(unsigned long long, uint64); +INPUT_TYPEMAP(float, float32); +INPUT_TYPEMAP(double, float64); + +#undef INPUT_TYPEMAP + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. An array replaces the c pointer or reference parameter. +// The output value is returned in this array passed in. + +/* +OUTPUT typemaps +--------------- + +The following typemaps can be applied to turn a pointer or reference +into an "output" value. When calling a function, no input value would +be given for a parameter, but an output value would be returned. This +works by a Go slice being passed as a parameter where a c pointer or +reference is required. As with any Go function, the array is passed +by reference so that any modifications to the array will be picked up +in the calling function. Note that the array passed in MUST have at +least one element, but as the c function does not require any input, +the value can be set to anything. + + bool *OUTPUT, bool &OUTPUT + signed char *OUTPUT, signed char &OUTPUT + unsigned char *OUTPUT, unsigned char &OUTPUT + short *OUTPUT, short &OUTPUT + unsigned short *OUTPUT, unsigned short &OUTPUT + int *OUTPUT, int &OUTPUT + unsigned int *OUTPUT, unsigned int &OUTPUT + long *OUTPUT, long &OUTPUT + unsigned long *OUTPUT, unsigned long &OUTPUT + long long *OUTPUT, long long &OUTPUT + unsigned long long *OUTPUT, unsigned long long &OUTPUT + float *OUTPUT, float &OUTPUT + double *OUTPUT, double &OUTPUT + +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): + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Go output of the function would be the function return value and the +value in the single element array. In Go you would use it like this: + + ptr := []float64{0.0} + fraction := modulename.Modf(5.0,ptr) + +There are no char *OUTPUT typemaps, however you can apply the signed +char * typemaps instead: + %include + %apply signed char *OUTPUT {char *output}; + void f(char *output); +*/ + +%define OUTPUT_TYPEMAP(TYPE, GOTYPE) +%typemap(gotype) TYPE *OUTPUT, TYPE &OUTPUT %{[]GOTYPE%} + +%typemap(in) TYPE *OUTPUT($*1_ltype temp), TYPE &OUTPUT($*1_ltype temp) +{ + if ($input.len == 0) { + _swig_gopanic("array must contain at least 1 element"); + } + $1 = &temp; +} + +%typemap(out) TYPE *OUTPUT, TYPE &OUTPUT "" + +%typemap(goout) TYPE *INPUT, TYPE &INPUT "" + +%typemap(freearg) TYPE *OUTPUT, TYPE &OUTPUT "" + +%typemap(argout) TYPE *OUTPUT, TYPE &OUTPUT +{ + TYPE* a = (TYPE *) $input.array; + a[0] = temp$argnum; +} + +%enddef + +OUTPUT_TYPEMAP(bool, bool); +OUTPUT_TYPEMAP(signed char, int8); +OUTPUT_TYPEMAP(char, byte); +OUTPUT_TYPEMAP(unsigned char, byte); +OUTPUT_TYPEMAP(short, int16); +OUTPUT_TYPEMAP(unsigned short, uint16); +OUTPUT_TYPEMAP(int, int); +OUTPUT_TYPEMAP(unsigned int, uint); +OUTPUT_TYPEMAP(long, int64); +OUTPUT_TYPEMAP(unsigned long, uint64); +OUTPUT_TYPEMAP(long long, int64); +OUTPUT_TYPEMAP(unsigned long long, uint64); +OUTPUT_TYPEMAP(float, float32); +OUTPUT_TYPEMAP(double, float64); + +#undef OUTPUT_TYPEMAP + +/* +INOUT typemaps +-------------- + +Mappings for a parameter that is both an input and an output parameter + +The following typemaps can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" typemaps described earlier. Output values are +returned as an element in a Go slice. + + bool *INOUT, bool &INOUT + signed char *INOUT, signed char &INOUT + unsigned char *INOUT, unsigned char &INOUT + short *INOUT, short &INOUT + unsigned short *INOUT, unsigned short &INOUT + int *INOUT, int &INOUT + unsigned int *INOUT, unsigned int &INOUT + long *INOUT, long &INOUT + unsigned long *INOUT, unsigned long &INOUT + long long *INOUT, long long &INOUT + unsigned long long *INOUT, unsigned long long &INOUT + float *INOUT, float &INOUT + double *INOUT, double &INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include + void neg(double *INOUT); + +or you can use the %apply directive : + + %include + %apply double *INOUT { double *x }; + void neg(double *x); + +This works similarly to C in that the mapping directly modifies the +input value - the input must be an array with a minimum of one element. +The element in the array is the input and the output is the element in +the array. + + x := []float64{5.0} + Neg(x); + +The implementation of the OUTPUT and INOUT typemaps is different to +other languages in that other languages will return the output value +as part of the function return value. This difference is due to Go +being a typed language. + +There are no char *INOUT typemaps, however you can apply the signed +char * typemaps instead: + %include + %apply signed char *INOUT {char *inout}; + void f(char *inout); +*/ + +%define INOUT_TYPEMAP(TYPE, GOTYPE) +%typemap(gotype) TYPE *INOUT, TYPE &INOUT %{[]GOTYPE%} + +%typemap(in) TYPE *INOUT, TYPE &INOUT { + if ($input.len == 0) { + _swig_gopanic("array must contain at least 1 element"); + } + $1 = ($1_ltype) $input.array; +} + +%typemap(out) TYPE *INOUT, TYPE &INOUT "" + +%typemap(goout) TYPE *INOUT, TYPE &INOUT "" + +%typemap(freearg) TYPE *INOUT, TYPE &INOUT "" + +%typemap(argout) TYPE *INOUT, TYPE &INOUT "" + +%enddef + +INOUT_TYPEMAP(bool, bool); +INOUT_TYPEMAP(signed char, int8); +INOUT_TYPEMAP(char, byte); +INOUT_TYPEMAP(unsigned char, byte); +INOUT_TYPEMAP(short, int16); +INOUT_TYPEMAP(unsigned short, uint16); +INOUT_TYPEMAP(int, int); +INOUT_TYPEMAP(unsigned int, uint); +INOUT_TYPEMAP(long, int64); +INOUT_TYPEMAP(unsigned long, uint64); +INOUT_TYPEMAP(long long, int64); +INOUT_TYPEMAP(unsigned long long, uint64); +INOUT_TYPEMAP(float, float32); +INOUT_TYPEMAP(double, float64); + +#undef INOUT_TYPEMAP diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/common.scm b/macx64/bin/swig/share/swig/4.0.0/guile/common.scm new file mode 100644 index 00000000..17c9ab58 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/common.scm @@ -0,0 +1,70 @@ +;;;************************************************************************ +;;;*common.scm +;;;* +;;;* This file contains generic SWIG GOOPS classes for generated +;;;* GOOPS file support +;;;************************************************************************ + +(define-module (Swig swigrun)) + +(define-module (Swig common) + #:use-module (oop goops) + #:use-module (Swig swigrun)) + +(define-class () + (new-function #:init-value #f)) + +(define-method (initialize (class ) initargs) + (slot-set! class 'new-function (get-keyword #:new-function initargs #f)) + (next-method)) + +(define-class () + (swig-smob #:init-value #f) + #:metaclass +) + +(define-method (initialize (obj ) initargs) + (next-method) + (slot-set! obj 'swig-smob + (let ((arg (get-keyword #:init-smob initargs #f))) + (if arg + arg + (let ((ret (apply (slot-ref (class-of obj) 'new-function) (get-keyword #:args initargs '())))) + ;; if the class is registered with runtime environment, + ;; new-Function will return a goops class. In that case, extract the smob + ;; from that goops class and set it as the current smob. + (if (slot-exists? ret 'swig-smob) + (slot-ref ret 'swig-smob) + ret)))))) + +(define (display-address o file) + (display (number->string (object-address o) 16) file)) + +(define (display-pointer-address o file) + ;; Don't fail if the function SWIG-PointerAddress is not present. + (let ((address (false-if-exception (SWIG-PointerAddress o)))) + (if address + (begin + (display " @ " file) + (display (number->string address 16) file))))) + +(define-method (write (o ) file) + ;; We display _two_ addresses to show the object's identity: + ;; * first the address of the GOOPS proxy object, + ;; * second the pointer address. + ;; The reason is that proxy objects are created and discarded on the + ;; fly, so different proxy objects for the same C object will appear. + (let ((class (class-of o))) + (if (slot-bound? class 'name) + (begin + (display "#<" file) + (display (class-name class) file) + (display #\space file) + (display-address o file) + (display-pointer-address o file) + (display ">" file)) + (next-method)))) + +(export ) + +;;; common.scm ends here diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/cplusplus.i b/macx64/bin/swig/share/swig/4.0.0/guile/cplusplus.i new file mode 100644 index 00000000..d5d65efa --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/cplusplus.i @@ -0,0 +1,22 @@ +/* ----------------------------------------------------------------------------- + * cplusplus.i + * + * SWIG typemaps for C++ + * ----------------------------------------------------------------------------- */ + +%typemap(guile,out) string, std::string { + $result = SWIG_str02scm(const_cast($1.c_str())); +} +%typemap(guile,in) string, std::string { + $1 = SWIG_scm2str($input); +} + +%typemap(guile,out) complex, complex, std::complex { + $result = scm_make_rectangular( scm_from_double ($1.real ()), + scm_from_double ($1.imag ()) ); +} +%typemap(guile,in) complex, complex, std::complex { + $1 = std::complex( scm_to_double (scm_real_part ($input)), + scm_to_double (scm_imag_part ($input)) ); +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/guile.i b/macx64/bin/swig/share/swig/4.0.0/guile/guile.i new file mode 100644 index 00000000..ef270d74 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/guile.i @@ -0,0 +1,33 @@ +/* ----------------------------------------------------------------------------- + * guile.i + * + * SWIG Configuration File for Guile. + * ----------------------------------------------------------------------------- */ + +/* Macro for inserting Scheme code into the stub */ +#define %scheme %insert("scheme") +#define %goops %insert("goops") + +/* Return-styles */ +%pragma(guile) return_nothing_doc = "Returns unspecified." +%pragma(guile) return_one_doc = "Returns $values." + +%define %values_as_list + %pragma(guile) beforereturn = "" + %pragma(guile) return_multi_doc = "Returns a list of $num_values values: $values." +%enddef +%values_as_list /* the default style */ + +%define %values_as_vector + %pragma(guile) beforereturn = "GUILE_MAYBE_VECTOR" + %pragma(guile) return_multi_doc = "Returns a vector of $num_values values: $values." +%enddef + +%define %multiple_values + %pragma(guile) beforereturn = "GUILE_MAYBE_VALUES" + %pragma(guile) return_multi_doc = "Returns $num_values values: $values." +%enddef + +#define GUILE_APPEND_RESULT SWIG_APPEND_VALUE + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/guile_scm.swg b/macx64/bin/swig/share/swig/4.0.0/guile/guile_scm.swg new file mode 100644 index 00000000..16dc8aa9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/guile_scm.swg @@ -0,0 +1,46 @@ +/* ----------------------------------------------------------------------------- + * guile_scm.swg + * + * This SWIG interface file is processed if the Guile module is run + * with SCM_ flavor. + * ----------------------------------------------------------------------------- */ + +#define SWIGGUILE_SCM + +%runtime "swigrun.swg" // Common C API type-checking code +%runtime "swigerrors.swg" // SWIG errors + +%runtime "guile_scm_run.swg" +%include + +%runtime %{ + +#define GUILE_MAYBE_VALUES \ + if (gswig_list_p) gswig_result = scm_values(gswig_result); + +#define GUILE_MAYBE_VECTOR \ + if (gswig_list_p) gswig_result = scm_vector(gswig_result); + +#define SWIG_APPEND_VALUE(object) \ + if (gswig_result == SCM_UNSPECIFIED) \ + gswig_result = object; \ + else { \ + if (!gswig_list_p) { \ + gswig_list_p = 1; \ + gswig_result = scm_list_n(gswig_result, object, SCM_UNDEFINED); \ + } \ + else \ + gswig_result = scm_append(scm_list_n(gswig_result, scm_list_n(object, SCM_UNDEFINED), SCM_UNDEFINED)); \ + } + +%} + +%insert(init) "swiginit.swg" + +%init %{ +SWIG_GUILE_INIT_STATIC void +SWIG_init(void) +{ + SWIG_InitializeModule(0); + SWIG_PropagateClientData(); +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/guile_scm_run.swg b/macx64/bin/swig/share/swig/4.0.0/guile/guile_scm_run.swg new file mode 100644 index 00000000..86e5c3be --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/guile_scm_run.swg @@ -0,0 +1,507 @@ +/* ----------------------------------------------------------------------------- + * guile_scm_run.swg + * ----------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* In the code below, use guile 2.0 compatible functions where possible. + Functions that don't exist in older versions will be mapped to + a deprecated equivalent for those versions only */ +#if defined (SCM_MAJOR_VERSION) && (SCM_MAJOR_VERSION < 2) + +static SCM +scm_module_variable (SCM module, SCM sym) +{ + return scm_sym2var (sym, scm_module_lookup_closure (module), SCM_BOOL_F); +} + +#define scm_to_utf8_string scm_to_locale_string +#define scm_from_utf8_string scm_from_locale_string +#endif + +#if SCM_MAJOR_VERSION >= 2 +/* scm_c_define_gsubr takes a different parameter type depending on the guile version */ + +typedef scm_t_subr swig_guile_proc; +#else +typedef SCM (*swig_guile_proc)(); +#endif +typedef SCM (*guile_destructor)(SCM); + +typedef struct swig_guile_clientdata { + guile_destructor destroy; + SCM goops_class; +} swig_guile_clientdata; + +#define SWIG_scm2str(s) \ + SWIG_Guile_scm2newstr(s, NULL) +#define SWIG_str02scm(str) \ + str ? scm_from_utf8_string(str) : SCM_BOOL_F +# define SWIG_malloc(size) \ + scm_malloc(size) +# define SWIG_free(mem) \ + free(mem) +#define SWIG_ConvertPtr(s, result, type, flags) \ + SWIG_Guile_ConvertPtr(s, result, type, flags) +#define SWIG_MustGetPtr(s, type, argnum, flags) \ + SWIG_Guile_MustGetPtr(s, type, argnum, flags, FUNC_NAME) +#define SWIG_NewPointerObj(ptr, type, owner) \ + SWIG_Guile_NewPointerObj((void*)ptr, type, owner) +#define SWIG_PointerAddress(object) \ + SWIG_Guile_PointerAddress(object) +#define SWIG_PointerType(object) \ + SWIG_Guile_PointerType(object) +#define SWIG_IsPointerOfType(object, type) \ + SWIG_Guile_IsPointerOfType(object, type) +#define SWIG_IsPointer(object) \ + SWIG_Guile_IsPointer(object) +#define SWIG_contract_assert(expr, msg) \ + if (!(expr)) \ + scm_error(scm_from_locale_symbol("swig-contract-assertion-failed"), \ + (char *) FUNC_NAME, (char *) msg, \ + SCM_EOL, SCM_BOOL_F); else + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) \ + SWIG_Guile_ConvertMember(obj, ptr, sz, ty, FUNC_NAME) +#define SWIG_NewMemberObj(ptr, sz, type) \ + SWIG_Guile_NewMemberObj(ptr, sz, type, FUNC_NAME) + +/* Runtime API */ +static swig_module_info *SWIG_Guile_GetModule(void *SWIGUNUSEDPARM(clientdata)); +#define SWIG_GetModule(clientdata) SWIG_Guile_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_Guile_SetModule(pointer) + +SWIGINTERN char * +SWIG_Guile_scm2newstr(SCM str, size_t *len) { +#define FUNC_NAME "SWIG_Guile_scm2newstr" + char *ret; + + SCM_ASSERT (scm_is_string(str), str, 1, FUNC_NAME); + + ret = scm_to_utf8_string(str); + if (!ret) return NULL; + + if (len) *len = strlen(ret) - 1; + return ret; +#undef FUNC_NAME +} + +static int swig_initialized = 0; +static scm_t_bits swig_tag = 0; +static scm_t_bits swig_collectable_tag = 0; +static scm_t_bits swig_finalized_tag = 0; +static scm_t_bits swig_destroyed_tag = 0; +static scm_t_bits swig_member_function_tag = 0; +static SCM swig_make_func = SCM_EOL; +static SCM swig_keyword = SCM_EOL; +static SCM swig_symbol = SCM_EOL; + +#define SWIG_Guile_GetSmob(x) \ + ( !scm_is_null(x) && SCM_INSTANCEP(x) && scm_is_true(scm_slot_exists_p(x, swig_symbol)) \ + ? scm_slot_ref(x, swig_symbol) : (x) ) + +SWIGINTERN SCM +SWIG_Guile_NewPointerObj(void *ptr, swig_type_info *type, int owner) +{ + if (ptr == NULL) + return SCM_EOL; + else { + SCM smob; + swig_guile_clientdata *cdata = (swig_guile_clientdata *) type->clientdata; + if (owner) + SCM_NEWSMOB2(smob, swig_collectable_tag, ptr, (void *) type); + else + SCM_NEWSMOB2(smob, swig_tag, ptr, (void *) type); + + if (!cdata || SCM_NULLP(cdata->goops_class) || swig_make_func == SCM_EOL ) { + return smob; + } else { + /* the scm_make() C function only handles the creation of gf, + methods and classes (no instances) the (make ...) function is + later redefined in goops.scm. So we need to call that + Scheme function. */ + return scm_apply(swig_make_func, + scm_list_3(cdata->goops_class, + swig_keyword, + smob), + SCM_EOL); + } + } +} + +SWIGINTERN unsigned long +SWIG_Guile_PointerAddress(SCM object) +{ + SCM smob = SWIG_Guile_GetSmob(object); + if (SCM_NULLP(smob)) return 0; + else if (SCM_SMOB_PREDICATE(swig_tag, smob) + || SCM_SMOB_PREDICATE(swig_collectable_tag, smob) + || SCM_SMOB_PREDICATE(swig_destroyed_tag, smob)) { + return (unsigned long) (void *) SCM_CELL_WORD_1(smob); + } + else scm_wrong_type_arg("SWIG-Guile-PointerAddress", 1, object); +} + +SWIGINTERN swig_type_info * +SWIG_Guile_PointerType(SCM object) +{ + SCM smob = SWIG_Guile_GetSmob(object); + if (SCM_NULLP(smob)) return NULL; + else if (SCM_SMOB_PREDICATE(swig_tag, smob) + || SCM_SMOB_PREDICATE(swig_collectable_tag, smob) + || SCM_SMOB_PREDICATE(swig_destroyed_tag, smob)) { + return (swig_type_info *) SCM_CELL_WORD_2(smob); + } + else scm_wrong_type_arg("SWIG-Guile-PointerType", 1, object); +} + +SWIGINTERN int +SWIG_Guile_IsValidSmob(SCM smob) +{ + /* We do not accept smobs representing destroyed pointers, but we have to + allow finalized smobs because Guile >= 2.0.12 sets all smob instances + to the 'finalized' type before calling their 'free' function. This change + was introduced to Guile in commit 8dff3af087c6eaa83ae0d72aa8b22aef5c65d65d */ + return SCM_SMOB_PREDICATE(swig_tag, smob) + || SCM_SMOB_PREDICATE(swig_collectable_tag, smob) + || SCM_SMOB_PREDICATE(swig_finalized_tag, smob); +} + +SWIGINTERN int +SWIG_Guile_ConvertPtr(SCM s, void **result, swig_type_info *type, int flags) +{ + swig_cast_info *cast; + swig_type_info *from; + SCM smob = SWIG_Guile_GetSmob(s); + + if (SCM_NULLP(smob)) { + *result = NULL; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; +#if SCM_MAJOR_VERSION >= 2 + } else if (SCM_POINTER_P(s)) { + *result = SCM_POINTER_VALUE(s); + return SWIG_OK; +#endif /* if SCM_MAJOR_VERSION >= 2 */ + } else if (SWIG_Guile_IsValidSmob(smob)) { + from = (swig_type_info *) SCM_CELL_WORD_2(smob); + if (!from) return SWIG_ERROR; + if (type) { + cast = SWIG_TypeCheckStruct(from, type); + if (cast) { + int newmemory = 0; + *result = SWIG_TypeCast(cast, (void *) SCM_CELL_WORD_1(smob), &newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + return SWIG_OK; + } else { + return SWIG_ERROR; + } + } else { + *result = (void *) SCM_CELL_WORD_1(smob); + return SWIG_OK; + } + } + return SWIG_ERROR; +} + +SWIGINTERNINLINE void * +SWIG_Guile_MustGetPtr (SCM s, swig_type_info *type, + int argnum, int flags, const char *func_name) +{ + void *result; + int res = SWIG_Guile_ConvertPtr(s, &result, type, flags); + if (!SWIG_IsOK(res)) { + /* type mismatch */ + scm_wrong_type_arg((char *) func_name, argnum, s); + } + return result; +} + +SWIGINTERNINLINE int +SWIG_Guile_IsPointerOfType (SCM s, swig_type_info *type) +{ + void *result; + if (SWIG_Guile_ConvertPtr(s, &result, type, 0)) { + /* type mismatch */ + return 0; + } + else return 1; +} + +SWIGINTERNINLINE int +SWIG_Guile_IsPointer (SCM s) +{ + /* module might not be initialized yet, so initialize it */ + SWIG_GetModule(0); + return SWIG_Guile_IsPointerOfType (s, NULL); +} + +/* Mark a pointer object non-collectable */ +SWIGINTERN void +SWIG_Guile_MarkPointerNoncollectable(SCM s) +{ + SCM smob = SWIG_Guile_GetSmob(s); + if (!SCM_NULLP(smob)) { + if (SWIG_Guile_IsValidSmob(smob)) { + SCM_SET_CELL_TYPE(smob, swig_tag); + } + else scm_wrong_type_arg(NULL, 0, s); + } +} + +/* Mark a pointer object destroyed */ +SWIGINTERN void +SWIG_Guile_MarkPointerDestroyed(SCM s) +{ + SCM smob = SWIG_Guile_GetSmob(s); + if (!SCM_NULLP(smob)) { + if (SWIG_Guile_IsValidSmob(smob)) { + SCM_SET_CELL_TYPE(smob, swig_destroyed_tag); + } + else scm_wrong_type_arg(NULL, 0, s); + } +} + +/* Member functions */ + +SWIGINTERN SCM +SWIG_Guile_NewMemberObj(void *ptr, size_t sz, swig_type_info *type, + const char *func_name) +{ + SCM smob; + void *copy = malloc(sz); + memcpy(copy, ptr, sz); + SCM_NEWSMOB2(smob, swig_member_function_tag, copy, (void *) type); + return smob; +} + +SWIGINTERN int +SWIG_Guile_ConvertMember(SCM smob, void *ptr, size_t sz, swig_type_info *type, + const char *func_name) +{ + swig_cast_info *cast; + swig_type_info *from; + + if (SCM_SMOB_PREDICATE(swig_member_function_tag, smob)) { + from = (swig_type_info *) SCM_CELL_WORD_2(smob); + if (!from) return SWIG_ERROR; + if (type) { + cast = SWIG_TypeCheckStruct(from, type); + if (!cast) return SWIG_ERROR; + } + memcpy(ptr, (void *) SCM_CELL_WORD_1(smob), sz); + return SWIG_OK; + } + return SWIG_ERROR; +} + + +/* Init */ + +SWIGINTERN int +print_swig_aux (SCM swig_smob, SCM port, scm_print_state *pstate, + const char *attribute) +{ + swig_type_info *type; + + type = (swig_type_info *) SCM_CELL_WORD_2(swig_smob); + if (type) { + scm_puts((char *) "#<", port); + scm_puts((char *) attribute, port); + scm_puts((char *) "swig-pointer ", port); + scm_puts((char *) SWIG_TypePrettyName(type), port); + scm_puts((char *) " ", port); + scm_intprint((long) SCM_CELL_WORD_1(swig_smob), 16, port); + scm_puts((char *) ">", port); + /* non-zero means success */ + return 1; + } else { + return 0; + } +} + + +SWIGINTERN int +print_swig (SCM swig_smob, SCM port, scm_print_state *pstate) +{ + return print_swig_aux(swig_smob, port, pstate, ""); +} + +SWIGINTERN int +print_collectable_swig (SCM swig_smob, SCM port, scm_print_state *pstate) +{ + return print_swig_aux(swig_smob, port, pstate, "collectable-"); +} + +SWIGINTERN int +print_destroyed_swig (SCM swig_smob, SCM port, scm_print_state *pstate) +{ + return print_swig_aux(swig_smob, port, pstate, "destroyed-"); +} + +SWIGINTERN int +print_member_function_swig (SCM swig_smob, SCM port, scm_print_state *pstate) +{ + swig_type_info *type; + type = (swig_type_info *) SCM_CELL_WORD_2(swig_smob); + if (type) { + scm_puts((char *) "#<", port); + scm_puts((char *) "swig-member-function-pointer ", port); + scm_puts((char *) SWIG_TypePrettyName(type), port); + scm_puts((char *) " >", port); + /* non-zero means success */ + return 1; + } else { + return 0; + } +} + +SWIGINTERN SCM +equalp_swig (SCM A, SCM B) +{ + if (SCM_CELL_WORD_0(A) == SCM_CELL_WORD_0(B) && SCM_CELL_WORD_1(A) == SCM_CELL_WORD_1(B) + && SCM_CELL_WORD_2(A) == SCM_CELL_WORD_2(B)) + return SCM_BOOL_T; + else return SCM_BOOL_F; +} + +SWIGINTERN size_t +free_swig(SCM A) +{ + swig_type_info *type = (swig_type_info *) SCM_CELL_WORD_2(A); + if (type) { + if (type->clientdata && ((swig_guile_clientdata *)type->clientdata)->destroy) + ((swig_guile_clientdata *)type->clientdata)->destroy(A); + } + return 0; +} + +SWIGINTERN size_t +free_swig_member_function(SCM A) +{ + free((swig_type_info *) SCM_CELL_WORD_1(A)); + return 0; +} + +SWIGINTERN int +ensure_smob_tag(SCM swig_module, + scm_t_bits *tag_variable, + const char *smob_name, + const char *scheme_variable_name) +{ + SCM variable = scm_module_variable(swig_module, + scm_from_locale_symbol(scheme_variable_name)); + if (scm_is_false(variable)) { + *tag_variable = scm_make_smob_type((char*)scheme_variable_name, 0); + scm_c_module_define(swig_module, scheme_variable_name, + scm_from_ulong(*tag_variable)); + return 1; + } + else { + *tag_variable = scm_to_ulong(SCM_VARIABLE_REF(variable)); + return 0; + } +} + +SWIGINTERN SCM +SWIG_Guile_Init () +{ + static SCM swig_module; + + if (swig_initialized) return swig_module; + swig_initialized = 1; + + swig_module = scm_c_resolve_module("Swig swigrun"); + if (ensure_smob_tag(swig_module, &swig_tag, + "swig-pointer", "swig-pointer-tag")) { + scm_set_smob_print(swig_tag, print_swig); + scm_set_smob_equalp(swig_tag, equalp_swig); + } + if (ensure_smob_tag(swig_module, &swig_collectable_tag, + "collectable-swig-pointer", "collectable-swig-pointer-tag")) { + scm_set_smob_print(swig_collectable_tag, print_collectable_swig); + scm_set_smob_equalp(swig_collectable_tag, equalp_swig); + scm_set_smob_free(swig_collectable_tag, free_swig); + /* For Guile >= 2.0.12. See libguile/smob.c:clear_smobnum */ + swig_finalized_tag = swig_collectable_tag & ~0xff00; + } + if (ensure_smob_tag(swig_module, &swig_destroyed_tag, + "destroyed-swig-pointer", "destroyed-swig-pointer-tag")) { + scm_set_smob_print(swig_destroyed_tag, print_destroyed_swig); + scm_set_smob_equalp(swig_destroyed_tag, equalp_swig); + } + if (ensure_smob_tag(swig_module, &swig_member_function_tag, + "swig-member-function-pointer", "swig-member-function-pointer-tag")) { + scm_set_smob_print(swig_member_function_tag, print_member_function_swig); + scm_set_smob_free(swig_member_function_tag, free_swig_member_function); + } + swig_make_func = scm_permanent_object( + scm_variable_ref(scm_c_module_lookup(scm_c_resolve_module("oop goops"), "make"))); + swig_keyword = scm_permanent_object(scm_from_locale_keyword((char*) "init-smob")); + swig_symbol = scm_permanent_object(scm_from_locale_symbol("swig-smob")); +#ifdef SWIG_INIT_RUNTIME_MODULE + SWIG_INIT_RUNTIME_MODULE +#endif + + return swig_module; +} + +SWIGINTERN swig_module_info * +SWIG_Guile_GetModule(void *SWIGUNUSEDPARM(clientdata)) +{ + SCM module = SWIG_Guile_Init(); + SCM variable = scm_module_variable(module, scm_from_locale_symbol("swig-type-list-address" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME)); + if (scm_is_false(variable)) { + return NULL; + } else { + return (swig_module_info *) scm_to_ulong(SCM_VARIABLE_REF(variable)); + } +} + +SWIGINTERN void +SWIG_Guile_SetModule(swig_module_info *swig_module) +{ + SCM module = SWIG_Guile_Init(); + scm_module_define(module, + scm_from_locale_symbol("swig-type-list-address" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME), + scm_from_ulong((unsigned long) swig_module)); +} + +SWIGINTERN int +SWIG_Guile_GetArgs (SCM *dest, SCM rest, + int reqargs, int optargs, + const char *procname) +{ + int i; + int num_args_passed = 0; + for (i = 0; i + +#ifdef __cplusplus +extern "C" { +#endif + +static void +inner_main(void *closure, int argc, char **argv) +{ +#ifdef SWIGINIT + SWIGINIT +#else + SWIG_init(); /* SWIG init function */ +#endif + scm_shell(argc, argv); /* scheme interpreter */ + /* never reached: scm_shell will perform an exit */ +} + +#ifdef __cplusplus +} +#endif + +int +main(int argc, char **argv) +{ + /* put any default initialisation code here: e.g. exit handlers */ + scm_boot_guile(argc, argv, inner_main, 0); /* make a stack entry for the + garbage collector */ + return 0; /* never reached, but avoids a warning */ +} +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/interpreter.i b/macx64/bin/swig/share/swig/4.0.0/guile/interpreter.i new file mode 100644 index 00000000..524e0694 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/interpreter.i @@ -0,0 +1,59 @@ +/* ----------------------------------------------------------------------------- + * interpreter.i + * + * SWIG file for a simple Guile interpreter + * ----------------------------------------------------------------------------- */ + +%{ + +#include +GSCM_status guile_init(); + +int main(int argc, char **argv) { + GSCM_status status; + GSCM_top_level toplev; + char *eval_answer; + char input_str[16384]; + int done; + + /* start a scheme interpreter */ + status = gscm_run_scm(argc, argv, 0, stdout, stderr, guile_init, 0, "#t"); + if (status != GSCM_OK) { + fputs(gscm_error_msg(status), stderr); + fputc('\n', stderr); + printf("Error in startup.\n"); + exit(1); + } + + /* create the top level environment */ + status = gscm_create_top_level(&toplev); + if (status != GSCM_OK) { + fputs(gscm_error_msg(status), stderr); + fputc('\n', stderr); + exit(1); + } + + /* now sit in a scheme eval loop: I input the expressions, have guile + * evaluate them, and then get another expression. + */ + done = 0; + fprintf(stdout,"Guile > "); + while (!done) { + if (fgets(input_str,16384,stdin) == NULL) { + exit(1); + } else { + if (strncmp(input_str,"quit",4) == 0) exit(1); + status = gscm_eval_str(&eval_answer, toplev, input_str); + fprintf(stdout,"%s\n", eval_answer); + fprintf(stdout,"Guile > "); + } + } + + /* now clean up and quit */ + gscm_destroy_top_level(toplev); +} + +%} + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/list-vector.i b/macx64/bin/swig/share/swig/4.0.0/guile/list-vector.i new file mode 100644 index 00000000..057a1da5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/list-vector.i @@ -0,0 +1,488 @@ +/* ----------------------------------------------------------------------------- + * list_vector.i + * + * Guile typemaps for converting between arrays and Scheme lists or vectors + * ----------------------------------------------------------------------------- */ + +/* Here is a macro that will define typemaps for converting between C + arrays and Scheme lists or vectors when passing arguments to the C + function. + + TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(C_TYPE, SCM_TO_C, C_TO_SCM, SCM_TYPE) + + Supported calling conventions: + + func(int VECTORLENINPUT, [const] C_TYPE *VECTORINPUT) + + Scheme wrapper will take one argument, a vector. A temporary C + array of elements of type C_TYPE will be allocated and filled + with the elements of the vectors, converted to C with the + SCM_TO_C function. Length and address of the array are passed + to the C function. + + SCM_TYPE is used to describe the Scheme type of the elements in + the Guile procedure documentation. + + func(int LISTLENINPUT, [const] C_TYPE *LISTINPUT) + + Likewise, but the Scheme wrapper will take one argument, a list. + + func(int *VECTORLENOUTPUT, C_TYPE **VECTOROUTPUT) + + Scheme wrapper will take no arguments. Addresses of an integer + and a C_TYPE * variable will be passed to the C function. The + C function is expected to return address and length of a + freshly allocated array of elements of type C_TYPE through + these pointers. The elements of this array are converted to + Scheme with the C_TO_SCM function and returned as a Scheme + vector. + + If the function has a void return value, the vector constructed + by this typemap becomes the return value of the Scheme wrapper. + Otherwise, the function returns multiple values. (See + the documentation on how to deal with multiple values.) + + func(int *LISTLENOUTPUT, C_TYPE **LISTOUTPUT) + + Likewise, but the Scheme wrapper will return a list instead of + a vector. + + It is also allowed to use "size_t LISTLENINPUT" rather than "int + LISTLENINPUT". */ + +%define TYPEMAP_LIST_VECTOR_INPUT_WITH_EXPR(C_TYPE, SCM_TO_C_EXPR, SCM_TYPE) + + /* input */ + + /* We make use of the new multi-dispatch typemaps here. */ + + %typemap(in, doc="$NAME is a vector of " #SCM_TYPE " values") + (int VECTORLENINPUT, C_TYPE *VECTORINPUT), + (size_t VECTORLENINPUT, C_TYPE *VECTORINPUT) + { + SCM_VALIDATE_VECTOR($argnum, $input); + $1 = scm_c_vector_length($input); + if ($1 > 0) { + $1_ltype i; + $2 = (C_TYPE *) SWIG_malloc(sizeof(C_TYPE) * $1); + for (i = 0; i<$1; i++) { + SCM swig_scm_value = scm_vector_ref($input, scm_from_long(i)); + $2[i] = SCM_TO_C_EXPR; + } + } + else $2 = NULL; + } + + %typemap(in, doc="$NAME is a list of " #SCM_TYPE " values") + (int LISTLENINPUT, C_TYPE *LISTINPUT), + (size_t LISTLENINPUT, C_TYPE *LISTINPUT) + { + SCM_VALIDATE_LIST($argnum, $input); + $1 = scm_to_ulong(scm_length($input)); + if ($1 > 0) { + $1_ltype i; + SCM rest; + $2 = (C_TYPE *) SWIG_malloc(sizeof(C_TYPE) * $1); + for (i = 0, rest = $input; + i<$1; + i++, rest = SCM_CDR(rest)) { + SCM swig_scm_value = SCM_CAR(rest); + $2[i] = SCM_TO_C_EXPR; + } + } + else $2 = NULL; + } + + /* Do not check for NULL pointers (override checks). */ + + %typemap(check) (int VECTORLENINPUT, C_TYPE *VECTORINPUT), + (size_t VECTORLENINPUT, C_TYPE *VECTORINPUT), + (int LISTLENINPUT, C_TYPE *LISTINPUT), + (size_t LISTLENINPUT, C_TYPE *LISTINPUT) + "/* no check for NULL pointer */"; + + /* Discard the temporary array after the call. */ + + %typemap(freearg) (int VECTORLENINPUT, C_TYPE *VECTORINPUT), + (size_t VECTORLENINPUT, C_TYPE *VECTORINPUT), + (int LISTLENINPUT, C_TYPE *LISTINPUT), + (size_t LISTLENINPUT, C_TYPE *LISTINPUT) + {if ($2!=NULL) SWIG_free($2);} + +%enddef + + /* output */ + +%define TYPEMAP_LIST_VECTOR_OUTPUT_WITH_EXPR(C_TYPE, C_TO_SCM_EXPR, SCM_TYPE) + + /* First we make temporary variables ARRAYLENTEMP and ARRAYTEMP, + whose addresses we pass to the C function. We ignore both + arguments for Scheme. */ + + %typemap(in,numinputs=0) (int *VECTORLENOUTPUT, C_TYPE **VECTOROUTPUT) + (int arraylentemp, C_TYPE *arraytemp), + (int *LISTLENOUTPUT, C_TYPE **LISTOUTPUT) + (int arraylentemp, C_TYPE *arraytemp), + (size_t *VECTORLENOUTPUT, C_TYPE **VECTOROUTPUT) + (size_t arraylentemp, C_TYPE *arraytemp), + (size_t *LISTLENOUTPUT, C_TYPE **LISTOUTPUT) + (size_t arraylentemp, C_TYPE *arraytemp) + %{ + $1 = &arraylentemp; + $2 = &arraytemp; + %} + + /* In the ARGOUT typemaps, we convert the array into a vector or + a list and append it to the results. */ + + %typemap(argout, doc="$NAME (a vector of " #SCM_TYPE " values)") + (int *VECTORLENOUTPUT, C_TYPE **VECTOROUTPUT), + (size_t *VECTORLENOUTPUT, C_TYPE **VECTOROUTPUT) + { + $*1_ltype i; + SCM res = scm_make_vector(scm_from_long(*$1), + SCM_BOOL_F); + for (i = 0; i<*$1; i++) { + C_TYPE swig_c_value = (*$2)[i]; + SCM elt = C_TO_SCM_EXPR; + scm_vector_set_x(res, scm_from_long(i), elt); + } + SWIG_APPEND_VALUE(res); + } + + %typemap(argout, doc="$NAME (a list of " #SCM_TYPE " values)") + (int *LISTLENOUTPUT, C_TYPE **LISTOUTPUT), + (size_t *LISTLENOUTPUT, C_TYPE **LISTOUTPUT) + { + int i; + SCM res = SCM_EOL; + for (i = ((int)(*$1)) - 1; i>=0; i--) { + C_TYPE swig_c_value = (*$2)[i]; + SCM elt = C_TO_SCM_EXPR; + res = scm_cons(elt, res); + } + SWIG_APPEND_VALUE(res); + } + + /* In the FREEARG typemaps, get rid of the C vector. + (This can be overridden if you want to keep the C vector.) */ + + %typemap(freearg) + (int *VECTORLENOUTPUT, C_TYPE **VECTOROUTPUT), + (size_t *VECTORLENOUTPUT, C_TYPE **VECTOROUTPUT), + (int *LISTLENOUTPUT, C_TYPE **LISTOUTPUT), + (size_t *LISTLENOUTPUT, C_TYPE **LISTOUTPUT) + { + if ((*$2)!=NULL) free(*$2); + } + +%enddef + +%define TYPEMAP_LIST_VECTOR_INPUT_OUTPUT_WITH_EXPR(C_TYPE, SCM_TO_C_EXPR, C_TO_SCM_EXPR, SCM_TYPE) + TYPEMAP_LIST_VECTOR_INPUT_WITH_EXPR(C_TYPE, SCM_TO_C_EXPR, SCM_TYPE) + TYPEMAP_LIST_VECTOR_OUTPUT_WITH_EXPR(C_TYPE, C_TO_SCM_EXPR, SCM_TYPE) +%enddef + +%define TYPEMAP_LIST_VECTOR_INPUT(C_TYPE, SCM_TO_C, SCM_TYPE) + TYPEMAP_LIST_VECTOR_INPUT_WITH_EXPR + (C_TYPE, SCM_TO_C(swig_scm_value), SCM_TYPE) +%enddef + +%define TYPEMAP_LIST_VECTOR_OUTPUT(C_TYPE, C_TO_SCM, SCM_TYPE) + TYPEMAP_LIST_VECTOR_OUTPUT_WITH_EXPR + (C_TYPE, C_TO_SCM(swig_c_value), SCM_TYPE) +%enddef + +%define TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(C_TYPE, SCM_TO_C, C_TO_SCM, SCM_TYPE) + TYPEMAP_LIST_VECTOR_INPUT_OUTPUT_WITH_EXPR + (C_TYPE, SCM_TO_C(swig_scm_value), C_TO_SCM(swig_c_value), SCM_TYPE) +%enddef + +/* We use the macro to define typemaps for some standard types. */ + +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(bool, scm_is_true, scm_from_bool, boolean); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(char, SCM_CHAR, SCM_MAKE_CHAR, char); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(unsigned char, SCM_CHAR, SCM_MAKE_CHAR, char); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(int, scm_to_int, scm_from_long, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(short, scm_to_int, scm_from_long, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(long, scm_to_long, scm_from_long, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(ptrdiff_t, scm_to_long, scm_from_long, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(unsigned int, scm_to_ulong, scm_from_ulong, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(unsigned short, scm_to_ulong, scm_from_ulong, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(unsigned long, scm_to_ulong, scm_from_ulong, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(size_t, scm_to_ulong, scm_from_ulong, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(float, scm_to_double, scm_from_double, real); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(double, scm_to_double, scm_from_double, real); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(char *, SWIG_scm2str, SWIG_str02scm, string); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(const char *, SWIG_scm2str, SWIG_str02scm, string); + +/* For the char *, free all strings after converting */ + + %typemap(freearg) + (int *VECTORLENOUTPUT, char ***VECTOROUTPUT), + (size_t *VECTORLENOUTPUT, char ***VECTOROUTPUT), + (int *LISTLENOUTPUT, char ***LISTOUTPUT), + (size_t *LISTLENOUTPUT, char ***LISTOUTPUT), + (int *VECTORLENOUTPUT, const char ***VECTOROUTPUT), + (size_t *VECTORLENOUTPUT, const char ***VECTOROUTPUT), + (int *LISTLENOUTPUT, const char ***LISTOUTPUT), + (size_t *LISTLENOUTPUT, const char ***LISTOUTPUT) + { + if ((*$2)!=NULL) { + int i; + for (i = 0; i < *$1; i++) { + if ((*$2)[i] != NULL) free((*$2)[i]); + } + free(*$2); + } + } + +%typemap(freearg) (int VECTORLENINPUT, char **VECTORINPUT), + (size_t VECTORLENINPUT, char **VECTORINPUT), + (int LISTLENINPUT, char **LISTINPUT), + (size_t LISTLENINPUT, char **LISTINPUT), + (int VECTORLENINPUT, const char **VECTORINPUT), + (size_t VECTORLENINPUT, const char **VECTORINPUT), + (int LISTLENINPUT, const char **LISTINPUT), + (size_t LISTLENINPUT, const char **LISTINPUT) +{ + if (($2)!=NULL) { + int i; + for (i = 0; i< $1; i++) + if (($2)[i] != NULL) free(($2)[i]); + free($2); + } +} + + +/* Following is a macro that emits typemaps that are much more + flexible. (They are also messier.) It supports multiple parallel + lists and vectors (sharing one length argument each). + + TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(C_TYPE, SCM_TO_C, C_TO_SCM, SCM_TYPE) + + Supported calling conventions: + + func(int PARALLEL_VECTORLENINPUT, [const] C_TYPE *PARALLEL_VECTORINPUT, ...) or + func([const] C_TYPE *PARALLEL_VECTORINPUT, ..., int PARALLEL_VECTORLENINPUT) + + func(int PARALLEL_LISTLENINPUT, [const] C_TYPE *PARALLEL_LISTINPUT, ...) or + func([const] C_TYPE *PARALLEL_LISTINPUT, ..., int PARALLEL_LISTLENINPUT) + + func(int *PARALLEL_VECTORLENOUTPUT, C_TYPE **PARALLEL_VECTOROUTPUT, ...) or + func(C_TYPE **PARALLEL_VECTOROUTPUT, int *PARALLEL_VECTORLENOUTPUT, ...) + + func(int *PARALLEL_LISTLENOUTPUT, C_TYPE **PARALLEL_LISTOUTPUT) or + func(C_TYPE **PARALLEL_LISTOUTPUT, int *PARALLEL_LISTLENOUTPUT) + + It is also allowed to use "size_t PARALLEL_LISTLENINPUT" rather than "int + PARALLEL_LISTLENINPUT". */ + +%define TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_WITH_EXPR(C_TYPE, SCM_TO_C_EXPR, SCM_TYPE) + + /* input */ + + /* Passing data is a little complicated here; just remember: + IGNORE typemaps come first, then IN, then CHECK. But if + IGNORE is given, IN won't be used for this type. + + We need to "ignore" one of the parameters because there shall + be only one argument on the Scheme side. Here we only + initialize the array length to 0 but save its address for a + later change. */ + + %typemap(in,numinputs=0) int PARALLEL_VECTORLENINPUT (int *_global_vector_length), + size_t PARALLEL_VECTORLENINPUT (size_t *_global_vector_length) + { + $1 = 0; + _global_vector_length = &$1; + } + + %typemap(in,numinputs=0) int PARALLEL_LISTLENINPUT (int *_global_list_length), + size_t PARALLEL_LISTLENINPUT (size_t *_global_list_length) + { + $1 = 0; + _global_list_length = &$1; + } + + /* All the work is done in IN. */ + + %typemap(in, doc="$NAME is a vector of " #SCM_TYPE " values") + C_TYPE *PARALLEL_VECTORINPUT, + const C_TYPE *PARALLEL_VECTORINPUT + { + SCM_VALIDATE_VECTOR($argnum, $input); + *_global_vector_length = scm_c_vector_length($input); + if (*_global_vector_length > 0) { + int i; + $1 = (C_TYPE *) SWIG_malloc(sizeof(C_TYPE) + * (*_global_vector_length)); + for (i = 0; i<*_global_vector_length; i++) { + SCM swig_scm_value = scm_vector_ref($input, scm_from_long(i)); + $1[i] = SCM_TO_C_EXPR; + } + } + else $1 = NULL; + } + + %typemap(in, doc="$NAME is a list of " #SCM_TYPE " values") + C_TYPE *PARALLEL_LISTINPUT, + const C_TYPE *PARALLEL_LISTINPUT + { + SCM_VALIDATE_LIST($argnum, $input); + *_global_list_length = scm_to_ulong(scm_length($input)); + if (*_global_list_length > 0) { + int i; + SCM rest; + $1 = (C_TYPE *) SWIG_malloc(sizeof(C_TYPE) + * (*_global_list_length)); + for (i = 0, rest = $input; + i<*_global_list_length; + i++, rest = SCM_CDR(rest)) { + SCM swig_scm_value = SCM_CAR(rest); + $1[i] = SCM_TO_C_EXPR; + } + } + else $1 = NULL; + } + + /* Don't check for NULL pointers (override checks). */ + + %typemap(check) C_TYPE *PARALLEL_VECTORINPUT, + const C_TYPE *PARALLEL_VECTORINPUT, + C_TYPE *PARALLEL_LISTINPUT, + const C_TYPE *PARALLEL_LISTINPUT + "/* no check for NULL pointer */"; + + /* Discard the temporary array after the call. */ + + %typemap(freearg) C_TYPE *PARALLEL_VECTORINPUT, + const C_TYPE *PARALLEL_VECTORINPUT, + C_TYPE *PARALLEL_LISTINPUT, + const C_TYPE *PARALLEL_LISTINPUT + {if ($1!=NULL) SWIG_free($1);} + +%enddef + +%define TYPEMAP_PARALLEL_LIST_VECTOR_OUTPUT_WITH_EXPR(C_TYPE, C_TO_SCM_EXPR, SCM_TYPE) + + /* output */ + + /* First we make a temporary variable ARRAYLENTEMP, use its + address as the ...LENOUTPUT argument for the C function and + "ignore" the ...LENOUTPUT argument for Scheme. */ + + %typemap(in,numinputs=0) int *PARALLEL_VECTORLENOUTPUT (int _global_arraylentemp), + size_t *PARALLEL_VECTORLENOUTPUT (size_t _global_arraylentemp), + int *PARALLEL_LISTLENOUTPUT (int _global_arraylentemp), + size_t *PARALLEL_LISTLENOUTPUT (size_t _global_arraylentemp) + "$1 = &_global_arraylentemp;"; + + /* We also need to ignore the ...OUTPUT argument. */ + + %typemap(in,numinputs=0) C_TYPE **PARALLEL_VECTOROUTPUT (C_TYPE *arraytemp), + C_TYPE **PARALLEL_LISTOUTPUT (C_TYPE *arraytemp) + "$1 = &arraytemp;"; + + /* In the ARGOUT typemaps, we convert the array into a vector or + a list and append it to the results. */ + + %typemap(argout, doc="$NAME (a vector of " #SCM_TYPE " values)") + C_TYPE **PARALLEL_VECTOROUTPUT + { + int i; + SCM res = scm_make_vector(scm_from_long(_global_arraylentemp), + SCM_BOOL_F); + for (i = 0; i<_global_arraylentemp; i++) { + C_TYPE swig_c_value = (*$1)[i]; + SCM elt = C_TO_SCM_EXPR; + scm_vector_set_x(res, scm_from_long(i), elt); + } + SWIG_APPEND_VALUE(res); + } + + %typemap(argout, doc="$NAME (a list of " #SCM_TYPE " values)") + C_TYPE **PARALLEL_LISTOUTPUT + { + int i; + SCM res = SCM_EOL; + if (_global_arraylentemp > 0) { + for (i = _global_arraylentemp - 1; i>=0; i--) { + C_TYPE swig_c_value = (*$1)[i]; + SCM elt = C_TO_SCM_EXPR; + res = scm_cons(elt, res); + } + } + SWIG_APPEND_VALUE(res); + } + + /* In the FREEARG typemaps, get rid of the C vector. + (This can be overridden if you want to keep the C vector.) */ + + %typemap(freearg) C_TYPE **PARALLEL_VECTOROUTPUT, + C_TYPE **PARALLEL_LISTOUTPUT + { + if ((*$1)!=NULL) free(*$1); + } + +%enddef + +%define TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT_WITH_EXPR(C_TYPE, SCM_TO_C_EXPR, C_TO_SCM_EXPR, SCM_TYPE) + TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_WITH_EXPR(C_TYPE, SCM_TO_C_EXPR, SCM_TYPE) + TYPEMAP_PARALLEL_LIST_VECTOR_OUTPUT_WITH_EXPR(C_TYPE, C_TO_SCM_EXPR, SCM_TYPE) +%enddef + +%define TYPEMAP_PARALLEL_LIST_VECTOR_INPUT(C_TYPE, SCM_TO_C, SCM_TYPE) + TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_WITH_EXPR + (C_TYPE, SCM_TO_C(swig_scm_value), SCM_TYPE) +%enddef + +%define TYPEMAP_PARALLEL_LIST_VECTOR_OUTPUT(C_TYPE, C_TO_SCM, SCM_TYPE) + TYPEMAP_PARALLEL_LIST_VECTOR_OUTPUT_WITH_EXPR + (C_TYPE, C_TO_SCM(swig_c_value), SCM_TYPE) +%enddef + +%define TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(C_TYPE, SCM_TO_C, C_TO_SCM, SCM_TYPE) + TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT_WITH_EXPR + (C_TYPE, SCM_TO_C(swig_scm_value), C_TO_SCM(swig_c_value), SCM_TYPE) +%enddef + +/* We use the macro to define typemaps for some standard types. */ + +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(bool, scm_is_true, scm_from_bool, boolean); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(char, SCM_CHAR, SCM_MAKE_CHAR, char); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(unsigned char, SCM_CHAR, SCM_MAKE_CHAR, char); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(int, scm_to_int, scm_from_long, integer); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(short, scm_to_int, scm_from_long, integer); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(long, scm_to_long, scm_from_long, integer); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(ptrdiff_t, scm_to_long, scm_from_long, integer); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(unsigned int, scm_to_ulong, scm_from_ulong, integer); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(unsigned short, scm_to_ulong, scm_from_ulong, integer); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(unsigned long, scm_to_ulong, scm_from_ulong, integer); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(size_t, scm_to_ulong, scm_from_ulong, integer); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(float, scm_to_double, scm_from_double, real); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(double, scm_to_double, scm_from_double, real); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(char *, SWIG_scm2str, SWIG_str02scm, string); +TYPEMAP_PARALLEL_LIST_VECTOR_INPUT_OUTPUT(const char *, SWIG_scm2str, SWIG_str02scm, string); + +%typemap(freearg) char **PARALLEL_LISTINPUT, char **PARALLEL_VECTORINPUT, + const char **PARALLEL_LISTINPUT, const char **PARALLEL_VECTORINPUT +{ + if (($1)!=NULL) { + int i; + for (i = 0; i<*_global_list_length; i++) + if (($1)[i] != NULL) SWIG_free(($1)[i]); + SWIG_free($1); + } +} + +%typemap(freearg) char ***PARALLEL_LISTOUTPUT, char ***PARALLEL_VECTOROUTPUT, + const char ***PARALLEL_LISTOUTPUT, const char ***PARALLEL_VECTOROUTPUT +{ + if ((*$1)!=NULL) { + int i; + for (i = 0; i<_global_arraylentemp; i++) + if ((*$1)[i] != NULL) free((*$1)[i]); + free(*$1); + } +} diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/pointer-in-out.i b/macx64/bin/swig/share/swig/4.0.0/guile/pointer-in-out.i new file mode 100644 index 00000000..d8a631ca --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/pointer-in-out.i @@ -0,0 +1,102 @@ +/* ----------------------------------------------------------------------------- + * pointer-in-out.i + * + * Guile typemaps for passing pointers indirectly + * ----------------------------------------------------------------------------- */ + +/* Here is a macro that will define typemaps for passing C pointers indirectly. + + TYPEMAP_POINTER_INPUT_OUTPUT(PTRTYPE, SCM_TYPE) + + Supported calling conventions (in this example, PTRTYPE is int *): + + func(int **INPUT) + + Scheme wrapper will take one argument, a wrapped C pointer. + The address of a variable containing this pointer will be + passed to the function. + + func(int **INPUT_CONSUMED) + + Likewise, but mark the pointer object as not garbage + collectable. + + func(int **INPUT_DESTROYED) + + Likewise, but mark the pointer object as destroyed. + + func(int **OUTPUT) + + Scheme wrapper will take no arguments. The address of an int * + variable will be passed to the function. The function is + expected to modify the variable; its value is wrapped and + becomes an extra return value. (See the documentation on how + to deal with multiple values.) + + func(int **OUTPUT_NONCOLLECTABLE) + + Likewise, but make the pointer object not garbage collectable. + + func(int **BOTH) + func(int **INOUT) + + This annotation combines INPUT and OUTPUT. + +*/ + +%define TYPEMAP_POINTER_INPUT_OUTPUT(PTRTYPE, SCM_TYPE) + +%typemap(in, doc="$NAME is of type <" #SCM_TYPE ">") PTRTYPE *INPUT(PTRTYPE temp) +{ + if (SWIG_ConvertPtr($input, (void **) &temp, $*descriptor, 0)) { + scm_wrong_type_arg(FUNC_NAME, $argnum, $input); + } + $1 = &temp; +} + +%typemap(in, doc="$NAME is of type <" #SCM_TYPE "> and is consumed by the function") PTRTYPE *INPUT_CONSUMED(PTRTYPE temp) +{ + if (SWIG_ConvertPtr($input, (void **) &temp, $*descriptor, 0)) { + scm_wrong_type_arg(FUNC_NAME, $argnum, $input); + } + SWIG_Guile_MarkPointerNoncollectable($input); + $1 = &temp; +} + +%typemap(in, doc="$NAME is of type <" #SCM_TYPE "> and is consumed by the function") PTRTYPE *INPUT_DESTROYED(PTRTYPE temp) +{ + if (SWIG_ConvertPtr($input, (void **) &temp, $*descriptor, 0)) { + scm_wrong_type_arg(FUNC_NAME, $argnum, $input); + } + SWIG_Guile_MarkPointerDestroyed($input); + $1 = &temp; +} + +%typemap(in, numinputs=0) PTRTYPE *OUTPUT(PTRTYPE temp), + PTRTYPE *OUTPUT_NONCOLLECTABLE(PTRTYPE temp) + "$1 = &temp;"; + +%typemap(argout, doc="<" #SCM_TYPE ">") PTRTYPE *OUTPUT + "SWIG_APPEND_VALUE(SWIG_NewPointerObj(*$1, $*descriptor, 1));"; + +%typemap(argout, doc="<" #SCM_TYPE ">") PTRTYPE *OUTPUT_NONCOLLECTABLE + "SWIG_APPEND_VALUE(SWIG_NewPointerObj(*$1, $*descriptor, 0));"; + +%typemap(in) PTRTYPE *BOTH = PTRTYPE *INPUT; +%typemap(argout) PTRTYPE *BOTH = PTRTYPE *OUTPUT; +%typemap(in) PTRTYPE *INOUT = PTRTYPE *INPUT; +%typemap(argout) PTRTYPE *INOUT = PTRTYPE *OUTPUT; + +/* As a special convenience measure, also attach docs involving + SCM_TYPE to the standard pointer typemaps */ + +%typemap(in, doc="$NAME is of type <" #SCM_TYPE ">") PTRTYPE { + if (SWIG_ConvertPtr($input, (void **) &$1, $descriptor, 0)) + scm_wrong_type_arg(FUNC_NAME, $argnum, $input); +} + +%typemap(out, doc="<" #SCM_TYPE ">") PTRTYPE { + $result = SWIG_NewPointerObj ($1, $descriptor, $owner); +} + +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/ports.i b/macx64/bin/swig/share/swig/4.0.0/guile/ports.i new file mode 100644 index 00000000..7691d3e3 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/ports.i @@ -0,0 +1,50 @@ +/* ----------------------------------------------------------------------------- + * ports.i + * + * Guile typemaps for handling ports + * ----------------------------------------------------------------------------- */ + +%{ + #ifndef _POSIX_SOURCE + /* This is needed on Solaris for fdopen(). */ + # define _POSIX_SOURCE 199506L + #endif + #include + #include + #include +%} + +/* This typemap for FILE * accepts + (1) FILE * pointer objects, + (2) Scheme file ports. In this case, it creates a temporary C stream + which reads or writes from a dup'ed file descriptor. + */ + +%typemap(in, doc="$NAME is a file port or a FILE * pointer") FILE * +{ + if (SWIG_ConvertPtr($input, (void**) &($1), $1_descriptor, 0) != 0) { + if (!(SCM_FPORTP($input))) { + scm_wrong_type_arg("$symname", $argnum, $input); + } else { + int fd; + if (SCM_OUTPUT_PORT_P($input)) { + scm_force_output($input); + } + fd=dup(SCM_FPORT_FDES($input)); + if (fd==-1) { + scm_misc_error("$symname", strerror(errno), SCM_EOL); + } + $1=fdopen(fd, SCM_OUTPUT_PORT_P($input) ? (SCM_INPUT_PORT_P($input) ? "r+" : "w") : "r"); + if ($1==NULL) { + scm_misc_error("$symname", strerror(errno), SCM_EOL); + } + } + } +} + +%typemap(freearg) FILE* { + if ($1) { + fclose($1); + } +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/std_common.i b/macx64/bin/swig/share/swig/4.0.0/guile/std_common.i new file mode 100644 index 00000000..5899c554 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/std_common.i @@ -0,0 +1,25 @@ +/* ----------------------------------------------------------------------------- + * std_common.i + * + * SWIG typemaps for STL - common utilities + * ----------------------------------------------------------------------------- */ + +%include + +%apply size_t { std::size_t }; + +#define SWIG_bool2scm(b) scm_from_bool(b ? 1 : 0) +#define SWIG_string2scm(s) SWIG_str02scm(s.c_str()) + +%{ +#include + +SWIGINTERNINLINE +std::string SWIG_scm2string(SCM x) { + char* temp; + temp = SWIG_scm2str(x); + std::string s(temp); + if (temp) SWIG_free(temp); + return s; +} +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/guile/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/std_except.i b/macx64/bin/swig/share/swig/4.0.0/guile/std_except.i new file mode 100644 index 00000000..6c30a319 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/std_except.i @@ -0,0 +1,13 @@ +// TODO: STL exception handling +// Note that the generic std_except.i file did not work +%{ +#include +#include +%} + +namespace std { + %ignore exception; + struct exception { + }; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/std_map.i b/macx64/bin/swig/share/swig/4.0.0/guile/std_map.i new file mode 100644 index 00000000..f84e78bc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/std_map.i @@ -0,0 +1,1370 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// +// The aim of all that follows would be to integrate std::map with +// Guile as much as possible, namely, to allow the user to pass and +// be returned Scheme association lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::map), f(const std::map&), f(const std::map*): +// the parameter being read-only, either a Scheme alist or a +// previously wrapped std::map can be passed. +// -- f(std::map&), f(std::map*): +// the parameter must be modified; therefore, only a wrapped std::map +// can be passed. +// -- std::map f(): +// the map is returned by copy; therefore, a Scheme alist +// is returned which is most easily used in other Scheme functions +// -- std::map& f(), std::map* f(), const std::map& f(), +// const std::map* f(): +// the map is returned by reference; therefore, a wrapped std::map +// is returned +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template > class map { + %typemap(in) map< K, T, C > { + if (scm_is_null($input)) { + $1 = std::map< K, T, C >(); + } else if (scm_is_pair($input)) { + $1 = std::map< K, T, C >(); + SCM alist = $input; + while (!scm_is_null(alist)) { + K* k; + T* x; + SCM entry, key, val; + entry = SCM_CAR(alist); + if (!scm_is_pair(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = SCM_CAR(entry); + val = SCM_CDR(entry); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != 0) { + if (!scm_is_pair(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = SCM_CAR(val); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); + } + (($1_type &)$1)[*k] = *x; + alist = SCM_CDR(alist); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const map< K, T, C >& (std::map< K, T, C > temp), + const map< K, T, C >* (std::map< K, T, C > temp) { + if (scm_is_null($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + } else if (scm_is_pair($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + SCM alist = $input; + while (!scm_is_null(alist)) { + K* k; + T* x; + SCM entry, key, val; + entry = SCM_CAR(alist); + if (!scm_is_pair(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = SCM_CAR(entry); + val = SCM_CDR(entry); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != 0) { + if (!scm_is_pair(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = SCM_CAR(val); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); + } + temp[*k] = *x; + alist = SCM_CDR(alist); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) map< K, T, C > { + SCM alist = SCM_EOL; + for (std::map< K, T, C >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) { + K* key = new K(i->first); + T* val = new T(i->second); + SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1); + SCM x = SWIG_NewPointerObj(val,$descriptor(T *), 1); + SCM entry = scm_cons(k,x); + alist = scm_cons(entry,alist); + } + $result = alist; + } + %typecheck(SWIG_TYPECHECK_MAP) map< K, T, C > { + /* native sequence? */ + if (scm_is_null($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + /* check the first element only */ + K* k; + T* x; + SCM head = SCM_CAR($input); + if (scm_is_pair(head)) { + SCM key = SCM_CAR(head); + SCM val = SCM_CDR(head); + if (SWIG_ConvertPtr(key,(void**) &k, + $descriptor(K *), 0) != 0) { + $1 = 0; + } else { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == 0) { + $1 = 1; + } else if (scm_is_pair(val)) { + val = SCM_CAR(val); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == 0) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + /* wrapped map? */ + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_MAP) const map< K, T, C >&, + const map< K, T, C >* { + /* native sequence? */ + if (scm_is_null($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + /* check the first element only */ + K* k; + T* x; + SCM head = SCM_CAR($input); + if (scm_is_pair(head)) { + SCM key = SCM_CAR(head); + SCM val = SCM_CDR(head); + if (SWIG_ConvertPtr(key,(void**) &k, + $descriptor(K *), 0) != 0) { + $1 = 0; + } else { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == 0) { + $1 = 1; + } else if (scm_is_pair(val)) { + val = SCM_CAR(val); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == 0) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + /* wrapped map? */ + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %rename("length") size; + %rename("null?") empty; + %rename("clear!") clear; + %rename("ref") __getitem__; + %rename("set!") __setitem__; + %rename("delete!") __delitem__; + %rename("has-key?") has_key; + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& __getitem__(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void __setitem__(const K& key, const T& x) { + (*self)[key] = x; + } + void __delitem__(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + SCM keys() { + SCM result = SCM_EOL; + for (std::map< K, T, C >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) { + K* key = new K(i->first); + SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1); + result = scm_cons(k,result); + } + return result; + } + } + }; + + + // specializations for built-ins + + %define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) + + template class map< K, T, C > { + %typemap(in) map< K, T, C > { + if (scm_is_null($input)) { + $1 = std::map< K, T, C >(); + } else if (scm_is_pair($input)) { + $1 = std::map< K, T, C >(); + SCM alist = $input; + while (!scm_is_null(alist)) { + T* x; + SCM entry, key, val; + entry = SCM_CAR(alist); + if (!scm_is_pair(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = SCM_CAR(entry); + val = SCM_CDR(entry); + if (!CHECK(key)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != 0) { + if (!scm_is_pair(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = SCM_CAR(val); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); + } + (($1_type &)$1)[CONVERT_FROM(key)] = *x; + alist = SCM_CDR(alist); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const map< K, T, C >& (std::map< K, T, C > temp), + const map< K, T, C >* (std::map< K, T, C > temp) { + if (scm_is_null($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + } else if (scm_is_pair($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + SCM alist = $input; + while (!scm_is_null(alist)) { + T* x; + SCM entry, key, val; + entry = SCM_CAR(alist); + if (!scm_is_pair(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = SCM_CAR(entry); + val = SCM_CDR(entry); + if (!CHECK(key)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != 0) { + if (!scm_is_pair(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = SCM_CAR(val); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); + } + temp[CONVERT_FROM(key)] = *x; + alist = SCM_CDR(alist); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) map< K, T, C > { + SCM alist = SCM_EOL; + for (std::map< K, T, C >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) { + T* val = new T(i->second); + SCM k = CONVERT_TO(i->first); + SCM x = SWIG_NewPointerObj(val,$descriptor(T *), 1); + SCM entry = scm_cons(k,x); + alist = scm_cons(entry,alist); + } + $result = alist; + } + %typecheck(SWIG_TYPECHECK_MAP) map< K, T, C > { + // native sequence? + if (scm_is_null($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + // check the first element only + T* x; + SCM head = SCM_CAR($input); + if (scm_is_pair(head)) { + SCM key = SCM_CAR(head); + SCM val = SCM_CDR(head); + if (!CHECK(key)) { + $1 = 0; + } else { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == 0) { + $1 = 1; + } else if (scm_is_pair(val)) { + val = SCM_CAR(val); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == 0) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_MAP) const map< K, T, C >&, + const map< K, T, C >* { + // native sequence? + if (scm_is_null($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + // check the first element only + T* x; + SCM head = SCM_CAR($input); + if (scm_is_pair(head)) { + SCM key = SCM_CAR(head); + SCM val = SCM_CDR(head); + if (!CHECK(key)) { + $1 = 0; + } else { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == 0) { + $1 = 1; + } else if (scm_is_pair(val)) { + val = SCM_CAR(val); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == 0) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %rename("length") size; + %rename("null?") empty; + %rename("clear!") clear; + %rename("ref") __getitem__; + %rename("set!") __setitem__; + %rename("delete!") __delitem__; + %rename("has-key?") has_key; + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + T& __getitem__(K key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void __setitem__(K key, const T& x) { + (*self)[key] = x; + } + void __delitem__(K key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(K key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + SCM keys() { + SCM result = SCM_EOL; + for (std::map< K, T, C >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) { + SCM k = CONVERT_TO(i->first); + result = scm_cons(k,result); + } + return result; + } + } + }; + %enddef + + %define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) + template class map< K, T, C > { + %typemap(in) map< K, T, C > { + if (scm_is_null($input)) { + $1 = std::map< K, T, C >(); + } else if (scm_is_pair($input)) { + $1 = std::map< K, T, C >(); + SCM alist = $input; + while (!scm_is_null(alist)) { + K* k; + SCM entry, key, val; + entry = SCM_CAR(alist); + if (!scm_is_pair(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = SCM_CAR(entry); + val = SCM_CDR(entry); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (!CHECK(val)) { + if (!scm_is_pair(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = SCM_CAR(val); + if (!CHECK(val)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + } + (($1_type &)$1)[*k] = CONVERT_FROM(val); + alist = SCM_CDR(alist); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const map< K, T, C >& (std::map< K, T, C > temp), + const map< K, T, C >* (std::map< K, T, C > temp) { + if (scm_is_null($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + } else if (scm_is_pair($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + SCM alist = $input; + while (!scm_is_null(alist)) { + K* k; + SCM entry, key, val; + entry = SCM_CAR(alist); + if (!scm_is_pair(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = SCM_CAR(entry); + val = SCM_CDR(entry); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (!CHECK(val)) { + if (!scm_is_pair(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = SCM_CAR(val); + if (!CHECK(val)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + } + temp[*k] = CONVERT_FROM(val); + alist = SCM_CDR(alist); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) map< K, T, C > { + SCM alist = SCM_EOL; + for (std::map< K, T, C >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) { + K* key = new K(i->first); + SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1); + SCM x = CONVERT_TO(i->second); + SCM entry = scm_cons(k,x); + alist = scm_cons(entry,alist); + } + $result = alist; + } + %typecheck(SWIG_TYPECHECK_MAP) map< K, T, C > { + // native sequence? + if (scm_is_null($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + // check the first element only + K* k; + SCM head = SCM_CAR($input); + if (scm_is_pair(head)) { + SCM val = SCM_CDR(head); + if (SWIG_ConvertPtr(val,(void **) &k, + $descriptor(K *), 0) != 0) { + $1 = 0; + } else { + if (CHECK(val)) { + $1 = 1; + } else if (scm_is_pair(val)) { + val = SCM_CAR(val); + if (CHECK(val)) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_MAP) const map< K, T, C >&, + const map< K, T, C >* { + // native sequence? + if (scm_is_null($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + // check the first element only + K* k; + SCM head = SCM_CAR($input); + if (scm_is_pair(head)) { + SCM val = SCM_CDR(head); + if (SWIG_ConvertPtr(val,(void **) &k, + $descriptor(K *), 0) != 0) { + $1 = 0; + } else { + if (CHECK(val)) { + $1 = 1; + } else if (scm_is_pair(val)) { + val = SCM_CAR(val); + if (CHECK(val)) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %rename("length") size; + %rename("null?") empty; + %rename("clear!") clear; + %rename("ref") __getitem__; + %rename("set!") __setitem__; + %rename("delete!") __delitem__; + %rename("has-key?") has_key; + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + T __getitem__(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void __setitem__(const K& key, T x) { + (*self)[key] = x; + } + void __delitem__(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + SCM keys() { + SCM result = SCM_EOL; + for (std::map< K, T, C >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) { + K* key = new K(i->first); + SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1); + result = scm_cons(k,result); + } + return result; + } + } + }; + %enddef + + %define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, + T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) + template<> class map< K, T, C > { + %typemap(in) map< K, T, C > { + if (scm_is_null($input)) { + $1 = std::map< K, T, C >(); + } else if (scm_is_pair($input)) { + $1 = std::map< K, T, C >(); + SCM alist = $input; + while (!scm_is_null(alist)) { + SCM entry, key, val; + entry = SCM_CAR(alist); + if (!scm_is_pair(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = SCM_CAR(entry); + val = SCM_CDR(entry); + if (!CHECK_K(key)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + if (!CHECK_T(val)) { + if (!scm_is_pair(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = SCM_CAR(val); + if (!CHECK_T(val)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + } + (($1_type &)$1)[CONVERT_K_FROM(key)] = + CONVERT_T_FROM(val); + alist = SCM_CDR(alist); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const map< K, T, C >& (std::map< K, T, C > temp), + const map< K, T, C >* (std::map< K, T, C > temp) { + if (scm_is_null($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + } else if (scm_is_pair($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + SCM alist = $input; + while (!scm_is_null(alist)) { + SCM entry, key, val; + entry = SCM_CAR(alist); + if (!scm_is_pair(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = SCM_CAR(entry); + val = SCM_CDR(entry); + if (!CHECK_K(key)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + if (!CHECK_T(val)) { + if (!scm_is_pair(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = SCM_CAR(val); + if (!CHECK_T(val)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + } + temp[CONVERT_K_FROM(key)] = CONVERT_T_FROM(val); + alist = SCM_CDR(alist); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) map< K, T, C > { + SCM alist = SCM_EOL; + for (std::map< K, T, C >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) { + SCM k = CONVERT_K_TO(i->first); + SCM x = CONVERT_T_TO(i->second); + SCM entry = scm_cons(k,x); + alist = scm_cons(entry,alist); + } + $result = alist; + } + %typecheck(SWIG_TYPECHECK_MAP) map< K, T, C > { + // native sequence? + if (scm_is_null($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + // check the first element only + SCM head = SCM_CAR($input); + if (scm_is_pair(head)) { + SCM key = SCM_CAR(head); + SCM val = SCM_CDR(head); + if (!CHECK_K(key)) { + $1 = 0; + } else { + if (CHECK_T(val)) { + $1 = 1; + } else if (scm_is_pair(val)) { + val = SCM_CAR(val); + if (CHECK_T(val)) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_MAP) const map< K, T, C >&, + const map< K, T, C >* { + // native sequence? + if (scm_is_null($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + // check the first element only + SCM head = SCM_CAR($input); + if (scm_is_pair(head)) { + SCM key = SCM_CAR(head); + SCM val = SCM_CDR(head); + if (!CHECK_K(key)) { + $1 = 0; + } else { + if (CHECK_T(val)) { + $1 = 1; + } else if (scm_is_pair(val)) { + val = SCM_CAR(val); + if (CHECK_T(val)) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %rename("length") size; + %rename("null?") empty; + %rename("clear!") clear; + %rename("ref") __getitem__; + %rename("set!") __setitem__; + %rename("delete!") __delitem__; + %rename("has-key?") has_key; + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + T __getitem__(K key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void __setitem__(K key, T x) { + (*self)[key] = x; + } + void __delitem__(K key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(K key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + SCM keys() { + SCM result = SCM_EOL; + for (std::map< K, T, C >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) { + SCM k = CONVERT_K_TO(i->first); + result = scm_cons(k,result); + } + return result; + } + } + }; + %enddef + + + specialize_std_map_on_key(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_key(int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_key(short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_key(long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_key(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_key(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_key(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_key(double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_key(float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_key(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + + specialize_std_map_on_value(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_value(int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_value(short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_value(long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_value(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_value(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_value(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_value(double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_value(float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_value(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_map_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/guile/std_pair.i new file mode 100644 index 00000000..050d4880 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/std_pair.i @@ -0,0 +1,867 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// +// See std_vector.i for the rationale of typemap application +// ------------------------------------------------------------------------ + +%{ +#include +%} + +// exported class + +namespace std { + + template struct pair { + %typemap(in) pair %{ + if (scm_is_pair($input)) { + T* x; + U* y; + SCM first, second; + first = SCM_CAR($input); + second = SCM_CDR($input); + x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0); + y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0); + $1 = std::make_pair(*x,*y); + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + %} + %typemap(in) const pair& (std::pair *temp = 0), + const pair* (std::pair *temp = 0) %{ + if (scm_is_pair($input)) { + T* x; + U* y; + SCM first, second; + first = SCM_CAR($input); + second = SCM_CDR($input); + x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0); + y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0); + temp = new std::pair< T, U >(*x,*y); + $1 = temp; + } else { + $1 = ($1_ltype) + SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + %} + %typemap(freearg) const pair&, const pair* %{ delete temp$argnum; %} + %typemap(out) pair { + T* x = new T($1.first); + U* y = new U($1.second); + SCM first = SWIG_NewPointerObj(x,$descriptor(T *), 1); + SCM second = SWIG_NewPointerObj(y,$descriptor(U *), 1); + $result = scm_cons(first,second); + } + %typecheck(SWIG_TYPECHECK_PAIR) pair { + /* native pair? */ + if (scm_is_pair($input)) { + T* x; + U* y; + SCM first = SCM_CAR($input); + SCM second = SCM_CDR($input); + if (SWIG_ConvertPtr(first,(void**) &x, + $descriptor(T *), 0) == 0 && + SWIG_ConvertPtr(second,(void**) &y, + $descriptor(U *), 0) == 0) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair< T, U >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_PAIR) const pair&, + const pair* { + /* native pair? */ + if (scm_is_pair($input)) { + T* x; + U* y; + SCM first = SCM_CAR($input); + SCM second = SCM_CDR($input); + if (SWIG_ConvertPtr(first,(void**) &x, + $descriptor(T *), 0) == 0 && + SWIG_ConvertPtr(second,(void**) &y, + $descriptor(U *), 0) == 0) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair< T, U >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + + // specializations for built-ins + + %define specialize_std_pair_on_first(T,CHECK,CONVERT_FROM,CONVERT_TO) + template struct pair { + %typemap(in) pair %{ + if (scm_is_pair($input)) { + U* y; + SCM first, second; + first = SCM_CAR($input); + second = SCM_CDR($input); + if (!CHECK(first)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0); + $1 = std::make_pair(CONVERT_FROM(first),*y); + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + %} + %typemap(in) const pair& (std::pair *temp = 0), + const pair* (std::pair *temp = 0) %{ + if (scm_is_pair($input)) { + U* y; + SCM first, second; + first = SCM_CAR($input); + second = SCM_CDR($input); + if (!CHECK(first)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0); + temp = new std::pair< T, U >(CONVERT_FROM(first),*y); + $1 = temp; + } else { + $1 = ($1_ltype) + SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + %} + %typemap(freearg) const pair&, const pair* %{ delete temp$argnum; %} + %typemap(out) pair { + U* y = new U($1.second); + SCM second = SWIG_NewPointerObj(y,$descriptor(U *), 1); + $result = scm_cons(CONVERT_TO($1.first),second); + } + %typecheck(SWIG_TYPECHECK_PAIR) pair { + /* native pair? */ + if (scm_is_pair($input)) { + U* y; + SCM first = SCM_CAR($input); + SCM second = SCM_CDR($input); + if (CHECK(first) && + SWIG_ConvertPtr(second,(void**) &y, + $descriptor(U *), 0) == 0) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair< T, U >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_PAIR) const pair&, + const pair* { + /* native pair? */ + if (scm_is_pair($input)) { + U* y; + SCM first = SCM_CAR($input); + SCM second = SCM_CDR($input); + if (CHECK(first) && + SWIG_ConvertPtr(second,(void**) &y, + $descriptor(U *), 0) == 0) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair< T, U >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + %enddef + + %define specialize_std_pair_on_second(U,CHECK,CONVERT_FROM,CONVERT_TO) + template struct pair { + %typemap(in) pair %{ + if (scm_is_pair($input)) { + T* x; + SCM first, second; + first = SCM_CAR($input); + second = SCM_CDR($input); + x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0); + if (!CHECK(second)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + $1 = std::make_pair(*x,CONVERT_FROM(second)); + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + %} + %typemap(in) const pair& (std::pair *temp = 0), + const pair* (std::pair *temp = 0) %{ + if (scm_is_pair($input)) { + T* x; + SCM first, second; + first = SCM_CAR($input); + second = SCM_CDR($input); + x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0); + if (!CHECK(second)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + temp = new std::pair< T, U >(*x,CONVERT_FROM(second)); + $1 = temp; + } else { + $1 = ($1_ltype) + SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + %} + %typemap(freearg) const pair&, const pair* %{ delete temp$argnum; %} + %typemap(out) pair { + T* x = new T($1.first); + SCM first = SWIG_NewPointerObj(x,$descriptor(T *), 1); + $result = scm_cons(first,CONVERT_TO($1.second)); + } + %typecheck(SWIG_TYPECHECK_PAIR) pair { + /* native pair? */ + if (scm_is_pair($input)) { + T* x; + SCM first = SCM_CAR($input); + SCM second = SCM_CDR($input); + if (SWIG_ConvertPtr(first,(void**) &x, + $descriptor(T *), 0) == 0 && + CHECK(second)) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair< T, U >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_PAIR) const pair&, + const pair* { + /* native pair? */ + if (scm_is_pair($input)) { + T* x; + SCM first = SCM_CAR($input); + SCM second = SCM_CDR($input); + if (SWIG_ConvertPtr(first,(void**) &x, + $descriptor(T *), 0) == 0 && + CHECK(second)) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair< T, U >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + %enddef + + %define specialize_std_pair_on_both(T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO, + U,CHECK_U,CONVERT_U_FROM,CONVERT_U_TO) + template<> struct pair { + %typemap(in) pair %{ + if (scm_is_pair($input)) { + SCM first, second; + first = SCM_CAR($input); + second = SCM_CDR($input); + if (!CHECK_T(first) || !CHECK_U(second)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + $1 = std::make_pair(CONVERT_T_FROM(first), + CONVERT_U_FROM(second)); + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + %} + %typemap(in) const pair& (std::pair *temp = 0), + const pair* (std::pair *temp = 0) %{ + if (scm_is_pair($input)) { + SCM first, second; + first = SCM_CAR($input); + second = SCM_CDR($input); + if (!CHECK_T(first) || !CHECK_U(second)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + temp = new std::pair< T, U >(CONVERT_T_FROM(first), CONVERT_U_FROM(second)); + $1 = temp; + } else { + $1 = ($1_ltype) + SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + %} + %typemap(freearg) const pair&, const pair* %{ delete temp$argnum; %} + %typemap(out) pair { + $result = scm_cons(CONVERT_T_TO($1.first), + CONVERT_U_TO($1.second)); + } + %typecheck(SWIG_TYPECHECK_PAIR) pair { + /* native pair? */ + if (scm_is_pair($input)) { + SCM first = SCM_CAR($input); + SCM second = SCM_CDR($input); + if (CHECK_T(first) && CHECK_U(second)) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair< T, U >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_PAIR) const pair&, + const pair* { + /* native pair? */ + if (scm_is_pair($input)) { + SCM first = SCM_CAR($input); + SCM second = SCM_CDR($input); + if (CHECK_T(first) && CHECK_U(second)) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair< T, U >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) == 0) + $1 = 1; + else + $1 = 0; + } + } + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + %enddef + + + specialize_std_pair_on_first(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_first(int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_first(short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_first(long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_first(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_first(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_first(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_first(double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_first(float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_first(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + + specialize_std_pair_on_second(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_second(int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_second(short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_second(long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_second(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_second(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_second(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_second(double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_second(float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_second(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(bool,scm_is_bool, + scm_is_true,SWIG_bool2scm, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(int,scm_is_number, + scm_to_long,scm_from_long, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(short,scm_is_number, + scm_to_long,scm_from_long, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(long,scm_is_number, + scm_to_long,scm_from_long, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(double,scm_is_number, + scm_to_double,scm_from_double, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(float,scm_is_number, + scm_to_double,scm_from_double, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + bool,scm_is_bool, + scm_is_true,SWIG_bool2scm); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + int,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + short,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + long,scm_is_number, + scm_to_long,scm_from_long); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + unsigned int,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + unsigned short,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + unsigned long,scm_is_number, + scm_to_ulong,scm_from_ulong); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + double,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + float,scm_is_number, + scm_to_double,scm_from_double); + specialize_std_pair_on_both(std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm, + std::string,scm_is_string, + SWIG_scm2string,SWIG_string2scm); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/std_string.i b/macx64/bin/swig/share/swig/4.0.0/guile/std_string.i new file mode 100644 index 00000000..6513173e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/std_string.i @@ -0,0 +1,86 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * SWIG typemaps for std::string + * ----------------------------------------------------------------------------- */ + +// ------------------------------------------------------------------------ +// std::string is typemapped by value +// This can prevent exporting methods which return a string +// in order for the user to modify it. +// However, I think I'll wait until someone asks for it... +// ------------------------------------------------------------------------ + +%include + +%{ +#include +%} + +namespace std { + + %naturalvar string; + + class string; + + %typemap(typecheck) string = char *; + %typemap(typecheck) const string & = char *; + + %typemap(in) string (char * tempptr) { + if (scm_is_string($input)) { + tempptr = SWIG_scm2str($input); + $1.assign(tempptr); + if (tempptr) SWIG_free(tempptr); + } else { + SWIG_exception(SWIG_TypeError, "string expected"); + } + } + + %typemap(in) const string & ($*1_ltype temp, char *tempptr) { + if (scm_is_string($input)) { + tempptr = SWIG_scm2str($input); + temp.assign(tempptr); + if (tempptr) SWIG_free(tempptr); + $1 = &temp; + } else { + SWIG_exception(SWIG_TypeError, "string expected"); + } + } + + %typemap(in) string * (char *tempptr) { + if (scm_is_string($input)) { + tempptr = SWIG_scm2str($input); + $1 = new $*1_ltype(tempptr); + if (tempptr) SWIG_free(tempptr); + } else { + SWIG_exception(SWIG_TypeError, "string expected"); + } + } + + %typemap(out) string { + $result = SWIG_str02scm($1.c_str()); + } + + %typemap(out) const string & { + $result = SWIG_str02scm($1->c_str()); + } + + %typemap(out) string * { + $result = SWIG_str02scm($1->c_str()); + } + + %typemap(varin) string { + if (scm_is_string($input)) { + char *tempptr = SWIG_scm2str($input); + $1.assign(tempptr); + if (tempptr) SWIG_free(tempptr); + } else { + SWIG_exception(SWIG_TypeError, "string expected"); + } + } + + %typemap(varout) string { + $result = SWIG_str02scm($1.c_str()); + } + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/guile/std_vector.i new file mode 100644 index 00000000..42bad849 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/std_vector.i @@ -0,0 +1,424 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * + * SWIG typemaps for std::vector + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::vector +// +// The aim of all that follows would be to integrate std::vector with +// Guile as much as possible, namely, to allow the user to pass and +// be returned Guile vectors or lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::vector), f(const std::vector&), f(const std::vector*): +// the parameter being read-only, either a Guile sequence or a +// previously wrapped std::vector can be passed. +// -- f(std::vector&), f(std::vector*): +// the parameter must be modified; therefore, only a wrapped std::vector +// can be passed. +// -- std::vector f(): +// the vector is returned by copy; therefore, a Guile vector of T:s +// is returned which is most easily used in other Guile functions +// -- std::vector& f(), std::vector* f(), const std::vector& f(), +// const std::vector* f(): +// the vector is returned by reference; therefore, a wrapped std::vector +// is returned +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template class vector { + %typemap(in) vector { + if (scm_is_vector($input)) { + unsigned long size = scm_c_vector_length($input); + $1 = std::vector< T >(size); + for (unsigned long i=0; i(); + } else if (scm_is_pair($input)) { + SCM head, tail; + $1 = std::vector< T >(); + tail = $input; + while (!scm_is_null(tail)) { + head = SCM_CAR(tail); + tail = SCM_CDR(tail); + $1.push_back(*((T*)SWIG_MustGetPtr(head, + $descriptor(T *), + $argnum, 0))); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const vector& (std::vector temp), + const vector* (std::vector temp) { + if (scm_is_vector($input)) { + unsigned long size = scm_c_vector_length($input); + temp = std::vector< T >(size); + $1 = &temp; + for (unsigned long i=0; i(); + $1 = &temp; + } else if (scm_is_pair($input)) { + temp = std::vector< T >(); + $1 = &temp; + SCM head, tail; + tail = $input; + while (!scm_is_null(tail)) { + head = SCM_CAR(tail); + tail = SCM_CDR(tail); + temp.push_back(*((T*) SWIG_MustGetPtr(head, + $descriptor(T *), + $argnum, 0))); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) vector { + $result = scm_make_vector(scm_from_long($1.size()),SCM_UNSPECIFIED); + for (unsigned int i=0; i<$1.size(); i++) { + T* x = new T((($1_type &)$1)[i]); + scm_vector_set_x($result,scm_from_long(i), + SWIG_NewPointerObj(x, $descriptor(T *), 1)); + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) vector { + /* native sequence? */ + if (scm_is_vector($input)) { + unsigned int size = scm_c_vector_length($input); + if (size == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + SCM o = scm_vector_ref($input,scm_from_ulong(0)); + T* x; + if (SWIG_ConvertPtr(o,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } + } else if (scm_is_null($input)) { + /* again, an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + /* check the first element only */ + T* x; + SCM head = SCM_CAR($input); + if (SWIG_ConvertPtr(head,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } else { + /* wrapped vector? */ + std::vector< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) const vector&, + const vector* { + /* native sequence? */ + if (scm_is_vector($input)) { + unsigned int size = scm_c_vector_length($input); + if (size == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* x; + SCM o = scm_vector_ref($input,scm_from_ulong(0)); + if (SWIG_ConvertPtr(o,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } + } else if (scm_is_null($input)) { + /* again, an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + /* check the first element only */ + T* x; + SCM head = SCM_CAR($input); + if (SWIG_ConvertPtr(head,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } else { + /* wrapped vector? */ + std::vector< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, const T& value); + vector(const vector& other); + + %rename(length) size; + unsigned int size() const; + %rename("empty?") empty; + bool empty() const; + %rename("clear!") clear; + void clear(); + %rename("set!") set; + %rename("pop!") pop; + %rename("push!") push_back; + void push_back(const T& x); + %extend { + T pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T x = self->back(); + self->pop_back(); + return x; + } + const T& ref(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class vector { + %typemap(in) vector { + if (scm_is_vector($input)) { + unsigned long size = scm_c_vector_length($input); + $1 = std::vector< T >(size); + for (unsigned long i=0; i(); + } else if (scm_is_pair($input)) { + SCM v = scm_vector($input); + unsigned long size = scm_c_vector_length(v); + $1 = std::vector< T >(size); + for (unsigned long i=0; i& (std::vector temp), + const vector* (std::vector temp) { + if (scm_is_vector($input)) { + unsigned long size = scm_c_vector_length($input); + temp = std::vector< T >(size); + $1 = &temp; + for (unsigned long i=0; i(); + $1 = &temp; + } else if (scm_is_pair($input)) { + SCM v = scm_vector($input); + unsigned long size = scm_c_vector_length(v); + temp = std::vector< T >(size); + $1 = &temp; + for (unsigned long i=0; i { + $result = scm_make_vector(scm_from_long($1.size()),SCM_UNSPECIFIED); + for (unsigned int i=0; i<$1.size(); i++) { + SCM x = CONVERT_TO((($1_type &)$1)[i]); + scm_vector_set_x($result,scm_from_long(i),x); + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) vector { + /* native sequence? */ + if (scm_is_vector($input)) { + unsigned int size = scm_c_vector_length($input); + if (size == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + SCM o = scm_vector_ref($input,scm_from_ulong(0)); + $1 = CHECK(o) ? 1 : 0; + } + } else if (scm_is_null($input)) { + /* again, an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + /* check the first element only */ + SCM head = SCM_CAR($input); + $1 = CHECK(head) ? 1 : 0; + } else { + /* wrapped vector? */ + std::vector< T >* v; + $1 = (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor, 0) != -1) ? 1 : 0; + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) const vector&, + const vector* { + /* native sequence? */ + if (scm_is_vector($input)) { + unsigned int size = scm_c_vector_length($input); + if (size == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + SCM o = scm_vector_ref($input,scm_from_ulong(0)); + $1 = CHECK(o) ? 1 : 0; + } + } else if (scm_is_null($input)) { + /* again, an empty sequence can be of any type */ + $1 = 1; + } else if (scm_is_pair($input)) { + /* check the first element only */ + SCM head = SCM_CAR($input); + $1 = CHECK(head) ? 1 : 0; + } else { + /* wrapped vector? */ + std::vector< T >* v; + $1 = (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor, 0) != -1) ? 1 : 0; + } + } + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, const T& value); + vector(const vector& other); + + %rename(length) size; + unsigned int size() const; + %rename("empty?") empty; + bool empty() const; + %rename("clear!") clear; + void clear(); + %rename("set!") set; + %rename("pop!") pop; + %rename("push!") push_back; + void push_back(T x); + %extend { + T pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T x = self->back(); + self->pop_back(); + return x; + } + T ref(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/swigrun.i b/macx64/bin/swig/share/swig/4.0.0/guile/swigrun.i new file mode 100644 index 00000000..4b9ea2c7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/swigrun.i @@ -0,0 +1,49 @@ +/* -*- mode: c -*- */ + +%module swigrun + +#ifdef SWIGGUILE_SCM + +/* Hook the runtime module initialization + into the shared initialization function SWIG_Guile_Init. */ +%runtime %{ +/* Hook the runtime module initialization + into the shared initialization function SWIG_Guile_Init. */ +#include +#ifdef __cplusplus +extern "C" +#endif +SCM scm_init_Swig_swigrun_module (void); +#define SWIG_INIT_RUNTIME_MODULE scm_init_Swig_swigrun_module(); +%} + +/* The runtime type system from common.swg */ + +typedef struct swig_type_info swig_type_info; + +const char * +SWIG_TypeName(const swig_type_info *type); + +const char * +SWIG_TypePrettyName(const swig_type_info *type); + +swig_type_info * +SWIG_TypeQuery(const char *); + +/* Language-specific stuff */ + +%apply bool { int }; + +int +SWIG_IsPointer(SCM object); + +int +SWIG_IsPointerOfType(SCM object, swig_type_info *type); + +unsigned long +SWIG_PointerAddress(SCM object); + +swig_type_info * +SWIG_PointerType(SCM object); + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/guile/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/guile/typemaps.i new file mode 100644 index 00000000..cfccced8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/guile/typemaps.i @@ -0,0 +1,480 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Guile-specific typemaps + * ----------------------------------------------------------------------------- */ + +/* Pointers */ + +%typemap(in) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] { + $1 = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, $argnum, 0); +} +%typemap(freearg) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] ""; + +%typemap(in) void * { + $1 = ($1_ltype)SWIG_MustGetPtr($input, NULL, $argnum, 0); +} +%typemap(freearg) void * ""; + +%typemap(varin) SWIGTYPE * { + $1 = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, 1, 0); +} + +%typemap(varin) SWIGTYPE & { + $1 = *(($1_ltype)SWIG_MustGetPtr($input, $descriptor, 1, 0)); +} + +%typemap(varin) SWIGTYPE && { + $1 = *(($1_ltype)SWIG_MustGetPtr($input, $descriptor, 1, 0)); +} + +%typemap(varin) SWIGTYPE [] { + scm_wrong_type_arg((char *) FUNC_NAME, 1, $input); +} + +%typemap(varin) SWIGTYPE [ANY] { + void *temp; + int ii; + $1_basetype *b = 0; + temp = SWIG_MustGetPtr($input, $1_descriptor, 1, 0); + b = ($1_basetype *) $1; + for (ii = 0; ii < $1_size; ii++) b[ii] = *(($1_basetype *) temp + ii); +} + +%typemap(varin) void * { + $1 = SWIG_MustGetPtr($input, NULL, 1, 0); +} + +%typemap(out) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] { + $result = SWIG_NewPointerObj ($1, $descriptor, $owner); +} + +%typemap(out) SWIGTYPE *DYNAMIC, SWIGTYPE &DYNAMIC { + swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor,(void **) &$1); + $result = SWIG_NewPointerObj ($1, ty, $owner); +} + +%typemap(varout) SWIGTYPE *, SWIGTYPE [] { + $result = SWIG_NewPointerObj ($1, $descriptor, 0); +} + +%typemap(varout) SWIGTYPE & { + $result = SWIG_NewPointerObj((void *) &$1, $1_descriptor, 0); +} + +%typemap(varout) SWIGTYPE && { + $result = SWIG_NewPointerObj((void *) &$1, $1_descriptor, 0); +} + +%typemap(throws) SWIGTYPE { + $<ype temp = new $ltype($1); + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(SWIG_NewPointerObj(temp, $&descriptor, 1), + SCM_UNDEFINED)); +} + +%typemap(throws) SWIGTYPE & { + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(SWIG_NewPointerObj(&$1, $descriptor, 1), + SCM_UNDEFINED)); +} + +%typemap(throws) SWIGTYPE && { + scm_throw(gh_symbol2scm((char *) "swig-exception"), + gh_list(SWIG_NewPointerObj(&$1, $descriptor, 1), + SCM_UNDEFINED)); +} + +%typemap(throws) SWIGTYPE * { + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(SWIG_NewPointerObj($1, $descriptor, 1), + SCM_UNDEFINED)); +} + +%typemap(throws) SWIGTYPE [] { + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(SWIG_NewPointerObj($1, $descriptor, 1), + SCM_UNDEFINED)); +} + +/* Change of object ownership, and interaction of destructor-like functions and the + garbage-collector */ + +%typemap(in, doc="$NAME is of type <$type> and gets destroyed by the function") SWIGTYPE *DESTROYED { + $1 = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, $argnum, 0); +} + +%typemap(freearg) SWIGTYPE *DESTROYED { + SWIG_Guile_MarkPointerDestroyed($input); +} + +%typemap(in, doc="$NAME is of type <$type> and is consumed by the function") SWIGTYPE *CONSUMED { + $1 = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, $argnum, 0); + SWIG_Guile_MarkPointerNoncollectable($input); +} + +/* Pass-by-value */ + +%typemap(in) SWIGTYPE($&1_ltype argp) { + argp = ($&1_ltype)SWIG_MustGetPtr($input, $&1_descriptor, $argnum, 0); + $1 = *argp; +} + +%typemap(varin) SWIGTYPE { + $&1_ltype argp; + argp = ($&1_ltype)SWIG_MustGetPtr($input, $&1_descriptor, 1, 0); + $1 = *argp; +} + +%typemap(out) SWIGTYPE +#ifdef __cplusplus +{ + $&1_ltype resultptr; + resultptr = new $1_ltype((const $1_ltype &) $1); + $result = SWIG_NewPointerObj (resultptr, $&1_descriptor, 1); +} +#else +{ + $&1_ltype resultptr; + resultptr = ($&1_ltype) malloc(sizeof($1_type)); + memmove(resultptr, &$1, sizeof($1_type)); + $result = SWIG_NewPointerObj(resultptr, $&1_descriptor, 1); +} +#endif + +%typemap(varout) SWIGTYPE +#ifdef __cplusplus +{ + $&1_ltype resultptr; + resultptr = new $1_ltype((const $1_ltype&) $1); + $result = SWIG_NewPointerObj (resultptr, $&1_descriptor, 0); +} +#else +{ + $&1_ltype resultptr; + resultptr = ($&1_ltype) malloc(sizeof($1_type)); + memmove(resultptr, &$1, sizeof($1_type)); + $result = SWIG_NewPointerObj(resultptr, $&1_descriptor, 0); +} +#endif + +/* Enums */ + +%typemap(in) enum SWIGTYPE { $1 = ($1_type) scm_to_int($input); } +/* The complicated construction below needed to deal with anonymous + enums, which cannot be cast to. */ +%typemap(varin) enum SWIGTYPE { + if (sizeof(int) != sizeof($1)) { + scm_error(scm_from_locale_symbol("swig-error"), + (char *) FUNC_NAME, + (char *) "enum variable '$name' cannot be set", + SCM_EOL, SCM_BOOL_F); + } + * (int *) &($1) = scm_to_int($input); +} +%typemap(out) enum SWIGTYPE { $result = scm_from_long((int)$1); } +%typemap(varout) enum SWIGTYPE { $result = scm_from_long((int)$1); } +%typemap(throws) enum SWIGTYPE { + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(scm_from_long((int)$1), SCM_UNDEFINED)); +} + +/* The SIMPLE_MAP_WITH_EXPR macro below defines the whole set of + typemaps needed for simple types. + -- SCM_TO_C_EXPR is a C expression that translates the Scheme value + "swig_scm_value" to a C value. + -- C_TO_SCM_EXPR is a C expression that translates the C value + "swig_c_value" to a Scheme value. */ + +%define SIMPLE_MAP_WITH_EXPR(C_NAME, SCM_TO_C_EXPR, C_TO_SCM_EXPR, SCM_NAME) + %typemap (in, doc="$NAME is of type <" #SCM_NAME ">") C_NAME + { SCM swig_scm_value = $input; + $1 = SCM_TO_C_EXPR; } + %typemap (varin, doc="NEW-VALUE is of type <" #SCM_NAME ">") C_NAME + { SCM swig_scm_value = $input; + $1 = SCM_TO_C_EXPR; } + %typemap (out, doc="<" #SCM_NAME ">") C_NAME + { C_NAME swig_c_value = $1; + $result = C_TO_SCM_EXPR; } + %typemap (varout, doc="<" #SCM_NAME ">") C_NAME + { C_NAME swig_c_value = $1; + $result = C_TO_SCM_EXPR; } + /* INPUT and OUTPUT */ + %typemap (in, doc="$NAME is of type <" #SCM_NAME ">)") + C_NAME *INPUT(C_NAME temp) { + SCM swig_scm_value = $input; + temp = (C_NAME) SCM_TO_C_EXPR; $1 = &temp; } + %typemap (in,numinputs=0) C_NAME *OUTPUT (C_NAME temp) + {$1 = &temp;} + %typemap (argout,doc="$name (of type <" #SCM_NAME ">)") C_NAME *OUTPUT + { C_NAME swig_c_value = *$1; + SWIG_APPEND_VALUE(C_TO_SCM_EXPR); } + %typemap (in) C_NAME *BOTH = C_NAME *INPUT; + %typemap (argout) C_NAME *BOTH = C_NAME *OUTPUT; + %typemap (in) C_NAME *INOUT = C_NAME *INPUT; + %typemap (argout) C_NAME *INOUT = C_NAME *OUTPUT; + /* Const primitive references. Passed by value */ + %typemap(in, doc="$NAME is of type <" #SCM_NAME ">") const C_NAME & (C_NAME temp) + { SCM swig_scm_value = $input; + temp = SCM_TO_C_EXPR; + $1 = &temp; } + %typemap(out, doc="<" #SCM_NAME ">") const C_NAME & + { C_NAME swig_c_value = *$1; + $result = C_TO_SCM_EXPR; } + /* Throw typemap */ + %typemap(throws) C_NAME { + C_NAME swig_c_value = $1; + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(C_TO_SCM_EXPR, SCM_UNDEFINED)); + } +%enddef + +/* The SIMPLE_MAP macro below defines the whole set of typemaps needed + for simple types. It generates slightly simpler code than the + macro above, but it is only suitable for very simple conversion + expressions. */ + +%define SIMPLE_MAP(C_NAME, SCM_TO_C, C_TO_SCM, SCM_NAME) + %typemap (in, doc="$NAME is of type <" #SCM_NAME ">") + C_NAME {$1 = ($1_ltype) SCM_TO_C($input);} + %typemap (varin, doc="NEW-VALUE is of type <" #SCM_NAME ">") + C_NAME {$1 = ($1_ltype) SCM_TO_C($input);} + %typemap (out, doc="<" #SCM_NAME ">") + C_NAME {$result = C_TO_SCM($1);} + %typemap (varout, doc="<" #SCM_NAME ">") + C_NAME {$result = C_TO_SCM($1);} + /* INPUT and OUTPUT */ + %typemap (in, doc="$NAME is of type <" #SCM_NAME ">)") + C_NAME *INPUT(C_NAME temp), C_NAME &INPUT(C_NAME temp) { + temp = (C_NAME) SCM_TO_C($input); $1 = &temp; + } + %typemap (in,numinputs=0) C_NAME *OUTPUT (C_NAME temp), C_NAME &OUTPUT(C_NAME temp) + {$1 = &temp;} + %typemap (argout,doc="$name (of type <" #SCM_NAME ">)") C_NAME *OUTPUT, C_NAME &OUTPUT + {SWIG_APPEND_VALUE(C_TO_SCM(*$1));} + %typemap (in) C_NAME *BOTH = C_NAME *INPUT; + %typemap (argout) C_NAME *BOTH = C_NAME *OUTPUT; + %typemap (in) C_NAME *INOUT = C_NAME *INPUT; + %typemap (argout) C_NAME *INOUT = C_NAME *OUTPUT; + %typemap (in) C_NAME &INOUT = C_NAME &INPUT; + %typemap (argout) C_NAME &INOUT = C_NAME &OUTPUT; + /* Const primitive references. Passed by value */ + %typemap(in, doc="$NAME is of type <" #SCM_NAME ">") const C_NAME & (C_NAME temp) { + temp = SCM_TO_C($input); + $1 = ($1_ltype) &temp; + } + %typemap(out, doc="<" #SCM_NAME ">") const C_NAME & { + $result = C_TO_SCM(*$1); + } + /* Throw typemap */ + %typemap(throws) C_NAME { + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(C_TO_SCM($1), SCM_UNDEFINED)); + } +%enddef + + SIMPLE_MAP(bool, scm_is_true, scm_from_bool, boolean); + SIMPLE_MAP(char, SCM_CHAR, SCM_MAKE_CHAR, char); + SIMPLE_MAP(unsigned char, SCM_CHAR, SCM_MAKE_CHAR, char); + SIMPLE_MAP(signed char, SCM_CHAR, SCM_MAKE_CHAR, char); + SIMPLE_MAP(int, scm_to_int, scm_from_long, integer); + SIMPLE_MAP(short, scm_to_short, scm_from_long, integer); + SIMPLE_MAP(long, scm_to_long, scm_from_long, integer); + SIMPLE_MAP(ptrdiff_t, scm_to_long, scm_from_long, integer); + SIMPLE_MAP(unsigned int, scm_to_uint, scm_from_ulong, integer); + SIMPLE_MAP(unsigned short, scm_to_ushort, scm_from_ulong, integer); + SIMPLE_MAP(unsigned long, scm_to_ulong, scm_from_ulong, integer); + SIMPLE_MAP(size_t, scm_to_ulong, scm_from_ulong, integer); + SIMPLE_MAP(float, scm_to_double, scm_from_double, real); + SIMPLE_MAP(double, scm_to_double, scm_from_double, real); +// SIMPLE_MAP(char *, SWIG_scm2str, SWIG_str02scm, string); +// SIMPLE_MAP(const char *, SWIG_scm2str, SWIG_str02scm, string); + +/* Define long long typemaps -- uses functions that are only defined + in recent versions of Guile, availability also depends on Guile's + configuration. */ + +SIMPLE_MAP(long long, scm_to_long_long, scm_from_long_long, integer); +SIMPLE_MAP(unsigned long long, scm_to_ulong_long, scm_from_ulong_long, integer); + +/* Strings */ + + %typemap (in, doc="$NAME is a string") char *(int must_free = 0) { + $1 = ($1_ltype)SWIG_scm2str($input); + must_free = 1; + } + %typemap (varin, doc="NEW-VALUE is a string") char * {$1 = ($1_ltype)SWIG_scm2str($input);} + %typemap (out, doc="") char * {$result = SWIG_str02scm((const char *)$1);} + %typemap (varout, doc="") char * {$result = SWIG_str02scm($1);} + %typemap (in, doc="$NAME is a string") char **INPUT(char * temp, int must_free = 0) { + temp = (char *) SWIG_scm2str($input); $1 = &temp; + must_free = 1; + } + %typemap (in,numinputs=0) char **OUTPUT (char * temp) + {$1 = &temp;} + %typemap (argout,doc="$NAME (a string)") char **OUTPUT + {SWIG_APPEND_VALUE(SWIG_str02scm(*$1));} + %typemap (in) char **BOTH = char **INPUT; + %typemap (argout) char **BOTH = char **OUTPUT; + %typemap (in) char **INOUT = char **INPUT; + %typemap (argout) char **INOUT = char **OUTPUT; + +/* SWIG_scm2str makes a malloc'ed copy of the string, so get rid of it after + the function call. */ + +%typemap (freearg) char * "if (must_free$argnum && $1) SWIG_free($1);"; +%typemap (freearg) char **INPUT, char **BOTH "if (must_free$argnum && (*$1)) SWIG_free(*$1);" +%typemap (freearg) char **OUTPUT "SWIG_free(*$1);" + +/* But this shall not apply if we try to pass a single char by + reference. */ + +%typemap (freearg) char *OUTPUT, char *BOTH ""; + +/* If we set a string variable, delete the old result first, unless const. */ + +%typemap (varin) char * { + if ($1) free($1); + $1 = ($1_ltype) SWIG_scm2str($input); +} + +%typemap (varin) const char * { + $1 = ($1_ltype) SWIG_scm2str($input); +} + +%typemap(throws) char * { + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(SWIG_str02scm($1), SCM_UNDEFINED)); +} + +/* Void */ + +%typemap (out,doc="") void "gswig_result = SCM_UNSPECIFIED;"; + +/* SCM is passed through */ + +typedef unsigned long SCM; +%typemap (in) SCM "$1=$input;"; +%typemap (out) SCM "$result=$1;"; +%typecheck(SWIG_TYPECHECK_POINTER) SCM "$1=1;"; + +/* ------------------------------------------------------------ + * String & length + * ------------------------------------------------------------ */ + +%typemap(in) (char *STRING, int LENGTH), (char *STRING, size_t LENGTH) { + size_t temp; + $1 = ($1_ltype) SWIG_Guile_scm2newstr($input, &temp); + $2 = ($2_ltype) temp; +} + +/* ------------------------------------------------------------ + * CLASS::* (member function pointer) typemaps + * taken from typemaps/swigtype.swg + * ------------------------------------------------------------ */ + +#define %set_output(obj) $result = obj +#define %set_varoutput(obj) $result = obj +#define %argument_fail(code, type, name, argn) scm_wrong_type_arg((char *) FUNC_NAME, argn, $input); +#define %as_voidptr(ptr) (void*)(ptr) + +%typemap(in) SWIGTYPE (CLASS::*) { + int res = SWIG_ConvertMember($input, %as_voidptr(&$1), sizeof($type),$descriptor); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } +} + +%typemap(out,noblock=1) SWIGTYPE (CLASS::*) { + %set_output(SWIG_NewMemberObj(%as_voidptr(&$1), sizeof($type), $descriptor)); +} + +%typemap(varin) SWIGTYPE (CLASS::*) { + int res = SWIG_ConvertMember($input,%as_voidptr(&$1), sizeof($type), $descriptor); + if (!SWIG_IsOK(res)) { + scm_wrong_type_arg((char *) FUNC_NAME, 1, $input); + } +} + +%typemap(varout,noblock=1) SWIGTYPE (CLASS::*) { + %set_varoutput(SWIG_NewMemberObj(%as_voidptr(&$1), sizeof($type), $descriptor)); +} + +/* ------------------------------------------------------------ + * Typechecking rules + * ------------------------------------------------------------ */ + +/* adapted from python.swg */ + +%typecheck(SWIG_TYPECHECK_INTEGER) + int, short, long, + unsigned int, unsigned short, unsigned long, + signed char, unsigned char, + long long, unsigned long long, + size_t, ptrdiff_t, + std::size_t, std::ptrdiff_t, + const int &, const short &, const long &, + const unsigned int &, const unsigned short &, const unsigned long &, + const long long &, const unsigned long long &, + const size_t &, const ptrdiff_t &, + const std::size_t &, const std::ptrdiff_t &, + enum SWIGTYPE +{ + $1 = scm_is_true(scm_integer_p($input)) && scm_is_true(scm_exact_p($input))? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_BOOL) + bool, bool&, const bool& +{ + $1 = SCM_BOOLP($input) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_DOUBLE) + float, double, + const float &, const double & +{ + $1 = scm_is_true(scm_real_p($input)) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_CHAR) char { + $1 = SCM_CHARP($input) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_STRING) char * { + $1 = scm_is_string($input) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE [] { + void *ptr; + int res = SWIG_ConvertPtr($input, &ptr, $1_descriptor, 0); + $1 = SWIG_CheckState(res); +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE &, SWIGTYPE && { + void *ptr; + int res = SWIG_ConvertPtr($input, &ptr, $1_descriptor, SWIG_POINTER_NO_NULL); + $1 = SWIG_CheckState(res); +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE { + void *ptr; + int res = SWIG_ConvertPtr($input, &ptr, $&descriptor, SWIG_POINTER_NO_NULL); + $1 = SWIG_CheckState(res); +} + +%typecheck(SWIG_TYPECHECK_VOIDPTR) void * { + void *ptr; + int res = SWIG_ConvertPtr($input, &ptr, 0, 0); + $1 = SWIG_CheckState(res); +} + +/* Array reference typemaps */ +%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } +%apply SWIGTYPE && { SWIGTYPE ((&&)[ANY]) } + +/* const pointers */ +%apply SWIGTYPE * { SWIGTYPE *const } +%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) } +%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) } + +/* typemaps.i ends here */ diff --git a/macx64/bin/swig/share/swig/4.0.0/intrusive_ptr.i b/macx64/bin/swig/share/swig/4.0.0/intrusive_ptr.i new file mode 100644 index 00000000..621a701f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/intrusive_ptr.i @@ -0,0 +1,80 @@ +// Allow for different namespaces for shared_ptr / intrusive_ptr - they could be boost or std or std::tr1 +// For example for std::tr1, use: +// #define SWIG_SHARED_PTR_NAMESPACE std +// #define SWIG_SHARED_PTR_SUBNAMESPACE tr1 +// #define SWIG_INTRUSIVE_PTR_NAMESPACE boost +// #define SWIG_INTRUSIVE_PTR_SUBNAMESPACE + +#if !defined(SWIG_INTRUSIVE_PTR_NAMESPACE) +# define SWIG_INTRUSIVE_PTR_NAMESPACE boost +#endif + +#if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) +# define SWIG_INTRUSIVE_PTR_QNAMESPACE SWIG_INTRUSIVE_PTR_NAMESPACE::SWIG_INTRUSIVE_PTR_SUBNAMESPACE +#else +# define SWIG_INTRUSIVE_PTR_QNAMESPACE SWIG_INTRUSIVE_PTR_NAMESPACE +#endif + +namespace SWIG_INTRUSIVE_PTR_NAMESPACE { +#if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) + namespace SWIG_INTRUSIVE_PTR_SUBNAMESPACE { +#endif + template class intrusive_ptr { + }; +#if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) + } +#endif +} + +%fragment("SWIG_intrusive_deleter", "header") { +template struct SWIG_intrusive_deleter { + void operator()(T *p) { + if (p) + intrusive_ptr_release(p); + } +}; +} + +%fragment("SWIG_null_deleter", "header") { +struct SWIG_null_deleter { + void operator() (void const *) const { + } +}; +%#define SWIG_NO_NULL_DELETER_0 , SWIG_null_deleter() +%#define SWIG_NO_NULL_DELETER_1 +} + +// Main user macro for defining intrusive_ptr typemaps for both const and non-const pointer types +%define %intrusive_ptr(TYPE...) +%feature("smartptr", noblock=1) TYPE { SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > } +SWIG_INTRUSIVE_PTR_TYPEMAPS(, TYPE) +SWIG_INTRUSIVE_PTR_TYPEMAPS(const, TYPE) +%enddef + +%define %intrusive_ptr_no_wrap(TYPE...) +%feature("smartptr", noblock=1) TYPE { SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > } +SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(, TYPE) +SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(const, TYPE) +%enddef + +// Legacy macros +%define SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE...) +#warning "SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE) is deprecated. Please use %intrusive_ptr(TYPE) instead." +%intrusive_ptr(TYPE) +%enddef + +%define SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...) +#warning "SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE) is deprecated. Please use %intrusive_ptr(TYPE) instead." +%intrusive_ptr(TYPE) +%enddef + +%define SWIG_INTRUSIVE_PTR_NO_WRAP(PROXYCLASS, TYPE...) +#warning "SWIG_INTRUSIVE_PTR_NO_WRAP(PROXYCLASS, TYPE) is deprecated. Please use %intrusive_ptr_no_wrap(TYPE) instead." +%intrusive_ptr_no_wrap(TYPE) +%enddef + +%define SWIG_INTRUSIVE_PTR_DERIVED_NO_WRAP(PROXYCLASS, BASECLASSTYPE, TYPE...) +#warning "SWIG_INTRUSIVE_PTR_DERIVED_NO_WRAP(PROXYCLASS, BASECLASSTYPE, TYPE) is deprecated. Please use %intrusive_ptr_no_wrap(TYPE) instead." +%intrusive_ptr_no_wrap(TYPE) +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/inttypes.i b/macx64/bin/swig/share/swig/4.0.0/inttypes.i new file mode 100644 index 00000000..85bd5ada --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/inttypes.i @@ -0,0 +1,85 @@ +/* ----------------------------------------------------------------------------- + * inttypes.i + * + * SWIG library file for ISO C99 types: 7.8 Format conversion of integer types + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +%include +%include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef SWIGWORDSIZE64 + + /* We have to define the `uintmax_t' type using `ldiv_t'. */ + typedef struct + { + long int quot; /* Quotient. */ + long int rem; /* Remainder. */ + } imaxdiv_t; + +#else + + /* We have to define the `uintmax_t' type using `lldiv_t'. */ + typedef struct + { + long long int quot; /* Quotient. */ + long long int rem; /* Remainder. */ + } imaxdiv_t; + +#endif + + /* Compute absolute value of N. */ + extern intmax_t imaxabs (intmax_t n); + + /* Return the `imaxdiv_t' representation of the value of NUMER over DENOM. */ + extern imaxdiv_t imaxdiv (intmax_t numer, intmax_t denom); + +#ifdef SWIG_WCHAR + /* Like `wcstol' but convert to `intmax_t'. */ + extern intmax_t wcstoimax (const wchar_t *nptr, wchar_t **endptr, int base); + + /* Like `wcstoul' but convert to `uintmax_t'. */ + extern uintmax_t wcstoumax (const wchar_t *nptr, wchar_t ** endptr, int base); +#endif + +#ifdef SWIGWORDSIZE64 + + /* Like `strtol' but convert to `intmax_t'. */ + extern intmax_t strtoimax (const char *nptr, char **endptr, int base); + + /* Like `strtoul' but convert to `uintmax_t'. */ + extern uintmax_t strtoumax (const char *nptr, char **endptr,int base); + +#ifdef SWIG_WCHAR + /* Like `wcstol' but convert to `intmax_t'. */ + extern intmax_t wcstoimax (const wchar_t *nptr, wchar_t **endptr, int base); + + /* Like `wcstoul' but convert to `uintmax_t'. */ + extern uintmax_t wcstoumax (const wchar_t *nptr, wchar_t **endptr, int base); +#endif + +#else /* SWIGWORDSIZE32 */ + + /* Like `strtol' but convert to `intmax_t'. */ + extern intmax_t strtoimax (const char *nptr, char **endptr, int base); + + /* Like `strtoul' but convert to `uintmax_t'. */ + extern uintmax_t strtoumax (const char *nptr, char **endptr, int base); + +#ifdef SWIG_WCHAR + /* Like `wcstol' but convert to `intmax_t'. */ + extern uintmax_t wcstoumax (const wchar_t *nptr, wchar_t **endptr, int base); +#endif + +#endif /* SWIGWORDSIZE64 */ + +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/java/arrays_java.i b/macx64/bin/swig/share/swig/4.0.0/java/arrays_java.i new file mode 100644 index 00000000..dd38438a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/arrays_java.i @@ -0,0 +1,392 @@ +/* ----------------------------------------------------------------------------- + * arrays_java.i + * + * These typemaps give more natural support for arrays. The typemaps are not efficient + * as there is a lot of copying of the array values whenever the array is passed to C/C++ + * from Java and vice versa. The Java array is expected to be the same size as the C array. + * An exception is thrown if they are not. + * + * Example usage: + * Wrapping: + * + * %include + * %inline %{ + * short FiddleSticks[3]; + * %} + * + * Use from Java like this: + * + * short[] fs = new short[] {10, 11, 12}; + * example.setFiddleSticks(fs); + * fs = example.getFiddleSticks(); + * ----------------------------------------------------------------------------- */ + +/* Primitive array support is a combination of SWIG macros and functions in order to reduce + * code bloat and aid maintainability. The SWIG preprocessor expands the macros into functions + * for inclusion in the generated code. */ + +/* Array support functions declarations macro */ +%define JAVA_ARRAYS_DECL(CTYPE, JNITYPE, JAVATYPE, JFUNCNAME) +%{ +static int SWIG_JavaArrayIn##JFUNCNAME (JNIEnv *jenv, JNITYPE **jarr, CTYPE **carr, JNITYPE##Array input); +static void SWIG_JavaArrayArgout##JFUNCNAME (JNIEnv *jenv, JNITYPE *jarr, CTYPE *carr, JNITYPE##Array input); +static JNITYPE##Array SWIG_JavaArrayOut##JFUNCNAME (JNIEnv *jenv, CTYPE *result, jsize sz); +%} +%enddef + +/* Array support functions macro */ +%define JAVA_ARRAYS_IMPL(CTYPE, JNITYPE, JAVATYPE, JFUNCNAME) +%{ +/* CTYPE[] support */ +static int SWIG_JavaArrayIn##JFUNCNAME (JNIEnv *jenv, JNITYPE **jarr, CTYPE **carr, JNITYPE##Array input) { + int i; + jsize sz; + if (!input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); + return 0; + } + sz = JCALL1(GetArrayLength, jenv, input); + *jarr = JCALL2(Get##JAVATYPE##ArrayElements, jenv, input, 0); + if (!*jarr) + return 0; %} +#ifdef __cplusplus +%{ *carr = new CTYPE[sz]; %} +#else +%{ *carr = (CTYPE*) malloc(sz * sizeof(CTYPE)); %} +#endif +%{ if (!*carr) { + SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); + return 0; + } + for (i=0; i + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_INTRUSIVE_PTR_TYPEMAPS_IMPLEMENTATION(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >; + +// destructor wrapper customisation +%feature("unref") TYPE "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +%typemap(in) CONST TYPE ($&1_type argp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + // plain value + argp = (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0; + if (!argp) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type"); + return $null; + } + $1 = *argp; +%} +%typemap(out, fragment="SWIG_intrusive_deleter") CONST TYPE %{ + //plain value(out) + $1_ltype* resultp = new $1_ltype(($1_ltype &)$1); + intrusive_ptr_add_ref(resultp); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(resultp, SWIG_intrusive_deleter< CONST TYPE >()); +%} + +%typemap(in) CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + // plain pointer + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input; + $1 = (TYPE *)(smartarg ? smartarg->get() : 0); +%} +%typemap(out, fragment="SWIG_intrusive_deleter,SWIG_null_deleter") CONST TYPE * %{ + //plain pointer(out) + #if ($owner) + if ($1) { + intrusive_ptr_add_ref($1); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1, SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } + #else + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + #endif +%} + +%typemap(in) CONST TYPE & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + // plain reference + $1 = ($1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + if(!$1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type reference is null"); + return $null; + } +%} +%typemap(out, fragment="SWIG_intrusive_deleter,SWIG_null_deleter") CONST TYPE & %{ + //plain reference(out) + #if ($owner) + if ($1) { + intrusive_ptr_add_ref($1); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1, SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } + #else + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + #endif +%} + +%typemap(in) TYPE *CONST& ($*1_ltype temp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + // plain pointer by reference + temp = ($*1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + $1 = &temp; +%} +%typemap(out, fragment="SWIG_intrusive_deleter,SWIG_null_deleter") TYPE *CONST& %{ + // plain pointer by reference(out) + #if ($owner) + if (*$1) { + intrusive_ptr_add_ref(*$1); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1, SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } + #else + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_0); + #endif +%} + +%typemap(in) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > ($&1_type argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * smartarg) %{ + // intrusive_ptr by value + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >**)&$input; + if (smartarg) { + $1 = SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(smartarg->get(), true); + } +%} +%typemap(out, fragment="SWIG_intrusive_deleter") SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > %{ + if ($1) { + intrusive_ptr_add_ref(result.get()); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(result.get(), SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } +%} + +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > swigSharedPtrUpcast ($&1_type smartarg) %{ + // shared_ptr by value + smartarg = *($&1_ltype*)&$input; + if (smartarg) $1 = *smartarg; +%} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > ANY_TYPE_SWIGSharedPtrUpcast %{ + *($&1_ltype*)&$result = $1 ? new $1_ltype($1) : 0; +%} + +%typemap(in) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > & ($*1_ltype tempnull, $*1_ltype temp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * smartarg) %{ + // intrusive_ptr by reference + if ( $input ) { + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >**)&$input; + temp = SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(smartarg->get(), true); + $1 = &temp; + } else { + $1 = &tempnull; + } +%} +%typemap(memberin) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > & %{ + delete &($1); + if ($self) { + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * temp = new SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(*$input); + $1 = *temp; + } +%} +%typemap(out, fragment="SWIG_intrusive_deleter") SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > & %{ + if (*$1) { + intrusive_ptr_add_ref($1->get()); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1->get(), SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } +%} + +%typemap(in) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * ($*1_ltype tempnull, $*1_ltype temp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * smartarg) %{ + // intrusive_ptr by pointer + if ( $input ) { + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >**)&$input; + temp = SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(smartarg->get(), true); + $1 = &temp; + } else { + $1 = &tempnull; + } +%} +%typemap(memberin) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * %{ + delete $1; + if ($self) $1 = new SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(*$input); +%} +%typemap(out, fragment="SWIG_intrusive_deleter") SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * %{ + if ($1 && *$1) { + intrusive_ptr_add_ref($1->get()); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1->get(), SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } + if ($owner) delete $1; +%} + +%typemap(in) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& (SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > temp, $*1_ltype tempp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * smartarg) %{ + // intrusive_ptr by pointer reference + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >**)&$input; + if ($input) { + temp = SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >(smartarg->get(), true); + } + tempp = &temp; + $1 = &tempp; +%} +%typemap(memberin) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& %{ + if ($self) $1 = *$input; +%} +%typemap(out, fragment="SWIG_intrusive_deleter") SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& %{ + if (*$1 && **$1) { + intrusive_ptr_add_ref((*$1)->get()); + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >((*$1)->get(), SWIG_intrusive_deleter< CONST TYPE >()); + } else { + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = 0; + } +%} + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%typemap (jni) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > &, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& "jlong" +%typemap (jtype) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > &, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& "long" +%typemap (jstype) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > &, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& "$typemap(jstype, TYPE)" +%typemap(javain) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > &, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *, + SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& "$typemap(jstype, TYPE).getCPtr($javainput)" + +%typemap(javaout) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > & { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > * { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE > *& { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } + + +%typemap(javaout) CONST TYPE { + return new $typemap(jstype, TYPE)($jnicall, true); + } +%typemap(javaout) CONST TYPE & { + return new $typemap(jstype, TYPE)($jnicall, true); + } +%typemap(javaout) CONST TYPE * { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) TYPE *CONST& { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } + +// Base proxy classes +%typemap(javabody) TYPE %{ + private transient long swigCPtr; + private transient boolean swigCMemOwnBase; + + PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) { + swigCMemOwnBase = cMemoryOwn; + swigCPtr = cPtr; + } + + CPTR_VISIBILITY static long getCPtr($javaclassname obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +%} + +// Derived proxy classes +%typemap(javabody_derived) TYPE %{ + private transient long swigCPtr; + private transient boolean swigCMemOwnDerived; + + PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) { + super($imclassname.$javaclazznameSWIGSmartPtrUpcast(cPtr), true); + swigCMemOwnDerived = cMemoryOwn; + swigCPtr = cPtr; + } + + CPTR_VISIBILITY static long getCPtr($javaclassname obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +%} + +%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") TYPE { + if(swigCPtr != 0 && swigCMemOwnBase) { + swigCMemOwnBase = false; + $jnicall; + } + swigCPtr = 0; + } + +%typemap(javadestruct_derived, methodname="delete", methodmodifiers="public synchronized") TYPE { + if(swigCPtr != 0 && swigCMemOwnDerived) { + swigCMemOwnDerived = false; + $jnicall; + } + swigCPtr = 0; + super.delete(); + } + +// CONST version needed ???? also for C# +%typemap(jtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast "long" +%typemap(jtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > swigSharedPtrUpcast "long" + + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; +%template() SWIG_INTRUSIVE_PTR_QNAMESPACE::intrusive_ptr< CONST TYPE >; +%enddef + + +///////////////////////////////////////////////////////////////////// + + +%include + +%define SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP_IMPLEMENTATION(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, CONST, TYPE...) + +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor mods +%feature("unref") TYPE "(void)arg1; delete smartarg1;" + + +// plain value +%typemap(in) CONST TYPE ($&1_type argp = 0) %{ + argp = (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0; + if (!argp) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type"); + return $null; + } + $1 = *argp; %} +%typemap(out) CONST TYPE +%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); %} + +// plain pointer +%typemap(in) CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input; + $1 = (TYPE *)(smartarg ? smartarg->get() : 0); %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * %{ + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; +%} + +// plain reference +%typemap(in) CONST TYPE & %{ + $1 = ($1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + if (!$1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type reference is null"); + return $null; + } %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE & +%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); %} + +// plain pointer by reference +%typemap(in) TYPE *CONST& ($*1_ltype temp = 0) +%{ temp = ($*1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + $1 = &temp; %} +%typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& +%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner); %} + +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > swigSharedPtrUpcast ($&1_type smartarg) %{ + // shared_ptr by value + smartarg = *($&1_ltype*)&$input; + if (smartarg) $1 = *smartarg; +%} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > ANY_TYPE_SWIGSharedPtrUpcast %{ + *($&1_ltype*)&$result = $1 ? new $1_ltype($1) : 0; +%} + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%typemap (jni) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "jlong" +%typemap (jtype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "long" +%typemap (jstype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "$typemap(jstype, TYPE)" +%typemap (javain) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "$typemap(jstype, TYPE).getCPtr($javainput)" +%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } + +%typemap(javaout) CONST TYPE { + return new $typemap(jstype, TYPE)($jnicall, true); + } +%typemap(javaout) CONST TYPE & { + return new $typemap(jstype, TYPE)($jnicall, true); + } +%typemap(javaout) CONST TYPE * { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) TYPE *CONST& { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } + +// Base proxy classes +%typemap(javabody) TYPE %{ + private transient long swigCPtr; + private transient boolean swigCMemOwnBase; + + PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) { + swigCMemOwnBase = cMemoryOwn; + swigCPtr = cPtr; + } + + CPTR_VISIBILITY static long getCPtr($javaclassname obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +%} + +// Derived proxy classes +%typemap(javabody_derived) TYPE %{ + private transient long swigCPtr; + private transient boolean swigCMemOwnDerived; + + PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) { + super($imclassname.$javaclazznameSWIGSmartPtrUpcast(cPtr), true); + swigCMemOwnDerived = cMemoryOwn; + swigCPtr = cPtr; + } + + CPTR_VISIBILITY static long getCPtr($javaclassname obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +%} + +%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") TYPE { + if (swigCPtr != 0) { + if (swigCMemOwnBase) { + swigCMemOwnBase = false; + $jnicall; + } + swigCPtr = 0; + } + } + +%typemap(javadestruct_derived, methodname="delete", methodmodifiers="public synchronized") TYPE { + if (swigCPtr != 0) { + if (swigCMemOwnDerived) { + swigCMemOwnDerived = false; + $jnicall; + } + swigCPtr = 0; + } + super.delete(); + } + +// CONST version needed ???? also for C# +%typemap(jtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast "long" +%typemap(jtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > swigSharedPtrUpcast "long" + +// Typecheck typemaps +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& + "" + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/boost_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/java/boost_shared_ptr.i new file mode 100644 index 00000000..325a6832 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/boost_shared_ptr.i @@ -0,0 +1,337 @@ +// Users can provide their own SWIG_SHARED_PTR_TYPEMAPS macro before including this file to change the +// visibility of the constructor and getCPtr method if desired to public if using multiple modules. +#ifndef SWIG_SHARED_PTR_TYPEMAPS +#define SWIG_SHARED_PTR_TYPEMAPS(CONST, TYPE...) SWIG_SHARED_PTR_TYPEMAPS_IMPLEMENTATION(protected, protected, CONST, TYPE) +#endif + +%include + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_SHARED_PTR_TYPEMAPS_IMPLEMENTATION(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor wrapper customisation +%feature("unref") TYPE +//"if (debug_shared) { cout << \"deleting use_count: \" << (*smartarg1).use_count() << \" [\" << (boost::get_deleter(*smartarg1) ? std::string(\"CANNOT BE DETERMINED SAFELY\") : ( (*smartarg1).get() ? (*smartarg1)->getValue() : std::string(\"NULL PTR\") )) << \"]\" << endl << flush; }\n" + "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +// plain value +%typemap(in) CONST TYPE ($&1_type argp = 0) %{ + argp = (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0; + if (!argp) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type"); + return $null; + } + $1 = *argp; %} +%typemap(out) CONST TYPE +%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); %} + +%typemap(directorin,descriptor="L$packagepath/$&javaclassname;") CONST TYPE +%{ $input = 0; + *((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (new $1_ltype((const $1_ltype &)$1)); %} + +%typemap(directorout) CONST TYPE +%{ if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type"); + return $null; + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input; + $result = *smartarg->get(); + %} + +// plain pointer +%typemap(in) CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input; + $1 = (TYPE *)(smartarg ? smartarg->get() : 0); %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * %{ + *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; +%} + +%typemap(directorin,descriptor="L$packagepath/$javaclassname;") CONST TYPE * +%{ $input = 0; + if ($1) { + *((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > ($1 SWIG_NO_NULL_DELETER_0); + } %} + +%typemap(directorout) CONST TYPE * %{ +#error "typemaps for $1_type not available" +%} + +// plain reference +%typemap(in) CONST TYPE & %{ + $1 = ($1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + if (!$1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type reference is null"); + return $null; + } %} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE & +%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); %} + +%typemap(directorin,descriptor="L$packagepath/$javaclassname;") CONST TYPE & +%{ $input = 0; + *((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (&$1 SWIG_NO_NULL_DELETER_0); %} + +%typemap(directorout) CONST TYPE & %{ +#error "typemaps for $1_type not available" +%} + +// plain pointer by reference +%typemap(in) TYPE *CONST& ($*1_ltype temp = 0) +%{ temp = (TYPE *)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0); + $1 = &temp; %} +%typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& +%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner); %} + +%typemap(directorin,descriptor="L$packagepath/$*javaclassname;") TYPE *CONST& +%{ $input = 0; + if ($1) { + *((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > ($1 SWIG_NO_NULL_DELETER_0); + } %} + +%typemap(directorout) TYPE *CONST& %{ +#error "typemaps for $1_type not available" +%} + +// shared_ptr by value +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > ($&1_type argp) +%{ argp = *($&1_ltype*)&$input; + if (argp) $1 = *argp; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ *($&1_ltype*)&$result = $1 ? new $1_ltype($1) : 0; %} + +%typemap(directorin,descriptor="L$packagepath/$typemap(jstype, TYPE);") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ $input = 0; + if ($1) { + *((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1); + } %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > +%{ if ($input) { + $&1_type smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input; + $result = *smartarg; + } %} + +// shared_ptr by reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & ($*1_ltype tempnull) +%{ $1 = $input ? *($&1_ltype)&$input : &tempnull; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & +%{ *($&1_ltype)&$result = *$1 ? new $*1_ltype(*$1) : 0; %} + +%typemap(directorin,descriptor="L$packagepath/$typemap(jstype, TYPE);") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & +%{ $input = 0; + if ($1) { + *((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1); + } %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "typemaps for $1_type not available" +%} + +// shared_ptr by pointer +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * ($*1_ltype tempnull) +%{ $1 = $input ? *($&1_ltype)&$input : &tempnull; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * +%{ *($&1_ltype)&$result = ($1 && *$1) ? new $*1_ltype(*$1) : 0; + if ($owner) delete $1; %} + +%typemap(directorin,descriptor="L$packagepath/$typemap(jstype, TYPE);") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * +%{ $input = 0; + if ($1 && *$1) { + *((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1); + } %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "typemaps for $1_type not available" +%} + +// shared_ptr by pointer reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempnull, $*1_ltype temp = 0) +%{ temp = $input ? *($1_ltype)&$input : &tempnull; + $1 = &temp; %} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& +%{ *($1_ltype)&$result = (*$1 && **$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(**$1) : 0; %} + +%typemap(directorin,descriptor="L$packagepath/$typemap(jstype, TYPE);") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& +%{ $input = 0; + if ($1 && *$1) { + *((SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1); + } %} + +%typemap(directorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "typemaps for $1_type not available" +%} + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%typemap (jni) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "jlong" +%typemap (jtype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "long" +%typemap (jstype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "$typemap(jstype, TYPE)" + +%typemap(javain) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "$typemap(jstype, TYPE).getCPtr($javainput)" + +%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } + + +%typemap(javaout) CONST TYPE { + return new $typemap(jstype, TYPE)($jnicall, true); + } +%typemap(javaout) CONST TYPE & { + return new $typemap(jstype, TYPE)($jnicall, true); + } +%typemap(javaout) CONST TYPE * { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%typemap(javaout) TYPE *CONST& { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } + +%typemap(javadirectorout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > "$typemap(jstype, TYPE).getCPtr($javacall)" + +%typemap(javadirectorin) CONST TYPE, + CONST TYPE *, + CONST TYPE &, + TYPE *CONST& "($jniinput == 0) ? null : new $typemap(jstype, TYPE)($jniinput, true)" + +%typemap(javadirectorin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "($jniinput == 0) ? null : new $typemap(jstype, TYPE)($jniinput, true)" + +// Base proxy classes +%typemap(javabody) TYPE %{ + private transient long swigCPtr; + private transient boolean swigCMemOwn; + + PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + CPTR_VISIBILITY static long getCPtr($javaclassname obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + CPTR_VISIBILITY void swigSetCMemOwn(boolean own) { + swigCMemOwn = own; + } +%} + +// Derived proxy classes +%typemap(javabody_derived) TYPE %{ + private transient long swigCPtr; + private transient boolean swigCMemOwnDerived; + + PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) { + super($imclassname.$javaclazznameSWIGSmartPtrUpcast(cPtr), true); + swigCMemOwnDerived = cMemoryOwn; + swigCPtr = cPtr; + } + + CPTR_VISIBILITY static long getCPtr($javaclassname obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + CPTR_VISIBILITY void swigSetCMemOwn(boolean own) { + swigCMemOwnDerived = own; + super.swigSetCMemOwn(own); + } +%} + +%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") TYPE { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + $jnicall; + } + swigCPtr = 0; + } + } + +%typemap(javadestruct_derived, methodname="delete", methodmodifiers="public synchronized") TYPE { + if (swigCPtr != 0) { + if (swigCMemOwnDerived) { + swigCMemOwnDerived = false; + $jnicall; + } + swigCPtr = 0; + } + super.delete(); + } + +%typemap(directordisconnect, methodname="swigDirectorDisconnect") TYPE %{ + protected void $methodname() { + swigSetCMemOwn(false); + $jnicall; + } +%} + +%typemap(directorowner_release, methodname="swigReleaseOwnership") TYPE %{ + public void $methodname() { + swigSetCMemOwn(false); + $jnicall; + } +%} + +%typemap(directorowner_take, methodname="swigTakeOwnership") TYPE %{ + public void $methodname() { + swigSetCMemOwn(true); + $jnicall; + } +%} + +// Typecheck typemaps +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& + "" + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/director.swg b/macx64/bin/swig/share/swig/4.0.0/java/director.swg new file mode 100644 index 00000000..d3bd162e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/director.swg @@ -0,0 +1,496 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that Java proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#if defined(DEBUG_DIRECTOR_OWNED) || defined(DEBUG_DIRECTOR_EXCEPTION) || defined(DEBUG_DIRECTOR_THREAD_NAME) +#include +#endif + +#include + +#if defined(SWIG_JAVA_USE_THREAD_NAME) + +#if !defined(SWIG_JAVA_GET_THREAD_NAME) +namespace Swig { + SWIGINTERN int GetThreadName(char *name, size_t len); +} + +#if defined(__linux__) + +#include +SWIGINTERN int Swig::GetThreadName(char *name, size_t len) { + (void)len; +#if defined(PR_GET_NAME) + return prctl(PR_GET_NAME, (unsigned long)name, 0, 0, 0); +#else + (void)name; + return 1; +#endif +} + +#elif defined(__unix__) || defined(__APPLE__) + +#include +SWIGINTERN int Swig::GetThreadName(char *name, size_t len) { + return pthread_getname_np(pthread_self(), name, len); +} + +#else + +SWIGINTERN int Swig::GetThreadName(char *name, size_t len) { + (void)len; + (void)name; + return 1; +} +#endif + +#endif + +#endif + +namespace Swig { + + /* Java object wrapper */ + class JObjectWrapper { + public: + JObjectWrapper() : jthis_(NULL), weak_global_(true) { + } + + ~JObjectWrapper() { + jthis_ = NULL; + weak_global_ = true; + } + + bool set(JNIEnv *jenv, jobject jobj, bool mem_own, bool weak_global) { + if (!jthis_) { + weak_global_ = weak_global || !mem_own; // hold as weak global if explicitly requested or not owned + if (jobj) + jthis_ = weak_global_ ? jenv->NewWeakGlobalRef(jobj) : jenv->NewGlobalRef(jobj); +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "JObjectWrapper::set(" << jobj << ", " << (weak_global ? "weak_global" : "global_ref") << ") -> " << jthis_ << std::endl; +#endif + return true; + } else { +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "JObjectWrapper::set(" << jobj << ", " << (weak_global ? "weak_global" : "global_ref") << ") -> already set" << std::endl; +#endif + return false; + } + } + + jobject get(JNIEnv *jenv) const { +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "JObjectWrapper::get("; + if (jthis_) + std::cout << jthis_; + else + std::cout << "null"; + std::cout << ") -> return new local ref" << std::endl; +#endif + return (jthis_ ? jenv->NewLocalRef(jthis_) : jthis_); + } + + void release(JNIEnv *jenv) { +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "JObjectWrapper::release(" << jthis_ << "): " << (weak_global_ ? "weak global ref" : "global ref") << std::endl; +#endif + if (jthis_) { + if (weak_global_) { + if (jenv->IsSameObject(jthis_, NULL) == JNI_FALSE) + jenv->DeleteWeakGlobalRef((jweak)jthis_); + } else + jenv->DeleteGlobalRef(jthis_); + } + + jthis_ = NULL; + weak_global_ = true; + } + + /* Only call peek if you know what you are doing wrt to weak/global references */ + jobject peek() { + return jthis_; + } + + /* Java proxy releases ownership of C++ object, C++ object is now + responsible for destruction (creates NewGlobalRef to pin Java proxy) */ + void java_change_ownership(JNIEnv *jenv, jobject jself, bool take_or_release) { + if (take_or_release) { /* Java takes ownership of C++ object's lifetime. */ + if (!weak_global_) { + jenv->DeleteGlobalRef(jthis_); + jthis_ = jenv->NewWeakGlobalRef(jself); + weak_global_ = true; + } + } else { + /* Java releases ownership of C++ object's lifetime */ + if (weak_global_) { + jenv->DeleteWeakGlobalRef((jweak)jthis_); + jthis_ = jenv->NewGlobalRef(jself); + weak_global_ = false; + } + } + } + + private: + /* pointer to Java object */ + jobject jthis_; + /* Local or global reference flag */ + bool weak_global_; + }; + + /* Local JNI reference deleter */ + class LocalRefGuard { + JNIEnv *jenv_; + jobject jobj_; + + // non-copyable + LocalRefGuard(const LocalRefGuard &); + LocalRefGuard &operator=(const LocalRefGuard &); + public: + LocalRefGuard(JNIEnv *jenv, jobject jobj): jenv_(jenv), jobj_(jobj) {} + ~LocalRefGuard() { + if (jobj_) + jenv_->DeleteLocalRef(jobj_); + } + }; + + /* director base class */ + class Director { + /* pointer to Java virtual machine */ + JavaVM *swig_jvm_; + + protected: +#if defined (_MSC_VER) && (_MSC_VER<1300) + class JNIEnvWrapper; + friend class JNIEnvWrapper; +#endif + /* Utility class for managing the JNI environment */ + class JNIEnvWrapper { + const Director *director_; + JNIEnv *jenv_; + int env_status; + public: + JNIEnvWrapper(const Director *director) : director_(director), jenv_(0), env_status(0) { +#if defined(__ANDROID__) + JNIEnv **jenv = &jenv_; +#else + void **jenv = (void **)&jenv_; +#endif + env_status = director_->swig_jvm_->GetEnv((void **)&jenv_, JNI_VERSION_1_2); + JavaVMAttachArgs args; + args.version = JNI_VERSION_1_2; + args.group = NULL; + args.name = NULL; +#if defined(SWIG_JAVA_USE_THREAD_NAME) + char thread_name[64]; // MAX_TASK_COMM_LEN=16 is hard-coded in the Linux kernel and MacOS has MAXTHREADNAMESIZE=64. + if (Swig::GetThreadName(thread_name, sizeof(thread_name)) == 0) { + args.name = thread_name; +#if defined(DEBUG_DIRECTOR_THREAD_NAME) + std::cout << "JNIEnvWrapper: thread name: " << thread_name << std::endl; + } else { + std::cout << "JNIEnvWrapper: Couldn't set Java thread name" << std::endl; +#endif + } +#endif +#if defined(SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON) + // Attach a daemon thread to the JVM. Useful when the JVM should not wait for + // the thread to exit upon shutdown. Only for jdk-1.4 and later. + director_->swig_jvm_->AttachCurrentThreadAsDaemon(jenv, &args); +#else + director_->swig_jvm_->AttachCurrentThread(jenv, &args); +#endif + } + ~JNIEnvWrapper() { +#if !defined(SWIG_JAVA_NO_DETACH_CURRENT_THREAD) + // Some JVMs, eg jdk-1.4.2 and lower on Solaris have a bug and crash with the DetachCurrentThread call. + // However, without this call, the JVM hangs on exit when the thread was not created by the JVM and creates a memory leak. + if (env_status == JNI_EDETACHED) + director_->swig_jvm_->DetachCurrentThread(); +#endif + } + JNIEnv *getJNIEnv() const { + return jenv_; + } + }; + + /* Java object wrapper */ + JObjectWrapper swig_self_; + + /* Disconnect director from Java object */ + void swig_disconnect_director_self(const char *disconn_method) { + JNIEnvWrapper jnienv(this) ; + JNIEnv *jenv = jnienv.getJNIEnv() ; + jobject jobj = swig_self_.get(jenv); + LocalRefGuard ref_deleter(jenv, jobj); +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "Swig::Director::disconnect_director_self(" << jobj << ")" << std::endl; +#endif + if (jobj && jenv->IsSameObject(jobj, NULL) == JNI_FALSE) { + jmethodID disconn_meth = jenv->GetMethodID(jenv->GetObjectClass(jobj), disconn_method, "()V"); + if (disconn_meth) { +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "Swig::Director::disconnect_director_self upcall to " << disconn_method << std::endl; +#endif + jenv->CallVoidMethod(jobj, disconn_meth); + } + } + } + + public: + Director(JNIEnv *jenv) : swig_jvm_((JavaVM *) NULL), swig_self_() { + /* Acquire the Java VM pointer */ + jenv->GetJavaVM(&swig_jvm_); + } + + virtual ~Director() { + JNIEnvWrapper jnienv(this) ; + JNIEnv *jenv = jnienv.getJNIEnv() ; + swig_self_.release(jenv); + } + + bool swig_set_self(JNIEnv *jenv, jobject jself, bool mem_own, bool weak_global) { + return swig_self_.set(jenv, jself, mem_own, weak_global); + } + + jobject swig_get_self(JNIEnv *jenv) const { + return swig_self_.get(jenv); + } + + // Change C++ object's ownership, relative to Java + void swig_java_change_ownership(JNIEnv *jenv, jobject jself, bool take_or_release) { + swig_self_.java_change_ownership(jenv, jself, take_or_release); + } + }; + + // Zero initialized bool array + template class BoolArray { + bool array_[N]; + public: + BoolArray() { + memset(array_, 0, sizeof(array_)); + } + bool& operator[](size_t n) { + return array_[n]; + } + bool operator[](size_t n) const { + return array_[n]; + } + }; + + // Utility classes and functions for exception handling. + + // Simple holder for a Java string during exception handling, providing access to a c-style string + class JavaString { + public: + JavaString(JNIEnv *jenv, jstring jstr) : jenv_(jenv), jstr_(jstr), cstr_(0) { + if (jenv_ && jstr_) + cstr_ = (const char *) jenv_->GetStringUTFChars(jstr_, NULL); + } + + ~JavaString() { + if (jenv_ && jstr_ && cstr_) + jenv_->ReleaseStringUTFChars(jstr_, cstr_); + } + + const char *c_str(const char *null_string = "null JavaString") const { + return cstr_ ? cstr_ : null_string; + } + + private: + // non-copyable + JavaString(const JavaString &); + JavaString &operator=(const JavaString &); + + JNIEnv *jenv_; + jstring jstr_; + const char *cstr_; + }; + + // Helper class to extract the exception message from a Java throwable + class JavaExceptionMessage { + public: + JavaExceptionMessage(JNIEnv *jenv, jthrowable throwable) : message_(jenv, exceptionMessageFromThrowable(jenv, 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 { + return message_.c_str(null_string); + } + + private: + // non-copyable + JavaExceptionMessage(const JavaExceptionMessage &); + JavaExceptionMessage &operator=(const JavaExceptionMessage &); + + // Get exception message by calling Java method Throwable.getMessage() + static jstring exceptionMessageFromThrowable(JNIEnv *jenv, jthrowable throwable) { + jstring jmsg = NULL; + if (jenv && throwable) { + jenv->ExceptionClear(); // Cannot invoke methods with any pending exceptions + jclass throwclz = jenv->GetObjectClass(throwable); + if (throwclz) { + // All Throwable classes have a getMessage() method, so call it to extract the exception message + jmethodID getMessageMethodID = jenv->GetMethodID(throwclz, "getMessage", "()Ljava/lang/String;"); + if (getMessageMethodID) + jmsg = (jstring)jenv->CallObjectMethod(throwable, getMessageMethodID); + } + if (jmsg == NULL && jenv->ExceptionCheck()) + jenv->ExceptionClear(); + } + return jmsg; + } + + JavaString message_; + }; + + // 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) : jenv_(jenv), throwable_(throwable), classname_(0), msg_(0) { + + // Call Java method Object.getClass().getName() to obtain the throwable's class name (delimited by '/') + if (jenv && throwable) { + jenv->ExceptionClear(); // Cannot invoke methods with any pending exceptions + jclass throwclz = jenv->GetObjectClass(throwable); + if (throwclz) { + jclass clzclz = jenv->GetObjectClass(throwclz); + if (clzclz) { + jmethodID getNameMethodID = jenv->GetMethodID(clzclz, "getName", "()Ljava/lang/String;"); + if (getNameMethodID) { + jstring jstr_classname = (jstring)(jenv->CallObjectMethod(throwclz, getNameMethodID)); + // Copy strings, since there is no guarantee that jenv will be active when handled + if (jstr_classname) { + JavaString jsclassname(jenv, jstr_classname); + const char *classname = jsclassname.c_str(0); + if (classname) + classname_ = copypath(classname); + } + } + } + } + } + + JavaExceptionMessage exceptionmsg(jenv, throwable); + msg_ = copystr(exceptionmsg.message(0)); + } + + // More general constructor for handling as a java.lang.RuntimeException + DirectorException(const char *msg) : jenv_(0), throwable_(0), classname_(0), msg_(msg ? copystr(msg) : 0) { + } + + ~DirectorException() throw() { + delete[] classname_; + delete[] msg_; + } + + const char *what() const throw() { + return msg_ ? msg_ : "Unspecified DirectorException message"; + } + + // 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 { + if (jenv) { + if (jenv == jenv_ && throwable_) { + // Throw original exception if not already pending + jthrowable throwable = jenv->ExceptionOccurred(); + if (throwable && jenv->IsSameObject(throwable, throwable_) == JNI_FALSE) { + jenv->ExceptionClear(); + throwable = 0; + } + if (!throwable) + jenv->Throw(throwable_); + } else { + // Try and reconstruct original exception, but original stacktrace is not reconstructed + jenv->ExceptionClear(); + + jmethodID ctorMethodID = 0; + jclass throwableclass = 0; + if (classname_) { + throwableclass = jenv->FindClass(classname_); + if (throwableclass) + ctorMethodID = jenv->GetMethodID(throwableclass, "", "(Ljava/lang/String;)V"); + } + + if (ctorMethodID) { + jenv->ThrowNew(throwableclass, what()); + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, what()); + } + } + } + } + + // Deprecated - use throwException + void raiseJavaException(JNIEnv *jenv) const { + throwException(jenv); + } + + // Create and throw the DirectorException + static void raise(JNIEnv *jenv, jthrowable throwable) { + throw DirectorException(jenv, throwable); + } + + private: + static char *copypath(const char *srcmsg) { + char *target = copystr(srcmsg); + for (char *c=target; *c; ++c) { + if ('.' == *c) + *c = '/'; + } + return target; + } + + static char *copystr(const char *srcmsg) { + char *target = 0; + if (srcmsg) { + size_t msglen = strlen(srcmsg) + 1; + target = new char[msglen]; + strncpy(target, srcmsg, msglen); + } + return target; + } + + JNIEnv *jenv_; + jthrowable throwable_; + const char *classname_; + const char *msg_; + }; + + // Helper method to determine if a Java throwable matches a particular Java class type + // Note side effect of clearing any pending exceptions + SWIGINTERN bool ExceptionMatches(JNIEnv *jenv, jthrowable throwable, const char *classname) { + bool matches = false; + + if (throwable && jenv && classname) { + // Exceptions need to be cleared for correct behavior. + // The caller of ExceptionMatches should restore pending exceptions if desired - + // the caller already has the throwable. + jenv->ExceptionClear(); + + jclass clz = jenv->FindClass(classname); + if (clz) { + jclass classclz = jenv->GetObjectClass(clz); + jmethodID isInstanceMethodID = jenv->GetMethodID(classclz, "isInstance", "(Ljava/lang/Object;)Z"); + if (isInstanceMethodID) { + matches = jenv->CallBooleanMethod(clz, isInstanceMethodID, throwable) != 0; + } + } + +#if defined(DEBUG_DIRECTOR_EXCEPTION) + if (jenv->ExceptionCheck()) { + // Typically occurs when an invalid classname argument is passed resulting in a ClassNotFoundException + JavaExceptionMessage exc(jenv, jenv->ExceptionOccurred()); + std::cout << "Error: ExceptionMatches: class '" << classname << "' : " << exc.message() << std::endl; + } +#endif + } + return matches; + } +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/enums.swg b/macx64/bin/swig/share/swig/4.0.0/java/enums.swg new file mode 100644 index 00000000..81fe5787 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/enums.swg @@ -0,0 +1,116 @@ +/* ----------------------------------------------------------------------------- + * enums.swg + * + * Include this file in order for C/C++ enums to be wrapped by proper Java enums. + * Note that the JNI layer handles the enum as an int. The Java enum has extra + * code generated to store the C++ int value. This is required for C++ enums that + * specify a value for the enum item, as native Java enums do not support this. + * ----------------------------------------------------------------------------- */ + +// const enum SWIGTYPE & typemaps +%typemap(jni) const enum SWIGTYPE & "jint" +%typemap(jtype) const enum SWIGTYPE & "int" +%typemap(jstype) const enum SWIGTYPE & "$*javaclassname" + +%typemap(in) const enum SWIGTYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} +%typemap(out) const enum SWIGTYPE & %{ $result = (jint)*$1; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & +%{ static $*1_ltype temp = ($*1_ltype)$input; + $result = &temp; %} +%typemap(directorin, descriptor="L$packagepath/$*javaclassname;") const enum SWIGTYPE & "$input = (jint)$1;" +%typemap(javadirectorin) const enum SWIGTYPE & "$*javaclassname.swigToEnum($jniinput)" +%typemap(javadirectorout) const enum SWIGTYPE & "($javacall).swigValue()" + +%typecheck(SWIG_TYPECHECK_POINTER) const enum SWIGTYPE & "" + +%typemap(throws) const enum SWIGTYPE & +%{ (void)$1; + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); %} + +%typemap(javain) const enum SWIGTYPE & "$javainput.swigValue()" +%typemap(javaout) const enum SWIGTYPE & { + return $*javaclassname.swigToEnum($jnicall); + } + + +// enum SWIGTYPE typemaps +%typemap(jni) enum SWIGTYPE "jint" +%typemap(jtype) enum SWIGTYPE "int" +%typemap(jstype) enum SWIGTYPE "$javaclassname" + +%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %} +%typemap(out) enum SWIGTYPE %{ $result = (jint)$1; %} + +%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} +%typemap(directorin, descriptor="L$packagepath/$javaclassname;") enum SWIGTYPE "$input = (jint) $1;" +%typemap(javadirectorin) enum SWIGTYPE "$javaclassname.swigToEnum($jniinput)" +%typemap(javadirectorout) enum SWIGTYPE "($javacall).swigValue()" + +%typecheck(SWIG_TYPECHECK_POINTER) enum SWIGTYPE "" + +%typemap(throws) enum SWIGTYPE +%{ (void)$1; + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); %} + +%typemap(javain) enum SWIGTYPE "$javainput.swigValue()" +%typemap(javaout) enum SWIGTYPE { + return $javaclassname.swigToEnum($jnicall); + } + +%typemap(javaclassmodifiers) enum SWIGTYPE "public enum" +%typemap(javabase) enum SWIGTYPE "" +%typemap(javacode) enum SWIGTYPE "" +%typemap(javaimports) enum SWIGTYPE "" +%typemap(javainterfaces) enum SWIGTYPE "" + +/* + * SwigNext static inner class used instead of a static int as static fields cannot be accessed from enum initialisers. + * The swigToEnum method is used to find the Java enum from a C++ enum integer value. The default one here takes + * advantage of the fact that most enums do not have initial values specified, so the lookup is fast. If initial + * values are specified then a lengthy linear search through all possible enums might occur. Specific typemaps could be + * written to possibly optimise this lookup by taking advantage of characteristics peculiar to the targeted enum. + */ +%typemap(javabody) enum SWIGTYPE %{ + public final int swigValue() { + return swigValue; + } + + public static $javaclassname swigToEnum(int swigValue) { + $javaclassname[] swigValues = $javaclassname.class.getEnumConstants(); + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for ($javaclassname swigEnum : swigValues) + if (swigEnum.swigValue == swigValue) + return swigEnum; + throw new IllegalArgumentException("No enum " + $javaclassname.class + " with value " + swigValue); + } + + @SuppressWarnings("unused") + private $javaclassname() { + this.swigValue = SwigNext.next++; + } + + @SuppressWarnings("unused") + private $javaclassname(int swigValue) { + this.swigValue = swigValue; + SwigNext.next = swigValue+1; + } + + @SuppressWarnings("unused") + private $javaclassname($javaclassname swigEnum) { + this.swigValue = swigEnum.swigValue; + SwigNext.next = this.swigValue+1; + } + + private final int swigValue; + + private static class SwigNext { + private static int next = 0; + } +%} + +%javaenum(proper); + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/enumsimple.swg b/macx64/bin/swig/share/swig/4.0.0/java/enumsimple.swg new file mode 100644 index 00000000..c270149b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/enumsimple.swg @@ -0,0 +1,71 @@ +/* ----------------------------------------------------------------------------- + * enumsimple.swg + * + * This file provides backwards compatible enum wrapping. SWIG versions 1.3.21 + * and earlier wrapped global enums with constant integers in the module class + * or Constants interface. Enums declared within a C++ class were wrapped by + * constant integers in the Java proxy class. + * ----------------------------------------------------------------------------- */ + +// const enum SWIGTYPE & typemaps +%typemap(jni) const enum SWIGTYPE & "jint" +%typemap(jtype) const enum SWIGTYPE & "int" +%typemap(jstype) const enum SWIGTYPE & "int" + +%typemap(in) const enum SWIGTYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} +%typemap(out) const enum SWIGTYPE & %{ $result = (jint)*$1; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & +%{ static $*1_ltype temp = ($*1_ltype)$input; + $result = &temp; %} +%typemap(directorin, descriptor="I") const enum SWIGTYPE & "$input = (jint)$1;" +%typemap(javadirectorin) const enum SWIGTYPE & "$jniinput" +%typemap(javadirectorout) const enum SWIGTYPE & "$javacall" + +%typecheck(SWIG_TYPECHECK_INT32) const enum SWIGTYPE & "" + +%typemap(throws) const enum SWIGTYPE & +%{ (void)$1; + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); %} + +%typemap(javain) const enum SWIGTYPE & "$javainput" +%typemap(javaout) const enum SWIGTYPE & { + return $jnicall; + } + + +// enum SWIGTYPE typemaps +%typemap(jni) enum SWIGTYPE "jint" +%typemap(jtype) enum SWIGTYPE "int" +%typemap(jstype) enum SWIGTYPE "int" + +%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %} +%typemap(out) enum SWIGTYPE %{ $result = (jint)$1; %} + +%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} +%typemap(directorin, descriptor="I") enum SWIGTYPE "$input = (jint) $1;" +%typemap(javadirectorin) enum SWIGTYPE "$jniinput" +%typemap(javadirectorout) enum SWIGTYPE "$javacall" + +%typecheck(SWIG_TYPECHECK_INT32) enum SWIGTYPE "" + +%typemap(throws) enum SWIGTYPE +%{ (void)$1; + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); %} + +%typemap(javain) enum SWIGTYPE "$javainput" +%typemap(javaout) enum SWIGTYPE { + return $jnicall; + } + +%typemap(javaclassmodifiers) enum SWIGTYPE "" +%typemap(javabase) enum SWIGTYPE "" +%typemap(javacode) enum SWIGTYPE "" +%typemap(javaimports) enum SWIGTYPE "" +%typemap(javainterfaces) enum SWIGTYPE "" +%typemap(javabody) enum SWIGTYPE "" + +%javaenum(simple); + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/enumtypesafe.swg b/macx64/bin/swig/share/swig/4.0.0/java/enumtypesafe.swg new file mode 100644 index 00000000..c2012f56 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/enumtypesafe.swg @@ -0,0 +1,117 @@ +/* ----------------------------------------------------------------------------- + * enumtypesafe.swg + * + * Include this file in order for C/C++ enums to be wrapped by the so called + * typesafe enum pattern. Each enum has an equivalent Java class named after the + * enum and each enum item is a static instance of this class. + * ----------------------------------------------------------------------------- */ + +// const enum SWIGTYPE & typemaps +%typemap(jni) const enum SWIGTYPE & "jint" +%typemap(jtype) const enum SWIGTYPE & "int" +%typemap(jstype) const enum SWIGTYPE & "$*javaclassname" + +%typemap(in) const enum SWIGTYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} +%typemap(out) const enum SWIGTYPE & %{ $result = (jint)*$1; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & +%{ static $*1_ltype temp = ($*1_ltype)$input; + $result = &temp; %} +%typemap(directorin, descriptor="L$packagepath/$*javaclassname;") const enum SWIGTYPE & "$input = (jint)$1;" +%typemap(javadirectorin) const enum SWIGTYPE & "$*javaclassname.swigToEnum($jniinput)" +%typemap(javadirectorout) const enum SWIGTYPE & "($javacall).swigValue()" + +%typecheck(SWIG_TYPECHECK_POINTER) const enum SWIGTYPE & "" + +%typemap(throws) const enum SWIGTYPE & +%{ (void)$1; + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); %} + +%typemap(javain) const enum SWIGTYPE & "$javainput.swigValue()" +%typemap(javaout) const enum SWIGTYPE & { + return $*javaclassname.swigToEnum($jnicall); + } + +// enum SWIGTYPE typemaps +%typemap(jni) enum SWIGTYPE "jint" +%typemap(jtype) enum SWIGTYPE "int" +%typemap(jstype) enum SWIGTYPE "$javaclassname" + +%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %} +%typemap(out) enum SWIGTYPE %{ $result = (jint)$1; %} + +%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} +%typemap(directorin, descriptor="L$packagepath/$javaclassname;") enum SWIGTYPE "$input = (jint) $1;" +%typemap(javadirectorin) enum SWIGTYPE "$javaclassname.swigToEnum($jniinput)" +%typemap(javadirectorout) enum SWIGTYPE "($javacall).swigValue()" + +%typecheck(SWIG_TYPECHECK_POINTER) enum SWIGTYPE "" + +%typemap(throws) enum SWIGTYPE +%{ (void)$1; + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); %} + +%typemap(javain) enum SWIGTYPE "$javainput.swigValue()" +%typemap(javaout) enum SWIGTYPE { + return $javaclassname.swigToEnum($jnicall); + } + +// '$static' will be replaced with either 'static' or nothing depending on whether the enum is an inner Java class or not +%typemap(javaclassmodifiers) enum SWIGTYPE "public final $static class" +%typemap(javabase) enum SWIGTYPE "" +%typemap(javacode) enum SWIGTYPE "" +%typemap(javaimports) enum SWIGTYPE "" +%typemap(javainterfaces) enum SWIGTYPE "" + +/* + * The swigToEnum method is used to find the Java enum from a C++ enum integer value. The default one here takes + * advantage of the fact that most enums do not have initial values specified, so the lookup is fast. If initial + * values are specified then a lengthy linear search through all possible enums might occur. Specific typemaps could be + * written to possibly optimise this lookup by taking advantage of characteristics peculiar to the targeted enum. + * The special variable, $enumvalues, is replaced with a comma separated list of all the enum values. + */ +%typemap(javabody) enum SWIGTYPE %{ + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + + public static $javaclassname swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + $javaclassname.class + " with value " + swigValue); + } + + private $javaclassname(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private $javaclassname(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue+1; + } + + private $javaclassname(String swigName, $javaclassname swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue+1; + } + + private static $javaclassname[] swigValues = { $enumvalues }; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; +%} + +%javaenum(typesafe); + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/enumtypeunsafe.swg b/macx64/bin/swig/share/swig/4.0.0/java/enumtypeunsafe.swg new file mode 100644 index 00000000..31fb8a79 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/enumtypeunsafe.swg @@ -0,0 +1,72 @@ +/* ----------------------------------------------------------------------------- + * enumtypeunsafe.swg + * + * Include this file in order for C/C++ enums to be wrapped by integers values. + * Each enum has an equivalent class named after the enum and the enum items are + * wrapped by constant integers within this class. The enum items are not + * typesafe as they are all integers. + * ----------------------------------------------------------------------------- */ + +// const enum SWIGTYPE & typemaps +%typemap(jni) const enum SWIGTYPE & "jint" +%typemap(jtype) const enum SWIGTYPE & "int" +%typemap(jstype) const enum SWIGTYPE & "int" + +%typemap(in) const enum SWIGTYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} +%typemap(out) const enum SWIGTYPE & %{ $result = (jint)*$1; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & +%{ static $*1_ltype temp = ($*1_ltype)$input; + $result = &temp; %} +%typemap(directorin, descriptor="I") const enum SWIGTYPE & "$input = (jint)$1;" +%typemap(javadirectorin) const enum SWIGTYPE & "$jniinput" +%typemap(javadirectorout) const enum SWIGTYPE & "$javacall" + +%typecheck(SWIG_TYPECHECK_INT32) const enum SWIGTYPE & "" + +%typemap(throws) const enum SWIGTYPE & +%{ (void)$1; + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); %} + +%typemap(javain) const enum SWIGTYPE & "$javainput" +%typemap(javaout) const enum SWIGTYPE & { + return $jnicall; + } + + +// enum SWIGTYPE typemaps +%typemap(jni) enum SWIGTYPE "jint" +%typemap(jtype) enum SWIGTYPE "int" +%typemap(jstype) enum SWIGTYPE "int" + +%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %} +%typemap(out) enum SWIGTYPE %{ $result = (jint)$1; %} + +%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} +%typemap(directorin, descriptor="I") enum SWIGTYPE "$input = (jint) $1;" +%typemap(javadirectorin) enum SWIGTYPE "$jniinput" +%typemap(javadirectorout) enum SWIGTYPE "$javacall" + +%typecheck(SWIG_TYPECHECK_INT32) enum SWIGTYPE "" + +%typemap(throws) enum SWIGTYPE +%{ (void)$1; + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); %} + +%typemap(javain) enum SWIGTYPE "$javainput" +%typemap(javaout) enum SWIGTYPE { + return $jnicall; + } + +// '$static' will be replaced with either 'static' or nothing depending on whether the enum is an inner Java class or not +%typemap(javaclassmodifiers) enum SWIGTYPE "public final $static class" +%typemap(javabase) enum SWIGTYPE "" +%typemap(javacode) enum SWIGTYPE "" +%typemap(javaimports) enum SWIGTYPE "" +%typemap(javainterfaces) enum SWIGTYPE "" +%typemap(javabody) enum SWIGTYPE "" + +%javaenum(typeunsafe); + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/java.swg b/macx64/bin/swig/share/swig/4.0.0/java/java.swg new file mode 100644 index 00000000..e9309331 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/java.swg @@ -0,0 +1,1427 @@ +/* ----------------------------------------------------------------------------- + * java.swg + * + * Java typemaps + * ----------------------------------------------------------------------------- */ + +%include + +/* The jni, jtype and jstype typemaps work together and so there should be one of each. + * The jni typemap contains the JNI type used in the JNI (C/C++) code. + * The jtype typemap contains the Java type used in the JNI intermediary class. + * The jstype typemap contains the Java type used in the Java proxy classes, type wrapper classes and module class. */ + +/* Fragments */ +%fragment("SWIG_PackData", "header") { +/* Pack binary data into a string */ +SWIGINTERN char * SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + const unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} +} + +%fragment("SWIG_UnPackData", "header") { +/* Unpack binary data from a string */ +SWIGINTERN const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + char d = *(c++); + unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = ((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = ((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} +} + +%fragment("SWIG_JavaIntFromSize_t", "header") { +/* Check for overflow converting to Java int (always signed 32-bit) from (unsigned variable-bit) size_t */ +SWIGINTERN jint SWIG_JavaIntFromSize_t(size_t size) { + static const jint JINT_MAX = 0x7FFFFFFF; + return (size > (size_t)JINT_MAX) ? -1 : (jint)size; +} +} + +/* Primitive types */ +%typemap(jni) bool, const bool & "jboolean" +%typemap(jni) char, const char & "jchar" +%typemap(jni) signed char, const signed char & "jbyte" +%typemap(jni) unsigned char, const unsigned char & "jshort" +%typemap(jni) short, const short & "jshort" +%typemap(jni) unsigned short, const unsigned short & "jint" +%typemap(jni) int, const int & "jint" +%typemap(jni) unsigned int, const unsigned int & "jlong" +%typemap(jni) long, const long & "jint" +%typemap(jni) unsigned long, const unsigned long & "jlong" +%typemap(jni) long long, const long long & "jlong" +%typemap(jni) unsigned long long, const unsigned long long & "jobject" +%typemap(jni) float, const float & "jfloat" +%typemap(jni) double, const double & "jdouble" +%typemap(jni) void "void" + +%typemap(jtype) bool, const bool & "boolean" +%typemap(jtype) char, const char & "char" +%typemap(jtype) signed char, const signed char & "byte" +%typemap(jtype) unsigned char, const unsigned char & "short" +%typemap(jtype) short, const short & "short" +%typemap(jtype) unsigned short, const unsigned short & "int" +%typemap(jtype) int, const int & "int" +%typemap(jtype) unsigned int, const unsigned int & "long" +%typemap(jtype) long, const long & "int" +%typemap(jtype) unsigned long, const unsigned long & "long" +%typemap(jtype) long long, const long long & "long" +%typemap(jtype) unsigned long long, const unsigned long long & "java.math.BigInteger" +%typemap(jtype) float, const float & "float" +%typemap(jtype) double, const double & "double" +%typemap(jtype) void "void" + +%typemap(jstype) bool, const bool & "boolean" +%typemap(jstype) char, const char & "char" +%typemap(jstype) signed char, const signed char & "byte" +%typemap(jstype) unsigned char, const unsigned char & "short" +%typemap(jstype) short, const short & "short" +%typemap(jstype) unsigned short, const unsigned short & "int" +%typemap(jstype) int, const int & "int" +%typemap(jstype) unsigned int, const unsigned int & "long" +%typemap(jstype) long, const long & "int" +%typemap(jstype) unsigned long, const unsigned long & "long" +%typemap(jstype) long long, const long long & "long" +%typemap(jstype) unsigned long long, const unsigned long long & "java.math.BigInteger" +%typemap(jstype) float, const float & "float" +%typemap(jstype) double, const double & "double" +%typemap(jstype) void "void" + +%typemap(jboxtype) bool, const bool & "Boolean" +%typemap(jboxtype) char, const char & "Character" +%typemap(jboxtype) signed char, const signed char & "Byte" +%typemap(jboxtype) unsigned char, const unsigned char & "Short" +%typemap(jboxtype) short, const short & "Short" +%typemap(jboxtype) unsigned short, const unsigned short & "Integer" +%typemap(jboxtype) int, const int & "Integer" +%typemap(jboxtype) unsigned int, const unsigned int & "Long" +%typemap(jboxtype) long, const long & "Integer" +%typemap(jboxtype) unsigned long, const unsigned long & "Long" +%typemap(jboxtype) long long, const long long & "Long" +%typemap(jboxtype) unsigned long long, const unsigned long long & "java.math.BigInteger" +%typemap(jboxtype) float, const float & "Float" +%typemap(jboxtype) double, const double & "Double" + +%typemap(jni) char *, char *&, char[ANY], char[] "jstring" +%typemap(jtype) char *, char *&, char[ANY], char[] "String" +%typemap(jstype) char *, char *&, char[ANY], char[] "String" + +/* JNI types */ +%typemap(jni) jboolean "jboolean" +%typemap(jni) jchar "jchar" +%typemap(jni) jbyte "jbyte" +%typemap(jni) jshort "jshort" +%typemap(jni) jint "jint" +%typemap(jni) jlong "jlong" +%typemap(jni) jfloat "jfloat" +%typemap(jni) jdouble "jdouble" +%typemap(jni) jstring "jstring" +%typemap(jni) jobject "jobject" +%typemap(jni) jbooleanArray "jbooleanArray" +%typemap(jni) jcharArray "jcharArray" +%typemap(jni) jbyteArray "jbyteArray" +%typemap(jni) jshortArray "jshortArray" +%typemap(jni) jintArray "jintArray" +%typemap(jni) jlongArray "jlongArray" +%typemap(jni) jfloatArray "jfloatArray" +%typemap(jni) jdoubleArray "jdoubleArray" +%typemap(jni) jobjectArray "jobjectArray" + +%typemap(jtype) jboolean "boolean" +%typemap(jtype) jchar "char" +%typemap(jtype) jbyte "byte" +%typemap(jtype) jshort "short" +%typemap(jtype) jint "int" +%typemap(jtype) jlong "long" +%typemap(jtype) jfloat "float" +%typemap(jtype) jdouble "double" +%typemap(jtype) jstring "String" +%typemap(jtype) jobject "java.lang.Object" +%typemap(jtype) jbooleanArray "boolean[]" +%typemap(jtype) jcharArray "char[]" +%typemap(jtype) jbyteArray "byte[]" +%typemap(jtype) jshortArray "short[]" +%typemap(jtype) jintArray "int[]" +%typemap(jtype) jlongArray "long[]" +%typemap(jtype) jfloatArray "float[]" +%typemap(jtype) jdoubleArray "double[]" +%typemap(jtype) jobjectArray "java.lang.Object[]" + +%typemap(jstype) jboolean "boolean" +%typemap(jstype) jchar "char" +%typemap(jstype) jbyte "byte" +%typemap(jstype) jshort "short" +%typemap(jstype) jint "int" +%typemap(jstype) jlong "long" +%typemap(jstype) jfloat "float" +%typemap(jstype) jdouble "double" +%typemap(jstype) jstring "String" +%typemap(jstype) jobject "java.lang.Object" +%typemap(jstype) jbooleanArray "boolean[]" +%typemap(jstype) jcharArray "char[]" +%typemap(jstype) jbyteArray "byte[]" +%typemap(jstype) jshortArray "short[]" +%typemap(jstype) jintArray "int[]" +%typemap(jstype) jlongArray "long[]" +%typemap(jstype) jfloatArray "float[]" +%typemap(jstype) jdoubleArray "double[]" +%typemap(jstype) jobjectArray "java.lang.Object[]" + +/* Non primitive types */ +%typemap(jni) SWIGTYPE "jlong" +%typemap(jtype) SWIGTYPE "long" +%typemap(jstype) SWIGTYPE "$&javaclassname" +%typemap(jboxtype) SWIGTYPE "$typemap(jstype, $1_type)" + +%typemap(jni) SWIGTYPE [] "jlong" +%typemap(jtype) SWIGTYPE [] "long" +%typemap(jstype) SWIGTYPE [] "$javaclassname" + +%typemap(jni) SWIGTYPE * "jlong" +%typemap(jtype) SWIGTYPE * "long" +%typemap(jstype) SWIGTYPE * "$javaclassname" + +%typemap(jni) SWIGTYPE & "jlong" +%typemap(jtype) SWIGTYPE & "long" +%typemap(jstype) SWIGTYPE & "$javaclassname" + +%typemap(jni) SWIGTYPE && "jlong" +%typemap(jtype) SWIGTYPE && "long" +%typemap(jstype) SWIGTYPE && "$javaclassname" + +/* pointer to a class member */ +%typemap(jni) SWIGTYPE (CLASS::*) "jstring" +%typemap(jtype) SWIGTYPE (CLASS::*) "String" +%typemap(jstype) SWIGTYPE (CLASS::*) "$javaclassname" + +/* The following are the in, out, freearg, argout typemaps. These are the JNI code generating typemaps for converting from Java to C and visa versa. */ + +/* primitive types */ +%typemap(in) bool +%{ $1 = $input ? true : false; %} + +%typemap(directorout) bool +%{ $result = $input ? true : false; %} + +%typemap(javadirectorin) bool "$jniinput" +%typemap(javadirectorout) bool "$javacall" + +%typemap(in) char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + float, + double +%{ $1 = ($1_ltype)$input; %} + +%typemap(directorout) char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + float, + double +%{ $result = ($1_ltype)$input; %} + +%typemap(directorin, descriptor="Z") bool "$input = (jboolean) $1;" +%typemap(directorin, descriptor="C") char "$input = (jint) $1;" +%typemap(directorin, descriptor="B") signed char "$input = (jbyte) $1;" +%typemap(directorin, descriptor="S") unsigned char "$input = (jshort) $1;" +%typemap(directorin, descriptor="S") short "$input = (jshort) $1;" +%typemap(directorin, descriptor="I") unsigned short "$input = (jint) $1;" +%typemap(directorin, descriptor="I") int "$input = (jint) $1;" +%typemap(directorin, descriptor="J") unsigned int "$input = (jlong) $1;" +%typemap(directorin, descriptor="I") long "$input = (jint) $1;" +%typemap(directorin, descriptor="J") unsigned long "$input = (jlong) $1;" +%typemap(directorin, descriptor="J") long long "$input = (jlong) $1;" +%typemap(directorin, descriptor="F") float "$input = (jfloat) $1;" +%typemap(directorin, descriptor="D") double "$input = (jdouble) $1;" + +%typemap(javadirectorin) char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + float, + double + "$jniinput" + +%typemap(javadirectorout) char, + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + float, + double + "$javacall" + +%typemap(out) bool %{ $result = (jboolean)$1; %} +%typemap(out) char %{ $result = (jchar)$1; %} +%typemap(out) signed char %{ $result = (jbyte)$1; %} +%typemap(out) unsigned char %{ $result = (jshort)$1; %} +%typemap(out) short %{ $result = (jshort)$1; %} +%typemap(out) unsigned short %{ $result = (jint)$1; %} +%typemap(out) int %{ $result = (jint)$1; %} +%typemap(out) unsigned int %{ $result = (jlong)$1; %} +%typemap(out) long %{ $result = (jint)$1; %} +%typemap(out) unsigned long %{ $result = (jlong)$1; %} +%typemap(out) long long %{ $result = (jlong)$1; %} +%typemap(out) float %{ $result = (jfloat)$1; %} +%typemap(out) double %{ $result = (jdouble)$1; %} + +/* unsigned long long */ +/* Convert from BigInteger using the toByteArray member function */ +%typemap(in) unsigned long long { + jclass clazz; + jmethodID mid; + jbyteArray ba; + jbyte* bae; + jsize sz; + int i; + + if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "BigInteger null"); + return $null; + } + clazz = JCALL1(GetObjectClass, jenv, $input); + mid = JCALL3(GetMethodID, jenv, clazz, "toByteArray", "()[B"); + ba = (jbyteArray)JCALL2(CallObjectMethod, jenv, $input, mid); + bae = JCALL2(GetByteArrayElements, jenv, ba, 0); + sz = JCALL1(GetArrayLength, jenv, ba); + $1 = 0; + if (sz > 0) { + $1 = ($1_type)(signed char)bae[0]; + for(i=1; i 0) { + $result = ($1_type)(signed char)bae[0]; + for(i=1; i", "([B)V"); + jobject bigint; + int i; + + bae[0] = 0; + for(i=1; i<9; i++ ) { + bae[i] = (jbyte)($1>>8*(8-i)); + } + + JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0); + bigint = JCALL3(NewObject, jenv, clazz, mid, ba); + JCALL1(DeleteLocalRef, jenv, ba); + $result = bigint; +} + +/* Convert to BigInteger (see out typemap) */ +%typemap(directorin, descriptor="Ljava/math/BigInteger;", noblock=1) unsigned long long, const unsigned long long & { +{ + jbyteArray ba = JCALL1(NewByteArray, jenv, 9); + jbyte* bae = JCALL2(GetByteArrayElements, jenv, ba, 0); + jclass clazz = JCALL1(FindClass, jenv, "java/math/BigInteger"); + jmethodID mid = JCALL3(GetMethodID, jenv, clazz, "", "([B)V"); + jobject bigint; + int swig_i; + + bae[0] = 0; + for(swig_i=1; swig_i<9; swig_i++ ) { + bae[swig_i] = (jbyte)($1>>8*(8-swig_i)); + } + + JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0); + bigint = JCALL3(NewObject, jenv, clazz, mid, ba); + JCALL1(DeleteLocalRef, jenv, ba); + $input = bigint; +} +Swig::LocalRefGuard $1_refguard(jenv, $input); } + +%typemap(javadirectorin) unsigned long long "$jniinput" +%typemap(javadirectorout) unsigned long long "$javacall" + +/* char * - treat as String */ +%typemap(in, noblock=1) char * { + $1 = 0; + if ($input) { + $1 = ($1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0); + if (!$1) return $null; + } +} + +%typemap(directorout, noblock=1, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) char * { + $1 = 0; + if ($input) { + $result = ($1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0); + if (!$result) return $null; + } +} + +%typemap(directorin, descriptor="Ljava/lang/String;", noblock=1) char * { + $input = 0; + if ($1) { + $input = JCALL1(NewStringUTF, jenv, (const char *)$1); + if (!$input) return $null; + } + Swig::LocalRefGuard $1_refguard(jenv, $input); +} + +%typemap(freearg, noblock=1) char * { if ($1) JCALL2(ReleaseStringUTFChars, jenv, $input, (const char *)$1); } +%typemap(out, noblock=1) char * { if ($1) $result = JCALL1(NewStringUTF, jenv, (const char *)$1); } +%typemap(javadirectorin) char * "$jniinput" +%typemap(javadirectorout) char * "$javacall" + +/* char *& - treat as String */ +%typemap(in, noblock=1) char *& ($*1_ltype temp = 0) { + $1 = 0; + if ($input) { + temp = ($*1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0); + if (!temp) return $null; + } + $1 = &temp; +} +%typemap(freearg, noblock=1) char *& { if ($1 && *$1) JCALL2(ReleaseStringUTFChars, jenv, $input, (const char *)*$1); } +%typemap(out, noblock=1) char *& { if (*$1) $result = JCALL1(NewStringUTF, jenv, (const char *)*$1); } + +%typemap(out) void "" +%typemap(javadirectorin) void "$jniinput" +%typemap(javadirectorout) void "$javacall" +%typemap(directorin, descriptor="V") void "" + +/* primitive types by reference */ +%typemap(in) const bool & ($*1_ltype temp) +%{ temp = $input ? true : false; + $1 = &temp; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const bool & +%{ static $*1_ltype temp; + temp = $input ? true : false; + $result = &temp; %} + +%typemap(javadirectorin) const bool & "$jniinput" +%typemap(javadirectorout) const bool & "$javacall" + +%typemap(in) const char & ($*1_ltype temp), + const signed char & ($*1_ltype temp), + const unsigned char & ($*1_ltype temp), + const short & ($*1_ltype temp), + const unsigned short & ($*1_ltype temp), + const int & ($*1_ltype temp), + const unsigned int & ($*1_ltype temp), + const long & ($*1_ltype temp), + const unsigned long & ($*1_ltype temp), + const long long & ($*1_ltype temp), + const float & ($*1_ltype temp), + const double & ($*1_ltype temp) +%{ temp = ($*1_ltype)$input; + $1 = &temp; %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const char &, + const signed char &, + const unsigned char &, + const short &, + const unsigned short &, + const int &, + const unsigned int &, + const long &, + const unsigned long &, + const long long &, + const float &, + const double & +%{ static $*1_ltype temp; + temp = ($*1_ltype)$input; + $result = &temp; %} + +%typemap(directorin, descriptor="Z") const bool & "$input = (jboolean)$1;" +%typemap(directorin, descriptor="C") const char & "$input = (jchar)$1;" +%typemap(directorin, descriptor="B") const signed char & "$input = (jbyte)$1;" +%typemap(directorin, descriptor="S") const unsigned char & "$input = (jshort)$1;" +%typemap(directorin, descriptor="S") const short & "$input = (jshort)$1;" +%typemap(directorin, descriptor="I") const unsigned short & "$input = (jint)$1;" +%typemap(directorin, descriptor="I") const int & "$input = (jint)$1;" +%typemap(directorin, descriptor="J") const unsigned int & "$input = (jlong)$1;" +%typemap(directorin, descriptor="I") const long & "$input = (jint)$1;" +%typemap(directorin, descriptor="J") const unsigned long & "$input = (jlong)$1;" +%typemap(directorin, descriptor="J") const long long & "$input = (jlong)$1;" +%typemap(directorin, descriptor="F") const float & "$input = (jfloat)$1;" +%typemap(directorin, descriptor="D") const double & "$input = (jdouble)$1;" + +%typemap(javadirectorin) const char & ($*1_ltype temp), + const signed char & ($*1_ltype temp), + const unsigned char & ($*1_ltype temp), + const short & ($*1_ltype temp), + const unsigned short & ($*1_ltype temp), + const int & ($*1_ltype temp), + const unsigned int & ($*1_ltype temp), + const long & ($*1_ltype temp), + const unsigned long & ($*1_ltype temp), + const long long & ($*1_ltype temp), + const float & ($*1_ltype temp), + const double & ($*1_ltype temp) + "$jniinput" + +%typemap(javadirectorout) const char & ($*1_ltype temp), + const signed char & ($*1_ltype temp), + const unsigned char & ($*1_ltype temp), + const short & ($*1_ltype temp), + const unsigned short & ($*1_ltype temp), + const int & ($*1_ltype temp), + const unsigned int & ($*1_ltype temp), + const long & ($*1_ltype temp), + const unsigned long & ($*1_ltype temp), + const long long & ($*1_ltype temp), + const float & ($*1_ltype temp), + const double & ($*1_ltype temp) + "$javacall" + + +%typemap(out) const bool & %{ $result = (jboolean)*$1; %} +%typemap(out) const char & %{ $result = (jchar)*$1; %} +%typemap(out) const signed char & %{ $result = (jbyte)*$1; %} +%typemap(out) const unsigned char & %{ $result = (jshort)*$1; %} +%typemap(out) const short & %{ $result = (jshort)*$1; %} +%typemap(out) const unsigned short & %{ $result = (jint)*$1; %} +%typemap(out) const int & %{ $result = (jint)*$1; %} +%typemap(out) const unsigned int & %{ $result = (jlong)*$1; %} +%typemap(out) const long & %{ $result = (jint)*$1; %} +%typemap(out) const unsigned long & %{ $result = (jlong)*$1; %} +%typemap(out) const long long & %{ $result = (jlong)*$1; %} +%typemap(out) const float & %{ $result = (jfloat)*$1; %} +%typemap(out) const double & %{ $result = (jdouble)*$1; %} + +/* const unsigned long long & */ +/* Similar to unsigned long long */ +%typemap(in) const unsigned long long & ($*1_ltype temp) { + jclass clazz; + jmethodID mid; + jbyteArray ba; + jbyte* bae; + jsize sz; + int i; + + if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "BigInteger null"); + return $null; + } + clazz = JCALL1(GetObjectClass, jenv, $input); + mid = JCALL3(GetMethodID, jenv, clazz, "toByteArray", "()[B"); + ba = (jbyteArray)JCALL2(CallObjectMethod, jenv, $input, mid); + bae = JCALL2(GetByteArrayElements, jenv, ba, 0); + sz = JCALL1(GetArrayLength, jenv, ba); + $1 = &temp; + temp = 0; + if (sz > 0) { + temp = ($*1_ltype)(signed char)bae[0]; + for(i=1; i 0) { + temp = ($*1_ltype)(signed char)bae[0]; + for(i=1; i", "([B)V"); + jobject bigint; + int i; + + bae[0] = 0; + for(i=1; i<9; i++ ) { + bae[i] = (jbyte)(*$1>>8*(8-i)); + } + + JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0); + bigint = JCALL3(NewObject, jenv, clazz, mid, ba); + JCALL1(DeleteLocalRef, jenv, ba); + $result = bigint; +} + +%typemap(javadirectorin) const unsigned long long & "$jniinput" +%typemap(javadirectorout) const unsigned long long & "$javacall" + +/* Default handling. Object passed by value. Convert to a pointer */ +%typemap(in) SWIGTYPE ($&1_type argp) +%{ argp = *($&1_ltype*)&$input; + if (!argp) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type"); + return $null; + } + $1 = *argp; %} + +%typemap(directorout) SWIGTYPE ($&1_type argp) +%{ argp = *($&1_ltype*)&$input; + if (!argp) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Unexpected null return for type $1_type"); + return $null; + } + $result = *argp; %} + +%typemap(out) SWIGTYPE +#ifdef __cplusplus +%{ *($&1_ltype*)&$result = new $1_ltype((const $1_ltype &)$1); %} +#else +{ + $&1_ltype $1ptr = ($&1_ltype) malloc(sizeof($1_ltype)); + memmove($1ptr, &$1, sizeof($1_type)); + *($&1_ltype*)&$result = $1ptr; +} +#endif + +%typemap(directorin,descriptor="L$packagepath/$&javaclassname;") SWIGTYPE +%{ $input = 0; + *(($&1_ltype*)&$input) = new $1_ltype((const $1_ltype &)$1); %} +%typemap(javadirectorin) SWIGTYPE "new $&javaclassname($jniinput, true)" +%typemap(javadirectorout) SWIGTYPE "$&javaclassname.getCPtr($javacall)" + +/* Generic pointers and references */ +%typemap(in) SWIGTYPE * %{ $1 = *($&1_ltype)&$input; %} +%typemap(in, fragment="SWIG_UnPackData") SWIGTYPE (CLASS::*) { + const char *temp = 0; + if ($input) { + temp = JCALL2(GetStringUTFChars, jenv, $input, 0); + if (!temp) return $null; + } + SWIG_UnpackData(temp, (void *)&$1, sizeof($1)); +} +%typemap(in) SWIGTYPE & %{ $1 = *($&1_ltype)&$input; + if (!$1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type reference is null"); + return $null; + } %} +%typemap(in) SWIGTYPE && %{ $1 = *($&1_ltype)&$input; + if (!$1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type reference is null"); + return $null; + } %} +%typemap(out) SWIGTYPE * +%{ *($&1_ltype)&$result = $1; %} +%typemap(out, fragment="SWIG_PackData", noblock=1) SWIGTYPE (CLASS::*) { + char buf[128]; + char *data = SWIG_PackData(buf, (void *)&$1, sizeof($1)); + *data = '\0'; + $result = JCALL1(NewStringUTF, jenv, buf); +} +%typemap(out) SWIGTYPE & +%{ *($&1_ltype)&$result = $1; %} +%typemap(out) SWIGTYPE && +%{ *($&1_ltype)&$result = $1; %} + +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE * +%{ $result = *($&1_ltype)&$input; %} +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE (CLASS::*) +%{ $result = *($&1_ltype)&$input; %} + +%typemap(directorin,descriptor="L$packagepath/$javaclassname;") SWIGTYPE * +%{ *(($&1_ltype)&$input) = ($1_ltype) $1; %} +%typemap(directorin,descriptor="L$packagepath/$javaclassname;") SWIGTYPE (CLASS::*) +%{ *(($&1_ltype)&$input) = ($1_ltype) $1; %} + +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE & +%{ if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Unexpected null return for type $1_type"); + return $null; + } + $result = *($&1_ltype)&$input; %} +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE && +%{ if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Unexpected null return for type $1_type"); + return $null; + } + $result = *($&1_ltype)&$input; %} +%typemap(directorin,descriptor="L$packagepath/$javaclassname;") SWIGTYPE & +%{ *($&1_ltype)&$input = ($1_ltype) &$1; %} +%typemap(directorin,descriptor="L$packagepath/$javaclassname;") SWIGTYPE && +%{ *($&1_ltype)&$input = ($1_ltype) &$1; %} + +%typemap(javadirectorin) SWIGTYPE *, SWIGTYPE (CLASS::*) "($jniinput == 0) ? null : new $javaclassname($jniinput, false)" +%typemap(javadirectorin) SWIGTYPE & "new $javaclassname($jniinput, false)" +%typemap(javadirectorin) SWIGTYPE && "new $javaclassname($jniinput, false)" +%typemap(javadirectorout) SWIGTYPE *, SWIGTYPE (CLASS::*), SWIGTYPE &, SWIGTYPE && "$javaclassname.getCPtr($javacall)" + +/* Default array handling */ +%typemap(in) SWIGTYPE [] %{ $1 = *($&1_ltype)&$input; %} +%typemap(out) SWIGTYPE [] %{ *($&1_ltype)&$result = $1; %} +%typemap(freearg) SWIGTYPE [ANY], SWIGTYPE [] "" + +/* char arrays - treat as String */ +%typemap(in, noblock=1) char[ANY], char[] { + $1 = 0; + if ($input) { + $1 = ($1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0); + if (!$1) return $null; + } +} + +%typemap(directorout, noblock=1) char[ANY], char[] { + $1 = 0; + if ($input) { + $result = ($1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0); + if (!$result) return $null; + } +} + +%typemap(directorin, descriptor="Ljava/lang/String;", noblock=1) char[ANY], char[] { + $input = 0; + if ($1) { + $input = JCALL1(NewStringUTF, jenv, (const char *)$1); + if (!$input) return $null; + } + Swig::LocalRefGuard $1_refguard(jenv, $input); +} + +%typemap(argout) char[ANY], char[] "" +%typemap(freearg, noblock=1) char[ANY], char[] { if ($1) JCALL2(ReleaseStringUTFChars, jenv, $input, (const char *)$1); } +%typemap(out, noblock=1) char[ANY], char[] { if ($1) $result = JCALL1(NewStringUTF, jenv, (const char *)$1); } +%typemap(javadirectorin) char[ANY], char[] "$jniinput" +%typemap(javadirectorout) char[ANY], char[] "$javacall" + +/* JNI types */ +%typemap(in) jboolean, + jchar, + jbyte, + jshort, + jint, + jlong, + jfloat, + jdouble, + jstring, + jobject, + jbooleanArray, + jcharArray, + jbyteArray, + jshortArray, + jintArray, + jlongArray, + jfloatArray, + jdoubleArray, + jobjectArray +%{ $1 = $input; %} + +%typemap(directorout) jboolean, + jchar, + jbyte, + jshort, + jint, + jlong, + jfloat, + jdouble, + jstring, + jobject, + jbooleanArray, + jcharArray, + jbyteArray, + jshortArray, + jintArray, + jlongArray, + jfloatArray, + jdoubleArray, + jobjectArray +%{ $result = $input; %} + +%typemap(out) jboolean, + jchar, + jbyte, + jshort, + jint, + jlong, + jfloat, + jdouble, + jstring, + jobject, + jbooleanArray, + jcharArray, + jbyteArray, + jshortArray, + jintArray, + jlongArray, + jfloatArray, + jdoubleArray, + jobjectArray +%{ $result = $1; %} + +%typemap(directorin,descriptor="Z") jboolean "$input = $1;" +%typemap(directorin,descriptor="C") jchar "$input = $1;" +%typemap(directorin,descriptor="B") jbyte "$input = $1;" +%typemap(directorin,descriptor="S") jshort "$input = $1;" +%typemap(directorin,descriptor="I") jint "$input = $1;" +%typemap(directorin,descriptor="J") jlong "$input = $1;" +%typemap(directorin,descriptor="F") jfloat "$input = $1;" +%typemap(directorin,descriptor="D") jdouble "$input = $1;" +%typemap(directorin,descriptor="Ljava/lang/String;") jstring "$input = $1;" +%typemap(directorin,descriptor="Ljava/lang/Object;",nouse="1") jobject "$input = $1;" +%typemap(directorin,descriptor="[Z") jbooleanArray "$input = $1;" +%typemap(directorin,descriptor="[C") jcharArray "$input = $1;" +%typemap(directorin,descriptor="[B") jbyteArray "$input = $1;" +%typemap(directorin,descriptor="[S") jshortArray "$input = $1;" +%typemap(directorin,descriptor="[I") jintArray "$input = $1;" +%typemap(directorin,descriptor="[J") jlongArray "$input = $1;" +%typemap(directorin,descriptor="[F") jfloatArray "$input = $1;" +%typemap(directorin,descriptor="[D") jdoubleArray "$input = $1;" +%typemap(directorin,descriptor="[Ljava/lang/Object;",nouse="1") jobjectArray "$input = $1;" + +%typemap(javadirectorin) jboolean, + jchar, + jbyte, + jshort, + jint, + jlong, + jfloat, + jdouble, + jstring, + jobject, + jbooleanArray, + jcharArray, + jbyteArray, + jshortArray, + jintArray, + jlongArray, + jfloatArray, + jdoubleArray, + jobjectArray + "$jniinput" + +%typemap(javadirectorout) jboolean, + jchar, + jbyte, + jshort, + jint, + jlong, + jfloat, + jdouble, + jstring, + jobject, + jbooleanArray, + jcharArray, + jbyteArray, + jshortArray, + jintArray, + jlongArray, + jfloatArray, + jdoubleArray, + jobjectArray + "$javacall" + +/* Typecheck typemaps - The purpose of these is merely to issue a warning for overloaded C++ functions + * that cannot be overloaded in Java as more than one C++ type maps to a single Java type */ + +%typecheck(SWIG_TYPECHECK_BOOL) /* Java boolean */ + jboolean, + bool, + const bool & + "" + +%typecheck(SWIG_TYPECHECK_CHAR) /* Java char */ + jchar, + char, + const char & + "" + +%typecheck(SWIG_TYPECHECK_INT8) /* Java byte */ + jbyte, + signed char, + const signed char & + "" + +%typecheck(SWIG_TYPECHECK_INT16) /* Java short */ + jshort, + unsigned char, + short, + const unsigned char &, + const short & + "" + +%typecheck(SWIG_TYPECHECK_INT32) /* Java int */ + jint, + unsigned short, + int, + long, + const unsigned short &, + const int &, + const long & + "" + +%typecheck(SWIG_TYPECHECK_INT64) /* Java long */ + jlong, + unsigned int, + unsigned long, + long long, + const unsigned int &, + const unsigned long &, + const long long & + "" + +%typecheck(SWIG_TYPECHECK_INT128) /* Java BigInteger */ + unsigned long long, + const unsigned long long & + "" + +%typecheck(SWIG_TYPECHECK_FLOAT) /* Java float */ + jfloat, + float, + const float & + "" + +%typecheck(SWIG_TYPECHECK_DOUBLE) /* Java double */ + jdouble, + double, + const double & + "" + +%typecheck(SWIG_TYPECHECK_STRING) /* Java String */ + jstring, + char *, + char *&, + char[ANY], + char [] + "" + +%typecheck(SWIG_TYPECHECK_BOOL_ARRAY) /* Java boolean[] */ + jbooleanArray + "" + +%typecheck(SWIG_TYPECHECK_CHAR_ARRAY) /* Java char[] */ + jcharArray + "" + +%typecheck(SWIG_TYPECHECK_INT8_ARRAY) /* Java byte[] */ + jbyteArray + "" + +%typecheck(SWIG_TYPECHECK_INT16_ARRAY) /* Java short[] */ + jshortArray + "" + +%typecheck(SWIG_TYPECHECK_INT32_ARRAY) /* Java int[] */ + jintArray + "" + +%typecheck(SWIG_TYPECHECK_INT64_ARRAY) /* Java long[] */ + jlongArray + "" + +%typecheck(SWIG_TYPECHECK_FLOAT_ARRAY) /* Java float[] */ + jfloatArray + "" + +%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY) /* Java double[] */ + jdoubleArray + "" + +%typecheck(SWIG_TYPECHECK_OBJECT_ARRAY) /* Java jobject[] */ + jobjectArray + "" + +%typecheck(SWIG_TYPECHECK_POINTER) /* Default */ + SWIGTYPE, + SWIGTYPE *, + SWIGTYPE &, + SWIGTYPE &&, + SWIGTYPE *const&, + SWIGTYPE [], + SWIGTYPE (CLASS::*) + "" + + +/* Exception handling */ + +%typemap(throws) int, + long, + short, + unsigned int, + unsigned long, + unsigned short +%{ char error_msg[256]; + sprintf(error_msg, "C++ $1_type exception thrown, value: %d", $1); + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, error_msg); + return $null; %} + +%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE *, SWIGTYPE [], SWIGTYPE [ANY] +%{ (void)$1; + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); + return $null; %} + +%typemap(throws) char * +%{ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1); + return $null; %} + +/* For methods to raise/throw the original Java exception thrown in a director method */ +%typemap(throws) Swig::DirectorException +%{ $1.throwException(jenv); + return $null; %} + +/* Java to C++ DirectorException should already be handled. Suppress warning and do nothing in the + event a user specifies a global: %catches(Swig::DirectorException); */ +%typemap(directorthrows) Swig::DirectorException "" + +/* Typemaps for code generation in proxy classes and Java type wrapper classes */ + +/* The javain typemap is used for converting function parameter types from the type + * used in the proxy, module or type wrapper class to the type used in the JNI class. */ +%typemap(javain) bool, const bool &, + char, const char &, + signed char, const signed char &, + unsigned char, const unsigned char &, + short, const short &, + unsigned short, const unsigned short &, + int, const int &, + unsigned int, const unsigned int &, + long, const long &, + unsigned long, const unsigned long &, + long long, const long long &, + unsigned long long, const unsigned long long &, + float, const float &, + double, const double & + "$javainput" +%typemap(javain) char *, char *&, char[ANY], char[] "$javainput" +%typemap(javain) jboolean, + jchar, + jbyte, + jshort, + jint, + jlong, + jfloat, + jdouble, + jstring, + jobject, + jbooleanArray, + jcharArray, + jbyteArray, + jshortArray, + jintArray, + jlongArray, + jfloatArray, + jdoubleArray, + jobjectArray + "$javainput" +%typemap(javain) SWIGTYPE "$&javaclassname.getCPtr($javainput)" +%typemap(javain) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] "$javaclassname.getCPtr($javainput)" +%typemap(javain) SWIGTYPE (CLASS::*) "$javaclassname.getCMemberPtr($javainput)" + +/* The javaout typemap is used for converting function return types from the return type + * used in the JNI class to the type returned by the proxy, module or type wrapper class. */ +%typemap(javaout) bool, const bool &, + char, const char &, + signed char, const signed char &, + unsigned char, const unsigned char &, + short, const short &, + unsigned short, const unsigned short &, + int, const int &, + unsigned int, const unsigned int &, + long, const long &, + unsigned long, const unsigned long &, + long long, const long long &, + unsigned long long, const unsigned long long &, + float, const float &, + double, const double & { + return $jnicall; + } +%typemap(javaout) char *, char *&, char[ANY], char[] { + return $jnicall; + } +%typemap(javaout) jboolean, + jchar, + jbyte, + jshort, + jint, + jlong, + jfloat, + jdouble, + jstring, + jobject, + jbooleanArray, + jcharArray, + jbyteArray, + jshortArray, + jintArray, + jlongArray, + jfloatArray, + jdoubleArray, + jobjectArray { + return $jnicall; + } +%typemap(javaout) void { + $jnicall; + } +%typemap(javaout) SWIGTYPE { + return new $&javaclassname($jnicall, true); + } +%typemap(javaout) SWIGTYPE & { + return new $javaclassname($jnicall, $owner); + } +%typemap(javaout) SWIGTYPE && { + return new $javaclassname($jnicall, $owner); + } +%typemap(javaout) SWIGTYPE *, SWIGTYPE [] { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $javaclassname(cPtr, $owner); + } +%typemap(javaout) SWIGTYPE (CLASS::*) { + String cMemberPtr = $jnicall; + return (cMemberPtr == null) ? null : new $javaclassname(cMemberPtr, $owner); + } + +/* Pointer reference typemaps */ +%typemap(jni) SWIGTYPE *const& "jlong" +%typemap(jtype) SWIGTYPE *const& "long" +%typemap(jstype) SWIGTYPE *const& "$*javaclassname" +%typemap(javain) SWIGTYPE *const& "$*javaclassname.getCPtr($javainput)" +%typemap(javaout) SWIGTYPE *const& { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $*javaclassname(cPtr, $owner); + } +%typemap(in) SWIGTYPE *const& ($*1_ltype temp = 0) +%{ temp = *($1_ltype)&$input; + $1 = ($1_ltype)&temp; %} +%typemap(out) SWIGTYPE *const& +%{ *($1_ltype)&$result = *$1; %} +%typemap(directorin,descriptor="L$packagepath/$*javaclassname;") SWIGTYPE *const& +%{ *(($1_ltype)&$input) = ($*1_ltype) $1; %} +%typemap(directorout, warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) SWIGTYPE *const& +%{ static $*1_ltype swig_temp; + swig_temp = *($1_ltype)&$input; + $result = &swig_temp; %} +%typemap(javadirectorin) SWIGTYPE *const& "($jniinput == 0) ? null : new $*javaclassname($jniinput, false)" +%typemap(javadirectorout) SWIGTYPE *const& "$*javaclassname.getCPtr($javacall)" + +/* Typemaps used for the generation of proxy and type wrapper class code */ +%typemap(javabase) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(javaclassmodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "public class" +%typemap(javacode) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(javaimports) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "" +%typemap(javainterfaces) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "" + +/* javabody typemaps */ + +%define SWIG_JAVABODY_METHODS(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE...) SWIG_JAVABODY_PROXY(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE) %enddef // legacy name + +%define SWIG_JAVABODY_PROXY(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE...) +// Base proxy classes +%typemap(javabody) TYPE %{ + private transient long swigCPtr; + protected transient boolean swigCMemOwn; + + PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + CPTR_VISIBILITY static long getCPtr($javaclassname obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +%} + +// Derived proxy classes +%typemap(javabody_derived) TYPE %{ + private transient long swigCPtr; + + PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) { + super($imclassname.$javaclazznameSWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + CPTR_VISIBILITY static long getCPtr($javaclassname obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +%} +%enddef + +%define SWIG_JAVABODY_TYPEWRAPPER(PTRCTOR_VISIBILITY, DEFAULTCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE...) +// Typewrapper classes +%typemap(javabody) TYPE *, TYPE &, TYPE &&, TYPE [] %{ + private transient long swigCPtr; + + PTRCTOR_VISIBILITY $javaclassname(long cPtr, @SuppressWarnings("unused") boolean futureUse) { + swigCPtr = cPtr; + } + + DEFAULTCTOR_VISIBILITY $javaclassname() { + swigCPtr = 0; + } + + CPTR_VISIBILITY static long getCPtr($javaclassname obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +%} + +%typemap(javabody) TYPE (CLASS::*) %{ + private transient String swigCMemberPtr; + + PTRCTOR_VISIBILITY $javaclassname(String cMemberPtr, @SuppressWarnings("unused") boolean futureUse) { + swigCMemberPtr = cMemberPtr; + } + + DEFAULTCTOR_VISIBILITY $javaclassname() { + swigCMemberPtr = null; + } + + CPTR_VISIBILITY static String getCMemberPtr($javaclassname obj) { + return obj.swigCMemberPtr; + } +%} +%enddef + +/* Set the default javabody typemaps to use protected visibility. + Use the macros to change to public if using multiple modules. */ +SWIG_JAVABODY_PROXY(protected, protected, SWIGTYPE) +SWIG_JAVABODY_TYPEWRAPPER(protected, protected, protected, SWIGTYPE) + +%typemap(javafinalize) SWIGTYPE %{ + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } +%} + +/* + * Java constructor typemaps: + * + * The javaconstruct typemap is inserted when a proxy class's constructor is generated. + * This typemap allows control over what code is executed in the constructor as + * well as specifying who owns the underlying C/C++ object. Normally, Java has + * ownership and the underlying C/C++ object is deallocated when the Java object + * is finalized (swigCMemOwn is true.) If swigCMemOwn is false, C/C++ is + * ultimately responsible for deallocating the underlying object's memory. + * + * The SWIG_PROXY_CONSTRUCTOR macro defines the javaconstruct typemap for a proxy + * class for a particular TYPENAME. OWNERSHIP is passed as the value of + * swigCMemOwn to the pointer constructor method. WEAKREF determines which kind + * of Java object reference will be used by the C++ director class (WeakGlobalRef + * vs. GlobalRef.) + * + * The SWIG_DIRECTOR_OWNED macro sets the ownership of director-based proxy + * classes and the weak reference flag to false, meaning that the underlying C++ + * object will be reclaimed by C++. + */ + +%define SWIG_PROXY_CONSTRUCTOR(OWNERSHIP, WEAKREF, TYPENAME...) +%typemap(javaconstruct,directorconnect="\n $imclassname.$javaclazznamedirector_connect(this, swigCPtr, OWNERSHIP, WEAKREF);") TYPENAME { + this($imcall, OWNERSHIP);$directorconnect + } +%enddef + +%define SWIG_DIRECTOR_OWNED(TYPENAME...) +SWIG_PROXY_CONSTRUCTOR(true, false, TYPENAME) +%enddef + +// Set the default for SWIGTYPE: Java owns the C/C++ object. +SWIG_PROXY_CONSTRUCTOR(true, true, SWIGTYPE) + +%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized", parameters="") SWIGTYPE { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + $jnicall; + } + swigCPtr = 0; + } + } + +%typemap(javadestruct_derived, methodname="delete", methodmodifiers="public synchronized", parameters="") SWIGTYPE { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + $jnicall; + } + swigCPtr = 0; + } + super.delete(); + } + +%typemap(directordisconnect, methodname="swigDirectorDisconnect") SWIGTYPE %{ + protected void $methodname() { + swigCMemOwn = false; + $jnicall; + } +%} + +%typemap(directorowner_release, methodname="swigReleaseOwnership") SWIGTYPE %{ + public void $methodname() { + swigCMemOwn = false; + $jnicall; + } +%} + +%typemap(directorowner_take, methodname="swigTakeOwnership") SWIGTYPE %{ + public void $methodname() { + swigCMemOwn = true; + $jnicall; + } +%} + +/* Java specific directives */ +#define %javaconst(flag) %feature("java:const","flag") +#define %javaconstvalue(value) %feature("java:constvalue",value) +#define %javaenum(wrapapproach) %feature("java:enum","wrapapproach") +#define %javamethodmodifiers %feature("java:methodmodifiers") +#define %javaexception(exceptionclasses) %feature("except",throws=exceptionclasses) +#define %nojavaexception %feature("except","0",throws="") +#define %clearjavaexception %feature("except","",throws="") +#define %proxycode %insert("proxycode") + +%pragma(java) jniclassclassmodifiers="public class" +%pragma(java) moduleclassmodifiers="public class" + +/* Some ANSI C typemaps */ + +%apply unsigned long { size_t }; +%apply const unsigned long & { const size_t & }; + +/* Array reference typemaps */ +%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } +%apply SWIGTYPE && { SWIGTYPE ((&&)[ANY]) } + +/* const pointers */ +%apply SWIGTYPE * { SWIGTYPE *const } +%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) } +%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) } + +/* String & length */ +%typemap(jni) (const char *STRING, size_t LENGTH) "jbyteArray" +%typemap(jtype) (const char *STRING, size_t LENGTH) "byte[]" +%typemap(jstype) (const char *STRING, size_t LENGTH) "byte[]" +%typemap(javain) (const char *STRING, size_t LENGTH) "$javainput" +%typemap(freearg) (const char *STRING, size_t LENGTH) "" +%typemap(in) (const char *STRING, size_t LENGTH) { + if ($input) { + $1 = ($1_ltype) JCALL2(GetByteArrayElements, jenv, $input, 0); + $2 = ($2_type) JCALL1(GetArrayLength, jenv, $input); + } else { + $1 = 0; + $2 = 0; + } +} +%typemap(argout) (const char *STRING, size_t LENGTH) { + if ($input) JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte *)$1, JNI_ABORT); +} +%typemap(directorin, descriptor="[B", noblock=1) (const char *STRING, size_t LENGTH) { + $input = 0; + if ($1) { + $input = JCALL1(NewByteArray, jenv, (jsize)$2); + if (!$input) return $null; + JCALL4(SetByteArrayRegion, jenv, $input, 0, (jsize)$2, (jbyte *)$1); + } + Swig::LocalRefGuard $1_refguard(jenv, $input); +} +%typemap(javadirectorin, descriptor="[B") (const char *STRING, size_t LENGTH) "$jniinput" +%apply (const char *STRING, size_t LENGTH) { (char *STRING, size_t LENGTH) } +/* Enable write-back for non-const version */ +%typemap(argout) (char *STRING, size_t LENGTH) { + if ($input) JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte *)$1, 0); +} +%typemap(directorargout, noblock=1) (char *STRING, size_t LENGTH) +{ if ($input && $1) JCALL4(GetByteArrayRegion, jenv, $input, 0, (jsize)$2, (jbyte *)$1); } +%apply (char *STRING, size_t LENGTH) { (char *STRING, int LENGTH) } + +/* java keywords */ +%include + +// Default enum handling +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/javahead.swg b/macx64/bin/swig/share/swig/4.0.0/java/javahead.swg new file mode 100644 index 00000000..685bba19 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/javahead.swg @@ -0,0 +1,101 @@ +/* ----------------------------------------------------------------------------- + * javahead.swg + * + * Java support code + * ----------------------------------------------------------------------------- */ + + +/* JNI function calls require different calling conventions for C and C++. These JCALL macros are used so + * that the same typemaps can be used for generating code for both C and C++. The SWIG preprocessor can expand + * the macros thereby generating the correct calling convention. It is thus essential that all typemaps that + * use the macros are not within %{ %} brackets as they won't be run through the SWIG preprocessor. */ +#ifdef __cplusplus +# define JCALL0(func, jenv) jenv->func() +# define JCALL1(func, jenv, ar1) jenv->func(ar1) +# define JCALL2(func, jenv, ar1, ar2) jenv->func(ar1, ar2) +# define JCALL3(func, jenv, ar1, ar2, ar3) jenv->func(ar1, ar2, ar3) +# define JCALL4(func, jenv, ar1, ar2, ar3, ar4) jenv->func(ar1, ar2, ar3, ar4) +# define JCALL5(func, jenv, ar1, ar2, ar3, ar4, ar5) jenv->func(ar1, ar2, ar3, ar4, ar5) +# define JCALL6(func, jenv, ar1, ar2, ar3, ar4, ar5, ar6) jenv->func(ar1, ar2, ar3, ar4, ar5, ar6) +# define JCALL7(func, jenv, ar1, ar2, ar3, ar4, ar5, ar6, ar7) jenv->func(ar1, ar2, ar3, ar4, ar5, ar6, ar7) +#else +# define JCALL0(func, jenv) (*jenv)->func(jenv) +# define JCALL1(func, jenv, ar1) (*jenv)->func(jenv, ar1) +# define JCALL2(func, jenv, ar1, ar2) (*jenv)->func(jenv, ar1, ar2) +# define JCALL3(func, jenv, ar1, ar2, ar3) (*jenv)->func(jenv, ar1, ar2, ar3) +# define JCALL4(func, jenv, ar1, ar2, ar3, ar4) (*jenv)->func(jenv, ar1, ar2, ar3, ar4) +# define JCALL5(func, jenv, ar1, ar2, ar3, ar4, ar5) (*jenv)->func(jenv, ar1, ar2, ar3, ar4, ar5) +# define JCALL6(func, jenv, ar1, ar2, ar3, ar4, ar5, ar6) (*jenv)->func(jenv, ar1, ar2, ar3, ar4, ar5, ar6) +# define JCALL7(func, jenv, ar1, ar2, ar3, ar4, ar5, ar6, ar7) (*jenv)->func(jenv, ar1, ar2, ar3, ar4, ar5, ar6, ar7) +#endif + +%insert(runtime) %{ +/* Fix for jlong on some versions of gcc on Windows */ +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) + typedef long long __int64; +#endif + +/* Fix for jlong on 64-bit x86 Solaris */ +#if defined(__x86_64) +# ifdef _LP64 +# undef _LP64 +# endif +#endif + +#include +#include +#include +%} + +%insert(runtime) %{ +/* Support for throwing Java exceptions */ +typedef enum { + SWIG_JavaOutOfMemoryError = 1, + SWIG_JavaIOException, + SWIG_JavaRuntimeException, + SWIG_JavaIndexOutOfBoundsException, + SWIG_JavaArithmeticException, + SWIG_JavaIllegalArgumentException, + SWIG_JavaNullPointerException, + SWIG_JavaDirectorPureVirtual, + SWIG_JavaUnknownError +} SWIG_JavaExceptionCodes; + +typedef struct { + SWIG_JavaExceptionCodes code; + const char *java_exception; +} SWIG_JavaExceptions_t; +%} + +%insert(runtime) { +static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) { + jclass excep; + static const SWIG_JavaExceptions_t java_exceptions[] = { + { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" }, + { SWIG_JavaIOException, "java/io/IOException" }, + { SWIG_JavaRuntimeException, "java/lang/RuntimeException" }, + { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" }, + { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" }, + { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" }, + { SWIG_JavaNullPointerException, "java/lang/NullPointerException" }, + { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" }, + { SWIG_JavaUnknownError, "java/lang/UnknownError" }, + { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" } + }; + const SWIG_JavaExceptions_t *except_ptr = java_exceptions; + + while (except_ptr->code != code && except_ptr->code) + except_ptr++; + + JCALL0(ExceptionClear, jenv); + excep = JCALL1(FindClass, jenv, except_ptr->java_exception); + if (excep) + JCALL2(ThrowNew, jenv, excep, msg); +} +} + +%insert(runtime) %{ +/* Contract support */ + +#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/java/javakw.swg b/macx64/bin/swig/share/swig/4.0.0/java/javakw.swg new file mode 100644 index 00000000..99cd5477 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/javakw.swg @@ -0,0 +1,70 @@ +#ifndef JAVA_JAVAKW_SWG_ +#define JAVA_JAVAKW_SWG_ + +/* Warnings for Java keywords */ +#define JAVAKW(x) %keywordwarn("'" `x` "' is a java keyword, renaming to '_"`x`"'",rename="_%s") `x` + +/* + from + http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html +*/ + +JAVAKW(abstract); +JAVAKW(double); +JAVAKW(int); +JAVAKW(strictfp); +JAVAKW(boolean); +JAVAKW(else); +JAVAKW(interface); +JAVAKW(super); +JAVAKW(break); +JAVAKW(extends); +JAVAKW(long); +JAVAKW(switch); +JAVAKW(byte); +JAVAKW(final); +JAVAKW(native); +JAVAKW(synchronized); +JAVAKW(case); +JAVAKW(finally); +JAVAKW(new); +JAVAKW(this); +JAVAKW(catch); +JAVAKW(float); +JAVAKW(package); +JAVAKW(throw); +JAVAKW(char); +JAVAKW(for); +JAVAKW(private); +JAVAKW(throws); +JAVAKW(class); +JAVAKW(goto); +JAVAKW(protected); +JAVAKW(transient); +JAVAKW(const); +JAVAKW(if); +JAVAKW(public); +JAVAKW(try); +JAVAKW(continue); +JAVAKW(implements); +JAVAKW(return); +JAVAKW(void); +JAVAKW(default); +JAVAKW(import); +JAVAKW(short); +JAVAKW(volatile); +JAVAKW(do); +JAVAKW(instanceof); +JAVAKW(static); +JAVAKW(while); + + +/* others bad names */ + +/* Note here that only *::clone() is bad, and *::clone(int) is ok */ +%namewarn("321:clone() is a java bad method name") *::clone(); + + +#undef JAVAKW + +#endif //JAVA_JAVAKW_SWG_ diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_array.i b/macx64/bin/swig/share/swig/4.0.0/java/std_array.i new file mode 100644 index 00000000..d3436cc6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_array.i @@ -0,0 +1,44 @@ +/* ----------------------------------------------------------------------------- + * std_array.i + * ----------------------------------------------------------------------------- */ + +%include + +namespace std { + + template class array { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + array(); + array(const array& other); + + size_type size() const; + %rename(isEmpty) empty; + bool empty() const; + void fill(const T& u); + %extend { + const_reference get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i, + which is the most common use of this type. If you have functions taking it + as parameter, these typemaps can't be used for them and you need to do + something else (e.g. use shared_ptr<> which SWIG supports fully). + */ + +%define %auto_ptr(TYPE) +%typemap (jni) std::auto_ptr "jlong" +%typemap (jtype) std::auto_ptr "long" +%typemap (jstype) std::auto_ptr "$typemap(jstype, TYPE)" + +%typemap (out) std::auto_ptr %{ + jlong lpp = 0; + *(TYPE**) &lpp = $1.release(); + $result = lpp; +%} +%typemap(javaout) std::auto_ptr { + long cPtr = $jnicall; + return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); + } +%template() std::auto_ptr; +%enddef + +namespace std { + template class auto_ptr {}; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_common.i b/macx64/bin/swig/share/swig/4.0.0/java/std_common.i new file mode 100644 index 00000000..cee11e8c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_common.i @@ -0,0 +1,5 @@ +%include + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/java/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_except.i b/macx64/bin/swig/share/swig/4.0.0/java/std_except.i new file mode 100644 index 00000000..91d2f92c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_except.i @@ -0,0 +1,32 @@ +/* ----------------------------------------------------------------------------- + * std_except.i + * + * Typemaps used by the STL wrappers that throw exceptions. + * These typemaps are used when methods are declared with an STL exception specification, such as + * size_t at() const throw (std::out_of_range); + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +%} + +namespace std +{ + %ignore exception; + struct exception {}; +} + +%typemap(throws) std::bad_cast "SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1.what());\n return $null;" +%typemap(throws) std::bad_exception "SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1.what());\n return $null;" +%typemap(throws) std::domain_error "SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1.what());\n return $null;" +%typemap(throws) std::exception "SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1.what());\n return $null;" +%typemap(throws) std::invalid_argument "SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, $1.what());\n return $null;" +%typemap(throws) std::length_error "SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, $1.what());\n return $null;" +%typemap(throws) std::logic_error "SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1.what());\n return $null;" +%typemap(throws) std::out_of_range "SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, $1.what());\n return $null;" +%typemap(throws) std::overflow_error "SWIG_JavaThrowException(jenv, SWIG_JavaArithmeticException, $1.what());\n return $null;" +%typemap(throws) std::range_error "SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, $1.what());\n return $null;" +%typemap(throws) std::runtime_error "SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1.what());\n return $null;" +%typemap(throws) std::underflow_error "SWIG_JavaThrowException(jenv, SWIG_JavaArithmeticException, $1.what());\n return $null;" + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_list.i b/macx64/bin/swig/share/swig/4.0.0/java/std_list.i new file mode 100644 index 00000000..1077bd0a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_list.i @@ -0,0 +1,225 @@ +/* ----------------------------------------------------------------------------- + * std_list.i + * + * SWIG typemaps for std::list. + * The Java proxy class extends java.util.AbstractSequentialList. The std::list + * container looks and feels much like a java.util.LinkedList from Java. + * ----------------------------------------------------------------------------- */ + +%include + +%{ +#include +#include +%} + +%fragment("SWIG_ListSize", "header", fragment="SWIG_JavaIntFromSize_t") { +SWIGINTERN jint SWIG_ListSize(size_t size) { + jint sz = SWIG_JavaIntFromSize_t(size); + if (sz == -1) + throw std::out_of_range("list size is too large to fit into a Java int"); + return sz; +} +} + +%javamethodmodifiers std::list::begin "private"; +%javamethodmodifiers std::list::insert "private"; +%javamethodmodifiers std::list::doSize "private"; +%javamethodmodifiers std::list::doPreviousIndex "private"; +%javamethodmodifiers std::list::doNextIndex "private"; +%javamethodmodifiers std::list::doHasNext "private"; + +// Match Java style better: +%rename(Iterator) std::list::iterator; + +%nodefaultctor std::list::iterator; + +namespace std { + template class list { + +%typemap(javabase) std::list "java.util.AbstractSequentialList<$typemap(jboxtype, T)>" +%proxycode %{ + public $javaclassname(java.util.Collection c) { + this(); + java.util.ListIterator<$typemap(jboxtype, T)> it = listIterator(0); + // Special case the "copy constructor" here to avoid lots of cross-language calls + for (java.lang.Object o : c) { + it.add(($typemap(jboxtype, T))o); + } + } + + public int size() { + return doSize(); + } + + public boolean add($typemap(jboxtype, T) value) { + addLast(value); + return true; + } + + public java.util.ListIterator<$typemap(jboxtype, T)> listIterator(int index) { + return new java.util.ListIterator<$typemap(jboxtype, T)>() { + private Iterator pos; + private Iterator last; + + private java.util.ListIterator<$typemap(jboxtype, T)> init(int index) { + if (index < 0 || index > $javaclassname.this.size()) + throw new IndexOutOfBoundsException("Index: " + index); + pos = $javaclassname.this.begin(); + pos = pos.advance_unchecked(index); + return this; + } + + public void add($typemap(jboxtype, T) v) { + // Technically we can invalidate last here, but this makes more sense + last = $javaclassname.this.insert(pos, v); + } + + public void set($typemap(jboxtype, T) v) { + if (null == last) { + throw new IllegalStateException(); + } + last.set_unchecked(v); + } + + public void remove() { + if (null == last) { + throw new IllegalStateException(); + } + $javaclassname.this.remove(last); + last = null; + } + + public int previousIndex() { + return $javaclassname.this.doPreviousIndex(pos); + } + + public int nextIndex() { + return $javaclassname.this.doNextIndex(pos); + } + + public $typemap(jboxtype, T) previous() { + if (previousIndex() < 0) { + throw new java.util.NoSuchElementException(); + } + last = pos; + pos = pos.previous_unchecked(); + return last.deref_unchecked(); + } + + public $typemap(jboxtype, T) next() { + if (!hasNext()) { + throw new java.util.NoSuchElementException(); + } + last = pos; + pos = pos.next_unchecked(); + return last.deref_unchecked(); + } + + public boolean hasPrevious() { + // This call to previousIndex() will be much slower than the hasNext() implementation, but it's simpler like this with C++ forward iterators + return previousIndex() != -1; + } + + public boolean hasNext() { + return $javaclassname.this.doHasNext(pos); + } + }.init(index); + } +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + /* + * We'd actually be better off having the nested class *not* be static in the wrapper + * output, but this doesn't actually remove the $static from the nested class still. + * (This would allow us to somewhat simplify the implementation of the ListIterator + * interface and give "natural" semantics to Java users of the C++ iterator) + */ + //%typemap(javaclassmodifiers) iterator "public class" + //%typemap(javainterfaces) iterator "java.util.ListIterator<$typemap(jboxtype, T)>" + + struct iterator { + %extend { + void set_unchecked(const T &v) { + **$self = v; + } + + iterator next_unchecked() const { + std::list::iterator ret = *$self; + ++ret; + return ret; + } + + iterator previous_unchecked() const { + std::list::iterator ret = *$self; + --ret; + return ret; + } + + T deref_unchecked() const { + return **$self; + } + + iterator advance_unchecked(size_type index) const { + std::list::iterator ret = *$self; + std::advance(ret, index); + return ret; + } + } + }; + + list(); + list(const list& other); + + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %rename(remove) erase; + iterator erase(iterator pos); + %rename(removeLast) pop_back; + void pop_back(); + %rename(removeFirst) pop_front; + void pop_front(); + %rename(addLast) push_back; + void push_back(const T &value); + %rename(addFirst) push_front; + void push_front(const T &value); + iterator begin(); + iterator end(); + iterator insert(iterator pos, const T &value); + + %extend { + %fragment("SWIG_ListSize"); + + list(jint count, const T &value) throw (std::out_of_range) { + if (count < 0) + throw std::out_of_range("list count must be positive"); + return new std::list(static_cast::size_type>(count), value); + } + + jint doSize() const throw (std::out_of_range) { + return SWIG_ListSize(self->size()); + } + + jint doPreviousIndex(const iterator &pos) const throw (std::out_of_range) { + return pos == self->begin() ? -1 : SWIG_ListSize(std::distance(self->begin(), static_cast::const_iterator>(pos))); + } + + jint doNextIndex(const iterator &pos) const throw (std::out_of_range) { + return pos == self->end() ? SWIG_ListSize(self->size()) : SWIG_ListSize(std::distance(self->begin(), static_cast::const_iterator>(pos))); + } + + bool doHasNext(const iterator &pos) const { + return pos != $self->end(); + } + } + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_map.i b/macx64/bin/swig/share/swig/4.0.0/java/std_map.i new file mode 100644 index 00000000..6d5ca1aa --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_map.i @@ -0,0 +1,224 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * The Java proxy class extends java.util.AbstractMap. The std::map + * container looks and feels much like a java.util.HashMap from Java. + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +%} + +%fragment("SWIG_MapSize", "header", fragment="SWIG_JavaIntFromSize_t") { + SWIGINTERN jint SWIG_MapSize(size_t size) { + jint sz = SWIG_JavaIntFromSize_t(size); + if (sz == -1) { + throw std::out_of_range("map size is too large to fit into a Java int"); + } + + return sz; + } +} + +%javamethodmodifiers std::map::sizeImpl "private"; +%javamethodmodifiers std::map::containsImpl "private"; +%javamethodmodifiers std::map::putUnchecked "private"; +%javamethodmodifiers std::map::removeUnchecked "private"; +%javamethodmodifiers std::map::find "private"; +%javamethodmodifiers std::map::begin "private"; +%javamethodmodifiers std::map::end "private"; + +%rename(Iterator) std::map::iterator; +%nodefaultctor std::map::iterator; +%javamethodmodifiers std::map::iterator::getNextUnchecked "private"; +%javamethodmodifiers std::map::iterator::isNot "private"; +%javamethodmodifiers std::map::iterator::getKey "private"; +%javamethodmodifiers std::map::iterator::getValue "private"; +%javamethodmodifiers std::map::iterator::setValue "private"; + +namespace std { + +template > class map { + +%typemap(javabase) std::map< K, T, C > + "java.util.AbstractMap<$typemap(jboxtype, K), $typemap(jboxtype, T)>" + +%proxycode %{ + + public int size() { + return sizeImpl(); + } + + public boolean containsKey(java.lang.Object key) { + if (!(key instanceof $typemap(jboxtype, K))) { + return false; + } + + return containsImpl(($typemap(jboxtype, K))key); + } + + public $typemap(jboxtype, T) get(java.lang.Object key) { + if (!(key instanceof $typemap(jboxtype, K))) { + return null; + } + + Iterator itr = find(($typemap(jboxtype, K)) key); + if (itr.isNot(end())) { + return itr.getValue(); + } + + return null; + } + + public $typemap(jboxtype, T) put($typemap(jboxtype, K) key, $typemap(jboxtype, T) value) { + Iterator itr = find(($typemap(jboxtype, K)) key); + if (itr.isNot(end())) { + $typemap(jboxtype, T) oldValue = itr.getValue(); + itr.setValue(value); + return oldValue; + } else { + putUnchecked(key, value); + return null; + } + } + + public $typemap(jboxtype, T) remove(java.lang.Object key) { + if (!(key instanceof $typemap(jboxtype, K))) { + return null; + } + + Iterator itr = find(($typemap(jboxtype, K)) key); + if (itr.isNot(end())) { + $typemap(jboxtype, T) oldValue = itr.getValue(); + removeUnchecked(itr); + return oldValue; + } else { + return null; + } + } + + public java.util.Set> entrySet() { + java.util.Set> setToReturn = + new java.util.HashSet>(); + + Iterator itr = begin(); + final Iterator end = end(); + while (itr.isNot(end)) { + setToReturn.add(new Entry<$typemap(jboxtype, K), $typemap(jboxtype, T)>() { + private Iterator iterator; + + private Entry<$typemap(jboxtype, K), $typemap(jboxtype, T)> init(Iterator iterator) { + this.iterator = iterator; + return this; + } + + public $typemap(jboxtype, K) getKey() { + return iterator.getKey(); + } + + public $typemap(jboxtype, T) getValue() { + return iterator.getValue(); + } + + public $typemap(jboxtype, T) setValue($typemap(jboxtype, T) newValue) { + $typemap(jboxtype, T) oldValue = iterator.getValue(); + iterator.setValue(newValue); + return oldValue; + } + }.init(itr)); + itr = itr.getNextUnchecked(); + } + + return setToReturn; + } +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + struct iterator { + %typemap(javaclassmodifiers) iterator "protected class" + %extend { + std::map< K, T, C >::iterator getNextUnchecked() { + std::map< K, T, C >::iterator copy = (*$self); + return ++copy; + } + + bool isNot(iterator other) const { + return (*$self != other); + } + + K getKey() const { + return (*$self)->first; + } + + T getValue() const { + return (*$self)->second; + } + + void setValue(const T& newValue) { + (*$self)->second = newValue; + } + } + }; + + %rename(isEmpty) empty; + bool empty() const; + void clear(); + iterator find(const K& key); + iterator begin(); + iterator end(); + %extend { + %fragment("SWIG_MapSize"); + + jint sizeImpl() const throw (std::out_of_range) { + return SWIG_MapSize(self->size()); + } + + bool containsImpl(const K& key) { + return (self->count(key) > 0); + } + + void putUnchecked(const K& key, const T& value) { + (*self)[key] = value; + } + + void removeUnchecked(const std::map< K, T, C >::iterator itr) { + self->erase(itr); + } + } +}; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/java/std_pair.i new file mode 100644 index 00000000..75ad3031 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_pair.i @@ -0,0 +1,37 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_set.i b/macx64/bin/swig/share/swig/4.0.0/java/std_set.i new file mode 100644 index 00000000..04658f76 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_set.i @@ -0,0 +1,199 @@ +/* ----------------------------------------------------------------------------- + * std_set.i + * + * SWIG typemaps for std::set + * The Java proxy class extends java.util.AbstractSet. The std::set + * container looks and feels much like a java.util.HashSet from Java. + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::set +// ------------------------------------------------------------------------ + +%{ +#include +#include +%} + +%fragment("SWIG_SetSize", "header", fragment="SWIG_JavaIntFromSize_t") { + SWIGINTERN jint SWIG_SetSize(size_t size) { + jint sz = SWIG_JavaIntFromSize_t(size); + if (sz == -1) { + throw std::out_of_range("set size is too large to fit into a Java int"); + } + + return sz; + } +} + +%javamethodmodifiers std::set::sizeImpl "private"; +%javamethodmodifiers std::set::containsImpl "private"; +%javamethodmodifiers std::set::removeImpl "private"; +%javamethodmodifiers std::set::hasNextImpl "private"; +%javamethodmodifiers std::set::begin "private"; +%javamethodmodifiers std::set::end "private"; + +%rename(Iterator) std::set::iterator; +%nodefaultctor std::set::iterator; +%javamethodmodifiers std::set::iterator::incrementUnchecked "private"; +%javamethodmodifiers std::set::iterator::derefUnchecked "private"; +%javamethodmodifiers std::set::iterator::isNot "private"; + +namespace std { + +template +class set { + +%typemap(javabase) std::set "java.util.AbstractSet<$typemap(jboxtype, T)>" +%proxycode %{ + public $javaclassname(java.util.Collection collection) { + this(); + addAll(collection); + } + + public int size() { + return sizeImpl(); + } + + public boolean addAll(java.util.Collection collection) { + boolean didAddElement = false; + for (java.lang.Object object : collection) { + didAddElement |= add(($typemap(jboxtype, T))object); + } + + return didAddElement; + } + + public java.util.Iterator<$typemap(jboxtype, T)> iterator() { + return new java.util.Iterator<$typemap(jboxtype, T)>() { + private Iterator curr; + private Iterator end; + + private java.util.Iterator<$typemap(jboxtype, T)> init() { + curr = $javaclassname.this.begin(); + end = $javaclassname.this.end(); + return this; + } + + public $typemap(jboxtype, T) next() { + if (!hasNext()) { + throw new java.util.NoSuchElementException(); + } + + // Save the current position, increment it, + // then return the value at the position before the increment. + final $typemap(jboxtype, T) currValue = curr.derefUnchecked(); + curr.incrementUnchecked(); + return currValue; + } + + public boolean hasNext() { + return curr.isNot(end); + } + }.init(); + } + + public boolean containsAll(java.util.Collection collection) { + for (java.lang.Object object : collection) { + if (!contains(object)) { + return false; + } + } + + return true; + } + + public boolean contains(java.lang.Object object) { + if (!(object instanceof $typemap(jboxtype, T))) { + return false; + } + + return containsImpl(($typemap(jboxtype, T))object); + } + + public boolean removeAll(java.util.Collection collection) { + boolean didRemoveElement = false; + for (java.lang.Object object : collection) { + didRemoveElement |= remove(object); + } + + return didRemoveElement; + } + + public boolean remove(java.lang.Object object) { + if (!(object instanceof $typemap(jboxtype, T))) { + return false; + } + + return removeImpl(($typemap(jboxtype, T))object); + } +%} + + public: + + struct iterator { + %typemap(javaclassmodifiers) iterator "protected class" + %extend { + void incrementUnchecked() { + ++(*$self); + } + + T derefUnchecked() const { + return **$self; + } + + bool isNot(iterator other) const { + return (*$self != other); + } + } + }; + + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T key_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + set(); + set(const set& other); + + %rename(isEmpty) empty; + bool empty() const; + void clear(); + iterator begin(); + iterator end(); + + %extend { + %fragment("SWIG_SetSize"); + + // Returns whether item was inserted. + bool add(const T& key) { + return self->insert(key).second; + } + + // Returns whether set contains key. + bool containsImpl(const T& key) { + return (self->count(key) > 0); + } + + // Returns whether the item was erased. + bool removeImpl(const T& key) { + return (self->erase(key) > 0); + } + + jint sizeImpl() const throw (std::out_of_range) { + return SWIG_SetSize(self->size()); + } + + bool hasNextImpl(const iterator& itr) const { + return (itr != $self->end()); + } + } +}; + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/java/std_shared_ptr.i new file mode 100644 index 00000000..df873679 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_shared_ptr.i @@ -0,0 +1,2 @@ +#define SWIG_SHARED_PTR_NAMESPACE std +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_string.i b/macx64/bin/swig/share/swig/4.0.0/java/std_string.i new file mode 100644 index 00000000..830a8961 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_string.i @@ -0,0 +1,121 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * Typemaps for std::string and const std::string& + * These are mapped to a Java String and are passed around by value. + * + * To use non-const std::string references use the following %apply. Note + * that they are passed by value. + * %apply const std::string & {std::string &}; + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +namespace std { + +%naturalvar string; + +class string; + +// string +%typemap(jni) string "jstring" +%typemap(jtype) string "String" +%typemap(jstype) string "String" +%typemap(javadirectorin) string "$jniinput" +%typemap(javadirectorout) string "$javacall" + +%typemap(in) string +%{ if(!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return $null; + } + const char *$1_pstr = (const char *)jenv->GetStringUTFChars($input, 0); + if (!$1_pstr) return $null; + $1.assign($1_pstr); + jenv->ReleaseStringUTFChars($input, $1_pstr); %} + +%typemap(directorout) string +%{ if(!$input) { + if (!jenv->ExceptionCheck()) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + } + return $null; + } + const char *$1_pstr = (const char *)jenv->GetStringUTFChars($input, 0); + if (!$1_pstr) return $null; + $result.assign($1_pstr); + jenv->ReleaseStringUTFChars($input, $1_pstr); %} + +%typemap(directorin,descriptor="Ljava/lang/String;") string +%{ $input = jenv->NewStringUTF($1.c_str()); + Swig::LocalRefGuard $1_refguard(jenv, $input); %} + +%typemap(out) string +%{ $result = jenv->NewStringUTF($1.c_str()); %} + +%typemap(javain) string "$javainput" + +%typemap(javaout) string { + return $jnicall; + } + +%typemap(typecheck) string = char *; + +%typemap(throws) string +%{ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1.c_str()); + return $null; %} + +// const string & +%typemap(jni) const string & "jstring" +%typemap(jtype) const string & "String" +%typemap(jstype) const string & "String" +%typemap(javadirectorin) const string & "$jniinput" +%typemap(javadirectorout) const string & "$javacall" + +%typemap(in) const string & +%{ if(!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return $null; + } + const char *$1_pstr = (const char *)jenv->GetStringUTFChars($input, 0); + if (!$1_pstr) return $null; + $*1_ltype $1_str($1_pstr); + $1 = &$1_str; + jenv->ReleaseStringUTFChars($input, $1_pstr); %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const string & +%{ if(!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return $null; + } + const char *$1_pstr = (const char *)jenv->GetStringUTFChars($input, 0); + if (!$1_pstr) return $null; + /* possible thread/reentrant code problem */ + static $*1_ltype $1_str; + $1_str = $1_pstr; + $result = &$1_str; + jenv->ReleaseStringUTFChars($input, $1_pstr); %} + +%typemap(directorin,descriptor="Ljava/lang/String;") const string & +%{ $input = jenv->NewStringUTF($1.c_str()); + Swig::LocalRefGuard $1_refguard(jenv, $input); %} + +%typemap(out) const string & +%{ $result = jenv->NewStringUTF($1->c_str()); %} + +%typemap(javain) const string & "$javainput" + +%typemap(javaout) const string & { + return $jnicall; + } + +%typemap(typecheck) const string & = char *; + +%typemap(throws) const string & +%{ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1.c_str()); + return $null; %} + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_unordered_map.i b/macx64/bin/swig/share/swig/4.0.0/java/std_unordered_map.i new file mode 100644 index 00000000..283a9b46 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_unordered_map.i @@ -0,0 +1,211 @@ +/* ----------------------------------------------------------------------------- + * std_unordered_map.i + * + * SWIG typemaps for std::unordered_map + * The Java proxy class extends java.util.AbstractMap. The std::unordered_map + * container looks and feels much like a java.util.HashMap from Java. + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::unordered_map +// ------------------------------------------------------------------------ + +%{ +#include +#include +%} + +%fragment("SWIG_MapSize", "header", fragment="SWIG_JavaIntFromSize_t") { + SWIGINTERN jint SWIG_MapSize(size_t size) { + jint sz = SWIG_JavaIntFromSize_t(size); + if (sz == -1) { + throw std::out_of_range("map size is too large to fit into a Java int"); + } + + return sz; + } +} + +%javamethodmodifiers std::unordered_map::sizeImpl "private"; +%javamethodmodifiers std::unordered_map::containsImpl "private"; +%javamethodmodifiers std::unordered_map::putUnchecked "private"; +%javamethodmodifiers std::unordered_map::removeUnchecked "private"; +%javamethodmodifiers std::unordered_map::find "private"; +%javamethodmodifiers std::unordered_map::begin "private"; +%javamethodmodifiers std::unordered_map::end "private"; + +%rename(Iterator) std::unordered_map::iterator; +%nodefaultctor std::unordered_map::iterator; +%javamethodmodifiers std::unordered_map::iterator::getNextUnchecked "private"; +%javamethodmodifiers std::unordered_map::iterator::isNot "private"; +%javamethodmodifiers std::unordered_map::iterator::getKey "private"; +%javamethodmodifiers std::unordered_map::iterator::getValue "private"; +%javamethodmodifiers std::unordered_map::iterator::setValue "private"; + +namespace std { + +template class unordered_map { + +%typemap(javabase) std::unordered_map + "java.util.AbstractMap<$typemap(jboxtype, K), $typemap(jboxtype, T)>" + +%proxycode %{ + + public int size() { + return sizeImpl(); + } + + public boolean containsKey(java.lang.Object key) { + if (!(key instanceof $typemap(jboxtype, K))) { + return false; + } + + return containsImpl(($typemap(jboxtype, K))key); + } + + public $typemap(jboxtype, T) get(java.lang.Object key) { + if (!(key instanceof $typemap(jboxtype, K))) { + return null; + } + + Iterator itr = find(($typemap(jboxtype, K)) key); + if (itr.isNot(end())) { + return itr.getValue(); + } + + return null; + } + + public $typemap(jboxtype, T) put($typemap(jboxtype, K) key, $typemap(jboxtype, T) value) { + Iterator itr = find(($typemap(jboxtype, K)) key); + if (itr.isNot(end())) { + $typemap(jboxtype, T) oldValue = itr.getValue(); + itr.setValue(value); + return oldValue; + } else { + putUnchecked(key, value); + return null; + } + } + + public $typemap(jboxtype, T) remove(java.lang.Object key) { + if (!(key instanceof $typemap(jboxtype, K))) { + return null; + } + + Iterator itr = find(($typemap(jboxtype, K)) key); + if (itr.isNot(end())) { + $typemap(jboxtype, T) oldValue = itr.getValue(); + removeUnchecked(itr); + return oldValue; + } else { + return null; + } + } + + public java.util.Set> entrySet() { + java.util.Set> setToReturn = + new java.util.HashSet>(); + + Iterator itr = begin(); + final Iterator end = end(); + while (itr.isNot(end)) { + setToReturn.add(new Entry<$typemap(jboxtype, K), $typemap(jboxtype, T)>() { + private Iterator iterator; + + private Entry<$typemap(jboxtype, K), $typemap(jboxtype, T)> init(Iterator iterator) { + this.iterator = iterator; + return this; + } + + public $typemap(jboxtype, K) getKey() { + return iterator.getKey(); + } + + public $typemap(jboxtype, T) getValue() { + return iterator.getValue(); + } + + public $typemap(jboxtype, T) setValue($typemap(jboxtype, T) newValue) { + $typemap(jboxtype, T) oldValue = iterator.getValue(); + iterator.setValue(newValue); + return oldValue; + } + }.init(itr)); + itr = itr.getNextUnchecked(); + } + + return setToReturn; + } +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + unordered_map(); + unordered_map(const unordered_map& other); + + struct iterator { + %typemap(javaclassmodifiers) iterator "protected class" + %extend { + std::unordered_map< K, T >::iterator getNextUnchecked() { + std::unordered_map< K, T >::iterator copy = (*$self); + return ++copy; + } + + bool isNot(iterator other) const { + return (*$self != other); + } + + K getKey() const { + return (*$self)->first; + } + + T getValue() const { + return (*$self)->second; + } + + void setValue(const T& newValue) { + (*$self)->second = newValue; + } + } + }; + + %rename(isEmpty) empty; + bool empty() const; + void clear(); + iterator find(const K& key); + iterator begin(); + iterator end(); + %extend { + %fragment("SWIG_MapSize"); + + jint sizeImpl() const throw (std::out_of_range) { + return SWIG_MapSize(self->size()); + } + + bool containsImpl(const K& key) { + return (self->count(key) > 0); + } + + void putUnchecked(const K& key, const T& value) { + (*self)[key] = value; + } + + void removeUnchecked(const std::unordered_map< K, T >::iterator itr) { + self->erase(itr); + } + } +}; + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_unordered_set.i b/macx64/bin/swig/share/swig/4.0.0/java/std_unordered_set.i new file mode 100644 index 00000000..59726e94 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_unordered_set.i @@ -0,0 +1,199 @@ +/* ----------------------------------------------------------------------------- + * std_unordered_set.i + * + * SWIG typemaps for std::unordered_set + * The Java proxy class extends java.util.AbstractSet. The std::unordered_set + * container looks and feels much like a java.util.HashSet from Java. + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::unordered_set +// ------------------------------------------------------------------------ + +%{ +#include +#include +%} + +%fragment("SWIG_UnorderedSetSize", "header", fragment="SWIG_JavaIntFromSize_t") { + SWIGINTERN jint SWIG_UnorderedSetSize(size_t size) { + jint sz = SWIG_JavaIntFromSize_t(size); + if (sz == -1) { + throw std::out_of_range("unordered_set size is too large to fit into a Java int"); + } + + return sz; + } +} + +%javamethodmodifiers std::unordered_set::sizeImpl "private"; +%javamethodmodifiers std::unordered_set::containsImpl "private"; +%javamethodmodifiers std::unordered_set::removeImpl "private"; +%javamethodmodifiers std::unordered_set::hasNextImpl "private"; +%javamethodmodifiers std::unordered_set::begin "private"; +%javamethodmodifiers std::unordered_set::end "private"; + +%rename(Iterator) std::unordered_set::iterator; +%nodefaultctor std::unordered_set::iterator; +%javamethodmodifiers std::unordered_set::iterator::incrementUnchecked "private"; +%javamethodmodifiers std::unordered_set::iterator::derefUnchecked "private"; +%javamethodmodifiers std::unordered_set::iterator::isNot "private"; + +namespace std { + +template +class unordered_set { + +%typemap(javabase) std::unordered_set "java.util.AbstractSet<$typemap(jboxtype, Key)>" +%proxycode %{ + public $javaclassname(java.util.Collection collection) { + this(); + addAll(collection); + } + + public int size() { + return sizeImpl(); + } + + public boolean addAll(java.util.Collection collection) { + boolean didAddElement = false; + for (java.lang.Object object : collection) { + didAddElement |= add(($typemap(jboxtype, Key))object); + } + + return didAddElement; + } + + public java.util.Iterator<$typemap(jboxtype, Key)> iterator() { + return new java.util.Iterator<$typemap(jboxtype, Key)>() { + private Iterator curr; + private Iterator end; + + private java.util.Iterator<$typemap(jboxtype, Key)> init() { + curr = $javaclassname.this.begin(); + end = $javaclassname.this.end(); + return this; + } + + public $typemap(jboxtype, Key) next() { + if (!hasNext()) { + throw new java.util.NoSuchElementException(); + } + + // Save the current position, increment it, + // then return the value at the position before the increment. + final $typemap(jboxtype, Key) currValue = curr.derefUnchecked(); + curr.incrementUnchecked(); + return currValue; + } + + public boolean hasNext() { + return curr.isNot(end); + } + }.init(); + } + + public boolean containsAll(java.util.Collection collection) { + for (java.lang.Object object : collection) { + if (!contains(object)) { + return false; + } + } + + return true; + } + + public boolean contains(java.lang.Object object) { + if (!(object instanceof $typemap(jboxtype, Key))) { + return false; + } + + return containsImpl(($typemap(jboxtype, Key))object); + } + + public boolean removeAll(java.util.Collection collection) { + boolean didRemoveElement = false; + for (java.lang.Object object : collection) { + didRemoveElement |= remove(object); + } + + return didRemoveElement; + } + + public boolean remove(java.lang.Object object) { + if (!(object instanceof $typemap(jboxtype, Key))) { + return false; + } + + return removeImpl(($typemap(jboxtype, Key))object); + } +%} + + public: + + struct iterator { + %typemap(javaclassmodifiers) iterator "protected class" + %extend { + void incrementUnchecked() { + ++(*$self); + } + + Key derefUnchecked() const { + return **$self; + } + + bool isNot(iterator other) const { + return (*$self != other); + } + } + }; + + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef Key value_type; + typedef Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + unordered_set(); + unordered_set(const unordered_set& other); + + %rename(isEmpty) empty; + bool empty() const; + void clear(); + iterator begin(); + iterator end(); + + %extend { + %fragment("SWIG_UnorderedSetSize"); + + // Returns whether item was inserted. + bool add(const Key& key) { + return self->insert(key).second; + } + + // Returns whether set contains key. + bool containsImpl(const Key& key) { + return (self->count(key) > 0); + } + + // Returns whether the item was erased. + bool removeImpl(const Key& key) { + return (self->erase(key) > 0); + } + + jint sizeImpl() const throw (std::out_of_range) { + return SWIG_UnorderedSetSize(self->size()); + } + + bool hasNextImpl(const iterator& itr) const { + return (itr != $self->end()); + } + } +}; + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/java/std_vector.i new file mode 100644 index 00000000..955e20ca --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_vector.i @@ -0,0 +1,184 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * + * SWIG typemaps for std::vector. + * The Java proxy class extends java.util.AbstractList and implements + * java.util.RandomAccess. The std::vector container looks and feels much like a + * java.util.ArrayList from Java. + * ----------------------------------------------------------------------------- */ + +%include + +%{ +#include +#include +%} + +%fragment("SWIG_VectorSize", "header", fragment="SWIG_JavaIntFromSize_t") { +SWIGINTERN jint SWIG_VectorSize(size_t size) { + jint sz = SWIG_JavaIntFromSize_t(size); + if (sz == -1) + throw std::out_of_range("vector size is too large to fit into a Java int"); + return sz; +} +} + +%define SWIG_STD_VECTOR_MINIMUM_INTERNAL(CTYPE, CONST_REFERENCE) +%typemap(javabase) std::vector< CTYPE > "java.util.AbstractList<$typemap(jboxtype, CTYPE)>" +%typemap(javainterfaces) std::vector< CTYPE > "java.util.RandomAccess" +%proxycode %{ + public $javaclassname($typemap(jstype, CTYPE)[] initialElements) { + this(); + for ($typemap(jstype, CTYPE) element : initialElements) { + add(element); + } + } + + public $javaclassname(Iterable<$typemap(jboxtype, CTYPE)> initialElements) { + this(); + for ($typemap(jstype, CTYPE) element : initialElements) { + add(element); + } + } + + public $typemap(jboxtype, CTYPE) get(int index) { + return doGet(index); + } + + public $typemap(jboxtype, CTYPE) set(int index, $typemap(jboxtype, CTYPE) e) { + return doSet(index, e); + } + + public boolean add($typemap(jboxtype, CTYPE) e) { + modCount++; + doAdd(e); + return true; + } + + public void add(int index, $typemap(jboxtype, CTYPE) e) { + modCount++; + doAdd(index, e); + } + + public $typemap(jboxtype, CTYPE) remove(int index) { + modCount++; + return doRemove(index); + } + + protected void removeRange(int fromIndex, int toIndex) { + modCount++; + doRemoveRange(fromIndex, toIndex); + } + + public int size() { + return doSize(); + } +%} + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef CTYPE value_type; + typedef CTYPE *pointer; + typedef CTYPE const *const_pointer; + typedef CTYPE &reference; + typedef CONST_REFERENCE const_reference; + + vector(); + vector(const vector &other); + + size_type capacity() const; + void reserve(size_type n) throw (std::length_error); + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %extend { + %fragment("SWIG_VectorSize"); + + vector(jint count, const CTYPE &value) throw (std::out_of_range) { + if (count < 0) + throw std::out_of_range("vector count must be positive"); + return new std::vector< CTYPE >(static_cast::size_type>(count), value); + } + + jint doSize() const throw (std::out_of_range) { + return SWIG_VectorSize(self->size()); + } + + void doAdd(const value_type& x) { + self->push_back(x); + } + + void doAdd(jint index, const value_type& x) throw (std::out_of_range) { + jint size = static_cast(self->size()); + if (0 <= index && index <= size) { + self->insert(self->begin() + index, x); + } else { + throw std::out_of_range("vector index out of range"); + } + } + + value_type doRemove(jint index) throw (std::out_of_range) { + jint size = static_cast(self->size()); + if (0 <= index && index < size) { + CTYPE const old_value = (*self)[index]; + self->erase(self->begin() + index); + return old_value; + } else { + throw std::out_of_range("vector index out of range"); + } + } + + CONST_REFERENCE doGet(jint index) throw (std::out_of_range) { + jint size = static_cast(self->size()); + if (index >= 0 && index < size) + return (*self)[index]; + else + throw std::out_of_range("vector index out of range"); + } + + value_type doSet(jint index, const value_type& val) throw (std::out_of_range) { + jint size = static_cast(self->size()); + if (index >= 0 && index < size) { + CTYPE const old_value = (*self)[index]; + (*self)[index] = val; + return old_value; + } + else + throw std::out_of_range("vector index out of range"); + } + + void doRemoveRange(jint fromIndex, jint toIndex) throw (std::out_of_range) { + jint size = static_cast(self->size()); + if (0 <= fromIndex && fromIndex <= toIndex && toIndex <= size) { + self->erase(self->begin() + fromIndex, self->begin() + toIndex); + } else { + throw std::out_of_range("vector index out of range"); + } + } + } +%enddef + +%javamethodmodifiers std::vector::doSize "private"; +%javamethodmodifiers std::vector::doAdd "private"; +%javamethodmodifiers std::vector::doGet "private"; +%javamethodmodifiers std::vector::doSet "private"; +%javamethodmodifiers std::vector::doRemove "private"; +%javamethodmodifiers std::vector::doRemoveRange "private"; + +namespace std { + + template class vector { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(T, const value_type&) + }; + + // bool specialization + template<> class vector { + SWIG_STD_VECTOR_MINIMUM_INTERNAL(bool, bool) + }; +} + +%define specialize_std_vector(T) +#warning "specialize_std_vector - specialization for type T no longer needed" +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/std_wstring.i b/macx64/bin/swig/share/swig/4.0.0/java/std_wstring.i new file mode 100644 index 00000000..dd0b2f5f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/std_wstring.i @@ -0,0 +1,174 @@ +/* ----------------------------------------------------------------------------- + * std_wstring.i + * + * Typemaps for std::wstring and const std::wstring& + * + * These are mapped to a Java String and are passed around by value. + * Warning: Unicode / multibyte characters are handled differently on different + * OSs so the std::wstring typemaps may not always work as intended. + * + * To use non-const std::wstring references use the following %apply. Note + * that they are passed by value. + * %apply const std::wstring & {std::wstring &}; + * ----------------------------------------------------------------------------- */ + +namespace std { + +%naturalvar wstring; + +class wstring; + +// wstring +%typemap(jni) wstring "jstring" +%typemap(jtype) wstring "String" +%typemap(jstype) wstring "String" +%typemap(javadirectorin) wstring "$jniinput" +%typemap(javadirectorout) wstring "$javacall" + +%typemap(in) wstring +%{if(!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null std::wstring"); + return $null; + } + const jchar *$1_pstr = jenv->GetStringChars($input, 0); + if (!$1_pstr) return $null; + jsize $1_len = jenv->GetStringLength($input); + if ($1_len) { + $1.reserve($1_len); + for (jsize i = 0; i < $1_len; ++i) { + $1.push_back((wchar_t)$1_pstr[i]); + } + } + jenv->ReleaseStringChars($input, $1_pstr); + %} + +%typemap(directorout) wstring +%{if(!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null std::wstring"); + return $null; + } + const jchar *$1_pstr = jenv->GetStringChars($input, 0); + if (!$1_pstr) return $null; + jsize $1_len = jenv->GetStringLength($input); + if ($1_len) { + $result.reserve($1_len); + for (jsize i = 0; i < $1_len; ++i) { + $result.push_back((wchar_t)$1_pstr[i]); + } + } + jenv->ReleaseStringChars($input, $1_pstr); + %} + +%typemap(directorin,descriptor="Ljava/lang/String;") wstring %{ + jsize $1_len = $1.length(); + jchar *$1_conv_buf = new jchar[$1_len]; + for (jsize i = 0; i < $1_len; ++i) { + $1_conv_buf[i] = (jchar)$1[i]; + } + $input = jenv->NewString($1_conv_buf, $1_len); + Swig::LocalRefGuard $1_refguard(jenv, $input); + delete [] $1_conv_buf; +%} + +%typemap(out) wstring +%{jsize $1_len = $1.length(); + jchar *conv_buf = new jchar[$1_len]; + for (jsize i = 0; i < $1_len; ++i) { + conv_buf[i] = (jchar)$1[i]; + } + $result = jenv->NewString(conv_buf, $1_len); + delete [] conv_buf; %} + +%typemap(javain) wstring "$javainput" + +%typemap(javaout) wstring { + return $jnicall; + } + +//%typemap(typecheck) wstring = wchar_t *; + +%typemap(throws) wstring +%{ std::string message($1.begin(), $1.end()); + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, message.c_str()); + return $null; %} + +// const wstring & +%typemap(jni) const wstring & "jstring" +%typemap(jtype) const wstring & "String" +%typemap(jstype) const wstring & "String" +%typemap(javadirectorin) const wstring & "$jniinput" +%typemap(javadirectorout) const wstring & "$javacall" + +%typemap(in) const wstring & +%{if(!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null std::wstring"); + return $null; + } + const jchar *$1_pstr = jenv->GetStringChars($input, 0); + if (!$1_pstr) return $null; + jsize $1_len = jenv->GetStringLength($input); + std::wstring $1_str; + if ($1_len) { + $1_str.reserve($1_len); + for (jsize i = 0; i < $1_len; ++i) { + $1_str.push_back((wchar_t)$1_pstr[i]); + } + } + $1 = &$1_str; + jenv->ReleaseStringChars($input, $1_pstr); + %} + +%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const wstring & +%{if(!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null std::wstring"); + return $null; + } + const jchar *$1_pstr = jenv->GetStringChars($input, 0); + if (!$1_pstr) return $null; + jsize $1_len = jenv->GetStringLength($input); + /* possible thread/reentrant code problem */ + static std::wstring $1_str; + if ($1_len) { + $1_str.reserve($1_len); + for (jsize i = 0; i < $1_len; ++i) { + $1_str.push_back((wchar_t)$1_pstr[i]); + } + } + $result = &$1_str; + jenv->ReleaseStringChars($input, $1_pstr); %} + +%typemap(directorin,descriptor="Ljava/lang/String;") const wstring & %{ + jsize $1_len = $1.length(); + jchar *$1_conv_buf = new jchar[$1_len]; + for (jsize i = 0; i < $1_len; ++i) { + $1_conv_buf[i] = (jchar)($1)[i]; + } + $input = jenv->NewString($1_conv_buf, $1_len); + Swig::LocalRefGuard $1_refguard(jenv, $input); + delete [] $1_conv_buf; +%} + +%typemap(out) const wstring & +%{jsize $1_len = $1->length(); + jchar *conv_buf = new jchar[$1_len]; + for (jsize i = 0; i < $1_len; ++i) { + conv_buf[i] = (jchar)(*$1)[i]; + } + $result = jenv->NewString(conv_buf, $1_len); + delete [] conv_buf; %} + +%typemap(javain) const wstring & "$javainput" + +%typemap(javaout) const wstring & { + return $jnicall; + } + +//%typemap(typecheck) const wstring & = wchar_t *; + +%typemap(throws) const wstring & +%{ std::string message($1.begin(), $1.end()); + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, message.c_str()); + return $null; %} + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/stl.i b/macx64/bin/swig/share/swig/4.0.0/java/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/swiginterface.i b/macx64/bin/swig/share/swig/4.0.0/java/swiginterface.i new file mode 100644 index 00000000..33446415 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/swiginterface.i @@ -0,0 +1,74 @@ +/* ----------------------------------------------------------------------------- + * swiginterface.i + * + * SWIG interface feature and typemaps implementation providing: + * %interface + * %interface_impl + * %interface_custom + * ----------------------------------------------------------------------------- */ + +%define INTERFACE_TYPEMAPS(CTYPE...) +%typemap(jtype) CTYPE, CTYPE *, CTYPE *const&, CTYPE [], CTYPE & "long" +%typemap(jstype) CTYPE "$&javainterfacename" +%typemap(jstype) CTYPE *, CTYPE [], CTYPE & "$javainterfacename" +%typemap(jstype) CTYPE *const& "$*javainterfacename" +%typemap(javain) CTYPE "$javainput.$&interfacename_GetInterfaceCPtr()" +%typemap(javain) CTYPE & "$javainput.$interfacename_GetInterfaceCPtr()" +%typemap(javain) CTYPE *, CTYPE [] "($javainput == null) ? 0 : $javainput.$interfacename_GetInterfaceCPtr()" +%typemap(javain) CTYPE *const& "($javainput == null) ? 0 : $javainput.$*interfacename_GetInterfaceCPtr()" +%typemap(javaout) CTYPE { + return ($&javainterfacename)new $&javaclassname($jnicall, true); + } +%typemap(javaout) CTYPE & { + return ($javainterfacename)new $javaclassname($jnicall, $owner); + } +%typemap(javaout) CTYPE *, CTYPE [] { + long cPtr = $jnicall; + return (cPtr == 0) ? null : ($javainterfacename)new $javaclassname(cPtr, $owner); + } +%typemap(javaout) CTYPE *const& { + long cPtr = $jnicall; + return (cPtr == 0) ? null : ($javainterfacename)new $javaclassname(cPtr, $owner); + } + +%typemap(javadirectorin) CTYPE "($&javainterfacename)new $&javaclassname($jniinput, true)" +%typemap(javadirectorin) CTYPE & "($javainterfacename)new $javaclassname($jniinput, false)" +%typemap(javadirectorin) CTYPE *, CTYPE [] "($jniinput == 0) ? null : ($javainterfacename)new $javaclassname($jniinput, false)" +%typemap(javadirectorin) CTYPE *const& "($jniinput == 0) ? null : ($*javainterfacename)new $*javaclassname($jniinput, false)" +%typemap(javadirectorout) CTYPE "$javacall.$&interfacename_GetInterfaceCPtr()" +%typemap(javadirectorout) CTYPE *, CTYPE [], CTYPE & "$javacall.$interfacename_GetInterfaceCPtr()" +%typemap(javadirectorout) CTYPE *const& "$javacall.$*interfacename_GetInterfaceCPtr()" +%typemap(directorin,descriptor="L$packagepath/$&javainterfacename;") CTYPE +%{ $input = 0; + *(($&1_ltype*)&$input) = new $1_ltype((const $1_ltype &)$1); %} +%typemap(directorin,descriptor="L$packagepath/$javainterfacename;") CTYPE *, CTYPE [] +%{ *(($&1_ltype)&$input) = ($1_ltype) $1; %} +%typemap(directorin,descriptor="L$packagepath/$javainterfacename;") CTYPE & +%{ *($&1_ltype)&$input = ($1_ltype) &$1; %} +%typemap(directorin,descriptor="L$packagepath/$*javainterfacename;") CTYPE *const& +%{ *($&1_ltype)&$input = ($1_ltype) &$1; %} + +%typemap(javainterfacecode, declaration=" long $interfacename_GetInterfaceCPtr();\n", cptrmethod="$interfacename_GetInterfaceCPtr") CTYPE %{ + public long $interfacename_GetInterfaceCPtr() { + return $imclassname.$javaclazzname$interfacename_GetInterfaceCPtr(swigCPtr); + } +%} +%enddef + +%define %interface(CTYPE...) +%feature("interface", name="%sSwigInterface") CTYPE; +INTERFACE_TYPEMAPS(CTYPE) +%enddef + +%define %interface_impl(CTYPE...) +%rename("%sSwigImpl") CTYPE; +%feature("interface", name="%(rstrip:[SwigImpl])s") CTYPE; +INTERFACE_TYPEMAPS(CTYPE) +%enddef + +%define %interface_custom(PROXY, INTERFACE, CTYPE...) +%rename(PROXY) CTYPE; +%feature("interface", name=INTERFACE) CTYPE; +INTERFACE_TYPEMAPS(CTYPE) +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/java/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/java/typemaps.i new file mode 100644 index 00000000..e130c193 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/java/typemaps.i @@ -0,0 +1,529 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Pointer and reference handling typemap library + * + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers and C++ references. + * ----------------------------------------------------------------------------- */ + +/* +INPUT typemaps +-------------- + +These typemaps remap a C pointer or C++ reference to be an "INPUT" value which is +passed by value instead of reference. + +The following typemaps can be applied to turn a pointer or reference into a simple +input value. That is, instead of passing a pointer or reference to an object, +you would use a real value instead. + + bool *INPUT, bool &INPUT + signed char *INPUT, signed char &INPUT + unsigned char *INPUT, unsigned char &INPUT + short *INPUT, short &INPUT + unsigned short *INPUT, unsigned short &INPUT + int *INPUT, int &INPUT + unsigned int *INPUT, unsigned int &INPUT + long *INPUT, long &INPUT + unsigned long *INPUT, unsigned long &INPUT + long long *INPUT, long long &INPUT + unsigned long long *INPUT, unsigned long long &INPUT + float *INPUT, float &INPUT + double *INPUT, double &INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +In Java you could then use it like this: + double answer = modulename.fadd(10.0, 20.0); + +There are no char *INPUT typemaps, however you can apply the signed char * typemaps instead: + %include + %apply signed char *INPUT {char *input}; + void f(char *input); +*/ + +%define INPUT_TYPEMAP(TYPE, JNITYPE, JTYPE, JNIDESC) +%typemap(jni) TYPE *INPUT, TYPE &INPUT "JNITYPE" +%typemap(jtype) TYPE *INPUT, TYPE &INPUT "JTYPE" +%typemap(jstype) TYPE *INPUT, TYPE &INPUT "JTYPE" +%typemap(javain) TYPE *INPUT, TYPE &INPUT "$javainput" + +%typemap(in) TYPE *INPUT, TYPE &INPUT +%{ $1 = ($1_ltype)&$input; %} + +%typemap(freearg) TYPE *INPUT, TYPE &INPUT "" + +%typemap(typecheck) TYPE *INPUT = TYPE; +%typemap(typecheck) TYPE &INPUT = TYPE; +%enddef + +INPUT_TYPEMAP(bool, jboolean, boolean, "Z"); +INPUT_TYPEMAP(signed char, jbyte, byte, "B"); +INPUT_TYPEMAP(unsigned char, jshort, short, "S"); +INPUT_TYPEMAP(short, jshort, short, "S"); +INPUT_TYPEMAP(unsigned short, jint, int, "I"); +INPUT_TYPEMAP(int, jint, int, "I"); +INPUT_TYPEMAP(unsigned int, jlong, long, "J"); +INPUT_TYPEMAP(long, jint, int, "I"); +INPUT_TYPEMAP(unsigned long, jlong, long, "J"); +INPUT_TYPEMAP(long long, jlong, long, "J"); +INPUT_TYPEMAP(unsigned long long, jobject, java.math.BigInteger, "Ljava/math/BigInteger;"); +INPUT_TYPEMAP(float, jfloat, float, "F"); +INPUT_TYPEMAP(double, jdouble, double, "D"); + +#undef INPUT_TYPEMAP + +/* Convert from BigInteger using the toByteArray member function */ +/* Overrides the typemap in the INPUT_TYPEMAP macro */ +%typemap(in) unsigned long long *INPUT($*1_ltype temp), unsigned long long &INPUT($*1_ltype temp) { + jclass clazz; + jmethodID mid; + jbyteArray ba; + jbyte* bae; + jsize sz; + int i; + + if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "BigInteger null"); + return $null; + } + clazz = JCALL1(GetObjectClass, jenv, $input); + mid = JCALL3(GetMethodID, jenv, clazz, "toByteArray", "()[B"); + ba = (jbyteArray)JCALL2(CallObjectMethod, jenv, $input, mid); + bae = JCALL2(GetByteArrayElements, jenv, ba, 0); + sz = JCALL1(GetArrayLength, jenv, ba); + temp = 0; + if (sz > 0) { + temp = ($*1_ltype)(signed char)bae[0]; + for(i=1; i + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Java output of the function would be the function return value and the +value in the single element array. In Java you would use it like this: + + double[] ptr = {0.0}; + double fraction = modulename.modf(5.0,ptr); + +There are no char *OUTPUT typemaps, however you can apply the signed char * typemaps instead: + %include + %apply signed char *OUTPUT {char *output}; + void f(char *output); +*/ + +/* Java BigInteger[] */ +%typecheck(SWIG_TYPECHECK_INT128_ARRAY) SWIGBIGINTEGERARRAY "" + +%define OUTPUT_TYPEMAP(TYPE, JNITYPE, JTYPE, JAVATYPE, JNIDESC, TYPECHECKTYPE) +%typemap(jni) TYPE *OUTPUT, TYPE &OUTPUT %{JNITYPE##Array%} +%typemap(jtype) TYPE *OUTPUT, TYPE &OUTPUT "JTYPE[]" +%typemap(jstype) TYPE *OUTPUT, TYPE &OUTPUT "JTYPE[]" +%typemap(javain) TYPE *OUTPUT, TYPE &OUTPUT "$javainput" +%typemap(javadirectorin) TYPE *OUTPUT, TYPE &OUTPUT "$jniinput" +%typemap(javadirectorout) TYPE *OUTPUT, TYPE &OUTPUT "$javacall" + +%typemap(in) TYPE *OUTPUT($*1_ltype temp), TYPE &OUTPUT($*1_ltype temp) +{ + if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); + return $null; + } + if (JCALL1(GetArrayLength, jenv, $input) == 0) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); + return $null; + } + temp = ($*1_ltype)0; + $1 = &temp; +} + +%typemap(freearg) TYPE *OUTPUT, TYPE &OUTPUT "" + +%typemap(argout) TYPE *OUTPUT, TYPE &OUTPUT +{ + JNITYPE jvalue = (JNITYPE)temp$argnum; + JCALL4(Set##JAVATYPE##ArrayRegion, jenv, $input, 0, 1, &jvalue); +} + +%typemap(directorin,descriptor=JNIDESC) TYPE &OUTPUT %{ + $input = JCALL1(New##JAVATYPE##Array, jenv, 1); + if (!$input) return $null; + Swig::LocalRefGuard $1_refguard(jenv, $input); %} + +%typemap(directorin,descriptor=JNIDESC) TYPE *OUTPUT %{ + if ($1) { + $input = JCALL1(New##JAVATYPE##Array, jenv, 1); + if (!$input) return $null; + } + Swig::LocalRefGuard $1_refguard(jenv, $input); %} + +%typemap(directorargout, noblock=1) TYPE &OUTPUT +{ + JNITYPE $1_jvalue; + JCALL4(Get##JAVATYPE##ArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + $result = ($*1_ltype)$1_jvalue; +} + +%typemap(directorargout, noblock=1) TYPE *OUTPUT +{ + if ($result) { + JNITYPE $1_jvalue; + JCALL4(Get##JAVATYPE##ArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + *$result = ($*1_ltype)$1_jvalue; + } +} + +%typemap(typecheck) TYPE *OUTPUT = TYPECHECKTYPE; +%typemap(typecheck) TYPE &OUTPUT = TYPECHECKTYPE; +%enddef + +OUTPUT_TYPEMAP(bool, jboolean, boolean, Boolean, "[Z", jbooleanArray); +OUTPUT_TYPEMAP(signed char, jbyte, byte, Byte, "[B", jbyteArray); +OUTPUT_TYPEMAP(unsigned char, jshort, short, Short, "[S", jshortArray); +OUTPUT_TYPEMAP(short, jshort, short, Short, "[S", jshortArray); +OUTPUT_TYPEMAP(unsigned short, jint, int, Int, "[I", jintArray); +OUTPUT_TYPEMAP(int, jint, int, Int, "[I", jintArray); +OUTPUT_TYPEMAP(unsigned int, jlong, long, Long, "[J", jlongArray); +OUTPUT_TYPEMAP(long, jint, int, Int, "[I", jintArray); +OUTPUT_TYPEMAP(unsigned long, jlong, long, Long, "[J", jlongArray); +OUTPUT_TYPEMAP(long long, jlong, long, Long, "[J", jlongArray); +OUTPUT_TYPEMAP(unsigned long long, jobject, java.math.BigInteger, Object, "[Ljava/math/BigInteger;", jobjectArray); +OUTPUT_TYPEMAP(float, jfloat, float, Float, "[F", jfloatArray); +OUTPUT_TYPEMAP(double, jdouble, double, Double, "[D", jdoubleArray); + +#undef OUTPUT_TYPEMAP + +%typemap(in) bool *OUTPUT($*1_ltype temp), bool &OUTPUT($*1_ltype temp) +{ + if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); + return $null; + } + if (JCALL1(GetArrayLength, jenv, $input) == 0) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); + return $null; + } + temp = false; + $1 = &temp; +} + +%typemap(directorargout, noblock=1) bool &OUTPUT +{ + jboolean $1_jvalue; + JCALL4(GetBooleanArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + $result = $1_jvalue ? true : false; +} + +%typemap(directorargout, noblock=1) bool *OUTPUT +{ + if ($result) { + jboolean $1_jvalue; + JCALL4(GetBooleanArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + *$result = $1_jvalue ? true : false; + } +} + + +/* Convert to BigInteger - byte array holds number in 2's complement big endian format */ +/* Use first element in BigInteger array for output */ +/* Overrides the typemap in the OUTPUT_TYPEMAP macro */ +%typemap(argout) unsigned long long *OUTPUT, unsigned long long &OUTPUT { + jbyteArray ba = JCALL1(NewByteArray, jenv, 9); + jbyte* bae = JCALL2(GetByteArrayElements, jenv, ba, 0); + jclass clazz = JCALL1(FindClass, jenv, "java/math/BigInteger"); + jmethodID mid = JCALL3(GetMethodID, jenv, clazz, "", "([B)V"); + jobject bigint; + int i; + + bae[0] = 0; + for(i=1; i<9; i++ ) { + bae[i] = (jbyte)(temp$argnum>>8*(8-i)); + } + + JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0); + bigint = JCALL3(NewObject, jenv, clazz, mid, ba); + JCALL1(DeleteLocalRef, jenv, ba); + JCALL3(SetObjectArrayElement, jenv, $input, 0, bigint); +} + +/* +INOUT typemaps +-------------- + +Mappings for a parameter that is both an input and an output parameter + +The following typemaps can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" typemaps described earlier. Output values are +returned as an element in a Java array. + + bool *INOUT, bool &INOUT + signed char *INOUT, signed char &INOUT + unsigned char *INOUT, unsigned char &INOUT + short *INOUT, short &INOUT + unsigned short *INOUT, unsigned short &INOUT + int *INOUT, int &INOUT + unsigned int *INOUT, unsigned int &INOUT + long *INOUT, long &INOUT + unsigned long *INOUT, unsigned long &INOUT + long long *INOUT, long long &INOUT + unsigned long long *INOUT, unsigned long long &INOUT + float *INOUT, float &INOUT + double *INOUT, double &INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include + void neg(double *INOUT); + +or you can use the %apply directive : + + %include + %apply double *INOUT { double *x }; + void neg(double *x); + +This works similarly to C in that the mapping directly modifies the +input value - the input must be an array with a minimum of one element. +The element in the array is the input and the output is the element in +the array. + + double x[] = {5.0}; + neg(x); + +The implementation of the OUTPUT and INOUT typemaps is different to other +languages in that other languages will return the output value as part +of the function return value. This difference is due to Java being a typed language. + +There are no char *INOUT typemaps, however you can apply the signed char * typemaps instead: + %include + %apply signed char *INOUT {char *inout}; + void f(char *inout); +*/ + +%define INOUT_TYPEMAP(TYPE, JNITYPE, JTYPE, JAVATYPE, JNIDESC, TYPECHECKTYPE) +%typemap(jni) TYPE *INOUT, TYPE &INOUT %{JNITYPE##Array%} +%typemap(jtype) TYPE *INOUT, TYPE &INOUT "JTYPE[]" +%typemap(jstype) TYPE *INOUT, TYPE &INOUT "JTYPE[]" +%typemap(javain) TYPE *INOUT, TYPE &INOUT "$javainput" +%typemap(javadirectorin) TYPE *INOUT, TYPE &INOUT "$jniinput" +%typemap(javadirectorout) TYPE *INOUT, TYPE &INOUT "$javacall" + +%typemap(in) TYPE *INOUT, TYPE &INOUT { + if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); + return $null; + } + if (JCALL1(GetArrayLength, jenv, $input) == 0) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); + return $null; + } + $1 = ($1_ltype) JCALL2(Get##JAVATYPE##ArrayElements, jenv, $input, 0); +} + +%typemap(freearg) TYPE *INOUT, TYPE &INOUT "" + +%typemap(argout) TYPE *INOUT, TYPE &INOUT +{ JCALL3(Release##JAVATYPE##ArrayElements, jenv, $input, (JNITYPE *)$1, 0); } + +%typemap(directorin,descriptor=JNIDESC) TYPE &INOUT %{ + $input = JCALL1(New##JAVATYPE##Array, jenv, 1); + if (!$input) return $null; + JNITYPE $1_jvalue = (JNITYPE)$1; + JCALL4(Set##JAVATYPE##ArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + Swig::LocalRefGuard $1_refguard(jenv, $input); %} + +%typemap(directorin,descriptor=JNIDESC) TYPE *INOUT %{ + if ($1) { + $input = JCALL1(New##JAVATYPE##Array, jenv, 1); + if (!$input) return $null; + JNITYPE $1_jvalue = (JNITYPE)*$1; + JCALL4(Set##JAVATYPE##ArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + } + Swig::LocalRefGuard $1_refguard(jenv, $input); %} + +%typemap(directorargout, noblock=1) TYPE &INOUT +{ + JCALL4(Get##JAVATYPE##ArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + $result = ($*1_ltype)$1_jvalue; +} + +%typemap(directorargout, noblock=1) TYPE *INOUT +{ + if ($result) { + JNITYPE $1_jvalue; + JCALL4(Get##JAVATYPE##ArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + *$result = ($*1_ltype)$1_jvalue; + } +} + +%typemap(typecheck) TYPE *INOUT = TYPECHECKTYPE; +%typemap(typecheck) TYPE &INOUT = TYPECHECKTYPE; +%enddef + +INOUT_TYPEMAP(bool, jboolean, boolean, Boolean, "[Z", jbooleanArray); +INOUT_TYPEMAP(signed char, jbyte, byte, Byte, "[B", jbyteArray); +INOUT_TYPEMAP(unsigned char, jshort, short, Short, "[S", jshortArray); +INOUT_TYPEMAP(short, jshort, short, Short, "[S", jshortArray); +INOUT_TYPEMAP(unsigned short, jint, int, Int, "[I", jintArray); +INOUT_TYPEMAP(int, jint, int, Int, "[I", jintArray); +INOUT_TYPEMAP(unsigned int, jlong, long, Long, "[J", jlongArray); +INOUT_TYPEMAP(long, jint, int, Int, "[I", jintArray); +INOUT_TYPEMAP(unsigned long, jlong, long, Long, "[J", jlongArray); +INOUT_TYPEMAP(long long, jlong, long, Long, "[J", jlongArray); +INOUT_TYPEMAP(unsigned long long, jobject, java.math.BigInteger, Object, "[java/math/BigInteger;", jobjectArray); +INOUT_TYPEMAP(float, jfloat, float, Float, "[F", jfloatArray); +INOUT_TYPEMAP(double, jdouble, double, Double, "[D", jdoubleArray); + +#undef INOUT_TYPEMAP + +/* Override typemaps in the INOUT_TYPEMAP macro for booleans to fix casts + as a jboolean isn't always the same size as a bool */ +%typemap(in) bool *INOUT (bool btemp, jboolean *jbtemp), bool &INOUT (bool btemp, jboolean *jbtemp) { + if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); + return $null; + } + if (JCALL1(GetArrayLength, jenv, $input) == 0) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); + return $null; + } + jbtemp = JCALL2(GetBooleanArrayElements, jenv, $input, 0); + btemp = (*jbtemp) ? true : false; + $1 = &btemp; +} + +%typemap(argout) bool *INOUT, bool &INOUT { + *jbtemp$argnum = btemp$argnum ? (jboolean)1 : (jboolean)0; + JCALL3(ReleaseBooleanArrayElements, jenv, $input , (jboolean *)jbtemp$argnum, 0); +} + +%typemap(directorargout, noblock=1) bool &INOUT +{ + JCALL4(GetBooleanArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + $result = $1_jvalue ? true : false; +} + +%typemap(directorargout, noblock=1) bool *INOUT +{ + if ($result) { + jboolean $1_jvalue; + JCALL4(GetBooleanArrayRegion, jenv, $input, 0, 1, &$1_jvalue); + *$result = $1_jvalue ? true : false; + } +} + + +/* Override the typemap in the INOUT_TYPEMAP macro for unsigned long long */ +%typemap(in) unsigned long long *INOUT ($*1_ltype temp), unsigned long long &INOUT ($*1_ltype temp) { + jobject bigint; + jclass clazz; + jmethodID mid; + jbyteArray ba; + jbyte* bae; + jsize sz; + int i; + + if (!$input) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); + return $null; + } + if (JCALL1(GetArrayLength, jenv, $input) == 0) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); + return $null; + } + bigint = JCALL2(GetObjectArrayElement, jenv, $input, 0); + if (!bigint) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array element null"); + return $null; + } + clazz = JCALL1(GetObjectClass, jenv, bigint); + mid = JCALL3(GetMethodID, jenv, clazz, "toByteArray", "()[B"); + ba = (jbyteArray)JCALL2(CallObjectMethod, jenv, bigint, mid); + bae = JCALL2(GetByteArrayElements, jenv, ba, 0); + sz = JCALL1(GetArrayLength, jenv, ba); + temp = 0; + if (sz > 0) { + temp = ($*1_ltype)(signed char)bae[0]; + for(i=1; i + * %inline %{ + * extern int FiddleSticks[3]; + * %} + * + * Use from JavaScript like this: + * + * var fs = [10, 11, 12]; + * example.FiddleSticks = fs; + * fs = example.FiddleSticks; + * ----------------------------------------------------------------------------- */ + +%fragment("SWIG_JSCGetIntProperty", "header", fragment=SWIG_AsVal_frag(int)) {} +%fragment("SWIG_JSCGetNumberProperty", "header", fragment=SWIG_AsVal_frag(double)) {} + +%typemap(in, fragment="SWIG_JSCGetIntProperty") int[], int[ANY] + (int length = 0, JSObjectRef array, JSValueRef jsvalue, int i = 0, int res = 0, $*1_ltype temp) { + if (JSValueIsObject(context, $input)) + { + // Convert into Array + array = JSValueToObject(context, $input, NULL); + + length = $1_dim0; + + $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); + + // Get each element from array + for (i = 0; i < length; i++) + { + jsvalue = JSObjectGetPropertyAtIndex(context, array, i, NULL); + + // Get primitive value from JSObject + res = SWIG_AsVal(int)(jsvalue, &temp); + if (!SWIG_IsOK(res)) + { + SWIG_exception_fail(SWIG_ERROR, "Failed to convert $input to double"); + } + arg$argnum[i] = temp; + } + + } + else + { + SWIG_exception_fail(SWIG_ERROR, "$input is not JSObjectRef"); + } +} + +%typemap(freearg) int[], int[ANY] { + free($1); +} + +%typemap(out, fragment=SWIG_From_frag(int)) int[], int[ANY] (int length = 0, int i = 0) +{ + length = $1_dim0; + JSValueRef values[length]; + + for (i = 0; i < length; i++) + { + values[i] = SWIG_From(int)($1[i]); + } + + $result = JSObjectMakeArray(context, length, values, NULL); +} + +%typemap(in, fragment="SWIG_JSCGetNumberProperty") double[], double[ANY] + (int length = 0, JSObjectRef array, JSValueRef jsvalue, int i = 0, int res = 0, $*1_ltype temp) { + if (JSValueIsObject(context, $input)) + { + // Convert into Array + array = JSValueToObject(context, $input, NULL); + + length = $1_dim0; + + $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); + + // Get each element from array + for (i = 0; i < length; i++) + { + jsvalue = JSObjectGetPropertyAtIndex(context, array, i, NULL); + + // Get primitive value from JSObject + res = SWIG_AsVal(double)(jsvalue, &temp); + if (!SWIG_IsOK(res)) + { + SWIG_exception_fail(SWIG_ERROR, "Failed to convert $input to double"); + } + arg$argnum[i] = temp; + } + + } + else + { + SWIG_exception_fail(SWIG_ERROR, "$input is not JSObjectRef"); + } +} + +%typemap(freearg) double[], double[ANY] { + free($1); +} + +%typemap(out, fragment=SWIG_From_frag(double)) double[], double[ANY] (int length = 0, int i = 0) +{ + length = $1_dim0; + JSValueRef values[length]; + + for (i = 0; i < length; i++) + { + values[i] = SWIG_From(double)($1[i]); + } + + $result = JSObjectMakeArray(context, length, values, NULL); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/ccomplex.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/ccomplex.i new file mode 100644 index 00000000..50f0f95f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/ccomplex.i @@ -0,0 +1,26 @@ +/* ----------------------------------------------------------------------------- + * ccomplex.i + * + * C complex typemaps + * ISO C99: 7.3 Complex arithmetic + * ----------------------------------------------------------------------------- */ + + +%include + +%{ +#include +%} + + +/* C complex constructor */ +#define CCplxConst(r, i) ((r) + I*(i)) + +%swig_cplxflt_convn(float complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(double complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(complex, CCplxConst, creal, cimag); + +/* declaring the typemaps */ +%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, complex); diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/cdata.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/cdata.i new file mode 100644 index 00000000..36796599 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/cdata.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/complex.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/complex.i new file mode 100644 index 00000000..4c3b3c5e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/complex.i @@ -0,0 +1,6 @@ +#ifdef __cplusplus +%include +#else +%include +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/exception.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/exception.i new file mode 100644 index 00000000..0246cfde --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/exception.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascript.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascript.swg new file mode 100644 index 00000000..3a83b649 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascript.swg @@ -0,0 +1,19 @@ +/* ----------------------------------------------------------------------------- + * javascript.swg + * + * Javascript typemaps + * ----------------------------------------------------------------------------- */ + +%include + +%include + +%include + +%include + +%include + +%include + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptcode.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptcode.swg new file mode 100644 index 00000000..4050a6ee --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptcode.swg @@ -0,0 +1,429 @@ +/* ----------------------------------------------------------------------------- + * js_ctor: template for wrapping a ctor. + * - $jswrapper: wrapper of called ctor + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * - $jsargcount: number of arguments + * - $jsmangledtype: mangled type of class + * ----------------------------------------------------------------------------- */ +%fragment ("js_ctor", "templates") +%{ +static JSObjectRef $jswrapper(JSContextRef context, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) +{ + $jslocals + if(argc != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); + + $jscode + return SWIG_JSC_NewPointerObj(context, result, SWIGTYPE_$jsmangledtype, SWIG_POINTER_OWN); + goto fail; + fail: + return NULL; +} +%} + +/* ----------------------------------------------------------------------------- + * js_veto_ctor: a vetoing ctor for abstract classes + * - $jswrapper: name of wrapper + * - $jsname: class name + * ----------------------------------------------------------------------------- */ +%fragment ("js_veto_ctor", "templates") +%{ +static JSObjectRef $jswrapper(JSContextRef context, JSObjectRef ctorObject, + size_t argc, const JSValueRef argv[], JSValueRef* exception) +{ + SWIG_exception(SWIG_ERROR, "Class $jsname can not be instantiated"); +fail: + return 0; +} +%} + +/* ----------------------------------------------------------------------------- + * js_ctor_dispatcher: dispatcher for overloaded constructors + * - $jswrapper: name of wrapper + * - $jsname: class name + * - $jsdispatchcases: part containing code for dispatching + * ----------------------------------------------------------------------------- */ +%fragment ("js_ctor_dispatcher", "templates") +%{ +static JSObjectRef $jswrapper(JSContextRef context, JSObjectRef ctorObject, + size_t argc, const JSValueRef argv[], JSValueRef* exception) +{ + JSObjectRef thisObject = NULL; + + // switch all cases by means of series of if-returns. + $jsdispatchcases + + // default: + SWIG_exception_fail(SWIG_ERROR, "Illegal arguments for construction of $jsname"); + + fail: + return thisObject; +} +%} + +/* ----------------------------------------------------------------------------- + * js_overloaded_ctor: template for wrapping a ctor. + * - $jswrapper: wrapper of called ctor + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * - $jsargcount: number of arguments + * - $jsmangledtype: mangled type of class + * ----------------------------------------------------------------------------- */ +%fragment ("js_overloaded_ctor", "templates") +%{ +static JSObjectRef $jswrapper(JSContextRef context, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) +{ + $jslocals + $jscode + return SWIG_JSC_NewPointerObj(context, result, SWIGTYPE_$jsmangledtype, SWIG_POINTER_OWN); + + goto fail; + fail: + return NULL; +} +%} + +/* ----------------------------------------------------------------------------- + * js_ctor_dispatch_case: template for a dispatch case for calling an overloaded ctor. + * - $jsargcount: number of arguments of called ctor + * - $jswrapper: wrapper of called ctor + * + * Note: a try-catch-like mechanism is used to switch cases + * ----------------------------------------------------------------------------- */ +%fragment ("js_ctor_dispatch_case", "templates") +%{ + if(argc == $jsargcount) { + thisObject = $jswrapper(context, NULL, argc, argv, exception); + if(thisObject != NULL) { *exception=0; return thisObject; } /* reset exception and return */ + } +%} + + +/* ----------------------------------------------------------------------------- + * js_dtor: template for a destructor wrapper + * - $jsmangledname: mangled class name + * - $jstype: class type + * ----------------------------------------------------------------------------- */ +%fragment ("js_dtor", "templates") +%{ +static void $jswrapper(JSObjectRef thisObject) +{ + SwigPrivData* t = (SwigPrivData*) JSObjectGetPrivate(thisObject); + if(t) { + if (t->swigCMemOwn) { + free (($jstype)t->swigCObject); + } + JSObjectSetPrivate(thisObject, NULL); + free(t); + } +} +%} + +/* ----------------------------------------------------------------------------- + * js_dtor: template for a destructor wrapper + * - $jsmangledname: mangled class name + * - $jstype: class type + * - ${destructor_action}: The custom destructor action to invoke. + * ----------------------------------------------------------------------------- */ +%fragment ("js_dtoroverride", "templates") +%{ +static void $jswrapper(JSObjectRef thisObject) +{ + SwigPrivData* t = (SwigPrivData*) JSObjectGetPrivate(thisObject); + if(t) { + if (t->swigCMemOwn) { + $jstype arg1 = ($jstype)t->swigCObject; + ${destructor_action} + } + /* remove the private data to make sure that it isn't accessed elsewhere */ + JSObjectSetPrivate(thisObject, NULL); + free(t); + } +} +%} + +/* ----------------------------------------------------------------------------- + * js_getter: template for getter function wrappers + * - $jswrapper: wrapper function name + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment ("js_getter", "templates") +%{ +static JSValueRef $jswrapper(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) +{ + $jslocals + JSValueRef jsresult; + + $jscode + return jsresult; + + goto fail; + fail: + return JSValueMakeUndefined(context); +} +%} + +/* ----------------------------------------------------------------------------- + * js_setter: template for setter function wrappers + * - $jswrapper: wrapper function name + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment ("js_setter", "templates") +%{ +static bool $jswrapper(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef value, JSValueRef* exception) +{ + $jslocals + $jscode + + return true; + + goto fail; + fail: + return false; +} +%} + +/* ----------------------------------------------------------------------------- + * js_function: template for function wrappers + * - $jswrapper: wrapper function name + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment ("js_function", "templates") +%{ +static JSValueRef $jswrapper(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) +{ + $jslocals + JSValueRef jsresult; + + if(argc != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); + + $jscode + return jsresult; + + goto fail; + fail: + return JSValueMakeUndefined(context); +} +%} + +/* ----------------------------------------------------------------------------- + * js_function_dispatcher: template for a function dispatcher for overloaded functions + * - $jswrapper: wrapper function name + * - $jsname: name of the wrapped function + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment ("js_function_dispatcher", "templates") +%{ +static JSValueRef $jswrapper(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) +{ + $jslocals + JSValueRef jsresult; + int res; + $jscode + + SWIG_exception_fail(SWIG_ERROR, "Illegal arguments for function $jsname."); + return jsresult; + + goto fail; + fail: + return JSValueMakeUndefined(context); +} +%} + +/* ----------------------------------------------------------------------------- + * js_overloaded_function: template for a overloaded function + * - $jswrapper: wrapper function name + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment ("js_overloaded_function", "templates") +%{ +static int $jswrapper(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception, JSValueRef* p_result) +{ + $jslocals + JSValueRef jsresult; + + if(argc != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); + + $jscode + *p_result = jsresult; + return SWIG_OK; + + goto fail; + fail: + return SWIG_TypeError; +} +%} + +/* ----------------------------------------------------------------------------- + * js_function_dispatch_case: template for a case used in the function dispatcher + * - $jswrapper: wrapper function name + * - $jsargcount: number of arguments of overloaded function + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment ("js_function_dispatch_case", "templates") +%{ + if(argc == $jsargcount) { + res = $jswrapper(context, function, thisObject, argc, argv, exception, &jsresult); + if(res == SWIG_OK) { *exception = 0; return jsresult; } + } +%} + +/* ----------------------------------------------------------------------------- + * jsc_variable_declaration: template for a variable table entry + * - $jsname: name of the variable + * - $jsgetter: wrapper of getter function + * - $jssetter: wrapper of setter function + * ----------------------------------------------------------------------------- */ +%fragment ("jsc_variable_declaration", "templates") +%{ + {"$jsname", $jsgetter, $jssetter, kJSPropertyAttributeNone}, +%} + + +/* ----------------------------------------------------------------------------- + * jsc_function_declaration: template for a function table entry + * - $jsname: name of the variable + * - $jswrapper: wrapper function + * ----------------------------------------------------------------------------- */ +%fragment ("jsc_function_declaration", "templates") +%{ + {"$jsname", $jswrapper, kJSPropertyAttributeNone}, +%} + +/* ----------------------------------------------------------------------------- + * jsc_classtemplate_declaration: template for a namespace declaration + * - $jsmangledname: mangled class name + * ----------------------------------------------------------------------------- */ +%fragment ("jsc_class_declaration", "templates") +%{ +static JSClassDefinition $jsmangledname_classDefinition; + +static JSClassDefinition $jsmangledname_objectDefinition; + +static JSClassRef $jsmangledname_classRef; +%} + +/* ----------------------------------------------------------------------------- + * jsc_class_tables: template for a namespace declaration + * - $jsmangledname: mangled class name + * - $jsstaticclassvariables: list of static variable entries + * - $jsstaticclassfunctions: list of static function entries + * - $jsclassvariables: list of member variable entries + * - $jsclassfunctions: list of member function entries + * ----------------------------------------------------------------------------- */ +%fragment ("jsc_class_tables", "templates") +%{ +static JSStaticValue $jsmangledname_staticValues[] = { + $jsstaticclassvariables + { 0, 0, 0, 0 } +}; + +static JSStaticFunction $jsmangledname_staticFunctions[] = { + $jsstaticclassfunctions + { 0, 0, 0 } +}; + +static JSStaticValue $jsmangledname_values[] = { + $jsclassvariables + { 0, 0, 0, 0 } +}; + +static JSStaticFunction $jsmangledname_functions[] = { + $jsclassfunctions + { 0, 0, 0 } +}; +%} + +/* ----------------------------------------------------------------------------- + * jsc_define_class_template: template for defining a class template + * - $jsmangledname: mangled class name + * - $jsmangledtype: mangled class type + * - $jsctor: wrapper of ctor + * - $jsbaseclass: mangled name of base class + * ----------------------------------------------------------------------------- */ +%fragment ("jsc_class_definition", "templates") +%{ + $jsmangledname_classDefinition.staticFunctions = $jsmangledname_staticFunctions; + $jsmangledname_classDefinition.staticValues = $jsmangledname_staticValues; + $jsmangledname_classDefinition.callAsConstructor = $jsctor; + $jsmangledname_objectDefinition.finalize = $jsdtor; + $jsmangledname_objectDefinition.staticValues = $jsmangledname_values; + $jsmangledname_objectDefinition.staticFunctions = $jsmangledname_functions; + $jsclass_inheritance + $jsmangledname_classRef = JSClassCreate(&$jsmangledname_objectDefinition); + SWIGTYPE_$jsmangledtype->clientdata = $jsmangledname_classRef; +%} + +%fragment ("jsc_class_inherit", templates) +%{ + if (SWIGTYPE_p$jsbaseclassmangled != NULL) { + $jsmangledname_objectDefinition.parentClass = (JSClassRef) SWIGTYPE_p$jsbaseclassmangled->clientdata; + } +%} + +%fragment ("jsc_class_noinherit", templates) +%{ + $jsmangledname_objectDefinition.parentClass = _SwigObject_classRef; +%} + + +/* ----------------------------------------------------------------------------- + * jsc_register_class: template for registration of a class + * - $jsname: class name + * - $jsmangledname: mangled class name + * - $jsnspace: mangled name of namespace + * ----------------------------------------------------------------------------- */ +%fragment ("jsc_class_registration", "templates") +%{ + JS_registerClass(context, $jsnspace_object, "$jsname", &$jsmangledname_classDefinition); +%} + + +/* ----------------------------------------------------------------------------- + * jsc_nspace_declaration: template for a namespace declaration + * - $jsnspace: mangled name of the namespace + * - $jsglobalvariables: list of variable entries + * - $jsglobalfunctions: list of function entries + * ----------------------------------------------------------------------------- */ +%fragment ("jsc_nspace_declaration", "templates") +%{ +static JSStaticValue $jsnspace_values[] = { + $jsglobalvariables + { 0, 0, 0, 0 } +}; + +static JSStaticFunction $jsnspace_functions[] = { + $jsglobalfunctions + { 0, 0, 0 } +}; + +static JSClassDefinition $jsnspace_classDefinition; +static JSObjectRef $jsmangledname_object; +%} + +/* ----------------------------------------------------------------------------- + * jsc_nspace_definition: template for definition of a namespace object + * - $jsmangledname: mangled name of namespace + * ----------------------------------------------------------------------------- */ +%fragment ("jsc_nspace_definition", "templates") +%{ + $jsmangledname_classDefinition.staticFunctions = $jsmangledname_functions; + $jsmangledname_classDefinition.staticValues = $jsmangledname_values; + $jsmangledname_object = JSObjectMake(context, JSClassCreate(&$jsmangledname_classDefinition), NULL); +%} + +/* ----------------------------------------------------------------------------- + * jsc_nspace_registration: template for registration of a namespace object + * - $jsname: name of namespace + * - $jsmangledname: mangled name of namespace + * - $jsparent: mangled name of parent namespace + * ----------------------------------------------------------------------------- */ +%fragment ("jsc_nspace_registration", "templates") +%{ + JS_registerNamespace(context, $jsmangledname_object, $jsparent_object, "$jsname"); +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptcomplex.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptcomplex.swg new file mode 100644 index 00000000..7be120b3 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptcomplex.swg @@ -0,0 +1,146 @@ +/* + Defines the As/From converters for double/float complex, you need to + provide complex Type, the Name you want to use in the converters, + the complex Constructor method, and the Real and Imag complex + accessor methods. + + See the std_complex.i and ccomplex.i for concrete examples. +*/ + +/* the common from converter */ +%define %swig_fromcplx_conv(Type, Real, Imag) +%fragment(SWIG_From_frag(Type),"header", + fragment=SWIG_From_frag(double)) +{ +SWIGINTERNINLINE JSObjectRef +SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) +{ + JSValueRef vals[2]; + vals[0] = SWIG_From(double)(Real(c)); + vals[1] = SWIG_From(double)(Imag(c)); + return JSObjectMakeArray(context, 2, vals, NULL); +} +} +%enddef + +/* the double case */ +%define %swig_cplxdbl_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(double)) +{ +SWIGINTERN int +SWIG_AsVal_dec(Type) (JSValueRef o, Type* val) +{ + if (JSValueIsObject(context, o)) { + JSObjectRef array; + JSValueRef exception, js_re, js_im; + double re, im; + int res; + + exception = 0; + res = 0; + + array = JSValueToObject(context, o, &exception); + if(exception != 0) + return SWIG_TypeError; + + js_re = JSObjectGetPropertyAtIndex(context, array, 0, &exception); + if(exception != 0) + return SWIG_TypeError; + + js_im = JSObjectGetPropertyAtIndex(context, array, 1, &exception); + if(exception != 0) + return SWIG_TypeError; + + res = SWIG_AsVal(double)(js_re, &re); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + res = SWIG_AsVal(double)(js_im, &im); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + if (val) *val = Constructor(re, im); + return SWIG_OK; + } else { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(o, &d)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(d, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +/* the float case */ +%define %swig_cplxflt_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(float)) { +SWIGINTERN int +SWIG_AsVal_dec(Type)(JSValueRef o, Type *val) +{ + if (JSValueIsObject(context, o)) { + JSObjectRef array; + JSValueRef exception, js_re, js_im; + double re, im; + int res; + + exception = 0; + res = 0; + + array = JSValueToObject(context, o, &exception); + if(exception != 0) + return SWIG_TypeError; + + js_re = JSObjectGetPropertyAtIndex(context, array, 0, &exception); + if(exception != 0) + return SWIG_TypeError; + + js_im = JSObjectGetPropertyAtIndex(context, array, 1, &exception); + if(exception != 0) + return SWIG_TypeError; + + res = SWIG_AsVal(double)(js_re, &re); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + res = SWIG_AsVal(double)(js_im, &im); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + if ((-FLT_MAX <= re && re <= FLT_MAX) && (-FLT_MAX <= im && im <= FLT_MAX)) { + if (val) *val = Constructor(%numeric_cast(re, float), + %numeric_cast(im, float)); + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else { + float re; + int res = SWIG_AddCast(SWIG_AsVal(float)(o, &re)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(re, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} + +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +#define %swig_cplxflt_convn(Type, Constructor, Real, Imag) \ +%swig_cplxflt_conv(Type, Constructor, Real, Imag) + + +#define %swig_cplxdbl_convn(Type, Constructor, Real, Imag) \ +%swig_cplxdbl_conv(Type, Constructor, Real, Imag) diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptfragments.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptfragments.swg new file mode 100644 index 00000000..4778bf03 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptfragments.swg @@ -0,0 +1,23 @@ +/* + + Create a file with this name, 'javascriptfragments.swg', in your working + directory and add all the %fragments you want to take precedence + over the default ones defined by swig. + + For example, if you add: + + %fragment(SWIG_AsVal_frag(int),"header") { + SWIGINTERNINLINE int + SWIG_AsVal(int)(PyObject *obj, int *val) + { + ; + } + } + + this will replace the code used to retrieve an integer value for all + the typemaps that need it, including: + + int, std::vector, std::list >, etc. + + +*/ diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascripthelpers.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascripthelpers.swg new file mode 100644 index 00000000..45765433 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascripthelpers.swg @@ -0,0 +1,69 @@ +%insert(wrapper) %{ + +SWIGINTERN bool JS_registerClass(JSGlobalContextRef context, JSObjectRef parentObject, + const char* className, + JSClassDefinition* definition) { + + JSStringRef js_className = JSStringCreateWithUTF8CString(className); + JSObjectRef classObject = JSObjectMake(context, JSClassCreate(definition), NULL); + JSObjectSetProperty(context, parentObject, + js_className, classObject, + kJSPropertyAttributeNone, NULL); + JSStringRelease(js_className); + + return true; +} + +SWIGINTERN bool JS_registerNamespace(JSGlobalContextRef context, + JSObjectRef namespaceObj, JSObjectRef parentNamespace, + const char* name) +{ + JSStringRef js_name = JSStringCreateWithUTF8CString(name); + JSObjectSetProperty(context, parentNamespace, + js_name, namespaceObj, + kJSPropertyAttributeNone, NULL); + JSStringRelease(js_name); + + return true; +} + + +SWIGINTERN bool JS_registerFunction(JSGlobalContextRef context, JSObjectRef object, + const char* functionName, JSObjectCallAsFunctionCallback callback) +{ + JSStringRef js_functionName = JSStringCreateWithUTF8CString(functionName); + JSObjectSetProperty(context, object, js_functionName, + JSObjectMakeFunctionWithCallback(context, js_functionName, callback), + kJSPropertyAttributeNone, NULL); + JSStringRelease(js_functionName); + return true; +} + +SWIGINTERN bool JS_veto_set_variable(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef value, JSValueRef* exception) +{ + char buffer[256]; + char msg[512]; + int res; + + JSStringGetUTF8CString(propertyName, buffer, 256); + res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); + + if(res<0) { + SWIG_exception(SWIG_ERROR, "Tried to write read-only variable."); + } else { + SWIG_exception(SWIG_ERROR, msg); + } +fail: + return false; +} + +SWIGINTERN JSValueRef JS_CharPtrToJSValue(JSContextRef context, char* cstr) { + JSValueRef val; + + JSStringRef jsstring = JSStringCreateWithUTF8CString((char*) cstr); + val = JSValueMakeString(context, jsstring); + JSStringRelease(jsstring); + + return val; +} +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptinit.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptinit.swg new file mode 100644 index 00000000..a32ba336 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptinit.swg @@ -0,0 +1,67 @@ +%insert(init) %{ +SWIGRUNTIME void +SWIG_JSC_SetModule(swig_module_info *swig_module) {} + +SWIGRUNTIME swig_module_info * +SWIG_JSC_GetModule(void) { + return 0; +} + +#define SWIG_GetModule(clientdata) SWIG_JSC_GetModule() +#define SWIG_SetModule(clientdata, pointer) SWIG_JSC_SetModule(pointer) +%} + +%insert(init) "swiginit.swg" + +%fragment ("js_initializer_define", "templates") %{ +#define SWIGJSC_INIT $jsname_initialize +%} + +// Open the initializer function +%insert(init) +%{ + +#ifdef __cplusplus +extern "C" { +#endif + +bool SWIGJSC_INIT (JSGlobalContextRef context, JSObjectRef *exports) { + SWIG_InitializeModule(0); +%} + +/* ----------------------------------------------------------------------------- + * js_initializer: template for the module initializer function + * - $jsname: module name + * - $jscreatenamespaces: part with code for creating namespace objects + * - $jscreateclasses: part with code for creating classes + * - $jsregisternamespaces: part with code for registration of namespaces + * ----------------------------------------------------------------------------- */ +%fragment ("js_initializer", "templates") %{ + /* Initialize the base swig type object */ + _SwigObject_objectDefinition.staticFunctions = _SwigObject_functions; + _SwigObject_objectDefinition.staticValues = _SwigObject_values; + _SwigObject_classRef = JSClassCreate(&_SwigObject_objectDefinition); + + /* Initialize the PackedData class */ + _SwigPackedData_objectDefinition.staticFunctions = _SwigPackedData_functions; + _SwigPackedData_objectDefinition.staticValues = _SwigPackedData_values; + _SwigPackedData_objectDefinition.finalize = _wrap_SwigPackedData_delete; + _SwigPackedData_classRef = JSClassCreate(&_SwigPackedData_objectDefinition); + + /* Create objects for namespaces */ + $jscreatenamespaces + + /* Register classes */ + $jsregisterclasses + + /* Register namespaces */ + $jsregisternamespaces + + *exports = exports_object; + + return true; +} +#ifdef __cplusplus +} +#endif +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptkw.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptkw.swg new file mode 100644 index 00000000..c3c11839 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptkw.swg @@ -0,0 +1,40 @@ +#ifndef JAVASCRIPT_JAVASCRIPTKW_SWG_ +#define JAVASCRIPT_JAVASCRIPTKW_SWG_ + +/* Warnings for Java keywords */ +#define JAVASCRIPTKW(x) %keywordwarn("'" `x` "' is a javascript keyword, renaming to '_"`x`"'",rename="_%s") `x` + +/* Taken from https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Reserved_Words */ + +JAVASCRIPTKW(break); +JAVASCRIPTKW(case); +JAVASCRIPTKW(catch); +JAVASCRIPTKW(continue); +JAVASCRIPTKW(default); +JAVASCRIPTKW(delete); +JAVASCRIPTKW(do); +JAVASCRIPTKW(else); +JAVASCRIPTKW(finally); +JAVASCRIPTKW(for); +JAVASCRIPTKW(function); +JAVASCRIPTKW(if); +JAVASCRIPTKW(in); +JAVASCRIPTKW(instanceof); +JAVASCRIPTKW(new); +JAVASCRIPTKW(return); +JAVASCRIPTKW(switch); +JAVASCRIPTKW(this); +JAVASCRIPTKW(throw); +JAVASCRIPTKW(try); +JAVASCRIPTKW(typeof); +JAVASCRIPTKW(var); +JAVASCRIPTKW(void); +JAVASCRIPTKW(while); +JAVASCRIPTKW(with); + +/* others bad names if any*/ +// for example %namewarn("321:clone() is a javascript bad method name") *::clone(); + +#undef JAVASCRIPTKW + +#endif //JAVASCRIPT_JAVASCRIPTKW_SWG_ diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptprimtypes.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptprimtypes.swg new file mode 100644 index 00000000..20d575d9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptprimtypes.swg @@ -0,0 +1,192 @@ +/* ------------------------------------------------------------ + * Primitive Types + * ------------------------------------------------------------ */ + +/* boolean */ + +%fragment(SWIG_From_frag(bool),"header") { +SWIGINTERNINLINE +JSValueRef SWIG_From_dec(bool)(bool value) +{ + return JSValueMakeBoolean(context, value); +} +} + +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN +int SWIG_AsVal_dec(bool)(JSValueRef obj, bool *val) +{ + if(!JSValueIsBoolean(context, obj)) { + return SWIG_ERROR; + } + if (val) *val = JSValueToBoolean(context, obj); + return SWIG_OK; +} +} + +/* int */ + +%fragment(SWIG_From_frag(int),"header") { +SWIGINTERNINLINE JSValueRef + SWIG_From_dec(int)(int value) +{ + return JSValueMakeNumber(context, value); +} +} + +/* long */ + +%fragment(SWIG_From_frag(long),"header") { +SWIGINTERNINLINE JSValueRef +SWIG_From_dec(long)(long value) +{ + return JSValueMakeNumber(context, value); +} +} + +%fragment(SWIG_AsVal_frag(long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(long)(JSValueRef obj, long* val) +{ + if (!JSValueIsNumber(context, obj)) { + return SWIG_TypeError; + } + if(val) *val = (long) JSValueToNumber(context, obj, NULL); + + return SWIG_OK; +} +} + +/* unsigned long */ + +%fragment(SWIG_From_frag(unsigned long),"header", + fragment=SWIG_From_frag(long)) { +SWIGINTERNINLINE JSValueRef +SWIG_From_dec(unsigned long)(unsigned long value) +{ + return (value > LONG_MAX) ? + JSValueMakeNumber(context, value) : JSValueMakeNumber(context, %numeric_cast(value,long)); +} +} + +%fragment(SWIG_AsVal_frag(unsigned long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(unsigned long)(JSValueRef obj, unsigned long *val) +{ + long longVal; + if(!JSValueIsNumber(context, obj)) { + return SWIG_TypeError; + } + + longVal = (long) JSValueToNumber(context, obj, NULL); + + if(longVal < 0) { + return SWIG_OverflowError; + } + + if(val) *val = longVal; + + return SWIG_OK; +} +} + +/* long long */ +// Note: these are copied from 'long' and probably need fixing + +%fragment(SWIG_From_frag(long long),"header", + fragment=SWIG_From_frag(long), + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE JSValueRef +SWIG_From_dec(long long)(long long value) +{ + return JSValueMakeNumber(context, value); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(long long),"header", + fragment=SWIG_AsVal_frag(long), + fragment="SWIG_CanCastAsInteger", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(long long)(JSValueRef obj, long long* val) +{ + if (!JSValueIsNumber(context, obj)) { + return SWIG_TypeError; + } + if(val) *val = (long long) JSValueToNumber(context, obj, NULL); + + return SWIG_OK; +} +%#endif +} + +/* unsigned long long */ +// Note: these are copied from 'unsigned long' and probably need fixing + +%fragment(SWIG_From_frag(unsigned long long),"header", + fragment=SWIG_From_frag(long long), + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN JSValueRef +SWIG_From_dec(unsigned long long)(unsigned long long value) +{ + return (value > LONG_MAX) ? + JSValueMakeNumber(context, value) : JSValueMakeNumber(context, %numeric_cast(value,long)); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(unsigned long long),"header", + fragment=SWIG_AsVal_frag(unsigned long), + fragment="SWIG_CanCastAsInteger", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(unsigned long long)(JSValueRef obj, unsigned long long *val) +{ + long long longVal; + if(!JSValueIsNumber(context, obj)) { + return SWIG_TypeError; + } + + longVal = (unsigned long long) JSValueToNumber(context, obj, NULL); + + if(longVal < 0) { + return SWIG_OverflowError; + } + + if(val) *val = longVal; + + return SWIG_OK; +} +%#endif +} + +/* double */ + +%fragment(SWIG_From_frag(double),"header") { +SWIGINTERN JSValueRef +SWIG_From_dec(double) (double val) +{ + return JSValueMakeNumber(context, val); +} +} + +%fragment(SWIG_AsVal_frag(double),"header") { +SWIGINTERN int +SWIG_AsVal_dec(double)(JSValueRef obj, double *val) +{ + if(!JSValueIsNumber(context, obj)) { + return SWIG_TypeError; + } + if(val) *val = JSValueToNumber(context, obj, NULL); + + return SWIG_OK; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptrun.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptrun.swg new file mode 100644 index 00000000..4a8fc5be --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptrun.swg @@ -0,0 +1,334 @@ +/* ---------------------------------------------------------------------------- + * Errors and exceptions + * + * ---------------------------------------------------------------------------*/ + +#define SWIG_Error(code, msg) SWIG_JSC_exception(context, exception, code, msg) +#define SWIG_exception(code, msg) do { SWIG_JSC_exception(context, exception, code, msg); SWIG_fail; } while (0) +#define SWIG_fail goto fail + +SWIGRUNTIME void SWIG_Javascript_Raise(JSContextRef context, JSValueRef *exception, const char* type) { + JSStringRef message = JSStringCreateWithUTF8CString(type); + JSValueRef error_arguments[1]; + JSObjectRef exception_object; + JSValueRef exception_value; + exception_value = JSValueMakeString(context, message); + /* Converting the result to an object will let JavascriptCore add + "sourceURL" (file) and "line" (number) and "message" to the exception, + instead of just returning a raw string. This is extremely important for debugging your errors. + Using JSObjectMakeError is better than JSValueToObject because the latter only populates + "sourceURL" and "line", but not "message" or any others I don't know about. + */ + error_arguments[0] = exception_value; + exception_object = JSObjectMakeError(context, 1, error_arguments, NULL); + + /* Return the exception_object */ + *exception = exception_object; + + JSStringRelease(message); +} + +SWIGRUNTIME void SWIG_JSC_exception(JSContextRef context, JSValueRef *exception, int code, const char* msg) { + SWIG_Javascript_Raise(context, exception, msg); +} + +/* ---------------------------------------------------------------------------- + * The parent class of all Proxies + * + * ---------------------------------------------------------------------------*/ + +typedef struct { + bool swigCMemOwn; + void *swigCObject; + swig_type_info *info; +} SwigPrivData; + +SWIGRUNTIME JSValueRef _wrap_SwigObject_disown(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) +{ + JSValueRef jsresult; + + JSObjectRef obj = JSValueToObject(context, thisObject, NULL); + SwigPrivData *cdata = (SwigPrivData *) JSObjectGetPrivate(obj); + + cdata->swigCMemOwn = false; + + jsresult = JSValueMakeUndefined(context); + return jsresult; +} + +SWIGRUNTIME JSValueRef _wrap_SwigObject_getCPtr(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) +{ + JSValueRef jsresult; + long result; + + JSObjectRef obj = JSValueToObject(context, thisObject, NULL); + SwigPrivData *cdata = (SwigPrivData*) JSObjectGetPrivate(obj); + + result = (long) cdata->swigCObject; + jsresult = JSValueMakeNumber(context, result); + + return jsresult; +} + +SWIGRUNTIME JSValueRef _wrap_SwigObject_equals(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) +{ + JSValueRef jsresult; + bool result; + + JSObjectRef obj = JSValueToObject(context, thisObject, NULL); + SwigPrivData *cdata = (SwigPrivData*) JSObjectGetPrivate(obj); + + JSObjectRef obj2 = JSValueToObject(context, argv[0], NULL); + SwigPrivData *cdata2 = (SwigPrivData*) JSObjectGetPrivate(obj2); + + result = (cdata->swigCObject == cdata2->swigCObject); + jsresult = JSValueMakeBoolean(context, result); + + return jsresult; +} + +SWIGRUNTIME JSStaticValue _SwigObject_values[] = { + { + 0, 0, 0, 0 + } +}; + +SWIGRUNTIME JSStaticFunction _SwigObject_functions[] = { + { + "disown",_wrap_SwigObject_disown, kJSPropertyAttributeNone + }, + { + "equals",_wrap_SwigObject_equals, kJSPropertyAttributeNone + }, + { + "getCPtr",_wrap_SwigObject_getCPtr, kJSPropertyAttributeNone + }, + { + 0, 0, 0 + } +}; + +SWIGRUNTIME JSClassDefinition _SwigObject_objectDefinition; + +SWIGRUNTIME JSClassRef _SwigObject_classRef; + + +SWIGRUNTIME int SWIG_JSC_ConvertInstancePtr(JSContextRef context, JSObjectRef objRef, void** ptr, swig_type_info *info, int flags) { + SwigPrivData *cdata; + + cdata = (SwigPrivData *) JSObjectGetPrivate(objRef); + if(cdata == NULL) { + return SWIG_ERROR; + } + if(cdata->info != info) { + bool type_valid = false; + swig_cast_info *t = info->cast; + while(t != NULL) { + if(t->type == cdata->info) { + type_valid = true; + break; + } + t = t->next; + } + if(!type_valid) { + return SWIG_TypeError; + } + } + + *ptr = cdata->swigCObject; + + if(flags & SWIG_POINTER_DISOWN) { + cdata->swigCMemOwn = false; + } + + return SWIG_OK; +} + +SWIGRUNTIME int SWIG_JSC_ConvertPtr(JSContextRef context, JSValueRef valRef, void** ptr, swig_type_info *info, int flags) { + JSObjectRef objRef; + + /* special case: JavaScript null => C NULL pointer */ + if(JSValueIsNull(context, valRef)) { + *ptr=0; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } + + if(!JSValueIsObject(context, valRef)) { + return SWIG_TypeError; + } + + objRef = JSValueToObject(context, valRef, NULL); + if(objRef == NULL) { + return SWIG_ERROR; + } + + return SWIG_JSC_ConvertInstancePtr(context, objRef, ptr, info, flags); +} + +SWIGRUNTIME JSObjectRef SWIG_JSC_NewPointerObj(JSContextRef context, void *ptr, swig_type_info *info, int flags) { + JSClassRef classRef; + JSObjectRef result; + SwigPrivData *cdata; + + if (ptr == NULL) { + // HACK: it is not possible to use JSValueToObject (causing seg-fault) + // This static cast turned out to be a workaround + // In future, we should change the interface of this method + // to return JSValueRef instead of JSObjectRef. + return (JSObjectRef) JSValueMakeNull(context); + } + + if(info->clientdata == NULL) { + classRef = _SwigObject_classRef; + } else { + classRef = (JSClassRef) info->clientdata; + } + + result = JSObjectMake(context, classRef, NULL); + + cdata = (SwigPrivData*) malloc(sizeof(SwigPrivData)); + cdata->swigCObject = ptr; + cdata->swigCMemOwn = (flags & SWIG_POINTER_OWN) ? 1 : 0; + cdata->info = info; + + JSObjectSetPrivate(result, cdata); + + return result; +} + +#define SWIG_ConvertPtr(obj, ptr, info, flags) SWIG_JSC_ConvertPtr(context, obj, ptr, info, flags) +#define SWIG_NewPointerObj(ptr, info, flags) SWIG_JSC_NewPointerObj(context, ptr, info, flags) + +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_JSC_ConvertInstancePtr(context, obj, pptr, type, flags) +#define SWIG_NewInstanceObj(thisvalue, type, flags) SWIG_JSC_NewPointerObj(context, thisvalue, type, flags) + +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_JSC_ConvertPtr(context, obj, pptr, type, 0) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_JSC_NewPointerObj(context, ptr, type, 0) + +/* ---------------------------------------------------------------------------- + * A class for packed data + * + * ---------------------------------------------------------------------------*/ + +typedef struct { + void *data; + size_t size; + swig_type_info *type; +} SwigPackedData; + +SWIGRUNTIME JSStaticValue _SwigPackedData_values[] = { + { + 0, 0, 0, 0 + } +}; +SWIGRUNTIME JSStaticFunction _SwigPackedData_functions[] = { + { + 0, 0, 0 + } +}; +SWIGRUNTIME JSClassDefinition _SwigPackedData_objectDefinition; +SWIGRUNTIME JSClassRef _SwigPackedData_classRef; + +SWIGRUNTIMEINLINE +int SwigJSCPacked_Check(JSContextRef context, JSValueRef valRef) { + return JSValueIsObjectOfClass(context, valRef, _SwigPackedData_classRef); +} + +SWIGRUNTIME +swig_type_info* SwigJSCPacked_UnpackData(JSContextRef context, JSValueRef valRef, void *ptr, size_t size) { + if (SwigJSCPacked_Check(context, valRef)) { + JSObjectRef objRef = JSValueToObject(context, valRef, NULL); + SwigPackedData *sobj = (SwigPackedData *) JSObjectGetPrivate(objRef); + if (sobj->size != size) return 0; + memcpy(ptr, sobj->data, size); + return sobj->type; + } else { + return 0; + } +} + +SWIGRUNTIME +int SWIG_JSC_ConvertPacked(JSContextRef context, JSValueRef valRef, void *ptr, size_t sz, swig_type_info *ty) { + swig_type_info *to = SwigJSCPacked_UnpackData(context, valRef, ptr, sz); + if (!to) return SWIG_ERROR; + if (ty) { + if (to != ty) { + /* check type cast? */ + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) return SWIG_ERROR; + } + } + return SWIG_OK; +} + +SWIGRUNTIME +JSValueRef SWIG_JSC_NewPackedObj(JSContextRef context, void *data, size_t size, swig_type_info *type) { + + JSClassRef classRef = _SwigObject_classRef; + JSObjectRef result = JSObjectMake(context, classRef, NULL); + + SwigPackedData* cdata = (SwigPackedData*) malloc(sizeof(SwigPackedData)); + cdata->data = data; + cdata->size = size; + cdata->type = type; + + JSObjectSetPrivate(result, cdata); + + return result; +} + +/* SwigPackedData wrappers */ +SWIGRUNTIME +void _wrap_SwigPackedData_delete(JSObjectRef obj) +{ + SwigPackedData* cdata = (SwigPackedData*) JSObjectGetPrivate(obj); + if (cdata) { + free(cdata->data); + } +} + +/* for C++ member pointers, ie, member methods */ + +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_JSC_ConvertPacked(context, obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_JSC_NewPackedObj(context, ptr, sz, type) + + +/* --------------------------------------------------------------------------- + * Support for IN/OUTPUT typemaps (see Lib/typemaps/inoutlist.swg) + * + * ---------------------------------------------------------------------------*/ +SWIGRUNTIME +unsigned int SWIGJSC_ArrayLength(JSContextRef context, JSObjectRef arr) { + static JSStringRef LENGTH = 0; + JSValueRef exception = NULL; + JSValueRef js_length; + double length; + + if (LENGTH == 0) { + LENGTH = JSStringCreateWithUTF8CString("length"); + } + + js_length = JSObjectGetProperty(context, arr, LENGTH, &exception); + if (exception == 0 && JSValueIsNumber(context, js_length)) { + length = JSValueToNumber(context, js_length, 0); + return (unsigned int) length; + } else { + return 0; + } +} + +SWIGRUNTIME +JSValueRef SWIGJSC_AppendOutput(JSContextRef context, JSValueRef value, JSValueRef obj) { + JSObjectRef arr; + unsigned int length; + + if (JSValueIsUndefined(context, value)) { + arr = JSObjectMakeArray(context, 0, 0, 0); + } else { + arr = JSValueToObject(context, value, 0); + } + + length = SWIGJSC_ArrayLength(context, arr); + JSObjectSetPropertyAtIndex(context, arr, length, obj, 0); + return arr; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptruntime.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptruntime.swg new file mode 100644 index 00000000..8f839089 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptruntime.swg @@ -0,0 +1,19 @@ +/* ----------------------------------------------------------------------------- + * javascriptruntime.swg + * + * Javascript support code + * ----------------------------------------------------------------------------- */ + +%insert(runtime) %{ +#include +#include +#include +#include +#include +#include +%} + +%insert(runtime) "swigrun.swg"; /* SWIG API */ +%insert(runtime) "swigerrors.swg"; /* SWIG errors */ + +%insert(runtime) "javascriptrun.swg"; /* SWIG errors */ diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptstrings.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptstrings.swg new file mode 100644 index 00000000..55c8e4b9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/javascriptstrings.swg @@ -0,0 +1,185 @@ +/* ------------------------------------------------------------ + * utility methods for char strings + * ------------------------------------------------------------ */ +%fragment("SWIG_AsCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERN int +SWIG_JSC_AsCharPtrAndSize(JSContextRef context, JSValueRef valRef, char** cptr, size_t* psize, int *alloc) +{ + if(JSValueIsString(context, valRef)) { + JSStringRef js_str = JSValueToStringCopy(context, valRef, NULL); + size_t len = JSStringGetMaximumUTF8CStringSize(js_str); + char* cstr = (char*) %new_array(len, char); + /* JSStringGetUTF8CString returns the length including 0-terminator */ + len = JSStringGetUTF8CString(js_str, cstr, len); + + if(alloc) *alloc = SWIG_NEWOBJ; + if(psize) *psize = len; + if(cptr) *cptr = cstr; + + return SWIG_OK; + } else { + if(JSValueIsObject(context, valRef)) { + JSObjectRef obj = JSValueToObject(context, valRef, NULL); + // try if the object is a wrapped char[] + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + void* vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (char *) vptr; + if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + return SWIG_TypeError; + } else { + return SWIG_TypeError; + } + } +} +} + +%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERNINLINE JSValueRef +SWIG_JSC_FromCharPtrAndSize(JSContextRef context, const char* carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + // TODO: handle extra long strings + //swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + //return pchar_descriptor ? + // SWIG_InternalNewPointerObj(%const_cast(carray,char *), pchar_descriptor, 0) : SWIG_Py_Void(); + return JSValueMakeUndefined(context); + } else { + JSStringRef jsstring; + JSValueRef result; + if(size < 2) { + char c[2]; + int i; + for(i=0;i + +/* Look for user fragments file. */ +%include + +/* Javascript fragments for fundamental types */ +%include + +/* Javascript fragments for char* strings */ +%include + +/* ------------------------------------------------------------ + * Unified typemap section + * ------------------------------------------------------------ */ + +#define SWIG_Object JSValueRef +#define VOID_Object JSValueMakeUndefined(context) + +/* append output */ +#define SWIG_AppendOutput(result, obj) SWIGJSC_AppendOutput(context, result, obj) + +/* set constant */ +#define SWIG_SetConstant(name, obj) + +/* raise */ +#define SWIG_Raise(obj, type, desc) SWIG_Javascript_Raise(context, exception, type) + +%insert("runtime") %{ +#define SWIG_JSC_FROM_DECL_ARGS(arg1) (JSContextRef context, arg1) +#define SWIG_JSC_FROM_CALL_ARGS(arg1) (context, arg1) +#define SWIG_JSC_AS_DECL_ARGS(arg1, arg2) (JSContextRef context, arg1, arg2) +#define SWIG_JSC_AS_CALL_ARGS(arg1, arg2) (context, arg1, arg2) +%} + +/* Include the unified typemap library */ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_common.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_common.i new file mode 100644 index 00000000..cee11e8c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_common.i @@ -0,0 +1,5 @@ +%include + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_complex.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_complex.i new file mode 100644 index 00000000..a252e0aa --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_complex.i @@ -0,0 +1,26 @@ +/* + * STD C++ complex typemaps + */ + +%include + +%{ +#include +%} + +namespace std { + %naturalvar complex; + template class complex; + %template() complex; + %template() complex; +} + +/* defining the complex as/from converters */ + +%swig_cplxdbl_convn(std::complex, std::complex, std::real, std::imag) +%swig_cplxflt_convn(std::complex, std::complex, std::real, std::imag) + +/* defining the typemaps */ + +%typemaps_primitive(%checkcode(CPLXDBL), std::complex); +%typemaps_primitive(%checkcode(CPLXFLT), std::complex); diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_except.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_except.i new file mode 100644 index 00000000..af98428f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_except.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_map.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_map.i new file mode 100644 index 00000000..9fa10880 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_map.i @@ -0,0 +1,81 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template > class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + } + }; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_pair.i new file mode 100644 index 00000000..732347db --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_pair.i @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_string.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_string.i new file mode 100644 index 00000000..dc1378ae --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_string.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_vector.i new file mode 100644 index 00000000..586ac5c6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/std_vector.i @@ -0,0 +1,99 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * ----------------------------------------------------------------------------- */ + +%include + +%{ +#include +#include +%} + +namespace std { + + template class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(); + vector(size_type n); + vector(const vector& other); + + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %rename(add) push_back; + void push_back(const value_type& x); + %extend { + const_reference get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef bool value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef bool const_reference; + + vector(); + vector(size_type n); + vector(const vector& other); + + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %rename(add) push_back; + void push_back(const value_type& x); + %extend { + bool get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/typemaps.i new file mode 100644 index 00000000..d3d8afb1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/jsc/typemaps.i @@ -0,0 +1,148 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Pointer handling + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers. + * ----------------------------------------------------------------------------- */ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + + int *INPUT + short *INPUT + long *INPUT + long long *INPUT + unsigned int *INPUT + unsigned short *INPUT + unsigned long *INPUT + unsigned long long *INPUT + unsigned char *INPUT + bool *INPUT + float *INPUT + double *INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a Python tuple. + + int *OUTPUT + short *OUTPUT + long *OUTPUT + long long *OUTPUT + unsigned int *OUTPUT + unsigned short *OUTPUT + unsigned long *OUTPUT + unsigned long long *OUTPUT + unsigned char *OUTPUT + bool *OUTPUT + float *OUTPUT + double *OUTPUT + +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).K: + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Python output of the function would be a tuple containing both +output values. + +*/ + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a Python tuple. + + int *INOUT + short *INOUT + long *INOUT + long long *INOUT + unsigned int *INOUT + unsigned short *INOUT + unsigned long *INOUT + unsigned long long *INOUT + unsigned char *INOUT + bool *INOUT + float *INOUT + double *INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include + void neg(double *INOUT); + +or you can use the %apply directive : + + %include + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value (since +this makes no sense in Python). Rather, the modified input value shows +up as the return value of the function. Thus, to apply this function +to a Python variable you might do this : + + x = neg(x) + +Note : previous versions of SWIG used the symbol 'BOTH' to mark +input/output arguments. This is still supported, but will be slowly +phased out in future releases. + +*/ + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/arrays_javascript.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/arrays_javascript.i new file mode 100644 index 00000000..22b50be8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/arrays_javascript.i @@ -0,0 +1,125 @@ +/* ----------------------------------------------------------------------------- + * arrays_javascript.i + * + * These typemaps give more natural support for arrays. The typemaps are not efficient + * as there is a lot of copying of the array values whenever the array is passed to C/C++ + * from JavaScript and vice versa. The JavaScript array is expected to be the same size as the C array. + * An exception is thrown if they are not. + * + * Example usage: + * Wrapping: + * + * %include + * %inline %{ + * extern int FiddleSticks[3]; + * %} + * + * Use from JavaScript like this: + * + * var fs = [10, 11, 12]; + * example.FiddleSticks = fs; + * fs = example.FiddleSticks; + * ----------------------------------------------------------------------------- */ + +%fragment("SWIG_JSCGetIntProperty", "header", fragment=SWIG_AsVal_frag(int)) {} +%fragment("SWIG_JSCGetNumberProperty", "header", fragment=SWIG_AsVal_frag(double)) {} + +%typemap(in, fragment="SWIG_JSCGetIntProperty") int[], int[ANY] + (int length = 0, v8::Local array, v8::Local jsvalue, int i = 0, int res = 0, $*1_ltype temp) { + if ($input->IsArray()) + { + // Convert into Array + array = v8::Local::Cast($input); + + length = $1_dim0; + + $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); + + // Get each element from array + for (i = 0; i < length; i++) + { + jsvalue = array->Get(i); + + // Get primitive value from JSObject + res = SWIG_AsVal(int)(jsvalue, &temp); + if (!SWIG_IsOK(res)) + { + SWIG_exception_fail(SWIG_ERROR, "Failed to convert $input to double"); + } + arg$argnum[i] = temp; + } + + } + else + { + SWIG_exception_fail(SWIG_ERROR, "$input is not JSObjectRef"); + } +} + +%typemap(freearg) int[], int[ANY] { + free($1); +} + +%typemap(out, fragment=SWIG_From_frag(int)) int[], int[ANY] (int length = 0, int i = 0) +{ + length = $1_dim0; + v8::Local array = v8::Array::New(length); + + for (i = 0; i < length; i++) + { + array->Set(i, SWIG_From(int)($1[i])); + } + + + $result = array; +} + +%typemap(in, fragment="SWIG_JSCGetNumberProperty") double[], double[ANY] + (int length = 0, v8::Local array, v8::Local jsvalue, int i = 0, int res = 0, $*1_ltype temp) { + if ($input->IsArray()) + { + // Convert into Array + array = v8::Local::Cast($input); + + length = $1_dim0; + + $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); + + // Get each element from array + for (i = 0; i < length; i++) + { + jsvalue = array->Get(i); + + // Get primitive value from JSObject + res = SWIG_AsVal(double)(jsvalue, &temp); + if (!SWIG_IsOK(res)) + { + SWIG_exception_fail(SWIG_ERROR, "Failed to convert $input to double"); + } + arg$argnum[i] = temp; + } + + } + else + { + SWIG_exception_fail(SWIG_ERROR, "$input is not JSObjectRef"); + } +} + +%typemap(freearg) double[], double[ANY] { + free($1); +} + +%typemap(out, fragment=SWIG_From_frag(double)) double[], double[ANY] (int length = 0, int i = 0) +{ + length = $1_dim0; + v8::Local array = v8::Array::New(length); + + for (i = 0; i < length; i++) + { + array->Set(i, SWIG_From(double)($1[i])); + } + + + $result = array; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/ccomplex.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/ccomplex.i new file mode 100644 index 00000000..8eda920b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/ccomplex.i @@ -0,0 +1,26 @@ +/* ----------------------------------------------------------------------------- + * ccomplex.i + * + * C complex typemaps + * ISO C99: 7.3 Complex arithmetic + * ----------------------------------------------------------------------------- */ + + +%include + +%{ +#include +%} + + +/* C complex constructor */ +#define CCplxConst(r, i) ((r) + I*(i)) + +%swig_cplxflt_convn(float complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(double complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(complex, CCplxConst, creal, cimag); + +/* declaring the typemaps */ +%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, complex); diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/cdata.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/cdata.i new file mode 100644 index 00000000..36796599 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/cdata.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/complex.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/complex.i new file mode 100644 index 00000000..4c3b3c5e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/complex.i @@ -0,0 +1,6 @@ +#ifdef __cplusplus +%include +#else +%include +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/exception.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/exception.i new file mode 100644 index 00000000..0246cfde --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/exception.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascript.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascript.swg new file mode 100644 index 00000000..3a83b649 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascript.swg @@ -0,0 +1,19 @@ +/* ----------------------------------------------------------------------------- + * javascript.swg + * + * Javascript typemaps + * ----------------------------------------------------------------------------- */ + +%include + +%include + +%include + +%include + +%include + +%include + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptcode.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptcode.swg new file mode 100644 index 00000000..c4aaf3db --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptcode.swg @@ -0,0 +1,509 @@ +/* ----------------------------------------------------------------------------- + * js_ctor: template for wrapping a ctor. + * - $jswrapper: wrapper of called ctor + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * - $jsargcount: number of arguments + * - $jsmangledtype: mangled type of class + * ----------------------------------------------------------------------------- */ + +%fragment("js_ctor", "templates") %{ +static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { + SWIGV8_HANDLESCOPE(); + + v8::Handle self = args.Holder(); + $jslocals + if(args.Length() != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); + $jscode + + SWIGV8_SetPrivateData(self, result, SWIGTYPE_$jsmangledtype, SWIG_POINTER_OWN); + SWIGV8_RETURN(self); + + goto fail; +fail: + SWIGV8_RETURN(SWIGV8_UNDEFINED()); +} +%} + +/* ----------------------------------------------------------------------------- + * js_veto_ctor: a vetoing ctor for abstract classes + * - $jswrapper: name of wrapper + * - $jsname: class name + * ----------------------------------------------------------------------------- */ +%fragment ("js_veto_ctor", "templates") +%{ +static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { + SWIGV8_HANDLESCOPE(); + + SWIG_exception(SWIG_ERROR, "Class $jsname can not be instantiated"); +fail: + SWIGV8_RETURN(SWIGV8_UNDEFINED()); +} +%} + +/* ----------------------------------------------------------------------------- + * js_ctor_dispatcher: dispatcher for overloaded constructors + * - $jswrapper: name of wrapper + * - $jsname: class name + * - $jsdispatchcases: part containing code for dispatching + * ----------------------------------------------------------------------------- */ +%fragment ("js_ctor_dispatcher", "templates") +%{ +static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { + SWIGV8_HANDLESCOPE(); + + OverloadErrorHandler errorHandler; + v8::Handle self; + + // switch all cases by means of series of if-returns. + $jsdispatchcases + + // default: + SWIG_exception_fail(SWIG_ERROR, "Illegal arguments for construction of $jsmangledname"); + +fail: + SWIGV8_RETURN(SWIGV8_UNDEFINED()); +} +%} + +/* ----------------------------------------------------------------------------- + * js_overloaded_ctor: template for wrapping a ctor. + * - $jswrapper: wrapper of called ctor + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * - $jsargcount: number of arguments + * - $jsmangledtype: mangled type of class + * ----------------------------------------------------------------------------- */ +%fragment("js_overloaded_ctor", "templates") %{ +static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args, V8ErrorHandler &SWIGV8_ErrorHandler) { + SWIGV8_HANDLESCOPE(); + + v8::Handle self = args.Holder(); + $jslocals + if(args.Length() != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); + $jscode + + SWIGV8_SetPrivateData(self, result, SWIGTYPE_$jsmangledtype, SWIG_POINTER_OWN); + SWIGV8_RETURN(self); + + goto fail; +fail: + SWIGV8_RETURN(SWIGV8_UNDEFINED()); +} +%} + +/* ----------------------------------------------------------------------------- + * js_ctor_dispatch_case: template for a dispatch case for calling an overloaded ctor. + * - $jsargcount: number of arguments of called ctor + * - $jswrapper: wrapper of called ctor + * + * Note: a try-catch-like mechanism is used to switch cases + * ----------------------------------------------------------------------------- */ +%fragment ("js_ctor_dispatch_case", "templates") +%{ + if(args.Length() == $jsargcount) { + errorHandler.err.Clear(); +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) + self = $jswrapper(args, errorHandler); + if(errorHandler.err.IsEmpty()) { + SWIGV8_ESCAPE(self); + } +#else + $jswrapper(args, errorHandler); + if(errorHandler.err.IsEmpty()) { + return; + } +#endif + } +%} + +/* ----------------------------------------------------------------------------- + * js_dtor: template for a destructor wrapper + * - $jsmangledname: mangled class name + * - $jstype: class type + * ----------------------------------------------------------------------------- */ +%fragment ("js_dtor", "templates") +%{ + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) +static void $jswrapper(v8::Persistent< v8::Value > object, void *parameter) { + SWIGV8_Proxy *proxy = static_cast(parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) +static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, void *parameter) { + SWIGV8_Proxy *proxy = static_cast(parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) +static void $jswrapper(v8::Isolate *isolate, v8::Persistent *object, SWIGV8_Proxy *proxy) { +#elif (V8_MAJOR_VERSION-0) < 5 +static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); +#else + static void $jswrapper(const v8::WeakCallbackInfo &data) { + SWIGV8_Proxy *proxy = data.GetParameter(); +#endif + + if(proxy->swigCMemOwn && proxy->swigCObject) { +#ifdef SWIGRUNTIME_DEBUG + printf("Deleting wrapped instance: %s\n", proxy->info->name); +#endif + $jsfree proxy->swigCObject; + } + delete proxy; + +#if (V8_MAJOR_VERSION-0) < 5 + object.Clear(); +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + object.Dispose(); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) + object.Dispose(isolate); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + object->Dispose(isolate); +#elif (V8_MAJOR_VERSION-0) < 5 + object->Dispose(); +#endif +} +%} + +/* ----------------------------------------------------------------------------- + * js_dtoroverride: template for a destructor wrapper + * - $jsmangledname: mangled class name + * - $jstype: class type + * - ${destructor_action}: The custom destructor action to invoke. + * ----------------------------------------------------------------------------- */ +%fragment ("js_dtoroverride", "templates") +%{ +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) +static void $jswrapper(v8::Persistent object, void *parameter) { + SWIGV8_Proxy *proxy = static_cast(parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) +static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, void *parameter) { + SWIGV8_Proxy *proxy = static_cast(parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) +static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) { +#elif (V8_MAJOR_VERSION-0) < 5 +static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); +#else +static void $jswrapper(const v8::WeakCallbackInfo &data) { + SWIGV8_Proxy *proxy = data.GetParameter(); +#endif + + if(proxy->swigCMemOwn && proxy->swigCObject) { + $jstype arg1 = ($jstype)proxy->swigCObject; + ${destructor_action} + } + delete proxy; + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + object.Dispose(); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) + object.Dispose(isolate); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + object->Dispose(isolate); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +#elif (V8_MAJOR_VERSION-0) < 5 + object.Clear(); +#endif +} +%} + +/* ----------------------------------------------------------------------------- + * js_getter: template for getter function wrappers + * - $jswrapper: wrapper function name + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment("js_getter", "templates") +%{ +#if (V8_MAJOR_VERSION-0) < 5 +static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { +#else +static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { +#endif + SWIGV8_HANDLESCOPE(); + + v8::Handle jsresult; + $jslocals + $jscode + SWIGV8_RETURN_INFO(jsresult, info); + + goto fail; +fail: + SWIGV8_RETURN_INFO(SWIGV8_UNDEFINED(), info); +} +%} + +/* ----------------------------------------------------------------------------- + * js_setter: template for setter function wrappers + * - $jswrapper: wrapper function name + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment("js_setter", "templates") +%{ +#if (V8_MAJOR_VERSION-0) < 5 +static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { +#else +static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { +#endif + SWIGV8_HANDLESCOPE(); + + $jslocals + $jscode + goto fail; +fail: + return; +} +%} + +/* ----------------------------------------------------------------------------- + * js_function: template for function wrappers + * - $jswrapper: wrapper function name + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment("js_function", "templates") +%{ +static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { + SWIGV8_HANDLESCOPE(); + + v8::Handle jsresult; + $jslocals + if(args.Length() != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); + + $jscode + SWIGV8_RETURN(jsresult); + + goto fail; +fail: + SWIGV8_RETURN(SWIGV8_UNDEFINED()); +} +%} + +/* ----------------------------------------------------------------------------- + * js_function_dispatcher: template for a function dispatcher for overloaded functions + * - $jswrapper: wrapper function name + * - $jsname: name of the wrapped function + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment("js_function_dispatcher", "templates") +%{ +static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { + SWIGV8_HANDLESCOPE(); + + v8::Handle jsresult; + OverloadErrorHandler errorHandler; + $jscode + + SWIG_exception_fail(SWIG_ERROR, "Illegal arguments for function $jsname."); + + goto fail; +fail: + SWIGV8_RETURN(SWIGV8_UNDEFINED()); +} +%} + +/* ----------------------------------------------------------------------------- + * js_overloaded_function: template for a overloaded function + * - $jswrapper: wrapper function name + * - $jslocals: locals part of wrapper + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment ("js_overloaded_function", "templates") +%{ +static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args, V8ErrorHandler &SWIGV8_ErrorHandler) +{ + SWIGV8_HANDLESCOPE(); + + v8::Handle jsresult; + $jslocals + $jscode + SWIGV8_RETURN(jsresult); + + goto fail; +fail: + SWIGV8_RETURN(SWIGV8_UNDEFINED()); +} +%} + +/* ----------------------------------------------------------------------------- + * js_function_dispatch_case: template for a case used in the function dispatcher + * - $jswrapper: wrapper function name + * - $jsargcount: number of arguments of overloaded function + * - $jscode: code part of wrapper + * ----------------------------------------------------------------------------- */ +%fragment ("js_function_dispatch_case", "templates") +%{ + + if(args.Length() == $jsargcount) { + errorHandler.err.Clear(); +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) + jsresult = $jswrapper(args, errorHandler); + if(errorHandler.err.IsEmpty()) { + SWIGV8_ESCAPE(jsresult); + } +#else + $jswrapper(args, errorHandler); + if(errorHandler.err.IsEmpty()) { + return; + } +#endif + } +%} + +/* ----------------------------------------------------------------------------- + * jsv8_declare_class_template: template for a class template declaration. + * - $jsmangledname: mangled class name + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_declare_class_template", "templates") +%{ + SWIGV8_ClientData $jsmangledname_clientData; +%} + +/* ----------------------------------------------------------------------------- + * jsv8_define_class_template: template for a class template definition. + * - $jsmangledname: mangled class name + * - $jsmangledtype: mangled class type + * - $jsdtor: the dtor wrapper + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_define_class_template", "templates") +%{ + /* Name: $jsmangledname, Type: $jsmangledtype, Dtor: $jsdtor */ + v8::Handle $jsmangledname_class = SWIGV8_CreateClassTemplate("$jsmangledname"); + SWIGV8_SET_CLASS_TEMPL($jsmangledname_clientData.class_templ, $jsmangledname_class); + $jsmangledname_clientData.dtor = $jsdtor; + if (SWIGTYPE_$jsmangledtype->clientdata == 0) { + SWIGTYPE_$jsmangledtype->clientdata = &$jsmangledname_clientData; + } +%} + + +/* ----------------------------------------------------------------------------- + * jsv8_inherit: template for an class inherit statement. + * - $jsmangledname: mangled class name + * - $jsbaseclass: mangled name of the base class + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_inherit", "templates") +%{ + if (SWIGTYPE_p$jsbaseclass->clientdata && !(static_cast(SWIGTYPE_p$jsbaseclass->clientdata)->class_templ.IsEmpty())) + { +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) + $jsmangledname_class->Inherit(static_cast(SWIGTYPE_p$jsbaseclass->clientdata)->class_templ); +#else + $jsmangledname_class->Inherit( + v8::Local::New( + v8::Isolate::GetCurrent(), + static_cast(SWIGTYPE_p$jsbaseclass->clientdata)->class_templ) + ); +#endif + +#ifdef SWIGRUNTIME_DEBUG + printf("Inheritance successful $jsmangledname $jsbaseclass\n"); +#endif + } else { +#ifdef SWIGRUNTIME_DEBUG + printf("Unable to inherit baseclass, it didn't exist $jsmangledname $jsbaseclass\n"); +#endif + } +%} + +/* ----------------------------------------------------------------------------- + * jsv8_create_class_instance: template for creating an class object. + * - $jsname: class name + * - $jsmangledname: mangled class name + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_create_class_instance", "templates") +%{ + /* Class: $jsname ($jsmangledname) */ + v8::Handle $jsmangledname_class_0 = SWIGV8_CreateClassTemplate("$jsname"); + $jsmangledname_class_0->SetCallHandler($jsctor); + $jsmangledname_class_0->Inherit($jsmangledname_class); + $jsmangledname_class_0->SetHiddenPrototype(true); + v8::Handle $jsmangledname_obj = $jsmangledname_class_0->GetFunction(); +%} + +/* ----------------------------------------------------------------------------- + * jsv8_register_class: template for a statement that registers a class in a parent namespace. + * - $jsname: class name + * - $jsmangledname: mangled class name + * - $jsparent: mangled name of parent namespace + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_register_class", "templates") +%{ + $jsparent_obj->Set(SWIGV8_SYMBOL_NEW("$jsname"), $jsmangledname_obj); +%} + +/* ----------------------------------------------------------------------------- + * jsv8_create_namespace: template for a statement that creates a namespace object. + * - $jsmangledname: mangled namespace name + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_create_namespace", "templates") +%{ + v8::Handle $jsmangledname_obj = SWIGV8_OBJECT_NEW(); +%} + +/* ----------------------------------------------------------------------------- + * jsv8_register_namespace: template for a statement that registers a namespace in a parent namespace. + * - $jsname: name of namespace + * - $jsmangledname: mangled name of namespace + * - $jsparent: mangled name of parent namespace + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_register_namespace", "templates") +%{ + $jsparent_obj->Set(SWIGV8_SYMBOL_NEW("$jsname"), $jsmangledname_obj); +%} + +/* ----------------------------------------------------------------------------- + * jsv8_register_member_function: template for a statement that registers a member function. + * - $jsmangledname: mangled class name + * - $jsname: name of the function + * - $jswrapper: wrapper of the member function + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_register_member_function", "templates") +%{ + SWIGV8_AddMemberFunction($jsmangledname_class, "$jsname", $jswrapper); +%} + +/* ----------------------------------------------------------------------------- + * jsv8_register_member_variable: template for a statement that registers a member variable. + * - $jsmangledname: mangled class name + * - $jsname: name of the function + * - $jsgetter: wrapper of the getter function + * - $jssetter: wrapper of the setter function + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_register_member_variable", "templates") +%{ + SWIGV8_AddMemberVariable($jsmangledname_class, "$jsname", $jsgetter, $jssetter); +%} + +/* ----------------------------------------------------------------------------- + * jsv8_register_static_function: template for a statement that registers a static class function. + * - $jsname: function name + * - $jswrapper: wrapper of the function + * - $jsparent: mangled name of parent namespace + * + * Note: this template is also used for global functions. + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_register_static_function", "templates") +%{ + SWIGV8_AddStaticFunction($jsparent_obj, "$jsname", $jswrapper); +%} + +/* ----------------------------------------------------------------------------- + * jsv8_register_static_variable: template for a statement that registers a static variable. + * - $jsname: variable name + * - $jsparent: mangled name of parent namespace + * - $jsgetter: wrapper of the getter function + * - $jssetter: wrapper of the setter function + * + * Note: this template is also used for global variables. + * ----------------------------------------------------------------------------- */ +%fragment("jsv8_register_static_variable", "templates") +%{ + SWIGV8_AddStaticVariable($jsparent_obj, "$jsname", $jsgetter, $jssetter); +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptcomplex.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptcomplex.swg new file mode 100644 index 00000000..d3b4aaff --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptcomplex.swg @@ -0,0 +1,124 @@ +/* + Defines the As/From converters for double/float complex, you need to + provide complex Type, the Name you want to use in the converters, + the complex Constructor method, and the Real and Imag complex + accessor methods. + + See the std_complex.i and ccomplex.i for concrete examples. +*/ + +/* the common from converter */ +%define %swig_fromcplx_conv(Type, Real, Imag) +%fragment(SWIG_From_frag(Type),"header", + fragment=SWIG_From_frag(double)) +{ +SWIGINTERNINLINE v8::Handle +SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) +{ + SWIGV8_HANDLESCOPE_ESC(); + + v8::Local vals = SWIGV8_ARRAY_NEW(); + + vals->Set(0, SWIG_From(double)(Real(c))); + vals->Set(1, SWIG_From(double)(Imag(c))); + SWIGV8_ESCAPE(vals); +} +} +%enddef + +/* the double case */ +%define %swig_cplxdbl_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(double)) +{ +SWIGINTERN int +SWIG_AsVal_dec(Type) (v8::Handle o, Type* val) +{ + SWIGV8_HANDLESCOPE(); + + if (o->IsArray()) { + v8::Handle array = v8::Handle::Cast(o); + + if(array->Length() != 2) SWIG_Error(SWIG_TypeError, "Illegal argument for complex: must be array[2]."); + double re, im; + int res; + + res = SWIG_AsVal(double)(array->Get(0), &re); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + res = SWIG_AsVal(double)(array->Get(1), &im); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + if (val) *val = Constructor(re, im); + return SWIG_OK; + } else if(o->IsNumber()){ + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(o, &d)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(d, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +/* the float case */ +%define %swig_cplxflt_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(float)) { +SWIGINTERN int +SWIG_AsVal_dec(Type) (v8::Handle o, Type* val) +{ + SWIGV8_HANDLESCOPE(); + + if (o->IsArray()) { + v8::Handle array = v8::Handle::Cast(o); + + if(array->Length() != 2) SWIG_Error(SWIG_TypeError, "Illegal argument for complex: must be array[2]."); + double re, im; + int res; + + res = SWIG_AsVal(double)(array->Get(0), &re); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + res = SWIG_AsVal(double)(array->Get(1), &im); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + if ((-FLT_MAX <= re && re <= FLT_MAX) && (-FLT_MAX <= im && im <= FLT_MAX)) { + if (val) *val = Constructor(%numeric_cast(re, float), + %numeric_cast(im, float)); + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else if(o->IsNumber()){ + float re; + int res = SWIG_AddCast(SWIG_AsVal(float)(o, &re)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(re, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +#define %swig_cplxflt_convn(Type, Constructor, Real, Imag) \ +%swig_cplxflt_conv(Type, Constructor, Real, Imag) + + +#define %swig_cplxdbl_convn(Type, Constructor, Real, Imag) \ +%swig_cplxdbl_conv(Type, Constructor, Real, Imag) diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptfragments.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptfragments.swg new file mode 100644 index 00000000..4778bf03 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptfragments.swg @@ -0,0 +1,23 @@ +/* + + Create a file with this name, 'javascriptfragments.swg', in your working + directory and add all the %fragments you want to take precedence + over the default ones defined by swig. + + For example, if you add: + + %fragment(SWIG_AsVal_frag(int),"header") { + SWIGINTERNINLINE int + SWIG_AsVal(int)(PyObject *obj, int *val) + { + ; + } + } + + this will replace the code used to retrieve an integer value for all + the typemaps that need it, including: + + int, std::vector, std::list >, etc. + + +*/ diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascripthelpers.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascripthelpers.swg new file mode 100644 index 00000000..80fbd7aa --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascripthelpers.swg @@ -0,0 +1,112 @@ +%insert(runtime) %{ + +// Note: since 3.19 there are new CallBack types, since 03.21.9 the old ones have been removed +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) +typedef v8::InvocationCallback SwigV8FunctionCallback; +typedef v8::AccessorGetter SwigV8AccessorGetterCallback; +typedef v8::AccessorSetter SwigV8AccessorSetterCallback; +typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; +#elif (V8_MAJOR_VERSION-0) < 5 +typedef v8::FunctionCallback SwigV8FunctionCallback; +typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; +typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; +typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; +#else +typedef v8::FunctionCallback SwigV8FunctionCallback; +typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; +typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; +typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; +#endif + +/** + * Creates a class template for a class with specified initialization function. + */ +SWIGRUNTIME v8::Handle SWIGV8_CreateClassTemplate(const char* symbol) { + SWIGV8_HANDLESCOPE_ESC(); + + v8::Local class_templ = SWIGV8_FUNCTEMPLATE_NEW_VOID(); + class_templ->SetClassName(SWIGV8_SYMBOL_NEW(symbol)); + + v8::Handle inst_templ = class_templ->InstanceTemplate(); + inst_templ->SetInternalFieldCount(1); + + v8::Handle equals_templ = class_templ->PrototypeTemplate(); + equals_templ->Set(SWIGV8_SYMBOL_NEW("equals"), SWIGV8_FUNCTEMPLATE_NEW(_SWIGV8_wrap_equals)); + + v8::Handle cptr_templ = class_templ->PrototypeTemplate(); + cptr_templ->Set(SWIGV8_SYMBOL_NEW("getCPtr"), SWIGV8_FUNCTEMPLATE_NEW(_wrap_getCPtr)); + + SWIGV8_ESCAPE(class_templ); +} + +/** + * Registers a class method with given name for a given class template. + */ +SWIGRUNTIME void SWIGV8_AddMemberFunction(v8::Handle class_templ, const char* symbol, + SwigV8FunctionCallback _func) { + v8::Handle proto_templ = class_templ->PrototypeTemplate(); + proto_templ->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)); +} + +/** + * Registers a class property with given name for a given class template. + */ +SWIGRUNTIME void SWIGV8_AddMemberVariable(v8::Handle class_templ, const char* symbol, + SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { + v8::Handle proto_templ = class_templ->InstanceTemplate(); + proto_templ->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); +} + +/** + * Registers a class method with given name for a given object. + */ +SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle obj, const char* symbol, + const SwigV8FunctionCallback& _func) { + obj->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction()); +} + +/** + * Registers a class method with given name for a given object. + */ +SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle obj, const char* symbol, + SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { +#if (V8_MAJOR_VERSION-0) < 5 + obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); +#else + obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter); +#endif +} + +#if (V8_MAJOR_VERSION-0) < 5 +SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) +#else +SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) +#endif +{ + char buffer[256]; + char msg[512]; + int res; + +#if (V8_MAJOR_VERSION-0) < 5 + property->WriteUtf8(buffer, 256); + res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); +#else + v8::Local sproperty; + if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) { + SWIGV8_WRITE_UTF8(sproperty, buffer, 256); + res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); + } + else { + res = -1; + } +#endif + + if(res<0) { + SWIG_exception(SWIG_ERROR, "Tried to write read-only variable."); + } else { + SWIG_exception(SWIG_ERROR, msg); + } +fail: ; +} + +%} // v8_helper_functions diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptinit.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptinit.swg new file mode 100644 index 00000000..8faf2dd8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptinit.swg @@ -0,0 +1,129 @@ +%insert(header) %{ +#include +%} + +%insert(init) %{ + +SWIGRUNTIME void +SWIG_V8_SetModule(void *, swig_module_info *swig_module) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); + v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); + assert(!mod.IsEmpty()); +#if (V8_MAJOR_VERSION-0) < 5 + global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod); +#else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); + global_obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, mod); +#endif +} + +SWIGRUNTIME swig_module_info * +SWIG_V8_GetModule(void *) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); +#if (V8_MAJOR_VERSION-0) < 5 + v8::Local moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data")); +#else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); + v8::Local moduleinfo; + if (!global_obj->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&moduleinfo)) + return 0; +#endif + + if (moduleinfo.IsEmpty() || moduleinfo->IsNull() || moduleinfo->IsUndefined()) + { + // It's not yet loaded + return 0; + } + + v8::Local moduleinfo_extern = v8::Local::Cast(moduleinfo); + + if (moduleinfo_extern.IsEmpty() || moduleinfo_extern->IsNull() || moduleinfo_extern->IsUndefined()) + { + // Something's not right + return 0; + } + + void *ptr = moduleinfo_extern->Value(); + assert(ptr); + swig_module_info *retptr = static_cast(ptr); + assert(retptr); + return retptr; +} + +#define SWIG_GetModule(clientdata) SWIG_V8_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_V8_SetModule(clientdata, pointer) + +%} + +%insert(init) "swiginit.swg" + +// Open the initializer function definition here + +%fragment ("js_initializer_define", "templates") %{ +#define SWIGV8_INIT $jsname_initialize +%} + +%insert(init) %{ +// Note: 'extern "C"'' disables name mangling which makes it easier to load the symbol manually +// TODO: is it ok to do that? +extern "C" +#if (NODE_MODULE_VERSION < 0x000C) +void SWIGV8_INIT (v8::Handle exports) +#else +void SWIGV8_INIT (v8::Handle exports, v8::Handle /*module*/) +#endif +{ + SWIG_InitializeModule(static_cast(&exports)); + + SWIGV8_HANDLESCOPE(); + + v8::Handle exports_obj = exports; +%} + + +/* ----------------------------------------------------------------------------- + * js_initializer: template for the module initializer function + * - $jsname: module name + * - $jsv8nspaces: part with code creating namespace objects + * - $jsv8classtemplates: part with code creating class templates + * - $jsv8wrappers: part with code that registers wrapper functions + * - $jsv8inheritance: part with inherit statements + * - $jsv8classinstances: part with code creating class objects + * - $jsv8staticwrappers: part with code adding static functions to class objects + * - $jsv8registerclasses: part with code that registers class objects in namespaces + * - $jsv8registernspaces: part with code that registers namespaces in parent namespaces + * ----------------------------------------------------------------------------- */ +%fragment("js_initializer", "templates") +%{ + // a class template for creating proxies of undefined types + SWIGV8_SET_CLASS_TEMPL(SWIGV8_SWIGTYPE_Proxy_class_templ, SWIGV8_CreateClassTemplate("SwigProxy")); + + /* create objects for namespaces */ + $jsv8nspaces + + /* create class templates */ + $jsv8classtemplates + + /* register wrapper functions */ + $jsv8wrappers + + /* setup inheritances */ + $jsv8inheritance + + /* class instances */ + $jsv8classinstances + + /* add static class functions and variables */ + $jsv8staticwrappers + + /* register classes */ + $jsv8registerclasses + + /* create and register namespace objects */ + $jsv8registernspaces +} + +#if defined(BUILDING_NODE_EXTENSION) +NODE_MODULE($jsname, $jsname_initialize) +#endif +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptkw.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptkw.swg new file mode 100644 index 00000000..c3c11839 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptkw.swg @@ -0,0 +1,40 @@ +#ifndef JAVASCRIPT_JAVASCRIPTKW_SWG_ +#define JAVASCRIPT_JAVASCRIPTKW_SWG_ + +/* Warnings for Java keywords */ +#define JAVASCRIPTKW(x) %keywordwarn("'" `x` "' is a javascript keyword, renaming to '_"`x`"'",rename="_%s") `x` + +/* Taken from https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Reserved_Words */ + +JAVASCRIPTKW(break); +JAVASCRIPTKW(case); +JAVASCRIPTKW(catch); +JAVASCRIPTKW(continue); +JAVASCRIPTKW(default); +JAVASCRIPTKW(delete); +JAVASCRIPTKW(do); +JAVASCRIPTKW(else); +JAVASCRIPTKW(finally); +JAVASCRIPTKW(for); +JAVASCRIPTKW(function); +JAVASCRIPTKW(if); +JAVASCRIPTKW(in); +JAVASCRIPTKW(instanceof); +JAVASCRIPTKW(new); +JAVASCRIPTKW(return); +JAVASCRIPTKW(switch); +JAVASCRIPTKW(this); +JAVASCRIPTKW(throw); +JAVASCRIPTKW(try); +JAVASCRIPTKW(typeof); +JAVASCRIPTKW(var); +JAVASCRIPTKW(void); +JAVASCRIPTKW(while); +JAVASCRIPTKW(with); + +/* others bad names if any*/ +// for example %namewarn("321:clone() is a javascript bad method name") *::clone(); + +#undef JAVASCRIPTKW + +#endif //JAVASCRIPT_JAVASCRIPTKW_SWG_ diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptprimtypes.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptprimtypes.swg new file mode 100644 index 00000000..f76be983 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptprimtypes.swg @@ -0,0 +1,206 @@ +/* ------------------------------------------------------------ + * Primitive Types + * ------------------------------------------------------------ */ + +/* boolean */ + +%fragment(SWIG_From_frag(bool),"header") { +SWIGINTERNINLINE +v8::Handle +SWIG_From_dec(bool)(bool value) +{ + return SWIGV8_BOOLEAN_NEW(value); +} +} + +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN +int SWIG_AsVal_dec(bool)(v8::Handle obj, bool *val) +{ + if(!obj->IsBoolean()) { + return SWIG_ERROR; + } + + if (val) *val = SWIGV8_BOOLEAN_VALUE(obj); + return SWIG_OK; +} +} + +/* int */ + +%fragment(SWIG_From_frag(int),"header") { +SWIGINTERNINLINE +v8::Handle SWIG_From_dec(int)(int value) +{ + return SWIGV8_INT32_NEW(value); +} +} + +%fragment(SWIG_AsVal_frag(int),"header") { +SWIGINTERN +int SWIG_AsVal_dec(int)(v8::Handle valRef, int* val) +{ + if (!valRef->IsNumber()) { + return SWIG_TypeError; + } + if(val) *val = SWIGV8_INTEGER_VALUE(valRef); + + return SWIG_OK; +} +} + +/* long */ + +%fragment(SWIG_From_frag(long),"header") { +SWIGINTERNINLINE +v8::Handle SWIG_From_dec(long)(long value) +{ + return SWIGV8_NUMBER_NEW(value); +} +} + +%fragment(SWIG_AsVal_frag(long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN +int SWIG_AsVal_dec(long)(v8::Handle obj, long* val) +{ + if (!obj->IsNumber()) { + return SWIG_TypeError; + } + if(val) *val = (long) SWIGV8_INTEGER_VALUE(obj); + + return SWIG_OK; +} +} + +/* unsigned long */ + +%fragment(SWIG_From_frag(unsigned long),"header", + fragment=SWIG_From_frag(long)) { +SWIGINTERNINLINE +v8::Handle SWIG_From_dec(unsigned long)(unsigned long value) +{ + return (value > LONG_MAX) ? + SWIGV8_INTEGER_NEW_UNS(value) : SWIGV8_INTEGER_NEW(%numeric_cast(value,long)); +} +} + +%fragment(SWIG_AsVal_frag(unsigned long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN +int SWIG_AsVal_dec(unsigned long)(v8::Handle obj, unsigned long *val) +{ + if(!obj->IsNumber()) { + return SWIG_TypeError; + } + + long longVal = (long) SWIGV8_NUMBER_VALUE(obj); + + if(longVal < 0) { + return SWIG_OverflowError; + } + + if(val) *val = longVal; + + return SWIG_OK; +} +} + +/* long long */ +// Note: these are copied from 'long' and probably need fixing + +%fragment(SWIG_From_frag(long long),"header", + fragment=SWIG_From_frag(long), + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE +v8::Handle SWIG_From_dec(long long)(long long value) +{ + return SWIGV8_NUMBER_NEW(value); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(long long),"header", + fragment=SWIG_AsVal_frag(long), + fragment="SWIG_CanCastAsInteger", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN +int SWIG_AsVal_dec(long long)(v8::Handle obj, long long* val) +{ + if (!obj->IsNumber()) { + return SWIG_TypeError; + } + if(val) *val = (long long) SWIGV8_INTEGER_VALUE(obj); + + return SWIG_OK; +} +%#endif +} + +/* unsigned long long */ +// Note: these are copied from 'unsigned long' and probably need fixing + +%fragment(SWIG_From_frag(unsigned long long),"header", + fragment=SWIG_From_frag(long long), + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE +v8::Handle SWIG_From_dec(unsigned long long)(unsigned long long value) +{ + return (value > LONG_MAX) ? + SWIGV8_INTEGER_NEW_UNS(value) : SWIGV8_INTEGER_NEW(%numeric_cast(value,long)); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(unsigned long long),"header", + fragment=SWIG_AsVal_frag(unsigned long), + fragment="SWIG_CanCastAsInteger", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN +int SWIG_AsVal_dec(unsigned long long)(v8::Handle obj, unsigned long long *val) +{ + if(!obj->IsNumber()) { + return SWIG_TypeError; + } + + long long longVal = (long long) SWIGV8_NUMBER_VALUE(obj); + + if(longVal < 0) { + return SWIG_OverflowError; + } + + if(val) *val = longVal; + + return SWIG_OK; +} +%#endif +} + +/* double */ + +%fragment(SWIG_From_frag(double),"header") { +SWIGINTERN +v8::Handle SWIG_From_dec(double) (double val) +{ + return SWIGV8_NUMBER_NEW(val); +} +} + +%fragment(SWIG_AsVal_frag(double),"header") { +SWIGINTERN +int SWIG_AsVal_dec(double)(v8::Handle obj, double *val) +{ + if(!obj->IsNumber()) { + return SWIG_TypeError; + } + if(val) *val = SWIGV8_NUMBER_VALUE(obj); + + return SWIG_OK; +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptrun.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptrun.swg new file mode 100644 index 00000000..2452f404 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptrun.swg @@ -0,0 +1,675 @@ +/* --------------------------------------------------------------------------- + * These typedefs and defines are used to deal with v8 API changes + * + * ---------------------------------------------------------------------------*/ + +// First v8 version that uses "SetWeak" and not "MakeWeak" + +#define SWIGV8_SETWEAK_VERSION 0x032224 + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031803) +#define SWIGV8_STRING_NEW2(cstr, len) v8::String::New(cstr, len) +#else +#define SWIGV8_STRING_NEW2(cstr, len) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::String::kNormalString, len) +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) +typedef v8::Handle SwigV8ReturnValue; +typedef v8::Arguments SwigV8Arguments; +typedef v8::AccessorInfo SwigV8PropertyCallbackInfo; +#define SWIGV8_RETURN(val) return scope.Close(val) +#define SWIGV8_RETURN_INFO(val, info) return scope.Close(val) +#else +typedef void SwigV8ReturnValue; +typedef v8::FunctionCallbackInfo SwigV8Arguments; +typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfo; +#define SWIGV8_RETURN(val) args.GetReturnValue().Set(val); return +#define SWIGV8_RETURN_INFO(val, info) info.GetReturnValue().Set(val); return +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032117) +#define SWIGV8_HANDLESCOPE() v8::HandleScope scope +#define SWIGV8_HANDLESCOPE_ESC() v8::HandleScope scope +#define SWIGV8_ESCAPE(val) return scope.Close(val) +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032224) +#define SWIGV8_HANDLESCOPE() v8::HandleScope scope(v8::Isolate::GetCurrent()); +#define SWIGV8_HANDLESCOPE_ESC() v8::HandleScope scope(v8::Isolate::GetCurrent()); +#define SWIGV8_ESCAPE(val) return scope.Close(val) +#else +#define SWIGV8_HANDLESCOPE() v8::HandleScope scope(v8::Isolate::GetCurrent()); +#define SWIGV8_HANDLESCOPE_ESC() v8::EscapableHandleScope scope(v8::Isolate::GetCurrent()); +#define SWIGV8_ESCAPE(val) return scope.Escape(val) +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032224) +#define SWIGV8_ADJUST_MEMORY(size) v8::V8::AdjustAmountOfExternalAllocatedMemory(size) +#define SWIGV8_CURRENT_CONTEXT() v8::Context::GetCurrent() +#define SWIGV8_THROW_EXCEPTION(err) v8::ThrowException(err) +#define SWIGV8_STRING_NEW(str) v8::String::New(str) +#define SWIGV8_SYMBOL_NEW(sym) v8::String::NewSymbol(sym) +#else +#define SWIGV8_ADJUST_MEMORY(size) v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(size) +#define SWIGV8_CURRENT_CONTEXT() v8::Isolate::GetCurrent()->GetCurrentContext() +#define SWIGV8_THROW_EXCEPTION(err) v8::Isolate::GetCurrent()->ThrowException(err) +#define SWIGV8_STRING_NEW(str) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str) +#define SWIGV8_SYMBOL_NEW(sym) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym) +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032318) +#define SWIGV8_ARRAY_NEW() v8::Array::New() +#define SWIGV8_BOOLEAN_NEW(bool) v8::Boolean::New(bool) +#define SWIGV8_EXTERNAL_NEW(val) v8::External::New(val) +#define SWIGV8_FUNCTEMPLATE_NEW(func) v8::FunctionTemplate::New(func) +#define SWIGV8_FUNCTEMPLATE_NEW_VOID() v8::FunctionTemplate::New() +#define SWIGV8_INT32_NEW(num) v8::Int32::New(num) +#define SWIGV8_INTEGER_NEW(num) v8::Integer::New(num) +#define SWIGV8_INTEGER_NEW_UNS(num) v8::Integer::NewFromUnsigned(num) +#define SWIGV8_NUMBER_NEW(num) v8::Number::New(num) +#define SWIGV8_OBJECT_NEW() v8::Object::New() +#define SWIGV8_UNDEFINED() v8::Undefined() +#define SWIGV8_NULL() v8::Null() +#else +#define SWIGV8_ARRAY_NEW() v8::Array::New(v8::Isolate::GetCurrent()) +#define SWIGV8_BOOLEAN_NEW(bool) v8::Boolean::New(v8::Isolate::GetCurrent(), bool) +#define SWIGV8_EXTERNAL_NEW(val) v8::External::New(v8::Isolate::GetCurrent(), val) +#define SWIGV8_FUNCTEMPLATE_NEW(func) v8::FunctionTemplate::New(v8::Isolate::GetCurrent(), func) +#define SWIGV8_FUNCTEMPLATE_NEW_VOID() v8::FunctionTemplate::New(v8::Isolate::GetCurrent()) +#define SWIGV8_INT32_NEW(num) v8::Int32::New(v8::Isolate::GetCurrent(), num) +#define SWIGV8_INTEGER_NEW(num) v8::Integer::New(v8::Isolate::GetCurrent(), num) +#define SWIGV8_INTEGER_NEW_UNS(num) v8::Integer::NewFromUnsigned(v8::Isolate::GetCurrent(), num) +#define SWIGV8_NUMBER_NEW(num) v8::Number::New(v8::Isolate::GetCurrent(), num) +#define SWIGV8_OBJECT_NEW() v8::Object::New(v8::Isolate::GetCurrent()) +#define SWIGV8_UNDEFINED() v8::Undefined(v8::Isolate::GetCurrent()) +#define SWIGV8_NULL() v8::Null(v8::Isolate::GetCurrent()) +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) +#define SWIGV8_SET_CLASS_TEMPL(class_templ, class) class_templ = v8::Persistent::New(class); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) +#define SWIGV8_SET_CLASS_TEMPL(class_templ, class) class_templ = v8::Persistent::New(v8::Isolate::GetCurrent(), class); +#else +#define SWIGV8_SET_CLASS_TEMPL(class_templ, class) class_templ.Reset(v8::Isolate::GetCurrent(), class); +#endif + +#ifdef NODE_VERSION +#if NODE_VERSION_AT_LEAST(10, 12, 0) +#define SWIG_NODE_AT_LEAST_1012 +#endif +#endif + +//Necessary to check Node.js version because V8 API changes are backported in Node.js +#if (defined(NODE_VERSION) && !defined(SWIG_NODE_AT_LEAST_1012)) || \ + (!defined(NODE_VERSION) && (V8_MAJOR_VERSION-0) < 7) +#define SWIGV8_TO_OBJECT(handle) (handle)->ToObject() +#define SWIGV8_TO_STRING(handle) (handle)->ToString() +#define SWIGV8_NUMBER_VALUE(handle) (handle)->NumberValue() +#define SWIGV8_INTEGER_VALUE(handle) (handle)->IntegerValue() +#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue() +#define SWIGV8_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(buffer, len) +#define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length() +#else +#define SWIGV8_TO_OBJECT(handle) (handle)->ToObject(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() +#define SWIGV8_TO_STRING(handle) (handle)->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() +#define SWIGV8_NUMBER_VALUE(handle) (handle)->NumberValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() +#define SWIGV8_INTEGER_VALUE(handle) (handle)->IntegerValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() +#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() +#define SWIGV8_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(v8::Isolate::GetCurrent(), buffer, len) +#define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length(v8::Isolate::GetCurrent()) +#endif + +/* --------------------------------------------------------------------------- + * Error handling + * + * ---------------------------------------------------------------------------*/ + +#define SWIG_Error(code, msg) SWIGV8_ErrorHandler.error(code, msg) +#define SWIG_exception(code, msg) do { SWIGV8_ErrorHandler.error(code, msg); SWIG_fail; } while (0) +#define SWIG_fail goto fail +#define SWIGV8_OVERLOAD false + +SWIGINTERN void SWIG_V8_Raise(const char *msg) { + SWIGV8_THROW_EXCEPTION(v8::Exception::Error(SWIGV8_STRING_NEW(msg))); +} + +/* + Note: There are two contexts for handling errors. + A static V8ErrorHandler is used in not overloaded methods. + For overloaded methods the throwing type checking mechanism is used + during dispatching. As V8 exceptions can not be reset properly + the trick is to use a dynamic ErrorHandler with same local name as the global + one. + + - See definition of SWIG_Error above. + - See code templates 'JS_function_dispatcher', 'JS_functionwrapper_overload', + and 'JS_function_dispatch_case' in javascriptcode.swg + +*/ +class V8ErrorHandler { +public: + virtual ~V8ErrorHandler() {} + virtual void error(int code, const char *msg) { + SWIG_V8_Raise(msg); + } +}; +// this is used in usually +SWIGRUNTIME V8ErrorHandler SWIGV8_ErrorHandler; + +// instances of this are used in overloaded functions +class OverloadErrorHandler: public V8ErrorHandler { +public: + virtual void error(int code, const char *msg) { + err = v8::Exception::Error(SWIGV8_STRING_NEW(msg)); + if(code != SWIG_TypeError) { + SWIGV8_THROW_EXCEPTION(err); + } + } + v8::Handle err; +}; + +/* --------------------------------------------------------------------------- + * Basic Proxy object + * + * ---------------------------------------------------------------------------*/ + +// Note: to trigger the v8 gc more often one can tell v8 about the memory consumption +// TODO: we could add a v8 specific parameter to control this value +#define SWIGV8_AVG_OBJ_SIZE 1000 + +class SWIGV8_Proxy { +public: + SWIGV8_Proxy(): swigCMemOwn(false), swigCObject(0), info(0) { + SWIGV8_ADJUST_MEMORY(SWIGV8_AVG_OBJ_SIZE); + }; + + ~SWIGV8_Proxy() { +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + handle.ClearWeak(); + handle.Dispose(); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + handle.ClearWeak(v8::Isolate::GetCurrent()); + handle.Dispose(v8::Isolate::GetCurrent()); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + handle.ClearWeak(); + handle.Dispose(); +#else + handle.ClearWeak(); + handle.Reset(); +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + handle.Clear(); +#endif + + SWIGV8_ADJUST_MEMORY(-SWIGV8_AVG_OBJ_SIZE); + } + + bool swigCMemOwn; + void *swigCObject; + swig_type_info *info; + v8::Persistent handle; +}; + +class SWIGV8_ClientData { +public: + v8::Persistent class_templ; + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + void (*dtor) (v8::Persistent< v8::Value> object, void *parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy); +#elif (V8_MAJOR_VERSION-0) < 5 + void (*dtor) (const v8::WeakCallbackData &data); +#else + void (*dtor) (const v8::WeakCallbackInfo &data); +#endif +}; + +SWIGRUNTIME v8::Persistent SWIGV8_SWIGTYPE_Proxy_class_templ; + +SWIGRUNTIME int SWIG_V8_ConvertInstancePtr(v8::Handle objRef, void **ptr, swig_type_info *info, int flags) { + SWIGV8_HANDLESCOPE(); + + if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) + v8::Handle cdataRef = objRef->GetInternalField(0); + SWIGV8_Proxy *cdata = static_cast(v8::External::Unwrap(cdataRef)); +#else + SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); +#endif + + if(cdata == NULL) { + return SWIG_ERROR; + } + if(cdata->info != info) { + swig_cast_info *tc = SWIG_TypeCheckStruct(cdata->info, info); + if (!tc && cdata->info->name) { + tc = SWIG_TypeCheck(cdata->info->name, info); + } + bool type_valid = tc != 0; + if(!type_valid) { + return SWIG_TypeError; + } + } + *ptr = cdata->swigCObject; + if(flags & SWIG_POINTER_DISOWN) { + cdata->swigCMemOwn = false; + } + return SWIG_OK; +} + + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) +SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Persistent< v8::Value > object, void *parameter) { + SWIGV8_Proxy *proxy = static_cast(parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) +SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Value > object, void *parameter) { + SWIGV8_Proxy *proxy = static_cast(parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) +SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) { +#elif (V8_MAJOR_VERSION-0) < 5 +SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData &data) { + SWIGV8_Proxy *proxy = data.GetParameter(); +#else +SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo &data) { + SWIGV8_Proxy *proxy = data.GetParameter(); +#endif + + delete proxy; +} + +SWIGRUNTIME int SWIG_V8_GetInstancePtr(v8::Handle valRef, void **ptr) { + if(!valRef->IsObject()) { + return SWIG_TypeError; + } + v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); + + if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) + v8::Handle cdataRef = objRef->GetInternalField(0); + SWIGV8_Proxy *cdata = static_cast(v8::External::Unwrap(cdataRef)); +#else + SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); +#endif + + if(cdata == NULL) { + return SWIG_ERROR; + } + + *ptr = cdata->swigCObject; + + return SWIG_OK; +} + +SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, swig_type_info *info, int flags) { + SWIGV8_Proxy *cdata = new SWIGV8_Proxy(); + cdata->swigCObject = ptr; + cdata->swigCMemOwn = (flags & SWIG_POINTER_OWN) ? 1 : 0; + cdata->info = info; + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) + obj->SetPointerInInternalField(0, cdata); +#else + obj->SetAlignedPointerInInternalField(0, cdata); +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + cdata->handle = v8::Persistent::New(obj); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) + cdata->handle = v8::Persistent::New(v8::Isolate::GetCurrent(), obj); +#else + cdata->handle.Reset(v8::Isolate::GetCurrent(), obj); +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + // clientdata must be set for owned data as we need to register the dtor + if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { + cdata->handle.MakeWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); + } else { + cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); + } +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031918) + if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { + cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); + } else { + cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, SWIGV8_Proxy_DefaultDtor); + } +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { + cdata->handle.MakeWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); + } else { + cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); + } +#elif (V8_MAJOR_VERSION-0) < 5 + if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { + cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); + } else { + cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor); + } +#else + if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { + cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor, v8::WeakCallbackType::kParameter); + } else { + cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor, v8::WeakCallbackType::kParameter); + } +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + cdata->handle.MarkIndependent(); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + cdata->handle.MarkIndependent(v8::Isolate::GetCurrent()); +#else + cdata->handle.MarkIndependent(); +#endif + +} + +SWIGRUNTIME int SWIG_V8_ConvertPtr(v8::Handle valRef, void **ptr, swig_type_info *info, int flags) { + SWIGV8_HANDLESCOPE(); + + /* special case: JavaScript null => C NULL pointer */ + if(valRef->IsNull()) { + *ptr=0; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } + if(!valRef->IsObject()) { + return SWIG_TypeError; + } + v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); + return SWIG_V8_ConvertInstancePtr(objRef, ptr, info, flags); +} + +SWIGRUNTIME v8::Handle SWIG_V8_NewPointerObj(void *ptr, swig_type_info *info, int flags) { + SWIGV8_HANDLESCOPE_ESC(); + + v8::Handle class_templ; + + if (ptr == NULL) { +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) + SWIGV8_ESCAPE(SWIGV8_NULL()); +#else + v8::Local result = SWIGV8_NULL(); + SWIGV8_ESCAPE(result); +#endif + } + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) + if(info->clientdata != 0) { + class_templ = ((SWIGV8_ClientData*) info->clientdata)->class_templ; + } else { + class_templ = SWIGV8_SWIGTYPE_Proxy_class_templ; + } +#else + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + + if(info->clientdata != 0) { + class_templ = v8::Local::New(isolate, ((SWIGV8_ClientData*) info->clientdata)->class_templ); + } else { + class_templ = v8::Local::New(isolate, SWIGV8_SWIGTYPE_Proxy_class_templ); + } +#endif + +// v8::Handle result = class_templ->InstanceTemplate()->NewInstance(); + v8::Local result = class_templ->InstanceTemplate()->NewInstance(); + SWIGV8_SetPrivateData(result, ptr, info, flags); + + SWIGV8_ESCAPE(result); +} + +#define SWIG_ConvertPtr(obj, ptr, info, flags) SWIG_V8_ConvertPtr(obj, ptr, info, flags) +#define SWIG_NewPointerObj(ptr, info, flags) SWIG_V8_NewPointerObj(ptr, info, flags) + +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_V8_ConvertInstancePtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(thisvalue, type, flags) SWIG_V8_NewPointerObj(thisvalue, type, flags) + +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_V8_ConvertPtr(obj, pptr, type, 0) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_V8_NewPointerObj(ptr, type, 0) + +#define SWIG_GetInstancePtr(obj, ptr) SWIG_V8_GetInstancePtr(obj, ptr) + +SWIGRUNTIME SwigV8ReturnValue _SWIGV8_wrap_equals(const SwigV8Arguments &args) { + SWIGV8_HANDLESCOPE(); + + v8::Handle jsresult; + void *arg1 = (void *) 0 ; + void *arg2 = (void *) 0 ; + bool result; + int res1; + int res2; + + if(args.Length() != 1) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for equals."); + + res1 = SWIG_GetInstancePtr(args.Holder(), &arg1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ERROR, "Could not get pointer from 'this' object for equals."); + } + res2 = SWIG_GetInstancePtr(args[0], &arg2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equals" "', argument " "1"" of type '" "void *""'"); + } + + result = (bool)(arg1 == arg2); + jsresult = SWIGV8_BOOLEAN_NEW(result); + + SWIGV8_RETURN(jsresult); + goto fail; +fail: + SWIGV8_RETURN(SWIGV8_UNDEFINED()); +} + +SWIGRUNTIME SwigV8ReturnValue _wrap_getCPtr(const SwigV8Arguments &args) { + SWIGV8_HANDLESCOPE(); + + v8::Handle jsresult; + void *arg1 = (void *) 0 ; + long result; + int res1; + + res1 = SWIG_GetInstancePtr(args.Holder(), &arg1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "getCPtr" "', argument " "1"" of type '" "void *""'"); + } + + result = (long)arg1; + jsresult = SWIGV8_NUMBER_NEW(result); + + SWIGV8_RETURN(jsresult); + goto fail; +fail: + SWIGV8_RETURN(SWIGV8_UNDEFINED()); +} + +/* --------------------------------------------------------------------------- + * PackedData object + * + * ---------------------------------------------------------------------------*/ + +class SwigV8PackedData { +public: + SwigV8PackedData(void *data, size_t size, swig_type_info *type): data(data), size(size), type(type) {}; + + ~SwigV8PackedData() { + }; + + void *data; + size_t size; + swig_type_info *type; + + v8::Persistent handle; +}; + +SWIGRUNTIMEINLINE +int SwigV8Packed_Check(v8::Handle valRef) { + SWIGV8_HANDLESCOPE(); + + v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); + if(objRef->InternalFieldCount() < 1) return false; +#if (V8_MAJOR_VERSION-0) < 5 + v8::Handle flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); +#else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); + v8::Local flag; + if (!objRef->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&flag)) + return false; +#endif + return (flag->IsBoolean() && SWIGV8_BOOLEAN_VALUE(flag)); +} + +SWIGRUNTIME +swig_type_info *SwigV8Packed_UnpackData(v8::Handle valRef, void *ptr, size_t size) { + if (SwigV8Packed_Check(valRef)) { + SWIGV8_HANDLESCOPE(); + + SwigV8PackedData *sobj; + + v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) + v8::Handle cdataRef = objRef->GetInternalField(0); + sobj = static_cast(v8::External::Unwrap(cdataRef)); +#else + sobj = static_cast(objRef->GetAlignedPointerFromInternalField(0)); +#endif + if (sobj == NULL || sobj->size != size) return 0; + memcpy(ptr, sobj->data, size); + return sobj->type; + } else { + return 0; + } +} + +SWIGRUNTIME +int SWIGV8_ConvertPacked(v8::Handle valRef, void *ptr, size_t sz, swig_type_info *ty) { + swig_type_info *to = SwigV8Packed_UnpackData(valRef, ptr, sz); + if (!to) return SWIG_ERROR; + if (ty) { + if (to != ty) { + /* check type cast? */ + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) return SWIG_ERROR; + } + } + return SWIG_OK; +} + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) +SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Persistent< v8::Value > object, void *parameter) { + SwigV8PackedData *cdata = static_cast(parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) +SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent object, void *parameter) { + SwigV8PackedData *cdata = static_cast(parameter); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) +SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent *object, SwigV8PackedData *cdata) { +#elif (V8_MAJOR_VERSION-0) < 5 +SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SwigV8PackedData *cdata = data.GetParameter(); +#else +SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo &data) { + SwigV8PackedData *cdata = data.GetParameter(); +#endif + + delete cdata; + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + object.Clear(); + object.Dispose(); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) + object.Clear(); + object.Dispose(isolate); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + object->Dispose(isolate); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +#elif (V8_MAJOR_VERSION-0) < 5 + object.Clear(); +#endif +} + +SWIGRUNTIME +v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_info *type) { + SWIGV8_HANDLESCOPE_ESC(); + + SwigV8PackedData *cdata = new SwigV8PackedData(data, size, type); +// v8::Handle obj = SWIGV8_OBJECT_NEW(); + v8::Local obj = SWIGV8_OBJECT_NEW(); + +#if (V8_MAJOR_VERSION-0) < 5 + obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true)); +#else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); + obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, SWIGV8_BOOLEAN_NEW(true)); +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) + obj->SetPointerInInternalField(0, cdata); +#else + obj->SetAlignedPointerInInternalField(0, cdata); +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + cdata->handle = v8::Persistent::New(obj); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031900) + cdata->handle = v8::Persistent::New(v8::Isolate::GetCurrent(), obj); +#else + cdata->handle.Reset(v8::Isolate::GetCurrent(), obj); +#endif + + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031918) + cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); +#elif (V8_MAJOR_VERSION-0) < 5 + cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete); +// v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete); +#else + cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter); +#endif + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + cdata->handle.MarkIndependent(); +#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + cdata->handle.MarkIndependent(v8::Isolate::GetCurrent()); +#else + cdata->handle.MarkIndependent(); +#endif + + SWIGV8_ESCAPE(obj); +} + +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIGV8_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIGV8_NewPackedObj(ptr, sz, type) + + +/* --------------------------------------------------------------------------- + * Support for IN/OUTPUT typemaps (see Lib/typemaps/inoutlist.swg) + * + * ---------------------------------------------------------------------------*/ + +SWIGRUNTIME + +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) +v8::Handle SWIGV8_AppendOutput(v8::Handle result, v8::Handle obj) { +#else +v8::Handle SWIGV8_AppendOutput(v8::Local result, v8::Handle obj) { +#endif + SWIGV8_HANDLESCOPE_ESC(); + + if (result->IsUndefined()) { + result = SWIGV8_ARRAY_NEW(); + } +#if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) + v8::Handle arr = v8::Handle::Cast(result); +#else + v8::Local arr = v8::Local::Cast(result); +#endif + arr->Set(arr->Length(), obj); + + SWIGV8_ESCAPE(arr); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptruntime.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptruntime.swg new file mode 100644 index 00000000..c78e04ef --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptruntime.swg @@ -0,0 +1,68 @@ +/* ----------------------------------------------------------------------------- + * javascriptruntime.swg + * + * ----------------------------------------------------------------------------- */ + +// V8 Version Macro +// ---------------- +// +// v8 added version macros V8_MAJOR_VERSION, V8_MINOR_VERSION, V8_BUILD_NUMBER +// and V8_PATCH_LEVEL in version 4.3.0. SWIG generated code uses these if +// they are defined - to support earlier versions you can specify the V8 version +// in use via the command line when you run SWIG: +// +// swig -c++ -javascript -v8 -DV8_VERSION=0x032530 example.i +// +// Or code in the interface file using SWIG_V8_VERSION: +// +// %begin %{#define SWIG_V8_VERSION 0x031110%} +// +// 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. + +%define %swig_v8_define_version(version) +%insert("runtime") %{ +#ifndef SWIG_V8_VERSION +#define SWIG_V8_VERSION version +#endif +%} +%enddef + +#ifdef V8_VERSION +%swig_v8_define_version(V8_VERSION) +#else +// HACK: defining a default version +%swig_v8_define_version(0x031110) +#endif + + +// Node support +// ------------ + +#ifdef BUILDING_NODE_EXTENSION +%insert("runtime") %{ +#include +//Older version of node.h does not include this +#include +%} +#endif + + +// V8 runtime +// ---------- + +%insert(runtime) %{ +#include + +#include +#include +#include +%} + +%insert(runtime) "swigrun.swg"; /* SWIG API */ +%insert(runtime) "swigerrors.swg"; /* SWIG errors */ + +%insert(runtime) "javascriptrun.swg" + diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptstrings.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptstrings.swg new file mode 100644 index 00000000..e767a6d6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascriptstrings.swg @@ -0,0 +1,59 @@ + +/* ------------------------------------------------------------ + * utility methods for char strings + * ------------------------------------------------------------ */ +%fragment("SWIG_AsCharPtrAndSize", "header", fragment="SWIG_pchar_descriptor") { +SWIGINTERN int +SWIG_AsCharPtrAndSize(v8::Handle valRef, char** cptr, size_t* psize, int *alloc) +{ + if(valRef->IsString()) { + v8::Handle js_str = SWIGV8_TO_STRING(valRef); + + size_t len = SWIGV8_UTF8_LENGTH(js_str) + 1; + char* cstr = new char[len]; + SWIGV8_WRITE_UTF8(js_str, cstr, len); + + if(alloc) *alloc = SWIG_NEWOBJ; + if(psize) *psize = len; + if(cptr) *cptr = cstr; + + return SWIG_OK; + } else { + if(valRef->IsObject()) { + v8::Handle obj = SWIGV8_TO_OBJECT(valRef); + // try if the object is a wrapped char[] + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + void* vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (char *) vptr; + if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + return SWIG_TypeError; + } else { + return SWIG_TypeError; + } + } +} +} + +%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERNINLINE v8::Handle +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + // TODO: handle extra long strings + return SWIGV8_UNDEFINED(); + } else { + v8::Handle js_str = SWIGV8_STRING_NEW2(carray, size); + return js_str; + } + } else { + return SWIGV8_UNDEFINED(); + } +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascripttypemaps.swg b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascripttypemaps.swg new file mode 100644 index 00000000..4601698e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/javascripttypemaps.swg @@ -0,0 +1,43 @@ +/* ------------------------------------------------------------ + * Typemap specializations for Javascript + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + * Fragment section + * ------------------------------------------------------------ */ + +/* Include fundamental fragemt definitions */ +%include + +/* Look for user fragments file. */ +%include + +/* Javascript fragments for fundamental types */ +%include + +/* Javascript fragments for char* strings */ +%include + + +/* ------------------------------------------------------------ + * Unified typemap section + * ------------------------------------------------------------ */ + +/* Javascript types */ + +#define SWIG_Object v8::Handle +#define VOID_Object SWIGV8_UNDEFINED() + +/* Overload of the output/constant/exception/dirout handling */ + +/* append output */ +#define SWIG_AppendOutput(result, obj) SWIGV8_AppendOutput(result, obj) + +/* set constant */ +#define SWIG_SetConstant(name, obj) + +/* raise */ +#define SWIG_Raise(obj, type, desc) SWIG_V8_Raise(type) + +/* Include the unified typemap library */ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_common.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_common.i new file mode 100644 index 00000000..cee11e8c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_common.i @@ -0,0 +1,5 @@ +%include + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_complex.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_complex.i new file mode 100644 index 00000000..a252e0aa --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_complex.i @@ -0,0 +1,26 @@ +/* + * STD C++ complex typemaps + */ + +%include + +%{ +#include +%} + +namespace std { + %naturalvar complex; + template class complex; + %template() complex; + %template() complex; +} + +/* defining the complex as/from converters */ + +%swig_cplxdbl_convn(std::complex, std::complex, std::real, std::imag) +%swig_cplxflt_convn(std::complex, std::complex, std::real, std::imag) + +/* defining the typemaps */ + +%typemaps_primitive(%checkcode(CPLXDBL), std::complex); +%typemaps_primitive(%checkcode(CPLXFLT), std::complex); diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_except.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_except.i new file mode 100644 index 00000000..af98428f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_except.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_map.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_map.i new file mode 100644 index 00000000..3b8b0936 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_map.i @@ -0,0 +1,80 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template > class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + } + }; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_pair.i new file mode 100644 index 00000000..b72c50b9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_pair.i @@ -0,0 +1,35 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_string.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_string.i new file mode 100644 index 00000000..dc1378ae --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_string.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_vector.i new file mode 100644 index 00000000..586ac5c6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/std_vector.i @@ -0,0 +1,99 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * ----------------------------------------------------------------------------- */ + +%include + +%{ +#include +#include +%} + +namespace std { + + template class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(); + vector(size_type n); + vector(const vector& other); + + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %rename(add) push_back; + void push_back(const value_type& x); + %extend { + const_reference get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef bool value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef bool const_reference; + + vector(); + vector(size_type n); + vector(const vector& other); + + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %rename(add) push_back; + void push_back(const value_type& x); + %extend { + bool get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/javascript/v8/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/typemaps.i new file mode 100644 index 00000000..d3d8afb1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/javascript/v8/typemaps.i @@ -0,0 +1,148 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Pointer handling + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers. + * ----------------------------------------------------------------------------- */ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + + int *INPUT + short *INPUT + long *INPUT + long long *INPUT + unsigned int *INPUT + unsigned short *INPUT + unsigned long *INPUT + unsigned long long *INPUT + unsigned char *INPUT + bool *INPUT + float *INPUT + double *INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a Python tuple. + + int *OUTPUT + short *OUTPUT + long *OUTPUT + long long *OUTPUT + unsigned int *OUTPUT + unsigned short *OUTPUT + unsigned long *OUTPUT + unsigned long long *OUTPUT + unsigned char *OUTPUT + bool *OUTPUT + float *OUTPUT + double *OUTPUT + +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).K: + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Python output of the function would be a tuple containing both +output values. + +*/ + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a Python tuple. + + int *INOUT + short *INOUT + long *INOUT + long long *INOUT + unsigned int *INOUT + unsigned short *INOUT + unsigned long *INOUT + unsigned long long *INOUT + unsigned char *INOUT + bool *INOUT + float *INOUT + double *INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include + void neg(double *INOUT); + +or you can use the %apply directive : + + %include + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value (since +this makes no sense in Python). Rather, the modified input value shows +up as the return value of the function. Thus, to apply this function +to a Python variable you might do this : + + x = neg(x) + +Note : previous versions of SWIG used the symbol 'BOTH' to mark +input/output arguments. This is still supported, but will be slowly +phased out in future releases. + +*/ + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/_std_common.i b/macx64/bin/swig/share/swig/4.0.0/lua/_std_common.i new file mode 100644 index 00000000..567e68b7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/_std_common.i @@ -0,0 +1,93 @@ +/* ----------------------------------------------------------------------------- + * _std_common.i + * + * std::helpers for LUA + * ----------------------------------------------------------------------------- */ + +%include // the general exceptions + +/* +The basic idea here, is instead of trying to feed SWIG all the +horribly templated STL code, to give it a neatened version. + +These %defines cover some of the more common methods +so the class declarations become just a set of %defines + +*/ + +/* #define for basic container features +note: I allow front(), back() & pop_back() to throw exceptions +upon empty containers, rather than coredump +(as we haven't defined the methods, we can use %extend to add with +new features) + +*/ +%define %STD_CONTAINER_METHODS(CLASS,T) +public: + CLASS(); + CLASS(const CLASS&); + unsigned int size() const; + unsigned int max_size() const; + bool empty() const; + void clear(); + %extend { // the extra stuff which must be checked + T front()const throw (std::out_of_range){ // only read front & back + if (self->empty()) + throw std::out_of_range("in "#CLASS"::front()"); + return self->front(); + } + T back()const throw (std::out_of_range){ // not write to them + if (self->empty()) + throw std::out_of_range("in "#CLASS"::back()"); + return self->back(); + } + } +%enddef + +/* push/pop for front/back +also note: front & back are read only methods, not used for writing +*/ +%define %STD_FRONT_ACCESS_METHODS(CLASS,T) +public: + void push_front(const T& val); + %extend { // must check this + void pop_front() throw (std::out_of_range){ + if (self->empty()) + throw std::out_of_range("in "#CLASS"::pop_front()"); + self->pop_back(); + } + } +%enddef + +%define %STD_BACK_ACCESS_METHODS(CLASS,T) +public: + void push_back(const T& val); + %extend { // must check this + void pop_back() throw (std::out_of_range){ + if (self->empty()) + throw std::out_of_range("in "#CLASS"::pop_back()"); + self->pop_back(); + } + } +%enddef + +/* +Random access methods +*/ +%define %STD_RANDOM_ACCESS_METHODS(CLASS,T) + %extend // this is a extra bit of SWIG code + { + // [] is replaced by __getitem__ & __setitem__ + // simply throws a string, which causes a lua error + T __getitem__(unsigned int idx) throw (std::out_of_range){ + if (idx>=self->size()) + throw std::out_of_range("in "#CLASS"::__getitem__()"); + return (*self)[idx]; + } + void __setitem__(unsigned int idx,const T& val) throw (std::out_of_range){ + if (idx>=self->size()) + throw std::out_of_range("in "#CLASS"::__setitem__()"); + (*self)[idx]=val; + } + }; +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/carrays.i b/macx64/bin/swig/share/swig/4.0.0/lua/carrays.i new file mode 100644 index 00000000..1bc45d81 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/carrays.i @@ -0,0 +1,8 @@ +/* Small change to the standard carrays.i +renaming the field to __getitem & __setitem +for operator[] access +*/ +%rename(__getitem) *::getitem; // the v=X[i] (get operator) +%rename(__setitem) *::setitem; // the X[i]=v (set operator) + +%include <../carrays.i> diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/factory.i b/macx64/bin/swig/share/swig/4.0.0/lua/factory.i new file mode 100644 index 00000000..7e605c5d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/factory.i @@ -0,0 +1,23 @@ +/* + A modification of factory.swg from the generic UTL library. +*/ + +%include + +%define %_factory_dispatch(Type) +if (!dcast) { + Type *dobj = dynamic_cast($1); + if (dobj) { + dcast = 1; + SWIG_NewPointerObj(L, dobj, $descriptor(Type *), $owner); SWIG_arg++; + } +}%enddef + +%define %factory(Method,Types...) +%typemap(out) Method { + int dcast = 0; + %formacro(%_factory_dispatch, Types) + if (!dcast) { + SWIG_NewPointerObj(L, $1, $descriptor, $owner); SWIG_arg++; + } +}%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/lua.swg b/macx64/bin/swig/share/swig/4.0.0/lua/lua.swg new file mode 100644 index 00000000..6db3add6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/lua.swg @@ -0,0 +1,236 @@ +/* ----------------------------------------------------------------------------- + * lua.swg + * + * SWIG Configuration File for Lua. + * This file is parsed by SWIG before reading any other interface file. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * includes + * ----------------------------------------------------------------------------- */ + +%include /* The typemaps */ +%include /* The runtime stuff */ +%include /* Warnings for Lua keywords */ + +//%include +/* ----------------------------------------------------------------------------- + * constants typemaps + * ----------------------------------------------------------------------------- */ +// this basically adds to a table of constants +%typemap(consttab) int, unsigned int, short, unsigned short, long, unsigned long, unsigned char, signed char, bool, enum SWIGTYPE + {SWIG_LUA_CONSTTAB_INT("$symname", $value)} + +%typemap(consttab) float, double + {SWIG_LUA_CONSTTAB_FLOAT("$symname", $value)} + +%typemap(consttab) long long, unsigned long long, signed long long + {SWIG_LUA_CONSTTAB_FLOAT("$symname", $value)} + +%typemap(consttab) const long long&, const unsigned long long&, const signed long long& + {SWIG_LUA_CONSTTAB_FLOAT("$symname", *$value)} + +%typemap(consttab) char *, const char *, char [], const char [] + {SWIG_LUA_CONSTTAB_STRING("$symname", $value)} + +// note: char is treated as a separate special type +// signed char & unsigned char are numbers +%typemap(consttab) char + {SWIG_LUA_CONSTTAB_CHAR("$symname", $value)} + +%typemap(consttab) long long, unsigned long long + {SWIG_LUA_CONSTTAB_STRING("$symname", "$value")} + +%typemap(consttab) SWIGTYPE *, SWIGTYPE *const, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] + { SWIG_LUA_CONSTTAB_POINTER("$symname",$value, $1_descriptor) } + +%typemap(consttab) SWIGTYPE + { SWIG_LUA_CONSTTAB_POINTER("$symname",&$value, $&1_descriptor) } + +// member function pointers +%typemap(consttab) SWIGTYPE (CLASS::*) + { SWIG_LUA_CONSTTAB_BINARY("$symname", sizeof($type),&$value, $1_descriptor) } + + +/* ----------------------------------------------------------------------------- + * Overloaded operator support + * ----------------------------------------------------------------------------- */ +// lua calls the + operator '__add' +// python likes to call it '__add__' +// Assuming most SWIGers will probably use the __add__ if they extend their classes +// we have two sets of renames +// one to rename the operator+() to __add() +// (this lets SWIG rename the operator overloads) +// another is to rename __add__() to __add() +// (this means that people who wrote SWIG code to do that add will also work) + +#ifdef __cplusplus +// this is extra renaming for lua +// not all operators are supported, so only those that are, are listed +%rename(__add) *::operator+; +%rename(__sub) *::operator-; +%rename(__mul) *::operator*; +%rename(__div) *::operator/; +%rename(__unm) *::operator-(); +%rename(__unm) *::operator-() const; + +%rename(__eq) *::operator==; +%ignore *::operator!=; // note: Lua does not have a notequal operator + // it just uses 'not (a==b)' +%rename(__lt) *::operator<; +%ignore *::operator>; // ditto less than vs greater than +%rename(__le) *::operator<=; +%ignore *::operator>=; // ditto less than vs greater than +%ignore *::operator!; // does not support not + +%rename(__call) *::operator(); // the fn call operator + +// lua does not support overloading of: +// logical/bitwise operators +// assign operator +// +=,-=,*=, etc +// therefore ignoring them for now +// it also doesn't support non class operators +// eg friends or XX operator+(XX,XX) +// also ignoring +// note: some of these might be better to rename, but not doing that for now +%ignore *::operator&&; %ignore operator&&; +%ignore *::operator||; %ignore operator||; +%ignore *::operator+=; +%ignore *::operator-=; +%ignore *::operator*=; +%ignore *::operator/=; +%ignore *::operator%=; +%ignore *::operator++; %ignore *::operator--; + +%ignore *::operator=; // note: this might be better to rename to assign() or similar + +%ignore operator+; +%ignore operator-; +%ignore operator*; +%ignore operator/; +%ignore operator%; +%ignore operator[]; +%ignore operator>; %ignore operator>=; +%ignore operator<; %ignore operator<=; +%ignore operator==; %ignore operator!=; + + +// renaming the python operators to be compatible with lua +// this means that if a developer has written a fn __add__() +// it will be used for the lua + +%rename(__add) *::__add__; +%rename(__sub) *::__sub__; +%rename(__mul) *::__mul__; +%rename(__div) *::__div__; +%rename(__unm) *::__neg__; // lua calls unary minus,'unm' not 'neg' +%rename(__tostring) *::__str__; // both map to __tostring +%rename(__tostring) *::__repr__; // both map to __tostring + + +%rename(__pow) *::__pow__; // lua power '^' operator +%rename(__concat) *::__concat__; // lua concat '..' operator +%rename(__eq) *::__eq__; +%rename(__lt) *::__lt__; +%rename(__le) *::__le__; +%rename(__call) *::__call__; // the fn call operator() + +// the [] operator has two parts, the get & the set +%rename(__getitem) *::__getitem__; // the v=X[i] (get operator) +%rename(__setitem) *::__setitem__; // the X[i]=v (set operator) + + +#endif + + +/* ------------------------------------------------------------ + * Exceptions + * ------------------------------------------------------------ */ +/* Confession: I don't really like C++ exceptions +The python/lua ones are great, but C++ ones I don't like +(mainly because I cannot get the stack trace out of it) +Therefore I have not bothered to try doing much in this + +Therefore currently its just enough to get a few test cases running ok + +note: if you wish to throw anything related to std::exception +use %include instead +*/ + +// number as number+error +%typemap(throws) int,unsigned int,signed int, + long,unsigned long,signed long, + short,unsigned short,signed short, + float,double, + long long,unsigned long long, + unsigned char, signed char, + int&,unsigned int&,signed int&, + long&,unsigned long&,signed long&, + short&,unsigned short&,signed short&, + float&,double&, + long long&,unsigned long long&, + unsigned char&, signed char& +%{lua_pushnumber(L,(lua_Number)$1);SWIG_fail; %} + +%typemap(throws) bool,bool& +%{lua_pushboolean(L,(int)($1==true));SWIG_fail; %} + +// enum as number+error +%typemap(throws) enum SWIGTYPE +%{lua_pushnumber(L,(lua_Number)(int)$1);SWIG_fail; %} + +// strings are just sent as errors +%typemap(throws) char *, const char * +%{lua_pushstring(L,$1);SWIG_fail;%} + +// char is changed to a string +%typemap(throws) char +%{lua_pushlstring(L,&$1,1);SWIG_fail;%} + +/* +Throwing object is a serious problem: +Assuming some code throws a 'FooBar' +There are a few options: +- return a pointer to it: but its unclear how long this will last for. +- return a copy of it: but not all objects are copyable + (see exception_partial_info in the test suite for a case where you cannot do this) +- convert to a string & throw that + it's not so useful, but it works (this is more lua like). +The third option (though not nice) is used +For a more useful solution: see std_except for more details +*/ + +// basic typemap for structs, classes, pointers & references +// convert to string and error +%typemap(throws) SWIGTYPE +%{(void)$1; /* ignore it */ +lua_pushfstring(L,"object exception:%s",SWIG_TypePrettyName($1_descriptor)); +SWIG_fail;%} + +// code to make a copy of the object and return this +// if you have a function which throws a FooBar & you want SWIG to return a copy of the object as its error +// then use one of the below +// %apply SWIGTYPE EXCEPTION_BY_VAL {FooBar}; +// %apply SWIGTYPE& EXCEPTION_BY_VAL {FooBar&}; // note: need & twice +%typemap(throws) SWIGTYPE EXCEPTION_BY_VAL +%{SWIG_NewPointerObj(L,(void *)new $1_ltype(($1_ltype &) $1),$&1_descriptor,1); +SWIG_fail;%} + +// similar for object reference +// note: swig typemaps seem a little confused around here, therefore we use $basetype +%typemap(throws) SWIGTYPE& EXCEPTION_BY_VAL +%{SWIG_NewPointerObj(L,(void *)new $basetype($1),$1_descriptor,1); +SWIG_fail;%} + + +// note: no support for object pointers +// its not clear how long the pointer is valid for, therefore not supporting it + +/* ----------------------------------------------------------------------------- + * extras + * ----------------------------------------------------------------------------- */ +// this %define is to allow insertion of lua source code into the wrapper file +#define %luacode %insert("luacode") + + +/* ------------------------------ end lua.swg ------------------------------ */ diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/lua_fnptr.i b/macx64/bin/swig/share/swig/4.0.0/lua/lua_fnptr.i new file mode 100644 index 00000000..481cfafa --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/lua_fnptr.i @@ -0,0 +1,124 @@ +/* ----------------------------------------------------------------------------- + * lua_fnptr.i + * + * SWIG Library file containing the main typemap code to support Lua modules. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * Basic function pointer support + * ----------------------------------------------------------------------------- */ +/* +The structure: SWIGLUA_FN provides a simple (local only) wrapping for a function. + +For example if you wanted to have a C/C++ function take a lua function as a parameter. +You could declare it as: + int my_func(int a, int b, SWIGLUA_FN fn); +note: it should be passed by value, not byref or as a pointer. + +The SWIGLUA_FN holds a pointer to the lua_State, and the stack index where the function is held. +The macro SWIGLUA_FN_GET() will put a copy of the lua function at the top of the stack. +After that its fairly simple to write the rest of the code (assuming know how to use lua), +just push the parameters, call the function and return the result. + + int my_func(int a, int b, SWIGLUA_FN fn) + { + SWIGLUA_FN_GET(fn); + lua_pushnumber(fn.L,a); + lua_pushnumber(fn.L,b); + lua_call(fn.L,2,1); // 2 in, 1 out + return luaL_checknumber(fn.L,-1); + } + +SWIG will automatically performs the wrapping of the arguments in and out. + +However: if you wish to store the function between calls, look to the SWIGLUA_REF below. + +*/ +// this is for the C code only, we don't want SWIG to wrapper it for us. +%{ +typedef struct{ + lua_State* L; /* the state */ + int idx; /* the index on the stack */ +}SWIGLUA_FN; + +#define SWIGLUA_FN_GET(fn) {lua_pushvalue(fn.L,fn.idx);} +%} + +// the actual typemap +%typemap(in,checkfn="lua_isfunction") SWIGLUA_FN +%{ $1.L=L; $1.idx=$input; %} + +/* ----------------------------------------------------------------------------- + * Storing lua object support + * ----------------------------------------------------------------------------- */ +/* +The structure: SWIGLUA_REF provides a mechanism to store object (usually functions) +between calls to the interpreter. + +For example if you wanted to have a C/C++ function take a lua function as a parameter. +Then call it later, You could declare it as: + SWIGLUA_REF myref; + void set_func(SWIGLUA_REF ref); + SWIGLUA_REF get_func(); + void call_func(int val); +note: it should be passed by value, not byref or as a pointer. + +The SWIGLUA_REF holds a pointer to the lua_State, and an integer reference to the object. +Because it holds a permanent ref to an object, the SWIGLUA_REF must be handled with a bit more care. +It should be initialised to {0,0}. The function swiglua_ref_set() should be used to set it. +swiglua_ref_clear() should be used to clear it when not in use, and swiglua_ref_get() to get the +data back. + +Note: the typemap does not check that the object is in fact a function, +if you need that you must add it yourself. + + + int my_func(int a, int b, SWIGLUA_FN fn) + { + SWIGLUA_FN_GET(fn); + lua_pushnumber(fn.L,a); + lua_pushnumber(fn.L,b); + lua_call(fn.L,2,1); // 2 in, 1 out + return luaL_checknumber(fn.L,-1); + } + +SWIG will automatically performs the wrapping of the arguments in and out. + +However: if you wish to store the function between calls, look to the SWIGLUA_REF below. + +*/ + +%{ +typedef struct{ + lua_State* L; /* the state */ + int ref; /* a ref in the lua global index */ +}SWIGLUA_REF; + + +void swiglua_ref_clear(SWIGLUA_REF* pref){ + if (pref->L!=0 && pref->ref!=LUA_NOREF && pref->ref!=LUA_REFNIL){ + luaL_unref(pref->L,LUA_REGISTRYINDEX,pref->ref); + } + pref->L=0; pref->ref=0; +} + +void swiglua_ref_set(SWIGLUA_REF* pref,lua_State* L,int idx){ + pref->L=L; + lua_pushvalue(L,idx); /* copy obj to top */ + pref->ref=luaL_ref(L,LUA_REGISTRYINDEX); /* remove obj from top & put into registry */ +} + +void swiglua_ref_get(SWIGLUA_REF* pref){ + if (pref->L!=0) + lua_rawgeti(pref->L,LUA_REGISTRYINDEX,pref->ref); +} + +%} + +%typemap(in) SWIGLUA_REF +%{ swiglua_ref_set(&$1,L,$input); %} + +%typemap(out) SWIGLUA_REF +%{ if ($1.L!=0) {swiglua_ref_get(&$1);} else {lua_pushnil(L);} + SWIG_arg++; %} + diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/luakw.swg b/macx64/bin/swig/share/swig/4.0.0/lua/luakw.swg new file mode 100644 index 00000000..fc2f92bf --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/luakw.swg @@ -0,0 +1,67 @@ +/* + Warnings for Lua keywords, built-in names and bad names. +*/ + +#define LUAKW(x) %keywordwarn("'" `x` "' is a Lua keyword, renaming to 'c_" `x` "'", rename="c_%s") `x` +#define LUABN(x) %namewarn(%warningmsg(SWIGWARN_PARSE_BUILTIN_NAME, "'" `x` "' conflicts with a basic function in Lua"), %$not %$ismember) `x` + +/* + Warnings for Lua keywords + http://www.lua.org/manual/5.2/manual.html#3.1 +*/ + +LUAKW(and); +LUAKW(break); +LUAKW(do); +LUAKW(else); +LUAKW(elseif); +LUAKW(end); +LUAKW(false); +LUAKW(for); +LUAKW(function); +LUAKW(goto); +LUAKW(if); +LUAKW(in); +LUAKW(local); +LUAKW(nil); +LUAKW(not); +LUAKW(or); +LUAKW(repeat); +LUAKW(return); +LUAKW(then); +LUAKW(true); +LUAKW(until); +LUAKW(while); + +/* + Basic functions + http://www.lua.org/manual/5.2/manual.html#6.1 +*/ + +LUABN(assert); +LUABN(collectgarbage); +LUABN(dofile); +LUABN(error); +LUABN(_G); // Not actually a function +LUABN(getmetatable); +LUABN(ipairs); +LUABN(load); +LUABN(loadfile); +LUABN(next); +LUABN(pairs); +LUABN(pcall); +LUABN(print); +LUABN(rawequal); +LUABN(rawget); +LUABN(rawlen); +LUABN(rawset); +LUABN(select); +LUABN(setmetatable); +LUABN(tonumber); +LUABN(tostring); +LUABN(type); +LUABN(_VERSION); // Not actually a function +LUABN(xpcall); + +#undef LUABN +#undef LUAKW diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/luarun.swg b/macx64/bin/swig/share/swig/4.0.0/lua/luarun.swg new file mode 100644 index 00000000..9636cdc9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/luarun.swg @@ -0,0 +1,1939 @@ +/* ----------------------------------------------------------------------------- + * luarun.swg + * + * This file contains the runtime support for Lua modules + * and includes code for managing global variables and pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "lua.h" +#include "lauxlib.h" +#include /* for malloc */ +#include /* for a few sanity tests */ + +/* ----------------------------------------------------------------------------- + * Lua flavors + * ----------------------------------------------------------------------------- */ + +#define SWIG_LUA_FLAVOR_LUA 1 +#define SWIG_LUA_FLAVOR_ELUA 2 +#define SWIG_LUA_FLAVOR_ELUAC 3 + +#if !defined(SWIG_LUA_TARGET) +# error SWIG_LUA_TARGET not defined +#endif + +#if defined(SWIG_LUA_ELUA_EMULATE) + +struct swig_elua_entry; + +typedef struct swig_elua_key { + int type; + union { + const char* strkey; + lua_Number numkey; + } key; +} swig_elua_key; + +typedef struct swig_elua_val { + int type; + union { + lua_Number number; + const struct swig_elua_entry *table; + const char *string; + lua_CFunction function; + struct { + char member; + long lvalue; + void *pvalue; + swig_type_info **ptype; + } userdata; + } value; +} swig_elua_val; + +typedef struct swig_elua_entry { + swig_elua_key key; + swig_elua_val value; +} swig_elua_entry; + +#define LSTRKEY(x) {LUA_TSTRING, {.strkey = x} } +#define LNUMKEY(x) {LUA_TNUMBER, {.numkey = x} } +#define LNILKEY {LUA_TNIL, {.strkey = 0} } + +#define LNUMVAL(x) {LUA_TNUMBER, {.number = x} } +#define LFUNCVAL(x) {LUA_TFUNCTION, {.function = x} } +#define LROVAL(x) {LUA_TTABLE, {.table = x} } +#define LNILVAL {LUA_TNIL, {.string = 0} } +#define LSTRVAL(x) {LUA_TSTRING, {.string = x} } + +#define LUA_REG_TYPE swig_elua_entry + +#define SWIG_LUA_ELUA_EMUL_METATABLE_KEY "__metatable" + +#define lua_pushrotable(L,p)\ + lua_newtable(L);\ + assert(p);\ + SWIG_Lua_elua_emulate_register(L,(swig_elua_entry*)(p)); + +#define SWIG_LUA_CONSTTAB_POINTER(B,C,D)\ + LSTRKEY(B), {LUA_TUSERDATA, { .userdata={0,0,(void*)(C),&D} } } + +#define SWIG_LUA_CONSTTAB_BINARY(B,S,C,D)\ + LSTRKEY(B), {LUA_TUSERDATA, { .userdata={1,S,(void*)(C),&D} } } +#endif + +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC) +# define SWIG_LUA_CONSTTAB_INT(B, C) LSTRKEY(B), LNUMVAL(C) +# define SWIG_LUA_CONSTTAB_FLOAT(B, C) LSTRKEY(B), LNUMVAL(C) +# define SWIG_LUA_CONSTTAB_STRING(B, C) LSTRKEY(B), LSTRVAL(C) +# define SWIG_LUA_CONSTTAB_CHAR(B, C) LSTRKEY(B), LNUMVAL(C) + /* Those two types of constants are not supported in elua */ + +#ifndef SWIG_LUA_CONSTTAB_POINTER +#warning eLua does not support pointers as constants. By default, nil will be used as value +#define SWIG_LUA_CONSTTAB_POINTER(B,C,D) LSTRKEY(B), LNILVAL +#endif + +#ifndef SWIG_LUA_CONSTTAB_BINARY +#warning eLua does not support pointers to member as constants. By default, nil will be used as value +#define SWIG_LUA_CONSTTAB_BINARY(B, S, C, D) LSTRKEY(B), LNILVAL +#endif +#else /* SWIG_LUA_FLAVOR_LUA */ +# define SWIG_LUA_CONSTTAB_INT(B, C) SWIG_LUA_INT, (char *)B, (long)C, 0, 0, 0 +# define SWIG_LUA_CONSTTAB_FLOAT(B, C) SWIG_LUA_FLOAT, (char *)B, 0, (double)C, 0, 0 +# define SWIG_LUA_CONSTTAB_STRING(B, C) SWIG_LUA_STRING, (char *)B, 0, 0, (void *)C, 0 +# define SWIG_LUA_CONSTTAB_CHAR(B, C) SWIG_LUA_CHAR, (char *)B, (long)C, 0, 0, 0 +# define SWIG_LUA_CONSTTAB_POINTER(B,C,D)\ + SWIG_LUA_POINTER, (char *)B, 0, 0, (void *)C, &D +# define SWIG_LUA_CONSTTAB_BINARY(B, S, C, D)\ + SWIG_LUA_BINARY, (char *)B, S, 0, (void *)C, &D +#endif + +#ifndef SWIG_LUA_ELUA_EMULATE +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC) +# define LRO_STRVAL(v) {{.p = (char *) v}, LUA_TSTRING} +# define LSTRVAL LRO_STRVAL +#endif +#endif /* SWIG_LUA_ELUA_EMULATE*/ + +#ifndef SWIG_LUA_ELUA_EMULATE +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC) + +#ifndef MIN_OPT_LEVEL +#define MIN_OPT_LEVEL 2 +#endif + +#include "lrodefs.h" +#include "lrotable.h" +#endif +#endif /* SWIG_LUA_ELUA_EMULATE*/ +/* ----------------------------------------------------------------------------- + * compatibility defines + * ----------------------------------------------------------------------------- */ + +/* History of Lua C API length functions: In Lua 5.0 (and before?) + there was "lua_strlen". In Lua 5.1, this was renamed "lua_objlen", + but a compatibility define of "lua_strlen" was added. In Lua 5.2, + this function was again renamed, to "lua_rawlen" (to emphasize that + it doesn't call the "__len" metamethod), and the compatibility + define of lua_strlen was removed. All SWIG uses have been updated + to "lua_rawlen", and we add our own defines of that here for older + versions of Lua. */ +#if !defined(LUA_VERSION_NUM) || LUA_VERSION_NUM < 501 +# define lua_rawlen lua_strlen +#elif LUA_VERSION_NUM == 501 +# define lua_rawlen lua_objlen +#endif + + +/* lua_pushglobaltable is the recommended "future-proof" way to get + the global table for Lua 5.2 and later. Here we define + lua_pushglobaltable ourselves for Lua versions before 5.2. */ +#if !defined(LUA_VERSION_NUM) || LUA_VERSION_NUM < 502 +# define lua_pushglobaltable(L) lua_pushvalue(L, LUA_GLOBALSINDEX) +#endif + +/* lua_absindex was introduced in Lua 5.2 */ +#if !defined(LUA_VERSION_NUM) || LUA_VERSION_NUM < 502 +# define lua_absindex(L,i) ((i)>0 || (i) <= LUA_REGISTRYINDEX ? (i) : lua_gettop(L) + (i) + 1) +#endif + +/* lua_rawsetp was introduced in Lua 5.2 */ +#if !defined(LUA_VERSION_NUM) || LUA_VERSION_NUM < 502 +#define lua_rawsetp(L,index,ptr)\ + lua_pushlightuserdata(L,(void*)(ptr));\ + lua_insert(L,-2);\ + lua_rawset(L,index); + +#define lua_rawgetp(L,index,ptr)\ + lua_pushlightuserdata(L,(void*)(ptr));\ + lua_rawget(L,index); + +#endif + +/* -------------------------------------------------------------------------- + * Helper functions for error handling + * -------------------------------------------------------------------------- */ + +/* Push the string STR on the Lua stack, like lua_pushstring, but + prefixed with the location of the innermost Lua call-point + (as formatted by luaL_where). */ +SWIGRUNTIME void +SWIG_Lua_pusherrstring (lua_State *L, const char *str) +{ + luaL_where (L, 1); + lua_pushstring (L, str); + lua_concat (L, 2); +} + +/* Push a formatted string generated from FMT and following args on + the Lua stack, like lua_pushfstring, but prefixed with the + location of the innermost Lua call-point (as formatted by luaL_where). */ +SWIGRUNTIME void +SWIG_Lua_pushferrstring (lua_State *L, const char *fmt, ...) +{ + va_list argp; + va_start(argp, fmt); + luaL_where(L, 1); + lua_pushvfstring(L, fmt, argp); + va_end(argp); + lua_concat(L, 2); +} + + +/* ----------------------------------------------------------------------------- + * global swig types + * ----------------------------------------------------------------------------- */ +/* Constant table */ +#define SWIG_LUA_INT 1 +#define SWIG_LUA_FLOAT 2 +#define SWIG_LUA_STRING 3 +#define SWIG_LUA_POINTER 4 +#define SWIG_LUA_BINARY 5 +#define SWIG_LUA_CHAR 6 + +/* Structure for variable linking table */ +typedef struct { + const char *name; + lua_CFunction get; + lua_CFunction set; +} swig_lua_var_info; + +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC) +typedef const LUA_REG_TYPE swig_lua_method; +typedef const LUA_REG_TYPE swig_lua_const_info; +#else /* Normal lua */ +typedef luaL_Reg swig_lua_method; + +/* Constant information structure */ +typedef struct { + int type; + char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_lua_const_info; + +#endif + +typedef struct { + const char *name; + lua_CFunction getmethod; + lua_CFunction setmethod; +} swig_lua_attribute; + + +struct swig_lua_class; +/* Can be used to create namespaces. Currently used to wrap class static methods/variables/constants */ +typedef struct swig_lua_namespace { + const char *name; + swig_lua_method *ns_methods; + swig_lua_attribute *ns_attributes; + swig_lua_const_info *ns_constants; + struct swig_lua_class **ns_classes; + struct swig_lua_namespace **ns_namespaces; +} swig_lua_namespace; + +typedef struct swig_lua_class { + const char *name; /* Name that this class has in Lua */ + const char *fqname; /* Fully qualified name - Scope + class name */ + swig_type_info **type; + lua_CFunction constructor; + void (*destructor)(void *); + swig_lua_method *methods; + swig_lua_attribute *attributes; + swig_lua_namespace *cls_static; + swig_lua_method *metatable; /* 0 for -eluac */ + struct swig_lua_class **bases; + const char **base_names; +} swig_lua_class; + +/* this is the struct for wrapping all pointers in SwigLua +*/ +typedef struct { + swig_type_info *type; + int own; /* 1 if owned & must be destroyed */ + void *ptr; +} swig_lua_userdata; + +/* this is the struct for wrapping arbitrary packed binary data +(currently it is only used for member function pointers) +the data ordering is similar to swig_lua_userdata, but it is currently not possible +to tell the two structures apart within SWIG, other than by looking at the type +*/ +typedef struct { + swig_type_info *type; + int own; /* 1 if owned & must be destroyed */ + char data[1]; /* arbitrary amount of data */ +} swig_lua_rawdata; + +/* Common SWIG API */ +#define SWIG_NewPointerObj(L, ptr, type, owner) SWIG_Lua_NewPointerObj(L, (void *)ptr, type, owner) +#define SWIG_ConvertPtr(L,idx, ptr, type, flags) SWIG_Lua_ConvertPtr(L,idx,ptr,type,flags) +#define SWIG_MustGetPtr(L,idx, type,flags, argnum,fnname) SWIG_Lua_MustGetPtr(L,idx, type,flags, argnum,fnname) +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(L, idx, ptr, sz, ty) SWIG_Lua_ConvertPacked(L, idx, ptr, sz, ty) +#define SWIG_NewMemberObj(L, ptr, sz, type) SWIG_Lua_NewPackedObj(L, ptr, sz, type) + +/* Runtime API */ +#define SWIG_GetModule(clientdata) SWIG_Lua_GetModule((lua_State*)(clientdata)) +#define SWIG_SetModule(clientdata, pointer) SWIG_Lua_SetModule((lua_State*) (clientdata), pointer) +#define SWIG_MODULE_CLIENTDATA_TYPE lua_State* + +/* Contract support */ +#define SWIG_contract_assert(expr, msg) \ + if (!(expr)) { SWIG_Lua_pusherrstring(L, (char *) msg); goto fail; } else + + +/* helper #defines */ +#define SWIG_fail {goto fail;} +#define SWIG_fail_arg(func_name,argnum,type) \ + {SWIG_Lua_pushferrstring(L,"Error in %s (arg %d), expected '%s' got '%s'",\ + func_name,argnum,type,SWIG_Lua_typename(L,argnum));\ + goto fail;} +#define SWIG_fail_ptr(func_name,argnum,type) \ + SWIG_fail_arg(func_name,argnum,(type && type->str)?type->str:"void*") +#define SWIG_check_num_args(func_name,a,b) \ + if (lua_gettop(L)b) \ + {SWIG_Lua_pushferrstring(L,"Error in %s expected %d..%d args, got %d",func_name,a,b,lua_gettop(L));\ + goto fail;} + + +#define SWIG_Lua_get_table(L,n) \ + (lua_pushstring(L, n), lua_rawget(L,-2)) + +#define SWIG_Lua_add_function(L,n,f) \ + (lua_pushstring(L, n), \ + lua_pushcfunction(L, f), \ + lua_rawset(L,-3)) + +#define SWIG_Lua_add_boolean(L,n,b) \ + (lua_pushstring(L, n), \ + lua_pushboolean(L, b), \ + lua_rawset(L,-3)) + +/* special helper for allowing 'nil' for usertypes */ +#define SWIG_isptrtype(L,I) (lua_isuserdata(L,I) || lua_isnil(L,I)) + +#ifdef __cplusplus +/* Special helper for member function pointers +it gets the address, casts it, then dereferences it */ +/*#define SWIG_mem_fn_as_voidptr(a) (*((char**)&(a))) */ +#endif + +/* storing/access of swig_module_info */ +SWIGRUNTIME swig_module_info * +SWIG_Lua_GetModule(lua_State *L) { + swig_module_info *ret = 0; + lua_pushstring(L,"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME); + lua_rawget(L,LUA_REGISTRYINDEX); + if (lua_islightuserdata(L,-1)) + ret=(swig_module_info*)lua_touserdata(L,-1); + lua_pop(L,1); /* tidy */ + return ret; +} + +SWIGRUNTIME void +SWIG_Lua_SetModule(lua_State *L, swig_module_info *module) { + /* add this all into the Lua registry: */ + lua_pushstring(L,"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME); + lua_pushlightuserdata(L,(void*)module); + lua_rawset(L,LUA_REGISTRYINDEX); +} + +/* ----------------------------------------------------------------------------- + * global variable support code: modules + * ----------------------------------------------------------------------------- */ + +/* this function is called when trying to set an immutable. +default action is to print an error. +This can removed with a compile flag SWIGLUA_IGNORE_SET_IMMUTABLE */ +SWIGINTERN int SWIG_Lua_set_immutable(lua_State *L) +{ +/* there should be 1 param passed in: the new value */ +#ifndef SWIGLUA_IGNORE_SET_IMMUTABLE + lua_pop(L,1); /* remove it */ + luaL_error(L,"This variable is immutable"); +#endif + return 0; /* should not return anything */ +} + +#ifdef SWIG_LUA_ELUA_EMULATE + +SWIGRUNTIME void SWIG_Lua_NewPointerObj(lua_State *L,void *ptr,swig_type_info *type, int own); +SWIGRUNTIME void SWIG_Lua_NewPackedObj(lua_State *L,void *ptr,size_t size,swig_type_info *type); +static int swig_lua_elua_emulate_unique_key; + +/* This function emulates eLua rotables behaviour. It loads a rotable definition into the usual lua table. */ +SWIGINTERN void SWIG_Lua_elua_emulate_register(lua_State *L, const swig_elua_entry *table) +{ + int i, table_parsed, parsed_tables_array, target_table; + assert(lua_istable(L,-1)); + target_table = lua_gettop(L); + /* Get the registry where we put all parsed tables to avoid loops */ + lua_rawgetp(L, LUA_REGISTRYINDEX, &swig_lua_elua_emulate_unique_key); + if(lua_isnil(L,-1)) { + lua_pop(L,1); + lua_newtable(L); + lua_pushvalue(L,-1); + lua_rawsetp(L,LUA_REGISTRYINDEX,(void*)(&swig_lua_elua_emulate_unique_key)); + } + parsed_tables_array = lua_gettop(L); + lua_pushvalue(L,target_table); + lua_rawsetp(L, parsed_tables_array, table); + table_parsed = 0; + const int SWIGUNUSED pairs_start = lua_gettop(L); + for(i = 0;table[i].key.type != LUA_TNIL || table[i].value.type != LUA_TNIL;i++) + { + const swig_elua_entry *entry = table + i; + int is_metatable = 0; + switch(entry->key.type) { + case LUA_TSTRING: + lua_pushstring(L,entry->key.key.strkey); + if(strcmp(entry->key.key.strkey, SWIG_LUA_ELUA_EMUL_METATABLE_KEY) == 0) + is_metatable = 1; + break; + case LUA_TNUMBER: + lua_pushnumber(L,entry->key.key.numkey); + break; + case LUA_TNIL: + lua_pushnil(L); + break; + default: + assert(0); + } + switch(entry->value.type) { + case LUA_TSTRING: + lua_pushstring(L,entry->value.value.string); + break; + case LUA_TNUMBER: + lua_pushnumber(L,entry->value.value.number); + break; + case LUA_TFUNCTION: + lua_pushcfunction(L,entry->value.value.function); + break; + case LUA_TTABLE: + lua_rawgetp(L,parsed_tables_array, entry->value.value.table); + table_parsed = !lua_isnil(L,-1); + if(!table_parsed) { + lua_pop(L,1); /*remove nil */ + lua_newtable(L); + SWIG_Lua_elua_emulate_register(L,entry->value.value.table); + } + if(is_metatable) { + assert(lua_istable(L,-1)); + lua_pushvalue(L,-1); + lua_setmetatable(L,target_table); + } + + break; + case LUA_TUSERDATA: + if(entry->value.value.userdata.member) + SWIG_NewMemberObj(L,entry->value.value.userdata.pvalue, + entry->value.value.userdata.lvalue, + *(entry->value.value.userdata.ptype)); + else + SWIG_NewPointerObj(L,entry->value.value.userdata.pvalue, + *(entry->value.value.userdata.ptype),0); + break; + case LUA_TNIL: + lua_pushnil(L); + break; + default: + assert(0); + } + assert(lua_gettop(L) == pairs_start + 2); + lua_rawset(L,target_table); + } + lua_pop(L,1); /* Removing parsed tables storage */ + assert(lua_gettop(L) == target_table); +} + +SWIGINTERN void SWIG_Lua_elua_emulate_register_clear(lua_State *L) +{ + lua_pushnil(L); + lua_rawsetp(L, LUA_REGISTRYINDEX, &swig_lua_elua_emulate_unique_key); +} + +SWIGINTERN void SWIG_Lua_get_class_registry(lua_State *L); + +SWIGINTERN int SWIG_Lua_emulate_elua_getmetatable(lua_State *L) +{ + SWIG_check_num_args("getmetatable(SWIG eLua emulation)", 1, 1); + SWIG_Lua_get_class_registry(L); + lua_getfield(L,-1,"lua_getmetatable"); + lua_remove(L,-2); /* remove the registry*/ + assert(!lua_isnil(L,-1)); + lua_pushvalue(L,1); + assert(lua_gettop(L) == 3); /* object | function | object again */ + lua_call(L,1,1); + if(!lua_isnil(L,-1)) /*There is an ordinary metatable */ + return 1; + /*if it is a table, then emulate elua behaviour - check for __metatable attribute of a table*/ + assert(lua_gettop(L) == 2); + if(lua_istable(L,-2)) { + lua_pop(L,1); /*remove the nil*/ + lua_getfield(L,-1, SWIG_LUA_ELUA_EMUL_METATABLE_KEY); + } + assert(lua_gettop(L) == 2); + return 1; + +fail: + lua_error(L); + return 0; +} + +SWIGINTERN void SWIG_Lua_emulate_elua_swap_getmetatable(lua_State *L) +{ + SWIG_Lua_get_class_registry(L); + lua_pushglobaltable(L); + lua_pushstring(L,"lua_getmetatable"); + lua_getfield(L,-2,"getmetatable"); + assert(!lua_isnil(L,-1)); + lua_rawset(L,-4); + lua_pushstring(L, "getmetatable"); + lua_pushcfunction(L, SWIG_Lua_emulate_elua_getmetatable); + lua_rawset(L,-3); + lua_pop(L,2); + +} +/* END OF REMOVE */ + +#endif +/* ----------------------------------------------------------------------------- + * global variable support code: namespaces and modules (which are the same thing) + * ----------------------------------------------------------------------------- */ + +SWIGINTERN int SWIG_Lua_namespace_get(lua_State *L) +{ +/* there should be 2 params passed in + (1) table (not the meta table) + (2) string name of the attribute +*/ + assert(lua_istable(L,-2)); /* just in case */ + lua_getmetatable(L,-2); + assert(lua_istable(L,-1)); + SWIG_Lua_get_table(L,".get"); /* find the .get table */ + assert(lua_istable(L,-1)); + /* look for the key in the .get table */ + lua_pushvalue(L,2); /* key */ + lua_rawget(L,-2); + lua_remove(L,-2); /* stack tidy, remove .get table */ + if (lua_iscfunction(L,-1)) + { /* found it so call the fn & return its value */ + lua_call(L,0,1); /* 1 value in (userdata),1 out (result) */ + lua_remove(L,-2); /* stack tidy, remove metatable */ + return 1; + } + lua_pop(L,1); /* remove whatever was there */ + /* ok, so try the .fn table */ + SWIG_Lua_get_table(L,".fn"); /* find the .get table */ + assert(lua_istable(L,-1)); /* just in case */ + lua_pushvalue(L,2); /* key */ + lua_rawget(L,-2); /* look for the fn */ + lua_remove(L,-2); /* stack tidy, remove .fn table */ + if (lua_isfunction(L,-1)) /* note: whether it's a C function or lua function */ + { /* found it so return the fn & let lua call it */ + lua_remove(L,-2); /* stack tidy, remove metatable */ + return 1; + } + lua_pop(L,1); /* remove whatever was there */ + return 0; +} + +SWIGINTERN int SWIG_Lua_namespace_set(lua_State *L) +{ +/* there should be 3 params passed in + (1) table (not the meta table) + (2) string name of the attribute + (3) any for the new value +*/ + + assert(lua_istable(L,1)); + lua_getmetatable(L,1); /* get the meta table */ + assert(lua_istable(L,-1)); + + SWIG_Lua_get_table(L,".set"); /* find the .set table */ + if (lua_istable(L,-1)) + { + /* look for the key in the .set table */ + lua_pushvalue(L,2); /* key */ + lua_rawget(L,-2); + if (lua_iscfunction(L,-1)) + { /* found it so call the fn & return its value */ + lua_pushvalue(L,3); /* value */ + lua_call(L,1,0); + return 0; + } + lua_pop(L,1); /* remove the value */ + } + lua_pop(L,1); /* remove the value .set table */ + lua_pop(L,1); /* remote metatable */ + lua_rawset(L,-3); + return 0; +} + +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_LUA) /* In elua this is useless */ +SWIGINTERN void SWIG_Lua_InstallConstants(lua_State *L, swig_lua_const_info constants[]); /* forward declaration */ +SWIGINTERN void SWIG_Lua_add_variable(lua_State *L,const char *name,lua_CFunction getFn,lua_CFunction setFn); /* forward declaration */ +SWIGINTERN void SWIG_Lua_class_register(lua_State *L,swig_lua_class *clss); + +/* helper function - register namespace methods and attributes into namespace */ +SWIGINTERN int SWIG_Lua_add_namespace_details(lua_State *L, swig_lua_namespace *ns) +{ + int i; + /* There must be namespace table (not metatable) at the top of the stack */ + assert(lua_istable(L,-1)); + SWIG_Lua_InstallConstants(L, ns->ns_constants); + + /* add methods to the namespace/module table */ + for(i=0;ns->ns_methods[i].name;i++){ + SWIG_Lua_add_function(L,ns->ns_methods[i].name,ns->ns_methods[i].func); + } + lua_getmetatable(L,-1); + + /* add fns */ + for(i=0;ns->ns_attributes[i].name;i++){ + SWIG_Lua_add_variable(L,ns->ns_attributes[i].name,ns->ns_attributes[i].getmethod,ns->ns_attributes[i].setmethod); + } + + /* clear stack - remove metatble */ + lua_pop(L,1); + return 0; +} + +/* Register all classes in the namespace */ +SWIGINTERN void SWIG_Lua_add_namespace_classes(lua_State *L, swig_lua_namespace *ns) +{ + swig_lua_class **classes; + + /* There must be a module/namespace table at the top of the stack */ + assert(lua_istable(L,-1)); + + classes = ns->ns_classes; + + if( classes != 0 ) { + while(*classes != 0) { + SWIG_Lua_class_register(L, *classes); + classes++; + } + } +} + +/* Helper function. Creates namespace table and adds it to module table + if 'reg' is true, then will register namespace table to parent one (must be on top of the stack + when function is called). + Function always returns newly registered table on top of the stack. +*/ +SWIGINTERN void SWIG_Lua_namespace_register(lua_State *L, swig_lua_namespace *ns, int reg) +{ + swig_lua_namespace **sub_namespace; + /* 1 argument - table on the top of the stack */ + const int SWIGUNUSED begin = lua_gettop(L); + assert(lua_istable(L,-1)); /* just in case. This is supposed to be module table or parent namespace table */ + lua_checkstack(L,5); + lua_newtable(L); /* namespace itself */ + lua_newtable(L); /* metatable for namespace */ + + /* add a table called ".get" */ + lua_pushstring(L,".get"); + lua_newtable(L); + lua_rawset(L,-3); + /* add a table called ".set" */ + lua_pushstring(L,".set"); + lua_newtable(L); + lua_rawset(L,-3); + /* add a table called ".fn" */ + lua_pushstring(L,".fn"); + lua_newtable(L); + lua_rawset(L,-3); + + /* add accessor fns for using the .get,.set&.fn */ + SWIG_Lua_add_function(L,"__index",SWIG_Lua_namespace_get); + SWIG_Lua_add_function(L,"__newindex",SWIG_Lua_namespace_set); + + lua_setmetatable(L,-2); /* set metatable */ + + /* Register all functions, variables etc */ + SWIG_Lua_add_namespace_details(L,ns); + /* Register classes */ + SWIG_Lua_add_namespace_classes(L,ns); + + sub_namespace = ns->ns_namespaces; + if( sub_namespace != 0) { + while(*sub_namespace != 0) { + SWIG_Lua_namespace_register(L, *sub_namespace, 1); + lua_pop(L,1); /* removing sub-namespace table */ + sub_namespace++; + } + } + + if (reg) { + lua_pushstring(L,ns->name); + lua_pushvalue(L,-2); + lua_rawset(L,-4); /* add namespace to module table */ + } + assert(lua_gettop(L) == begin+1); +} +#endif /* SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_LUA */ + +/* ----------------------------------------------------------------------------- + * global variable support code: classes + * ----------------------------------------------------------------------------- */ + +SWIGINTERN void SWIG_Lua_get_class_metatable(lua_State *L,const char *cname); + +typedef int (*swig_lua_base_iterator_func)(lua_State*,swig_type_info*, int, int *ret); + +SWIGINTERN int SWIG_Lua_iterate_bases(lua_State *L, swig_type_info * SWIGUNUSED swig_type, + int first_arg, swig_lua_base_iterator_func func, int *const ret) +{ + /* first_arg - position of the object in stack. Everything that is above are arguments + * and is passed to every evocation of the func */ + int last_arg = lua_gettop(L);/* position of last argument */ + int original_metatable = last_arg + 1; + size_t bases_count; + int result = SWIG_ERROR; + int bases_table; + (void)swig_type; + lua_getmetatable(L,first_arg); + + /* initialise base search */ +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_LUA) + SWIG_Lua_get_table(L,".bases"); + assert(lua_istable(L,-1)); + bases_count = lua_rawlen(L,-1); + bases_table = lua_gettop(L); +#else + /* In elua .bases table doesn't exist. Use table from swig_lua_class */ + (void)bases_table; + assert(swig_type!=0); + swig_module_info *module=SWIG_GetModule(L); + swig_lua_class **bases= ((swig_lua_class*)(swig_type->clientdata))->bases; + const char **base_names= ((swig_lua_class*)(swig_type->clientdata))->base_names; + bases_count = 0; + for(;base_names[bases_count]; + bases_count++);/* get length of bases */ +#endif + + if(ret) + *ret = 0; + if(bases_count>0) + { + int to_remove; + size_t i; + int j; + int subcall_last_arg; + int subcall_first_arg = lua_gettop(L) + 1;/* Here a copy of first_arg and arguments begin */ + int valid = 1; + swig_type_info *base_swig_type = 0; + for(j=first_arg;j<=last_arg;j++) + lua_pushvalue(L,j); + subcall_last_arg = lua_gettop(L); + + /* Trick: temporarily replacing original metatable with metatable for base class and call getter */ + for(i=0;ifqname); + base_swig_type = SWIG_TypeQueryModule(module,module,base_names[i]); + assert(base_swig_type != 0); + } +#endif + + if(!valid) + continue; + assert(lua_isuserdata(L, subcall_first_arg)); + assert(lua_istable(L,-1)); + lua_setmetatable(L,subcall_first_arg); /* Set new metatable */ + assert(lua_gettop(L) == subcall_last_arg); + result = func(L, base_swig_type,subcall_first_arg, ret); /* Forward call */ + if(result != SWIG_ERROR) { + break; + } + } + /* Restore original metatable */ + lua_pushvalue(L,original_metatable); + lua_setmetatable(L,first_arg); + /* Clear - remove everything between last_arg and subcall_last_arg including */ + to_remove = subcall_last_arg - last_arg; + for(j=0;jtype; + result = SWIG_Lua_class_do_get(L,type,1,&ret); + if(result == SWIG_OK) + return ret; + + result = SWIG_Lua_class_do_get_item(L,type,1,&ret); + if(result == SWIG_OK) + return ret; + + return 0; +} + +/* helper for the class.set method, performs the lookup of class attributes + * It returns error code. Number of function return values is passed inside 'ret' + */ +SWIGINTERN int SWIG_Lua_class_do_set(lua_State *L, swig_type_info *type, int first_arg, int *ret) +{ +/* there should be 3 params passed in + (1) table (not the meta table) + (2) string name of the attribute + (3) any for the new value + */ + + int bases_search_result; + int substack_start = lua_gettop(L) - 3; + lua_checkstack(L,5); + assert(lua_isuserdata(L,substack_start+1)); /* just in case */ + lua_getmetatable(L,substack_start+1); /* get the meta table */ + assert(lua_istable(L,-1)); /* just in case */ + if(ret) + *ret = 0; /* it is setter - number of return values is always 0 */ + + SWIG_Lua_get_table(L,".set"); /* find the .set table */ + if (lua_istable(L,-1)) + { + /* look for the key in the .set table */ + lua_pushvalue(L,substack_start+2); /* key */ + lua_rawget(L,-2); + lua_remove(L,-2); /* tidy stack, remove .set table */ + if (lua_iscfunction(L,-1)) + { /* found it so call the fn & return its value */ + lua_pushvalue(L,substack_start+1); /* userdata */ + lua_pushvalue(L,substack_start+3); /* value */ + lua_call(L,2,0); + lua_remove(L,substack_start+4); /*remove metatable*/ + return SWIG_OK; + } + lua_pop(L,1); /* remove the value */ + } else { + lua_pop(L,1); /* remove the answer for .set table request*/ + } + /* NEW: looks for the __setitem() fn + this is a user provided set fn */ + SWIG_Lua_get_table(L,"__setitem"); /* find the fn */ + if (lua_iscfunction(L,-1)) /* if its there */ + { /* found it so call the fn & return its value */ + lua_pushvalue(L,substack_start+1); /* the userdata */ + lua_pushvalue(L,substack_start+2); /* the parameter */ + lua_pushvalue(L,substack_start+3); /* the value */ + lua_call(L,3,0); /* 3 values in ,0 out */ + lua_remove(L,-2); /* stack tidy, remove metatable */ + return SWIG_OK; + } + lua_pop(L,1); /* remove value */ + + lua_pop(L,1); /* remove metatable */ + /* Search among bases */ + bases_search_result = SWIG_Lua_iterate_bases(L,type,first_arg,SWIG_Lua_class_do_set,ret); + if(ret) + assert(*ret == 0); + assert(lua_gettop(L) == substack_start + 3); + return bases_search_result; +} + +/* This is the actual method exported to Lua. It calls SWIG_Lua_class_do_set and correctly + * handles return values. + */ +SWIGINTERN int SWIG_Lua_class_set(lua_State *L) +{ +/* There should be 3 params passed in + (1) table (not the meta table) + (2) string name of the attribute + (3) any for the new value + */ + int ret = 0; + int result; + swig_lua_userdata *usr; + swig_type_info *type; + assert(lua_isuserdata(L,1)); + usr=(swig_lua_userdata*)lua_touserdata(L,1); /* get data */ + type = usr->type; + result = SWIG_Lua_class_do_set(L,type,1,&ret); + if(result != SWIG_OK) { + SWIG_Lua_pushferrstring(L,"Assignment not possible. No setter/member with this name. For custom assignments implement __setitem method."); + lua_error(L); + } else { + assert(ret==0); + } + return 0; +} + +/* the class.destruct method called by the interpreter */ +SWIGINTERN int SWIG_Lua_class_destruct(lua_State *L) +{ +/* there should be 1 params passed in + (1) userdata (not the meta table) */ + swig_lua_userdata *usr; + swig_lua_class *clss; + assert(lua_isuserdata(L,-1)); /* just in case */ + usr=(swig_lua_userdata*)lua_touserdata(L,-1); /* get it */ + /* if must be destroyed & has a destructor */ + if (usr->own) /* if must be destroyed */ + { + clss=(swig_lua_class*)usr->type->clientdata; /* get the class */ + if (clss && clss->destructor) /* there is a destroy fn */ + { + clss->destructor(usr->ptr); /* bye bye */ + } + } + return 0; +} + +/* the class.__tostring method called by the interpreter and print */ +SWIGINTERN int SWIG_Lua_class_tostring(lua_State *L) +{ +/* there should be 1 param passed in + (1) userdata (not the metatable) */ + const char *className; + void* userData; + assert(lua_isuserdata(L,1)); /* just in case */ + userData = lua_touserdata(L,1); /* get the userdata address for later */ + lua_getmetatable(L,1); /* get the meta table */ + assert(lua_istable(L,-1)); /* just in case */ + + lua_getfield(L, -1, ".type"); + className = lua_tostring(L, -1); + + lua_pushfstring(L, "<%s userdata: %p>", className, userData); + return 1; +} + +/* to manually disown some userdata */ +SWIGINTERN int SWIG_Lua_class_disown(lua_State *L) +{ +/* there should be 1 params passed in + (1) userdata (not the meta table) */ + swig_lua_userdata *usr; + assert(lua_isuserdata(L,-1)); /* just in case */ + usr=(swig_lua_userdata*)lua_touserdata(L,-1); /* get it */ + + usr->own = 0; /* clear our ownership */ + return 0; +} + +/* lua callable function to compare userdata's value +the issue is that two userdata may point to the same thing +but to lua, they are different objects */ +SWIGRUNTIME int SWIG_Lua_class_equal(lua_State *L) +{ + int result; + swig_lua_userdata *usr1,*usr2; + if (!lua_isuserdata(L,1) || !lua_isuserdata(L,2)) /* just in case */ + return 0; /* nil reply */ + usr1=(swig_lua_userdata*)lua_touserdata(L,1); /* get data */ + usr2=(swig_lua_userdata*)lua_touserdata(L,2); /* get data */ + /*result=(usr1->ptr==usr2->ptr && usr1->type==usr2->type); only works if type is the same*/ + result=(usr1->ptr==usr2->ptr); + lua_pushboolean(L,result); + return 1; +} + +/* populate table at the top of the stack with metamethods that ought to be inherited */ +SWIGINTERN void SWIG_Lua_populate_inheritable_metamethods(lua_State *L) +{ + SWIG_Lua_add_boolean(L, "__add", 1); + SWIG_Lua_add_boolean(L, "__sub", 1); + SWIG_Lua_add_boolean(L, "__mul", 1); + SWIG_Lua_add_boolean(L, "__div", 1); + SWIG_Lua_add_boolean(L, "__mod", 1); + SWIG_Lua_add_boolean(L, "__pow", 1); + SWIG_Lua_add_boolean(L, "__unm", 1); + SWIG_Lua_add_boolean(L, "__len", 1 ); + SWIG_Lua_add_boolean(L, "__concat", 1 ); + SWIG_Lua_add_boolean(L, "__eq", 1); + SWIG_Lua_add_boolean(L, "__lt", 1); + SWIG_Lua_add_boolean(L, "__le", 1); + SWIG_Lua_add_boolean(L, "__call", 1); + SWIG_Lua_add_boolean(L, "__tostring", 1); + SWIG_Lua_add_boolean(L, "__gc", 0); +} + +/* creates the swig registry */ +SWIGINTERN void SWIG_Lua_create_class_registry(lua_State *L) +{ + /* create main SWIG registry table */ + lua_pushstring(L,"SWIG"); + lua_newtable(L); + /* populate it with some predefined data */ + + /* .library table. Placeholder */ + lua_pushstring(L,".library"); + lua_newtable(L); + { + /* list of metamethods that class inherits from its bases */ + lua_pushstring(L,"inheritable_metamethods"); + lua_newtable(L); + /* populate with list of metamethods */ + SWIG_Lua_populate_inheritable_metamethods(L); + lua_rawset(L,-3); + } + lua_rawset(L,-3); + + lua_rawset(L,LUA_REGISTRYINDEX); +} + +/* gets the swig registry (or creates it) */ +SWIGINTERN void SWIG_Lua_get_class_registry(lua_State *L) +{ + /* add this all into the swig registry: */ + lua_pushstring(L,"SWIG"); + lua_rawget(L,LUA_REGISTRYINDEX); /* get the registry */ + if (!lua_istable(L,-1)) /* not there */ + { /* must be first time, so add it */ + lua_pop(L,1); /* remove the result */ + SWIG_Lua_create_class_registry(L); + /* then get it */ + lua_pushstring(L,"SWIG"); + lua_rawget(L,LUA_REGISTRYINDEX); + } +} + +SWIGINTERN void SWIG_Lua_get_inheritable_metamethods(lua_State *L) +{ + SWIG_Lua_get_class_registry(L); + lua_pushstring(L, ".library"); + lua_rawget(L,-2); + assert( !lua_isnil(L,-1) ); + lua_pushstring(L, "inheritable_metamethods"); + lua_rawget(L,-2); + + /* Remove class registry and library table */ + lua_remove(L,-2); + lua_remove(L,-2); +} + +/* Helper function to get the classes metatable from the register */ +SWIGINTERN void SWIG_Lua_get_class_metatable(lua_State *L,const char *cname) +{ + SWIG_Lua_get_class_registry(L); /* get the registry */ + lua_pushstring(L,cname); /* get the name */ + lua_rawget(L,-2); /* get it */ + lua_remove(L,-2); /* tidy up (remove registry) */ +} + +/* Set up the base classes pointers. +Each class structure has a list of pointers to the base class structures. +This function fills them. +It cannot be done at compile time, as this will not work with hireachies +spread over more than one swig file. +Therefore it must be done at runtime, querying the SWIG type system. +*/ +SWIGINTERN void SWIG_Lua_init_base_class(lua_State *L,swig_lua_class *clss) +{ + int i=0; + swig_module_info *module=SWIG_GetModule(L); + for(i=0;clss->base_names[i];i++) + { + if (clss->bases[i]==0) /* not found yet */ + { + /* lookup and cache the base class */ + swig_type_info *info = SWIG_TypeQueryModule(module,module,clss->base_names[i]); + if (info) clss->bases[i] = (swig_lua_class *) info->clientdata; + } + } +} + +#if defined(SWIG_LUA_SQUASH_BASES) && (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_LUA) +/* Merges two tables */ +SWIGINTERN void SWIG_Lua_merge_tables_by_index(lua_State *L, int target, int source) +{ + /* iterating */ + lua_pushnil(L); + while (lua_next(L,source) != 0) { + /* -1 - value, -2 - index */ + /* have to copy to assign */ + lua_pushvalue(L,-2); /* copy of index */ + lua_pushvalue(L,-2); /* copy of value */ + lua_rawset(L, target); + lua_pop(L,1); + /* only key is left */ + } +} + +/* Merges two tables with given name. original - index of target metatable, base - index of source metatable */ +SWIGINTERN void SWIG_Lua_merge_tables(lua_State *L, const char* name, int original, int base) +{ + /* push original[name], then base[name] */ + lua_pushstring(L,name); + lua_rawget(L,original); + int original_table = lua_gettop(L); + lua_pushstring(L,name); + lua_rawget(L,base); + int base_table = lua_gettop(L); + SWIG_Lua_merge_tables_by_index(L, original_table, base_table); + /* clearing stack */ + lua_pop(L,2); +} + +/* Function takes all symbols from base and adds it to derived class. It's just a helper. */ +SWIGINTERN void SWIG_Lua_class_squash_base(lua_State *L, swig_lua_class *base_cls) +{ + /* There is one parameter - original, i.e. 'derived' class metatable */ + assert(lua_istable(L,-1)); + int original = lua_gettop(L); + SWIG_Lua_get_class_metatable(L,base_cls->fqname); + int base = lua_gettop(L); + SWIG_Lua_merge_tables(L, ".fn", original, base ); + SWIG_Lua_merge_tables(L, ".set", original, base ); + SWIG_Lua_merge_tables(L, ".get", original, base ); + lua_pop(L,1); +} + +/* Function squashes all symbols from 'clss' bases into itself */ +SWIGINTERN void SWIG_Lua_class_squash_bases(lua_State *L, swig_lua_class *clss) +{ + int i; + SWIG_Lua_get_class_metatable(L,clss->fqname); + for(i=0;clss->base_names[i];i++) + { + if (clss->bases[i]==0) /* Somehow it's not found. Skip it */ + continue; + /* Thing is: all bases are already registered. Thus they have already executed + * this function. So we just need to squash them into us, because their bases + * are already squashed into them. No need for recursion here! + */ + SWIG_Lua_class_squash_base(L, clss->bases[i]); + } + lua_pop(L,1); /*tidy stack*/ +} +#endif + +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_LUA) /* In elua this is useless */ +/* helper add a variable to a registered class */ +SWIGINTERN void SWIG_Lua_add_variable(lua_State *L,const char *name,lua_CFunction getFn,lua_CFunction setFn) +{ + assert(lua_istable(L,-1)); /* just in case */ + SWIG_Lua_get_table(L,".get"); /* find the .get table */ + assert(lua_istable(L,-1)); /* just in case */ + SWIG_Lua_add_function(L,name,getFn); + lua_pop(L,1); /* tidy stack (remove table) */ + if (setFn) + { + SWIG_Lua_get_table(L,".set"); /* find the .set table */ + assert(lua_istable(L,-1)); /* just in case */ + SWIG_Lua_add_function(L,name,setFn); + lua_pop(L,1); /* tidy stack (remove table) */ + } +} + +/* helper to recursively add class static details (static attributes, operations and constants) */ +SWIGINTERN void SWIG_Lua_add_class_static_details(lua_State *L, swig_lua_class *clss) +{ + int i = 0; + /* The class namespace table must be on the top of the stack */ + assert(lua_istable(L,-1)); + /* call all the base classes first: we can then override these later: */ + for(i=0;clss->bases[i];i++) + { + SWIG_Lua_add_class_static_details(L,clss->bases[i]); + } + + SWIG_Lua_add_namespace_details(L, clss->cls_static); +} + +SWIGINTERN void SWIG_Lua_add_class_user_metamethods(lua_State *L, swig_lua_class *clss); /* forward declaration */ + +/* helper to recursively add class details (attributes & operations) */ +SWIGINTERN void SWIG_Lua_add_class_instance_details(lua_State *L, swig_lua_class *clss) +{ + int i; + size_t bases_count = 0; + /* Add bases to .bases table */ + SWIG_Lua_get_table(L,".bases"); + assert(lua_istable(L,-1)); /* just in case */ + for(i=0;clss->bases[i];i++) + { + SWIG_Lua_get_class_metatable(L,clss->bases[i]->fqname); + /* Base class must be already registered */ + assert(lua_istable(L,-1)); + lua_rawseti(L,-2,i+1); /* In lua indexing starts from 1 */ + bases_count++; + } + assert(lua_rawlen(L,-1) == bases_count); + lua_pop(L,1); /* remove .bases table */ + /* add attributes */ + for(i=0;clss->attributes[i].name;i++){ + SWIG_Lua_add_variable(L,clss->attributes[i].name,clss->attributes[i].getmethod,clss->attributes[i].setmethod); + } + /* add methods to the metatable */ + SWIG_Lua_get_table(L,".fn"); /* find the .fn table */ + assert(lua_istable(L,-1)); /* just in case */ + for(i=0;clss->methods[i].name;i++){ + SWIG_Lua_add_function(L,clss->methods[i].name,clss->methods[i].func); + } + lua_pop(L,1); /* tidy stack (remove table) */ + /* add operator overloads + This adds methods from metatable array to metatable. Can mess up garbage + collectind if someone defines __gc method + */ + if(clss->metatable) { + for(i=0;clss->metatable[i].name;i++) { + SWIG_Lua_add_function(L,clss->metatable[i].name,clss->metatable[i].func); + } + } + +#if !defined(SWIG_LUA_SQUASH_BASES) + /* Adding metamethods that are defined in base classes. If bases were squashed + * then it is obviously unnecessary + */ + SWIG_Lua_add_class_user_metamethods(L, clss); +#endif +} + +/* Helpers to add user defined class metamedhods - __add, __sub etc. The helpers are needed + for the following issue: Lua runtime checks for metamethod existence with rawget function + ignoring our SWIG-provided __index and __newindex functions. Thus our inheritance-aware method + search algorithm doesn't work in such case. (Not to say that Lua runtime queries metamethod directly + in metatable and not in object). + Current solution is this: if somewhere in hierarchy metamethod __x is defined, then all descendants + are automatically given a special proxy __x that calls the real __x method. + Obvious idea - to copy __x instead of creating __x-proxy is wrong because if someone changes __x in runtime, + those changes must be reflected in all descendants. +*/ + +SWIGRUNTIME int SWIG_Lua_resolve_metamethod(lua_State *L); /*forward declaration*/ + +/* The real function that resolves a metamethod. + * Function searches given class and all it's bases(recursively) for first instance of something that is + * not equal to SWIG_Lua_resolve_metatmethod. (Almost always this 'something' is actual metamethod implementation + * and it is a SWIG-generated C function.). It returns value on the top of the L and there is no garbage below the + * answer. + * Returns 1 if found, 0 otherwise. + * clss is class which metatable we will search for method + * metamethod_name_idx is index in L where metamethod name (as string) lies + * skip_check allows to skip searching metamethod in givel clss and immideatelly go to searching in bases. skip_check + * is not caried to subsequent recursive calls - false is always passed. It is set to true only at first call from + * SWIG_Lua_resolve_metamethod + * */ +SWIGINTERN int SWIG_Lua_do_resolve_metamethod(lua_State *L, const swig_lua_class *clss, int metamethod_name_idx, + int skip_check) +{ + /* This function is called recursively */ + int result = 0; + int i = 0; + + if (!skip_check) { + SWIG_Lua_get_class_metatable(L, clss->fqname); + lua_pushvalue(L, metamethod_name_idx); + lua_rawget(L,-2); + /* If this is cfunction and it is equal to SWIG_Lua_resolve_metamethod then + * this isn't the function we are looking for :) + * lua_tocfunction will return NULL if not cfunction + */ + if (!lua_isnil(L,-1) && lua_tocfunction(L,-1) != SWIG_Lua_resolve_metamethod ) { + lua_remove(L,-2); /* removing class metatable */ + return 1; + } + lua_pop(L,2); /* remove class metatable and query result */ + } + + /* Forwarding calls to bases */ + for(i=0;clss->bases[i];i++) + { + result = SWIG_Lua_do_resolve_metamethod(L, clss->bases[i], metamethod_name_idx, 0); + if (result) + break; + } + + return result; +} + +/* The proxy function for metamethod. All parameters are passed as cclosure. Searches for actual method + * and calls it */ +SWIGRUNTIME int SWIG_Lua_resolve_metamethod(lua_State *L) +{ + int numargs; + int metamethod_name_idx; + const swig_lua_class* clss; + int result; + + lua_checkstack(L,5); + numargs = lua_gettop(L); /* number of arguments to pass to actual metamethod */ + + /* Get upvalues from closure */ + lua_pushvalue(L, lua_upvalueindex(1)); /*Get function name*/ + metamethod_name_idx = lua_gettop(L); + + lua_pushvalue(L, lua_upvalueindex(2)); + clss = (const swig_lua_class*)(lua_touserdata(L,-1)); + lua_pop(L,1); /* remove lightuserdata with clss from stack */ + + /* Actual work */ + result = SWIG_Lua_do_resolve_metamethod(L, clss, metamethod_name_idx, 1); + if (!result) { + SWIG_Lua_pushferrstring(L,"The metamethod proxy is set, but it failed to find actual metamethod. Memory corruption is most likely explanation."); + lua_error(L); + return 0; + } + + lua_remove(L,-2); /* remove metamethod key */ + lua_insert(L,1); /* move function to correct position */ + lua_call(L, numargs, LUA_MULTRET); + return lua_gettop(L); /* return all results */ +} + + +/* If given metamethod must be present in given class, then creates appropriate proxy + * Returns 1 if successfully added, 0 if not added because no base class has it, -1 + * if method is defined in the class metatable itself + */ +SWIGINTERN int SWIG_Lua_add_class_user_metamethod(lua_State *L, swig_lua_class *clss, const int metatable_index) +{ + int key_index; + int success = 0; + int i = 0; + + /* metamethod name - on the top of the stack */ + assert(lua_isstring(L,-1)); + + key_index = lua_gettop(L); + + /* Check whether method is already defined in metatable */ + lua_pushvalue(L,key_index); /* copy of the key */ + lua_gettable(L,metatable_index); + if( !lua_isnil(L,-1) ) { + lua_pop(L,1); + return -1; + } + lua_pop(L,1); + + /* Iterating over immediate bases */ + for(i=0;clss->bases[i];i++) + { + const swig_lua_class *base = clss->bases[i]; + SWIG_Lua_get_class_metatable(L, base->fqname); + lua_pushvalue(L, key_index); + lua_rawget(L, -2); + if( !lua_isnil(L,-1) ) { + lua_pushvalue(L, key_index); + + /* Add proxy function */ + lua_pushvalue(L, key_index); /* first closure value is function name */ + lua_pushlightuserdata(L, clss); /* second closure value is swig_lua_class structure */ + lua_pushcclosure(L, SWIG_Lua_resolve_metamethod, 2); + + lua_rawset(L, metatable_index); + success = 1; + } + lua_pop(L,1); /* remove function or nil */ + lua_pop(L,1); /* remove base class metatable */ + + if( success ) + break; + } + + return success; +} + +SWIGINTERN void SWIG_Lua_add_class_user_metamethods(lua_State *L, swig_lua_class *clss) +{ + int metatable_index; + int metamethods_info_index; + int tostring_undefined; + int eq_undefined = 0; + + SWIG_Lua_get_class_metatable(L, clss->fqname); + metatable_index = lua_gettop(L); + SWIG_Lua_get_inheritable_metamethods(L); + assert(lua_istable(L,-1)); + metamethods_info_index = lua_gettop(L); + lua_pushnil(L); /* first key */ + while(lua_next(L, metamethods_info_index) != 0 ) { + /* key at index -2, value at index -1 */ + const int is_inheritable = lua_toboolean(L,-2); + lua_pop(L,1); /* remove value - we don't need it anymore */ + + if(is_inheritable) { /* if metamethod is inheritable */ + SWIG_Lua_add_class_user_metamethod(L,clss,metatable_index); + } + } + + lua_pop(L,1); /* remove inheritable metatmethods table */ + + /* Special handling for __tostring method */ + lua_pushstring(L, "__tostring"); + lua_pushvalue(L,-1); + lua_rawget(L,metatable_index); + tostring_undefined = lua_isnil(L,-1); + lua_pop(L,1); + if( tostring_undefined ) { + lua_pushcfunction(L, SWIG_Lua_class_tostring); + lua_rawset(L, metatable_index); + } else { + lua_pop(L,1); /* remove copy of the key */ + } + + /* Special handling for __eq method */ + lua_pushstring(L, "__eq"); + lua_pushvalue(L,-1); + lua_rawget(L,metatable_index); + eq_undefined = lua_isnil(L,-1); + lua_pop(L,1); + if( eq_undefined ) { + lua_pushcfunction(L, SWIG_Lua_class_equal); + lua_rawset(L, metatable_index); + } else { + lua_pop(L,1); /* remove copy of the key */ + } + /* Warning: __index and __newindex are SWIG-defined. For user-defined operator[] + * a __getitem/__setitem method should be defined + */ + lua_pop(L,1); /* pop class metatable */ +} + +/* Register class static methods,attributes etc as well as constructor proxy */ +SWIGINTERN void SWIG_Lua_class_register_static(lua_State *L, swig_lua_class *clss) +{ + const int SWIGUNUSED begin = lua_gettop(L); + lua_checkstack(L,5); /* just in case */ + assert(lua_istable(L,-1)); /* just in case */ + assert(strcmp(clss->name, clss->cls_static->name) == 0); /* in class those 2 must be equal */ + + SWIG_Lua_namespace_register(L,clss->cls_static, 1); + + assert(lua_istable(L,-1)); /* just in case */ + + /* add its constructor to module with the name of the class + so you can do MyClass(...) as well as new_MyClass(...) + BUT only if a constructor is defined + (this overcomes the problem of pure virtual classes without constructors)*/ + if (clss->constructor) + { + lua_getmetatable(L,-1); + assert(lua_istable(L,-1)); /* just in case */ + SWIG_Lua_add_function(L,"__call", clss->constructor); + lua_pop(L,1); + } + + assert(lua_istable(L,-1)); /* just in case */ + SWIG_Lua_add_class_static_details(L, clss); + + /* clear stack */ + lua_pop(L,1); + assert( lua_gettop(L) == begin ); +} + +/* Performs the instance (non-static) class registration process. Metatable for class is created + * and added to the class registry. + */ +SWIGINTERN void SWIG_Lua_class_register_instance(lua_State *L,swig_lua_class *clss) +{ + const int SWIGUNUSED begin = lua_gettop(L); + int i; + /* if name already there (class is already registered) then do nothing */ + SWIG_Lua_get_class_registry(L); /* get the registry */ + lua_pushstring(L,clss->fqname); /* get the name */ + lua_rawget(L,-2); + if(!lua_isnil(L,-1)) { + lua_pop(L,2); + assert(lua_gettop(L)==begin); + return; + } + lua_pop(L,2); /* tidy stack */ + /* Recursively initialize all bases */ + for(i=0;clss->bases[i];i++) + { + SWIG_Lua_class_register_instance(L,clss->bases[i]); + } + /* Again, get registry and push name */ + SWIG_Lua_get_class_registry(L); /* get the registry */ + lua_pushstring(L,clss->fqname); /* get the name */ + lua_newtable(L); /* create the metatable */ +#if defined(SWIG_LUA_SQUASH_BASES) && (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_LUA) + /* If squashing is requested, then merges all bases metatable into this one. + * It would get us all special methods: __getitem, __add etc. + * This would set .fn, .type, and other .xxx incorrectly, but we will overwrite it right away + */ + { + int new_metatable_index = lua_absindex(L,-1); + for(i=0;clss->bases[i];i++) + { + int base_metatable; + SWIG_Lua_get_class_metatable(L,clss->bases[i]->fqname); + base_metatable = lua_absindex(L,-1); + SWIG_Lua_merge_tables_by_index(L,new_metatable_index, base_metatable); + lua_pop(L,1); + } + } + /* And now we will overwrite all incorrectly set data */ +#endif + /* add string of class name called ".type" */ + lua_pushstring(L,".type"); + lua_pushstring(L,clss->fqname); + lua_rawset(L,-3); + /* add a table called bases */ + lua_pushstring(L,".bases"); + lua_newtable(L); + lua_rawset(L,-3); + /* add a table called ".get" */ + lua_pushstring(L,".get"); + lua_newtable(L); + lua_rawset(L,-3); + /* add a table called ".set" */ + lua_pushstring(L,".set"); + lua_newtable(L); + lua_rawset(L,-3); + /* add a table called ".fn" */ + lua_pushstring(L,".fn"); + lua_newtable(L); + /* add manual disown method */ + SWIG_Lua_add_function(L,"__disown",SWIG_Lua_class_disown); + lua_rawset(L,-3); + /* add accessor fns for using the .get,.set&.fn */ + SWIG_Lua_add_function(L,"__index",SWIG_Lua_class_get); + SWIG_Lua_add_function(L,"__newindex",SWIG_Lua_class_set); + SWIG_Lua_add_function(L,"__gc",SWIG_Lua_class_destruct); + /* add it */ + lua_rawset(L,-3); /* metatable into registry */ + lua_pop(L,1); /* tidy stack (remove registry) */ + assert(lua_gettop(L) == begin); + +#if defined(SWIG_LUA_SQUASH_BASES) && (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_LUA) + /* Now merge all symbols from .fn, .set, .get etc from bases to our tables */ + SWIG_Lua_class_squash_bases(L,clss); +#endif + SWIG_Lua_get_class_metatable(L,clss->fqname); + SWIG_Lua_add_class_instance_details(L,clss); /* recursive adding of details (atts & ops) */ + lua_pop(L,1); /* tidy stack (remove class metatable) */ + assert( lua_gettop(L) == begin ); +} + +SWIGINTERN void SWIG_Lua_class_register(lua_State *L,swig_lua_class *clss) +{ + int SWIGUNUSED begin; + assert(lua_istable(L,-1)); /* This is a table (module or namespace) where classes will be added */ + SWIG_Lua_class_register_instance(L,clss); + SWIG_Lua_class_register_static(L,clss); + + /* Add links from static part to instance part and vice versa */ + /* [SWIG registry] [Module] + * "MyClass" ----> [MyClass metatable] <===== "MyClass" -+> [static part] + * ".get" ----> ... | | getmetatable()----| + * ".set" ----> ... | | | + * ".static" --------------)----------------/ [static part metatable] + * | ".get" --> ... + * | ".set" --> .... + * |=============================== ".instance" + */ + begin = lua_gettop(L); + lua_pushstring(L,clss->cls_static->name); + lua_rawget(L,-2); /* get class static table */ + assert(lua_istable(L,-1)); + lua_getmetatable(L,-1); + assert(lua_istable(L,-1)); /* get class static metatable */ + lua_pushstring(L,".instance"); /* prepare key */ + + SWIG_Lua_get_class_metatable(L,clss->fqname); /* get class metatable */ + assert(lua_istable(L,-1)); + lua_pushstring(L,".static"); /* prepare key */ + lua_pushvalue(L, -4); /* push static class TABLE */ + assert(lua_istable(L,-1)); + lua_rawset(L,-3); /* assign static class table(!NOT metatable) as ".static" member of class metatable */ + lua_rawset(L,-3); /* assign class metatable as ".instance" member of class static METATABLE */ + lua_pop(L,2); + assert(lua_gettop(L) == begin); +} +#endif /* SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_LUA */ + +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC) +SWIGINTERN void SWIG_Lua_elua_class_register_instance(lua_State *L, swig_lua_class *clss) +{ + const int SWIGUNUSED begin = lua_gettop(L); + int i; + /* if name already there (class is already registered) then do nothing */ + SWIG_Lua_get_class_registry(L); /* get the registry */ + lua_pushstring(L,clss->fqname); /* get the name */ + lua_rawget(L,-2); + if(!lua_isnil(L,-1)) { + lua_pop(L,2); + assert(lua_gettop(L)==begin); + return; + } + lua_pop(L,2); /* tidy stack */ + /* Recursively initialize all bases */ + for(i=0;clss->bases[i];i++) + { + SWIG_Lua_elua_class_register_instance(L,clss->bases[i]); + } + /* Again, get registry and push name */ + SWIG_Lua_get_class_registry(L); /* get the registry */ + lua_pushstring(L,clss->fqname); /* get the name */ + assert(clss->metatable); + lua_pushrotable(L, (void*)(clss->metatable)); /* create the metatable */ + lua_rawset(L,-3); + lua_pop(L,1); + assert(lua_gettop(L) == begin); +} +#endif /* elua && eluac */ + +/* ----------------------------------------------------------------------------- + * Class/structure conversion fns + * ----------------------------------------------------------------------------- */ + +/* helper to add metatable to new lua object */ +SWIGINTERN void SWIG_Lua_AddMetatable(lua_State *L,swig_type_info *type) +{ + if (type->clientdata) /* there is clientdata: so add the metatable */ + { + SWIG_Lua_get_class_metatable(L,((swig_lua_class*)(type->clientdata))->fqname); + if (lua_istable(L,-1)) + { + lua_setmetatable(L,-2); + } + else + { + lua_pop(L,1); + } + } +} + +/* pushes a new object into the lua stack */ +SWIGRUNTIME void SWIG_Lua_NewPointerObj(lua_State *L,void *ptr,swig_type_info *type, int own) +{ + swig_lua_userdata *usr; + if (!ptr){ + lua_pushnil(L); + return; + } + usr=(swig_lua_userdata*)lua_newuserdata(L,sizeof(swig_lua_userdata)); /* get data */ + usr->ptr=ptr; /* set the ptr */ + usr->type=type; + usr->own=own; +#if (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC) + SWIG_Lua_AddMetatable(L,type); /* add metatable */ +#endif +} + +/* takes a object from the lua stack & converts it into an object of the correct type + (if possible) */ +SWIGRUNTIME int SWIG_Lua_ConvertPtr(lua_State *L,int index,void **ptr,swig_type_info *type,int flags) +{ + swig_lua_userdata *usr; + swig_cast_info *cast; + /* special case: lua nil => NULL pointer */ + if (lua_isnil(L,index)) + { + *ptr=0; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } + usr=(swig_lua_userdata*)lua_touserdata(L,index); /* get data */ + if (usr) + { + if (flags & SWIG_POINTER_DISOWN) /* must disown the object */ + { + usr->own=0; + } + if (!type) /* special cast void*, no casting fn */ + { + *ptr=usr->ptr; + return SWIG_OK; /* ok */ + } + cast=SWIG_TypeCheckStruct(usr->type,type); /* performs normal type checking */ + if (cast) + { + int newmemory = 0; + *ptr=SWIG_TypeCast(cast,usr->ptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + return SWIG_OK; /* ok */ + } + } + return SWIG_ERROR; /* error */ +} + +SWIGRUNTIME void* SWIG_Lua_MustGetPtr(lua_State *L,int index,swig_type_info *type,int flags, + int argnum,const char *func_name){ + void *result; + if (!SWIG_IsOK(SWIG_ConvertPtr(L,index,&result,type,flags))){ + luaL_error (L,"Error in %s, expected a %s at argument number %d\n", + func_name,(type && type->str)?type->str:"void*",argnum); + } + return result; +} + +/* pushes a packed userdata. user for member fn pointers only */ +SWIGRUNTIME void SWIG_Lua_NewPackedObj(lua_State *L,void *ptr,size_t size,swig_type_info *type) +{ + swig_lua_rawdata *raw; + assert(ptr); /* not acceptable to pass in a NULL value */ + raw=(swig_lua_rawdata*)lua_newuserdata(L,sizeof(swig_lua_rawdata)-1+size); /* alloc data */ + raw->type=type; + raw->own=0; + memcpy(raw->data,ptr,size); /* copy the data */ + SWIG_Lua_AddMetatable(L,type); /* add metatable */ +} + +/* converts a packed userdata. user for member fn pointers only */ +SWIGRUNTIME int SWIG_Lua_ConvertPacked(lua_State *L,int index,void *ptr,size_t size,swig_type_info *type) +{ + swig_lua_rawdata *raw; + raw=(swig_lua_rawdata*)lua_touserdata(L,index); /* get data */ + if (!raw) return SWIG_ERROR; /* error */ + if (type==0 || type==raw->type) /* void* or identical type */ + { + memcpy(ptr,raw->data,size); /* copy it */ + return SWIG_OK; /* ok */ + } + return SWIG_ERROR; /* error */ +} + +/* a function to get the typestring of a piece of data */ +SWIGRUNTIME const char *SWIG_Lua_typename(lua_State *L, int tp) +{ + swig_lua_userdata *usr; + if (lua_isuserdata(L,tp)) + { + usr=(swig_lua_userdata*)lua_touserdata(L,tp); /* get data */ + if (usr && usr->type && usr->type->str) + return usr->type->str; + return "userdata (unknown type)"; + } + return lua_typename(L,lua_type(L,tp)); +} + +/* lua callable function to get the userdata's type */ +SWIGRUNTIME int SWIG_Lua_type(lua_State *L) +{ + lua_pushstring(L,SWIG_Lua_typename(L,1)); + return 1; +} + +/* ----------------------------------------------------------------------------- + * global variable support code: class/struct typemap functions + * ----------------------------------------------------------------------------- */ + +#if ((SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUA) && (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC)) +/* Install Constants */ +SWIGINTERN void +SWIG_Lua_InstallConstants(lua_State *L, swig_lua_const_info constants[]) { + int i; + for (i = 0; constants[i].type; i++) { + switch(constants[i].type) { + case SWIG_LUA_INT: + lua_pushstring(L,constants[i].name); + lua_pushinteger(L,(lua_Integer)constants[i].lvalue); + lua_rawset(L,-3); + break; + case SWIG_LUA_FLOAT: + lua_pushstring(L,constants[i].name); + lua_pushnumber(L,(lua_Number)constants[i].dvalue); + lua_rawset(L,-3); + break; + case SWIG_LUA_CHAR: + lua_pushstring(L,constants[i].name); + { + char c = (char)constants[i].lvalue; + lua_pushlstring(L,&c,1); + } + lua_rawset(L,-3); + break; + case SWIG_LUA_STRING: + lua_pushstring(L,constants[i].name); + lua_pushstring(L,(char *) constants[i].pvalue); + lua_rawset(L,-3); + break; + case SWIG_LUA_POINTER: + lua_pushstring(L,constants[i].name); + SWIG_NewPointerObj(L,constants[i].pvalue, *(constants[i]).ptype,0); + lua_rawset(L,-3); + break; + case SWIG_LUA_BINARY: + lua_pushstring(L,constants[i].name); + SWIG_NewMemberObj(L,constants[i].pvalue,constants[i].lvalue,*(constants[i]).ptype); + lua_rawset(L,-3); + break; + default: + break; + } + } +} +#endif + +/* ----------------------------------------------------------------------------- + * executing lua code from within the wrapper + * ----------------------------------------------------------------------------- */ + +#ifndef SWIG_DOSTRING_FAIL /* Allows redefining of error function */ +#define SWIG_DOSTRING_FAIL(S) fprintf(stderr,"%s\n",S) +#endif +/* Executes a C string in Lua which is a really simple way of calling lua from C +Unfortunately lua keeps changing its APIs, so we need a conditional compile +In lua 5.0.X it's lua_dostring() +In lua 5.1.X it's luaL_dostring() +*/ +SWIGINTERN int +SWIG_Lua_dostring(lua_State *L, const char *str) { + int ok,top; + if (str==0 || str[0]==0) return 0; /* nothing to do */ + top=lua_gettop(L); /* save stack */ +#if (defined(LUA_VERSION_NUM) && (LUA_VERSION_NUM>=501)) + ok=luaL_dostring(L,str); /* looks like this is lua 5.1.X or later, good */ +#else + ok=lua_dostring(L,str); /* might be lua 5.0.x, using lua_dostring */ +#endif + if (ok!=0) { + SWIG_DOSTRING_FAIL(lua_tostring(L,-1)); + } + lua_settop(L,top); /* restore the stack */ + return ok; +} + +#ifdef __cplusplus +} +#endif + +/* ------------------------------ end luarun.swg ------------------------------ */ diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/luaruntime.swg b/macx64/bin/swig/share/swig/4.0.0/lua/luaruntime.swg new file mode 100644 index 00000000..399bb640 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/luaruntime.swg @@ -0,0 +1,104 @@ +/* ----------------------------------------------------------------------------- + * luaruntime.swg + * + * all the runtime code for . + * ----------------------------------------------------------------------------- */ + +%runtime "swigrun.swg" /* Common C API type-checking code */ +%runtime "swigerrors.swg" /* SWIG errors */ +%runtime "luarun.swg" /* Lua runtime stuff */ + +%insert(initbeforefunc) "swiginit.swg" + +%insert(initbeforefunc) %{ + +/* Forward declaration of where the user's %init{} gets inserted */ +void SWIG_init_user(lua_State* L ); + +#ifdef __cplusplus +extern "C" { +#endif +/* this is the initialization function + added at the very end of the code + the function is always called SWIG_init, but an earlier #define will rename it +*/ +#if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC)) +LUALIB_API int SWIG_init(lua_State* L) +#else +SWIGEXPORT int SWIG_init(lua_State* L) /* default Lua action */ +#endif +{ +#if (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC) /* valid for both Lua and eLua */ + int i; + int globalRegister = 0; + /* start with global table */ + lua_pushglobaltable (L); + /* SWIG's internal initialisation */ + SWIG_InitializeModule((void*)L); + SWIG_PropagateClientData(); +#endif + +#if ((SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUA) && (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC)) || defined(SWIG_LUA_ELUA_EMULATE) + /* add a global fn */ + SWIG_Lua_add_function(L,"swig_type",SWIG_Lua_type); + SWIG_Lua_add_function(L,"swig_equals",SWIG_Lua_class_equal); +#endif + +#if (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC) + /* set up base class pointers (the hierarchy) */ + for (i = 0; swig_types[i]; i++){ + if (swig_types[i]->clientdata){ + SWIG_Lua_init_base_class(L,(swig_lua_class*)(swig_types[i]->clientdata)); + } + } +#ifdef SWIG_LUA_MODULE_GLOBAL + globalRegister = 1; +#endif + + +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_LUA) + SWIG_Lua_namespace_register(L,&swig_SwigModule, globalRegister); +#endif + +#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC) + for (i = 0; swig_types[i]; i++){ + if (swig_types[i]->clientdata){ + SWIG_Lua_elua_class_register_instance(L,(swig_lua_class*)(swig_types[i]->clientdata)); + } + } +#endif + +#if defined(SWIG_LUA_ELUA_EMULATE) + lua_newtable(L); + SWIG_Lua_elua_emulate_register(L,swig_SwigModule.ns_methods); + SWIG_Lua_elua_emulate_register_clear(L); + if(globalRegister) { + lua_pushstring(L,swig_SwigModule.name); + lua_pushvalue(L,-2); + lua_rawset(L,-4); + } +#endif + +#endif + +#if (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC) + /* invoke user-specific initialization */ + SWIG_init_user(L); + /* end module */ + /* Note: We do not clean up the stack here (Lua will do this for us). At this + point, we have the globals table and out module table on the stack. Returning + one value makes the module table the result of the require command. */ + return 1; +#else + return 0; +#endif +} + +#ifdef __cplusplus +} +#endif + +%} + +/* Note: the initialization function is closed after all code is generated */ + diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/luatypemaps.swg b/macx64/bin/swig/share/swig/4.0.0/lua/luatypemaps.swg new file mode 100644 index 00000000..8959f201 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/luatypemaps.swg @@ -0,0 +1,412 @@ +/* ----------------------------------------------------------------------------- + * luatypemaps.swg + * + * basic typemaps for Lua. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * standard typemaps + * ----------------------------------------------------------------------------- */ +/* NEW LANGUAGE NOTE: + the 'checkfn' param is something that I added for typemap(in) + it is an optional fn call to check the type of the lua object + the fn call must be of the form + int checkfn(lua_State *L, int index); + and return 1/0 depending upon if this is the correct type + For the typemap(out), an additional SWIG_arg parameter must be incremented + to reflect the number of values returned (normally SWIG_arg++; will do) +*/ +// numbers +%typemap(in,checkfn="lua_isnumber") int, short, long, + signed char, float, double +%{$1 = ($type)lua_tonumber(L, $input);%} + +// additional check for unsigned numbers, to not permit negative input +%typemap(in,checkfn="lua_isnumber") unsigned int, + unsigned short, unsigned long, unsigned char +%{SWIG_contract_assert((lua_tonumber(L,$input)>=0),"number must not be negative") +$1 = ($type)lua_tonumber(L, $input);%} + +%typemap(out) int,short,long, + unsigned int,unsigned short,unsigned long, + signed char,unsigned char, + float,double +%{ lua_pushnumber(L, (lua_Number) $1); SWIG_arg++;%} + +// we must also provide typemaps for primitives by const reference: +// given a function: +// int intbyref(const int& i); +// SWIG assumes that this code will need a pointer to int to be passed in +// (this might be ok for objects by const ref, but not for numeric primitives) +// therefore we add a set of typemaps to fix this (for both in & out) +%typemap(in,checkfn="lua_isnumber") const int&($basetype temp) +%{ temp=($basetype)lua_tonumber(L,$input); $1=&temp;%} + +%typemap(in,checkfn="lua_isnumber") const unsigned int&($basetype temp) +%{SWIG_contract_assert((lua_tonumber(L,$input)>=0),"number must not be negative") +temp=($basetype)lua_tonumber(L,$input); $1=&temp;%} + +%typemap(out) const int&, const unsigned int& +%{ lua_pushnumber(L, (lua_Number) *$1); SWIG_arg++;%} + +// for the other numbers we can just use an apply statement to cover them +%apply const int & {const short&,const long&,const signed char&, + const float&,const double&}; + +%apply const unsigned int & {const unsigned short&,const unsigned long&, + const unsigned char&}; + +/* enums have to be handled slightly differently + VC++ .net will not allow a cast from lua_Number(double) to enum directly. +*/ +%typemap(in,checkfn="lua_isnumber") enum SWIGTYPE +%{$1 = ($type)(int)lua_tonumber(L, $input);%} + +%typemap(out) enum SWIGTYPE +%{ lua_pushnumber(L, (lua_Number)(int)($1)); SWIG_arg++;%} + +// and const refs +%typemap(in,checkfn="lua_isnumber") const enum SWIGTYPE &($basetype temp) +%{ temp=($basetype)(int)lua_tonumber(L,$input); $1=&temp;%} +%typemap(in,checkfn="lua_isnumber") const enum SWIGTYPE &&($basetype temp) +%{ temp=($basetype)(int)lua_tonumber(L,$input); $1=&temp;%} +%typemap(out) const enum SWIGTYPE & +%{ lua_pushnumber(L, (lua_Number) *$1); SWIG_arg++;%} +%typemap(out) const enum SWIGTYPE && +%{ lua_pushnumber(L, (lua_Number) *$1); SWIG_arg++;%} + + +// boolean (which is a special type in lua) +// note: lua_toboolean() returns 1 or 0 +// note: 1 & 0 are not booleans in lua, only true & false +%typemap(in,checkfn="lua_isboolean") bool +%{$1 = (lua_toboolean(L, $input)!=0);%} + +%typemap(out) bool +%{ lua_pushboolean(L,(int)($1!=0)); SWIG_arg++;%} + +// for const bool&, SWIG treats this as a const bool* so we must dereference it +%typemap(in,checkfn="lua_isboolean") const bool& (bool temp) +%{temp=(lua_toboolean(L, $input)!=0); + $1=&temp;%} + +%typemap(out) const bool& +%{ lua_pushboolean(L,(int)((*$1)!=0)); SWIG_arg++;%} + +// strings (char * and char[]) +%fragment("SWIG_lua_isnilstring", "header") { +SWIGINTERN int SWIG_lua_isnilstring(lua_State *L, int idx) { + int ret = lua_isstring(L, idx); + if (!ret) + ret = lua_isnil(L, idx); + return ret; +} +} + +%typemap(in,checkfn="SWIG_lua_isnilstring",fragment="SWIG_lua_isnilstring") const char *, char * +%{$1 = ($ltype)lua_tostring(L, $input);%} + +%typemap(in,checkfn="SWIG_lua_isnilstring",fragment="SWIG_lua_isnilstring") const char[ANY], char[ANY] +%{$1 = ($ltype)lua_tostring(L, $input);%} + +%typemap(out) const char *, char * +%{ lua_pushstring(L,(const char *)$1); SWIG_arg++;%} + +%typemap(out) const char[ANY], char[ANY] +%{ lua_pushstring(L,(const char *)$1); SWIG_arg++;%} + +// char's +// currently treating chars as small strings, not as numbers +// (however signed & unsigned char's are numbers...) +%typemap(in,checkfn="SWIG_lua_isnilstring",fragment="SWIG_lua_isnilstring") char +%{$1 = (lua_tostring(L, $input))[0];%} + +%typemap(out) char +%{ lua_pushlstring(L, &$1, 1); SWIG_arg++;%} + +// by const ref +%typemap(in,checkfn="SWIG_lua_isnilstring",fragment="SWIG_lua_isnilstring") const char& (char temp) +%{temp = (lua_tostring(L, $input))[0]; $1=&temp;%} + +%typemap(out) const char& +%{ lua_pushlstring(L, $1, 1); SWIG_arg++;%} + +// pointers and references +// under SWIG rules, it is ok, to have a pass in a lua nil, +// it should be converted to a SWIG NULL. +// This will only be allowed for pointers & arrays, not refs or by value +// the checkfn lua_isuserdata will only work for userdata +// the checkfn SWIG_isptrtype will work for both userdata and nil +%typemap(in,checkfn="SWIG_isptrtype") SWIGTYPE*,SWIGTYPE[] +%{ + if (!SWIG_IsOK(SWIG_ConvertPtr(L,$input,(void**)&$1,$descriptor,$disown))){ + SWIG_fail_ptr("$symname",$argnum,$descriptor); + } +%} + +%typemap(in,checkfn="lua_isuserdata") SWIGTYPE& +%{ + if (!SWIG_IsOK(SWIG_ConvertPtr(L,$input,(void**)&$1,$descriptor,$disown))){ + SWIG_fail_ptr("$symname",$argnum,$descriptor); + } +%} + +%typemap(in,checkfn="lua_isuserdata") SWIGTYPE&& +%{ + if (!SWIG_IsOK(SWIG_ConvertPtr(L,$input,(void**)&$1,$descriptor,$disown))){ + SWIG_fail_ptr("$symname",$argnum,$descriptor); + } +%} + +// out is simple +%typemap(out) SWIGTYPE*,SWIGTYPE& +%{SWIG_NewPointerObj(L,$1,$descriptor,$owner); SWIG_arg++; %} +%typemap(out) SWIGTYPE*,SWIGTYPE&& +%{SWIG_NewPointerObj(L,$1,$descriptor,$owner); SWIG_arg++; %} + +// dynamic casts +// this uses the SWIG_TypeDynamicCast() which relies on RTTI to find out what the pointer really is +// the we return it as the correct type +%typemap(out) SWIGTYPE *DYNAMIC, + SWIGTYPE &DYNAMIC +{ + swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor, (void **) &$1); + SWIG_NewPointerObj(L,(void*)$1,ty,$owner); SWIG_arg++; +} + + +// passing objects by value +// SWIG_ConvertPtr wants an object pointer (the $<ype argp) +// then dereferences it to get the object +%typemap(in,checkfn="lua_isuserdata") SWIGTYPE ($<ype argp) +%{ + if (!SWIG_IsOK(SWIG_ConvertPtr(L,$input,(void**)&argp,$&descriptor,0))){ + SWIG_fail_ptr("$symname",$argnum,$&descriptor); + } + $1 = *argp; +%} + +// Also needed for object ptrs by const ref +// eg A* const& ref_pointer(A* const& a); +// found in mixed_types.i +%typemap(in,checkfn="SWIG_isptrtype") SWIGTYPE *const&($*ltype temp) +%{temp=($*ltype)SWIG_MustGetPtr(L,$input,$*descriptor,0,$argnum,"$symname"); +$1=($1_ltype)&temp;%} + +%typemap(out) SWIGTYPE *const& +%{SWIG_NewPointerObj(L,*$1,$*descriptor,$owner); SWIG_arg++; %} + + +// DISOWN-ing typemaps +// if you have an object pointer which must be disowned, use this typemap +// eg. for void destroy_foo(Foo* toDie); +// use %apply SWIGTYPE* DISOWN {Foo* toDie}; +// you could just use %delobject, but this is more flexible +%typemap(in,checkfn="SWIG_isptrtype") SWIGTYPE* DISOWN,SWIGTYPE DISOWN[] +%{ if (!SWIG_IsOK(SWIG_ConvertPtr(L,$input,(void**)&$1,$descriptor,SWIG_POINTER_DISOWN))){ + SWIG_fail_ptr("$symname",$argnum,$descriptor); + } +%} + + +// Primitive types--return by value +// must make a new object, copy the data & return the new object +// Note: the brackets are {...} and not %{..%}, because we want them to be included in the wrapper +// this is because typemap(out) does not support local variables, like in typemap(in) does +// and we need the $&1_ltype resultptr; to be declared +#ifdef __cplusplus +%typemap(out) SWIGTYPE +{ + $&1_ltype resultptr = new $1_ltype((const $1_ltype &) $1); + SWIG_NewPointerObj(L,(void *) resultptr,$&1_descriptor,1); SWIG_arg++; +} +#else +%typemap(out) SWIGTYPE +{ + $&1_ltype resultptr; + resultptr = ($&1_ltype) malloc(sizeof($1_type)); + memmove(resultptr, &$1, sizeof($1_type)); + SWIG_NewPointerObj(L,(void *) resultptr,$&1_descriptor,1); SWIG_arg++; +} +#endif + +// member function pointer +// a member fn ptr is not 4 bytes like a normal pointer, but 8 bytes (at least on mingw) +// so the standard wrapping cannot be done +// nor can you cast a member function pointer to a void* (obviously) +// therefore a special wrapping functions SWIG_ConvertMember() & SWIG_NewMemberObj() were written +%typemap(in,checkfn="lua_isuserdata") SWIGTYPE (CLASS::*) +%{ + if (!SWIG_IsOK(SWIG_ConvertMember(L,$input,(void*)(&$1),sizeof($type),$descriptor))) + SWIG_fail_ptr("$symname",$argnum,$descriptor); +%} + +%typemap(out) SWIGTYPE (CLASS::*) +%{ + SWIG_NewMemberObj(L,(void*)(&$1),sizeof($type),$descriptor); SWIG_arg++; +%} + + +// void (must be empty without the SWIG_arg++) +%typemap(out) void ""; + +/* void* is a special case +A function void fn(void*) should take any kind of pointer as a parameter (just like C/C++ does) +but if its an output, then it should be wrapped like any other SWIG object (using default typemap) +*/ +%typemap(in,checkfn="SWIG_isptrtype") void* +%{$1=($1_ltype)SWIG_MustGetPtr(L,$input,0,0,$argnum,"$symname");%} + +/* long long is another special case: +as lua only supports one numeric type (lua_Number), we will just +cast it to that & accept the loss of precision. +An alternative solution would be a long long struct or class +with the relevant operators. +*/ +%apply long {long long, signed long long, unsigned long long}; +%apply const long& {const long long&, const signed long long&, const unsigned long long&}; + +/* It is possible to also pass a lua_State* into a function, so +void fn(int a, float b, lua_State* s) is wrappable as +> fn(1,4.3) -- note: the state is implicitly passed in +*/ +%typemap(in, numinputs=0) lua_State* +%{$1 = L;%} + + + +/* ----------------------------------------------------------------------------- + * typecheck rules + * ----------------------------------------------------------------------------- */ +/* These are needed for the overloaded functions +These define the detection routines which will spot what +parameters match which function +*/ + +// unfortunately lua only considers one type of number +// so all numbers (int,float,double) match +// you could add an advanced fn to get type & check if its integral +%typecheck(SWIG_TYPECHECK_INTEGER) + int, short, long, + unsigned int, unsigned short, unsigned long, + signed char, unsigned char, + long long, unsigned long long, signed long long, + const int &, const short &, const long &, + const unsigned int &, const unsigned short &, const unsigned long &, + const signed char&, const unsigned char&, + const long long &, const unsigned long long &, + enum SWIGTYPE, const enum SWIGTYPE&, const enum SWIGTYPE &&, + float, double, const float &, const double& +{ + $1 = lua_isnumber(L,$input); +} + +%typecheck(SWIG_TYPECHECK_BOOL) + bool, const bool & +{ + $1 = lua_isboolean(L,$input); +} + +// special check for a char (string of length 1) +%typecheck(SWIG_TYPECHECK_CHAR,fragment="SWIG_lua_isnilstring") char, const char& { + $1 = SWIG_lua_isnilstring(L,$input) && (lua_rawlen(L,$input)==1); +} + +%typecheck(SWIG_TYPECHECK_STRING,fragment="SWIG_lua_isnilstring") char *, char[] { + $1 = SWIG_lua_isnilstring(L,$input); +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE [] { + void *ptr; + if (SWIG_isptrtype(L,$input)==0 || SWIG_ConvertPtr(L,$input, (void **) &ptr, $1_descriptor, 0)) { + $1 = 0; + } else { + $1 = 1; + } +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE & { + void *ptr; + if (lua_isuserdata(L,$input)==0 || SWIG_ConvertPtr(L,$input, (void **) &ptr, $1_descriptor, SWIG_POINTER_NO_NULL)) { + $1 = 0; + } else { + $1 = 1; + } +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE && { + void *ptr; + if (lua_isuserdata(L,$input)==0 || SWIG_ConvertPtr(L,$input, (void **) &ptr, $1_descriptor, SWIG_POINTER_NO_NULL)) { + $1 = 0; + } else { + $1 = 1; + } +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE { + void *ptr; + if (lua_isuserdata(L,$input)==0 || SWIG_ConvertPtr(L,$input, (void **) &ptr, $&1_descriptor, SWIG_POINTER_NO_NULL)) { + $1 = 0; + } else { + $1 = 1; + } +} + +%typecheck(SWIG_TYPECHECK_VOIDPTR) void * { + void *ptr; + if (SWIG_isptrtype(L,$input)==0 || SWIG_ConvertPtr(L,$input, (void **) &ptr, 0, 0)) { + $1 = 0; + } else { + $1 = 1; + } +} + +// Also needed for object pointers by const ref +// eg const A* ref_pointer(A* const& a); +// found in mixed_types.i +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *const& +{ + void *ptr; + if (SWIG_isptrtype(L,$input)==0 || SWIG_ConvertPtr(L,$input, (void **) &ptr, $*descriptor, 0)) { + $1 = 0; + } else { + $1 = 1; + } +} + +/* ----------------------------------------------------------------------------- + * Others + * ----------------------------------------------------------------------------- */ + +// Array reference typemaps +%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } +%apply SWIGTYPE && { SWIGTYPE ((&&)[ANY]) } + +/* const pointers */ +%apply SWIGTYPE * { SWIGTYPE *const } +%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) } +%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) } + +// size_t (which is just a unsigned long) +%apply unsigned long { size_t }; +%apply const unsigned long & { const size_t & }; + + +/* ----------------------------------------------------------------------------- + * Specials + * ----------------------------------------------------------------------------- */ +// swig::LANGUAGE_OBJ was added to allow containers of native objects +// however its rather difficult to do this in lua, as you cannot hold pointers +// to native objects (they are held in the interpreter) +// therefore for now: just ignoring this feature +#ifdef __cplusplus +%ignore swig::LANGUAGE_OBJ; + +//%inline %{ +%{ +namespace swig { +typedef struct{} LANGUAGE_OBJ; +} +%} + +#endif // __cplusplus diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/std_common.i b/macx64/bin/swig/share/swig/4.0.0/lua/std_common.i new file mode 100644 index 00000000..cee11e8c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/std_common.i @@ -0,0 +1,5 @@ +%include + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/lua/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/std_except.i b/macx64/bin/swig/share/swig/4.0.0/lua/std_except.i new file mode 100644 index 00000000..34ab6a1a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/std_except.i @@ -0,0 +1,42 @@ +/* ----------------------------------------------------------------------------- + * Typemaps used by the STL wrappers that throw exceptions. + * These typemaps are used when methods are declared with an STL exception + * specification, such as: + * size_t at() const throw (std::out_of_range); + * + * std_except.i + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +%} +%include + +namespace std +{ + %ignore exception; // not sure if I should ignore this... + class exception + { + public: + exception() throw() { } + virtual ~exception() throw(); + virtual const char* what() const throw(); + }; +} + +// normally objects which are thrown are returned to the interpreter as errors +// (which potentially may have problems if they are not copied) +// therefore all classes based upon std::exception are converted to their strings & returned as errors +%typemap(throws) std::bad_cast "SWIG_exception(SWIG_TypeError, $1.what());" +%typemap(throws) std::bad_exception "SWIG_exception(SWIG_RuntimeError, $1.what());" +%typemap(throws) std::domain_error "SWIG_exception(SWIG_ValueError, $1.what());" +%typemap(throws) std::exception "SWIG_exception(SWIG_SystemError, $1.what());" +%typemap(throws) std::invalid_argument "SWIG_exception(SWIG_ValueError, $1.what());" +%typemap(throws) std::length_error "SWIG_exception(SWIG_IndexError, $1.what());" +%typemap(throws) std::logic_error "SWIG_exception(SWIG_RuntimeError, $1.what());" +%typemap(throws) std::out_of_range "SWIG_exception(SWIG_IndexError, $1.what());" +%typemap(throws) std::overflow_error "SWIG_exception(SWIG_OverflowError, $1.what());" +%typemap(throws) std::range_error "SWIG_exception(SWIG_IndexError, $1.what());" +%typemap(throws) std::runtime_error "SWIG_exception(SWIG_RuntimeError, $1.what());" +%typemap(throws) std::underflow_error "SWIG_exception(SWIG_RuntimeError, $1.what());" diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/std_map.i b/macx64/bin/swig/share/swig/4.0.0/lua/std_map.i new file mode 100644 index 00000000..773b6d0c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/std_map.i @@ -0,0 +1,66 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template > class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + } + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/lua/std_pair.i new file mode 100644 index 00000000..410da922 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/std_pair.i @@ -0,0 +1,26 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * std::pair typemaps for LUA + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +namespace std { + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + T first; + U second; + }; + + template + pair make_pair(const T& first, const U& second); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/std_string.i b/macx64/bin/swig/share/swig/4.0.0/lua/std_string.i new file mode 100644 index 00000000..b95a8a4a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/std_string.i @@ -0,0 +1,125 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * std::string typemaps for LUA + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +/* +Only std::string and const std::string& are typemapped +they are converted to the Lua strings automatically + +std::string& and std::string* are not +they must be explicitly managed (see below) + +eg. + +std::string test_value(std::string x) { + return x; +} + +can be used as + +s="hello world" +s2=test_value(s) +assert(s==s2) +*/ + +namespace std { + +%naturalvar string; + +/* +Bug report #1526022: +Lua strings and std::string can contain embedded zero bytes +Therefore a standard out typemap should not be: + lua_pushstring(L,$1.c_str()); +but + lua_pushlstring(L,$1.data(),$1.size()); + +Similarly for getting the string + $1 = (char*)lua_tostring(L, $input); +becomes + $1.assign(lua_tostring(L,$input),lua_rawlen(L,$input)); + +Not using: lua_tolstring() as this is only found in Lua 5.1 & not 5.0.2 +*/ + +%typemap(in,checkfn="lua_isstring") string +%{$1.assign(lua_tostring(L,$input),lua_rawlen(L,$input));%} + +%typemap(out) string +%{ lua_pushlstring(L,$1.data(),$1.size()); SWIG_arg++;%} + +%typemap(in,checkfn="lua_isstring") const string& ($*1_ltype temp) +%{temp.assign(lua_tostring(L,$input),lua_rawlen(L,$input)); $1=&temp;%} + +%typemap(out) const string& +%{ lua_pushlstring(L,$1->data(),$1->size()); SWIG_arg++;%} + +// for throwing of any kind of string, string ref's and string pointers +// we convert all to lua strings +%typemap(throws) string, string&, const string& +%{ lua_pushlstring(L,$1.data(),$1.size()); SWIG_fail;%} + +%typemap(throws) string*, const string* +%{ lua_pushlstring(L,$1->data(),$1->size()); SWIG_fail;%} + +%typecheck(SWIG_TYPECHECK_STRING) string, const string& { + $1 = lua_isstring(L,$input); +} + +/* +std::string& can be wrapped, but you must inform SWIG if it is in or out + +eg: +void fn(std::string& str); +Is this an in/out/inout value? + +Therefore you need the usual +%apply (std::string& INOUT) {std::string& str}; +or +%apply std::string& INOUT {std::string& str}; +typemaps to tell SWIG what to do. +*/ + +%typemap(in) string &INPUT=const string &; +%typemap(in, numinputs=0) string &OUTPUT ($*1_ltype temp) +%{ $1 = &temp; %} +%typemap(argout) string &OUTPUT +%{ lua_pushlstring(L,$1->data(),$1->size()); SWIG_arg++;%} +%typemap(in) string &INOUT =const string &; +%typemap(argout) string &INOUT = string &OUTPUT; + +/* +A really cut down version of the string class + +This provides basic mapping of lua strings <-> std::string +and little else +(the std::string has a lot of unneeded functions anyway) + +note: no fn's taking the const string& +as this is overloaded by the const char* version +*/ + + class string { + public: + string(); + string(const char*); + unsigned int size() const; + unsigned int length() const; + bool empty() const; + // no support for operator[] + const char* c_str()const; + const char* data()const; + // assign does not return a copy of this object + // (no point in a scripting language) + void assign(const char*); + // no support for all the other features + // it's probably better to do it in lua + }; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/lua/std_vector.i new file mode 100644 index 00000000..9eb85e9e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/std_vector.i @@ -0,0 +1,140 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * + * std::vector typemaps for LUA + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} +%include // the general exceptions +/* +A really cut down version of the vector class. + +Note: this does not match the true std::vector class +but instead is an approximate, so that SWIG knows how to wrapper it. +(Eg, all access is by value, not ref, as SWIG turns refs to pointers) + +And no support for iterators & insert/erase + +It would be useful to have a vector<->Lua table conversion routine + +*/ +namespace std { + + template + class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(); + vector(unsigned int); + vector(const vector& other); + vector(unsigned int,T); + + unsigned int size() const; + unsigned int max_size() const; + bool empty() const; + void clear(); + void push_back(T val); + void pop_back(); + T front()const; // only read front & back + T back()const; // not write to them + // operator [] given later: + + %extend // this is a extra bit of SWIG code + { + // [] is replaced by __getitem__ & __setitem__ + // simply throws a string, which causes a lua error + T __getitem__(unsigned int idx) throw (std::out_of_range) + { + if (idx>=self->size()) + throw std::out_of_range("in vector::__getitem__()"); + return (*self)[idx]; + } + void __setitem__(unsigned int idx,T val) throw (std::out_of_range) + { + if (idx>=self->size()) + throw std::out_of_range("in vector::__setitem__()"); + (*self)[idx]=val; + } + }; + }; + +} + +/* +Vector<->LuaTable fns +These look a bit like the array<->LuaTable fns +but are templated, not %defined +(you must have template support for STL) + +*/ +/* +%{ +// reads a table into a vector of numbers +// lua numbers will be cast into the type required (rounding may occur) +// return 0 if non numbers found in the table +// returns new'ed ptr if ok +template +std::vector* SWIG_read_number_vector(lua_State* L,int index) +{ + int i=0; + std::vector* vec=new std::vector(); + while(1) + { + lua_rawgeti(L,index,i+1); + if (!lua_isnil(L,-1)) + { + lua_pop(L,1); + break; // finished + } + if (!lua_isnumber(L,-1)) + { + lua_pop(L,1); + delete vec; + return 0; // error + } + vec->push_back((T)lua_tonumber(L,-1)); + lua_pop(L,1); + ++i; + } + return vec; // ok +} +// writes a vector of numbers out as a lua table +template +int SWIG_write_number_vector(lua_State* L,std::vector *vec) +{ + lua_newtable(L); + for(int i=0;isize();++i) + { + lua_pushnumber(L,(double)((*vec)[i])); + lua_rawseti(L,-2,i+1);// -1 is the number, -2 is the table + } +} +%} + +// then the typemaps + +%define SWIG_TYPEMAP_NUM_VECTOR(T) + +// in +%typemap(in) std::vector *INPUT +%{ $1 = SWIG_read_number_vector(L,$input); + if (!$1) SWIG_fail;%} + +%typemap(freearg) std::vector *INPUT +%{ delete $1;%} + +// out +%typemap(argout) std::vector *OUTPUT +%{ SWIG_write_number_vector(L,$1); SWIG_arg++; %} + +%enddef +*/ diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/stl.i b/macx64/bin/swig/share/swig/4.0.0/lua/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/lua/typemaps.i new file mode 100644 index 00000000..8392e5bf --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/typemaps.i @@ -0,0 +1,564 @@ +/* ----------------------------------------------------------------------------- + * typemaps.swg + * + * SWIG Library file containing the main typemap code to support Lua modules. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * Basic inout typemaps + * ----------------------------------------------------------------------------- */ +/* +These provide the basic ability for passing in & out of standard numeric data types +(int,long,float,double, etc) + +The basic code looks like this: + +%typemap(in,checkfn="lua_isnumber") int *INPUT(int temp), int &INPUT(int temp) +%{ temp = (int)lua_tonumber(L,$input); + $1 = &temp; %} + +%typemap(in, numinputs=0) int *OUTPUT (int temp) +%{ $1 = &temp; %} + +%typemap(argout) int *OUTPUT +%{ lua_pushnumber(L, (double) *$1); SWIG_arg++;%} + +%typemap(in) int *INOUT = int *INPUT; +%typemap(argout) int *INOUT = int *OUTPUT; + +However the code below is a mixture of #defines & such, so nowhere as easy to read + +To make you code work correctly its not just a matter of %including this file +You also have to give SWIG the hints on which to use where + +eg +extern int add_pointer(int* a1,int* a2); // a1 & a2 are pointer values to be added +extern void swap(int* s1, int* s2); // does the swap + +You will need to either change the argument names +extern int add_pointer(int* INPUT,int* INPUT); + +or provide a %apply statement + +%apply int* INOUT{ int *s1, int *s2 }; + // if SWIG sees int* s1, int* s2, assume they are inout params +*/ + + +%define SWIG_NUMBER_TYPEMAP(TYPE) +%typemap(in,checkfn="lua_isnumber") TYPE *INPUT($*ltype temp), TYPE &INPUT($*ltype temp) +%{ temp = ($*ltype)lua_tonumber(L,$input); + $1 = &temp; %} +%typemap(in, numinputs=0) TYPE *OUTPUT ($*ltype temp) +%{ $1 = &temp; %} +%typemap(argout) TYPE *OUTPUT +%{ lua_pushnumber(L, (lua_Number) *$1); SWIG_arg++;%} +%typemap(in) TYPE *INOUT = TYPE *INPUT; +%typemap(argout) TYPE *INOUT = TYPE *OUTPUT; +%typemap(in) TYPE &OUTPUT = TYPE *OUTPUT; +%typemap(argout) TYPE &OUTPUT = TYPE *OUTPUT; +%typemap(in) TYPE &INOUT = TYPE *INPUT; +%typemap(argout) TYPE &INOUT = TYPE *OUTPUT; +// const version (the $*ltype is the basic number without ptr or const's) +%typemap(in,checkfn="lua_isnumber") const TYPE *INPUT($*ltype temp) +%{ temp = ($*ltype)lua_tonumber(L,$input); + $1 = &temp; %} +%enddef + +// now the code +SWIG_NUMBER_TYPEMAP(unsigned char); SWIG_NUMBER_TYPEMAP(signed char); + +SWIG_NUMBER_TYPEMAP(short); SWIG_NUMBER_TYPEMAP(unsigned short); SWIG_NUMBER_TYPEMAP(signed short); +SWIG_NUMBER_TYPEMAP(int); SWIG_NUMBER_TYPEMAP(unsigned int); SWIG_NUMBER_TYPEMAP(signed int); +SWIG_NUMBER_TYPEMAP(long); SWIG_NUMBER_TYPEMAP(unsigned long); SWIG_NUMBER_TYPEMAP(signed long); +SWIG_NUMBER_TYPEMAP(float); +SWIG_NUMBER_TYPEMAP(double); +SWIG_NUMBER_TYPEMAP(enum SWIGTYPE); +// also for long longs's +SWIG_NUMBER_TYPEMAP(long long); SWIG_NUMBER_TYPEMAP(unsigned long long); SWIG_NUMBER_TYPEMAP(signed long long); + +// note we dont do char, as a char* is probably a string not a ptr to a single char + +// similar for booleans +%typemap(in,checkfn="lua_isboolean") bool *INPUT(bool temp), bool &INPUT(bool temp) +%{ temp = (lua_toboolean(L,$input)!=0); + $1 = &temp; %} + +%typemap(in, numinputs=0) bool *OUTPUT (bool temp),bool &OUTPUT (bool temp) +%{ $1 = &temp; %} + +%typemap(argout) bool *OUTPUT,bool &OUTPUT +%{ lua_pushboolean(L, (int)((*$1)!=0)); SWIG_arg++;%} + +%typemap(in) bool *INOUT = bool *INPUT; +%typemap(argout) bool *INOUT = bool *OUTPUT; +%typemap(in) bool &INOUT = bool &INPUT; +%typemap(argout) bool &INOUT = bool &OUTPUT; + +/* ----------------------------------------------------------------------------- + * Basic Array typemaps + * ----------------------------------------------------------------------------- */ +/* +I have no idea why this kind of code does not exist in SWIG as standard, +but here is it. +This code will convert to/from 1D numeric arrays. +In order to reduce code bloat, there are a few macros +and quite a few functions defined +(unfortunately this makes it a lot less clear) + +assuming we have functions +void process_array(int arr[3]); // nice fixed size array +void process_var_array(float arr[],int len); // variable sized array +void process_var_array_inout(double* arr,int len); // variable sized array + // data passed in & out +void process_enum_inout_array_var(enum Days *arrinout, int len); // using enums +void return_array_5(int arrout[5]); // out array only + +in order to wrap them correctly requires a typemap + +// inform SWIG of the correct typemap +// For fixed length, you must specify it as INPUT[ANY] +%apply (int INPUT[ANY]) {(int arr[3])}; +// variable length arrays are just the same +%apply (float INPUT[],int) {(float arr[],int len)}; +// it is also ok, to map the TYPE* instead of a TYPE[] +%apply (double *INOUT,int) {(double arr*,int len)}; +// for the enum's you must use enum SWIGTYPE +%apply (enum SWIGTYPE *INOUT,int) {(enum Days *arrinout, int len)}; +// fixed length out if also fine +%apply (int OUTPUT[ANY]) {(int arrout[5])}; + +Generally, you could use %typemap(...)=... +but the %apply is neater & easier + +a few things of note: +* all Lua tables are indexed from 1, all C/C++ arrays are indexed from 0 + therefore t={6,5,3} -- t[1]==6, t[2]==5, t[3]==3 + when passed to process_array(int arr[3]) becomes + arr[0]==6, arr[1]==5, arr[2]==3 +* for OUTPUT arrays, no array need be passed in, the fn will return a Lua table + so for the above mentioned return_array_5() would look like + arr=return_array_5() -- no parameters passed in +* for INOUT arrays, a table must be passed in, and a new table will be returned + (this is consistent with the way that numbers are processed) + if you want just use + arr={...} + arr=process_var_array_inout(arr) -- arr is replaced by the new version + +The following are not yet supported: +* variable length output only array (inout works ok) +* multidimensional arrays +* arrays of objects/structs +* arrays of pointers + +*/ + +/* +The internals of the array management stuff +helper fns/macros +SWIG_ALLOC_ARRAY(TYPE,LEN) // returns a typed array TYPE[LEN] +SWIG_FREE_ARRAY(PTR) // delete the ptr (if not zero) + +// counts the specified table & gets the size +// integer version +int SWIG_itable_size(lua_State* L, int index); +// other version +int SWIG_table_size(lua_State* L, int index); + +SWIG_DECLARE_TYPEMAP_ARR_FN(NAME,TYPE) +// this fn declares up 4 functions for helping to read/write tables +// these can then be called by the macros ... +// all assume the table is an integer indexes from 1 +// but the C array is a indexed from 0 + // created a fixed size array, reads the specified table + // and then fills the array with numbers + // returns ptr to the array if ok, or 0 for error + // (also pushes a error message to the stack) +TYPE* SWIG_get_NAME_num_array_fixed(lua_State* L, int index, int size); + // as per SWIG_get_NAME_num_array_fixed() + // but reads the entire table & creates an array of the correct size + // (if the table is empty, it returns an error rather than a zero length array) +TYPE* SWIG_get_NAME_num_array_var(lua_State* L, int index, int* size); + // writes a table to Lua with all the specified numbers +void SWIG_write_NAME_num_array(lua_State* L,TYPE *array,int size); + // read the specified table, and fills the array with numbers + // returns 1 of ok (only fails if it doesn't find numbers) + // helper fn (called by SWIG_get_NAME_num_array_*() fns) +int SWIG_read_NAME_num_array(lua_State* L,int index,TYPE *array,int size); + +*/ + +/* Reported that you don't need to check for NULL for delete & free +There probably is some compiler that its not true for, so the code is left here just in case. +#ifdef __cplusplus +#define SWIG_ALLOC_ARRAY(TYPE,LEN) new TYPE[LEN] +#define SWIG_FREE_ARRAY(PTR) if(PTR){delete[] PTR;} +#else +#define SWIG_ALLOC_ARRAY(TYPE,LEN) (TYPE *)malloc(LEN*sizeof(TYPE)) +#define SWIG_FREE_ARRAY(PTR) if(PTR){free(PTR);} +#endif +*/ +%{ +#ifdef __cplusplus /* generic alloc/dealloc fns*/ +#define SWIG_ALLOC_ARRAY(TYPE,LEN) new TYPE[LEN] +#define SWIG_FREE_ARRAY(PTR) delete[] PTR +#else +#define SWIG_ALLOC_ARRAY(TYPE,LEN) (TYPE *)malloc(LEN*sizeof(TYPE)) +#define SWIG_FREE_ARRAY(PTR) free(PTR) +#endif +/* counting the size of arrays:*/ +SWIGINTERN int SWIG_itable_size(lua_State* L, int index) +{ + int n=0; + while(1){ + lua_rawgeti(L,index,n+1); + if (lua_isnil(L,-1))break; + ++n; + lua_pop(L,1); + } + lua_pop(L,1); + return n; +} + +SWIGINTERN int SWIG_table_size(lua_State* L, int index) +{ + int n=0; + lua_pushnil(L); /* first key*/ + while (lua_next(L, index) != 0) { + ++n; + lua_pop(L, 1); /* removes `value'; keeps `key' for next iteration*/ + } + return n; +} + +/* super macro to declare array typemap helper fns */ +#define SWIG_DECLARE_TYPEMAP_ARR_FN(NAME,TYPE)\ + SWIGINTERN int SWIG_read_##NAME##_num_array(lua_State* L,int index,TYPE *array,int size){\ + int i;\ + for (i = 0; i < size; i++) {\ + lua_rawgeti(L,index,i+1);\ + if (lua_isnumber(L,-1)){\ + array[i] = (TYPE)lua_tonumber(L,-1);\ + } else {\ + lua_pop(L,1);\ + return 0;\ + }\ + lua_pop(L,1);\ + }\ + return 1;\ + }\ + SWIGINTERN TYPE* SWIG_get_##NAME##_num_array_fixed(lua_State* L, int index, int size){\ + TYPE *array;\ + if (!lua_istable(L,index) || SWIG_itable_size(L,index) != size) {\ + SWIG_Lua_pushferrstring(L,"expected a table of size %d",size);\ + return 0;\ + }\ + array=SWIG_ALLOC_ARRAY(TYPE,size);\ + if (!SWIG_read_##NAME##_num_array(L,index,array,size)){\ + SWIG_Lua_pusherrstring(L,"table must contain numbers");\ + SWIG_FREE_ARRAY(array);\ + return 0;\ + }\ + return array;\ + }\ + SWIGINTERN TYPE* SWIG_get_##NAME##_num_array_var(lua_State* L, int index, int* size)\ + {\ + TYPE *array;\ + if (!lua_istable(L,index)) {\ + SWIG_Lua_pusherrstring(L,"expected a table");\ + return 0;\ + }\ + *size=SWIG_itable_size(L,index);\ + if (*size<1){\ + SWIG_Lua_pusherrstring(L,"table appears to be empty");\ + return 0;\ + }\ + array=SWIG_ALLOC_ARRAY(TYPE,*size);\ + if (!SWIG_read_##NAME##_num_array(L,index,array,*size)){\ + SWIG_Lua_pusherrstring(L,"table must contain numbers");\ + SWIG_FREE_ARRAY(array);\ + return 0;\ + }\ + return array;\ + }\ + SWIGINTERN void SWIG_write_##NAME##_num_array(lua_State* L,TYPE *array,int size){\ + int i;\ + lua_newtable(L);\ + for (i = 0; i < size; i++){\ + lua_pushnumber(L,(lua_Number)array[i]);\ + lua_rawseti(L,-2,i+1);/* -1 is the number, -2 is the table*/ \ + }\ + } +%} + +/* +This is one giant macro to define the typemaps & the helpers +for array handling +*/ +%define SWIG_TYPEMAP_NUM_ARR(NAME,TYPE) +%{SWIG_DECLARE_TYPEMAP_ARR_FN(NAME,TYPE)%} + +// fixed size array's +%typemap(in) TYPE INPUT[ANY] +%{ $1 = SWIG_get_##NAME##_num_array_fixed(L,$input,$1_dim0); + if (!$1) SWIG_fail;%} + +%typemap(freearg) TYPE INPUT[ANY] +%{ SWIG_FREE_ARRAY($1);%} + +// variable size array's +%typemap(in) (TYPE *INPUT,int) +%{ $1 = SWIG_get_##NAME##_num_array_var(L,$input,&$2); + if (!$1) SWIG_fail;%} + +%typemap(freearg) (TYPE *INPUT,int) +%{ SWIG_FREE_ARRAY($1);%} + +// out fixed arrays +%typemap(in,numinputs=0) TYPE OUTPUT[ANY] +%{ $1 = SWIG_ALLOC_ARRAY(TYPE,$1_dim0); %} + +%typemap(argout) TYPE OUTPUT[ANY] +%{ SWIG_write_##NAME##_num_array(L,$1,$1_dim0); SWIG_arg++; %} + +%typemap(freearg) TYPE OUTPUT[ANY] +%{ SWIG_FREE_ARRAY($1); %} + +// inout fixed arrays +%typemap(in) TYPE INOUT[ANY]=TYPE INPUT[ANY]; +%typemap(argout) TYPE INOUT[ANY]=TYPE OUTPUT[ANY]; +%typemap(freearg) TYPE INOUT[ANY]=TYPE INPUT[ANY]; +// inout variable arrays +%typemap(in) (TYPE *INOUT,int)=(TYPE *INPUT,int); +%typemap(argout) (TYPE *INOUT,int) +%{ SWIG_write_##NAME##_num_array(L,$1,$2); SWIG_arg++; %} +%typemap(freearg) (TYPE *INOUT,int)=(TYPE *INPUT,int); + +// TODO out variable arrays (is there a standard form for such things?) + +// referencing so that (int *INPUT,int) and (int INPUT[],int) are the same +%typemap(in) (TYPE INPUT[],int)=(TYPE *INPUT,int); +%typemap(freearg) (TYPE INPUT[],int)=(TYPE *INPUT,int); + +%enddef + +// the following line of code +// declares the C helper fns for the array typemaps +// as well as defining typemaps for +// fixed len arrays in & out, & variable length arrays in + +SWIG_TYPEMAP_NUM_ARR(schar,signed char); +SWIG_TYPEMAP_NUM_ARR(uchar,unsigned char); +SWIG_TYPEMAP_NUM_ARR(int,int); +SWIG_TYPEMAP_NUM_ARR(uint,unsigned int); +SWIG_TYPEMAP_NUM_ARR(short,short); +SWIG_TYPEMAP_NUM_ARR(ushort,unsigned short); +SWIG_TYPEMAP_NUM_ARR(long,long); +SWIG_TYPEMAP_NUM_ARR(ulong,unsigned long); +SWIG_TYPEMAP_NUM_ARR(float,float); +SWIG_TYPEMAP_NUM_ARR(double,double); + +// again enums are a problem so they need their own type +// we use the int conversion routine & recast it +%typemap(in) enum SWIGTYPE INPUT[ANY] +%{ $1 = ($ltype)SWIG_get_int_num_array_fixed(L,$input,$1_dim0); + if (!$1) SWIG_fail;%} + +%typemap(freearg) enum SWIGTYPE INPUT[ANY] +%{ SWIG_FREE_ARRAY($1);%} + +// variable size arrays +%typemap(in) (enum SWIGTYPE *INPUT,int) +%{ $1 = ($ltype)SWIG_get_int_num_array_var(L,$input,&$2); + if (!$1) SWIG_fail;%} + +%typemap(freearg) (enum SWIGTYPE *INPUT,int) +%{ SWIG_FREE_ARRAY($1);%} + +// out fixed arrays +%typemap(in,numinputs=0) enum SWIGTYPE OUTPUT[ANY] +%{ $1 = SWIG_ALLOC_ARRAY(enum SWIGTYPE,$1_dim0); %} + +%typemap(argout) enum SWIGTYPE OUTPUT[ANY] +%{ SWIG_write_int_num_array(L,(int*)$1,$1_dim0); SWIG_arg++; %} + +%typemap(freearg) enum SWIGTYPE OUTPUT[ANY] +%{ SWIG_FREE_ARRAY($1); %} + +// inout fixed arrays +%typemap(in) enum SWIGTYPE INOUT[ANY]=enum SWIGTYPE INPUT[ANY]; +%typemap(argout) enum SWIGTYPE INOUT[ANY]=enum SWIGTYPE OUTPUT[ANY]; +%typemap(freearg) enum SWIGTYPE INOUT[ANY]=enum SWIGTYPE INPUT[ANY]; +// inout variable arrays +%typemap(in) (enum SWIGTYPE *INOUT,int)=(enum SWIGTYPE *INPUT,int); +%typemap(argout) (enum SWIGTYPE *INOUT,int) +%{ SWIG_write_int_num_array(L,(int*)$1,$2); SWIG_arg++; %} +%typemap(freearg) (enum SWIGTYPE *INOUT,int)=(enum SWIGTYPE *INPUT,int); + + +/* Surprisingly pointer arrays are easier: +this is because all ptr arrays become void** +so only a few fns are needed & a few casts + +The function defined are + // created a fixed size array, reads the specified table + // and then fills the array with pointers (checking the type) + // returns ptr to the array if ok, or 0 for error + // (also pushes a error message to the stack) +void** SWIG_get_ptr_array_fixed(lua_State* L, int index, int size,swig_type_info *type); + // as per SWIG_get_ptr_array_fixed() + // but reads the entire table & creates an array of the correct size + // (if the table is empty, it returns an error rather than a zero length array) +void** SWIG_get_ptr_array_var(lua_State* L, int index, int* size,swig_type_info *type); + // writes a table to Lua with all the specified pointers + // all pointers have the ownership value 'own' (normally 0) +void SWIG_write_ptr_array(lua_State* L,void **array,int size,int own); + // read the specified table, and fills the array with ptrs + // returns 1 of ok (only fails if it doesn't find correct type of ptrs) + // helper fn (called by SWIG_get_ptr_array_*() fns) +int SWIG_read_ptr_array(lua_State* L,int index,void **array,int size,swig_type_info *type); + +The key thing to remember is that it is assumed that there is no +modification of pointers ownership in the arrays + +eg A fn: +void pointers_in(TYPE* arr[],int len); +will make copies of the pointer into a temp array and then pass it into the fn +Lua does not remember that this fn held the pointers, so it is not safe to keep +these pointers until later + +eg A fn: +void pointers_out(TYPE* arr[3]); +will return a table containing three pointers +however these pointers are NOT owned by Lua, merely borrowed +so if the C/C++ frees then Lua is not aware + +*/ + +%{ +SWIGINTERN int SWIG_read_ptr_array(lua_State* L,int index,void **array,int size,swig_type_info *type){ + int i; + for (i = 0; i < size; i++) { + lua_rawgeti(L,index,i+1); + if (!lua_isuserdata(L,-1) || SWIG_ConvertPtr(L,-1,&array[i],type,0)==-1){ + lua_pop(L,1); + return 0; + } + lua_pop(L,1); + } + return 1; +} +SWIGINTERN void** SWIG_get_ptr_array_fixed(lua_State* L, int index, int size,swig_type_info *type){ + void **array; + if (!lua_istable(L,index) || SWIG_itable_size(L,index) != size) { + SWIG_Lua_pushferrstring(L,"expected a table of size %d",size); + return 0; + } + array=SWIG_ALLOC_ARRAY(void*,size); + if (!SWIG_read_ptr_array(L,index,array,size,type)){ + SWIG_Lua_pushferrstring(L,"table must contain pointers of type %s",type->name); + SWIG_FREE_ARRAY(array); + return 0; + } + return array; +} +SWIGINTERN void** SWIG_get_ptr_array_var(lua_State* L, int index, int* size,swig_type_info *type){ + void **array; + if (!lua_istable(L,index)) { + SWIG_Lua_pusherrstring(L,"expected a table"); + return 0; + } + *size=SWIG_itable_size(L,index); + if (*size<1){ + SWIG_Lua_pusherrstring(L,"table appears to be empty"); + return 0; + } + array=SWIG_ALLOC_ARRAY(void*,*size); + if (!SWIG_read_ptr_array(L,index,array,*size,type)){ + SWIG_Lua_pushferrstring(L,"table must contain pointers of type %s",type->name); + SWIG_FREE_ARRAY(array); + return 0; + } + return array; +} +SWIGINTERN void SWIG_write_ptr_array(lua_State* L,void **array,int size,swig_type_info *type,int own){ + int i; + lua_newtable(L); + for (i = 0; i < size; i++){ + SWIG_NewPointerObj(L,array[i],type,own); + lua_rawseti(L,-2,i+1);/* -1 is the number, -2 is the table*/ + } +} +%} + +// fixed size array's +%typemap(in) SWIGTYPE* INPUT[ANY] +%{ $1 = ($ltype)SWIG_get_ptr_array_fixed(L,$input,$1_dim0,$*1_descriptor); + if (!$1) SWIG_fail;%} + +%typemap(freearg) SWIGTYPE* INPUT[ANY] +%{ SWIG_FREE_ARRAY($1);%} + +// variable size array's +%typemap(in) (SWIGTYPE **INPUT,int) +%{ $1 = ($ltype)SWIG_get_ptr_array_var(L,$input,&$2,$*1_descriptor); + if (!$1) SWIG_fail;%} + +%typemap(freearg) (SWIGTYPE **INPUT,int) +%{ SWIG_FREE_ARRAY($1);%} + +// out fixed arrays +%typemap(in,numinputs=0) SWIGTYPE* OUTPUT[ANY] +%{ $1 = SWIG_ALLOC_ARRAY($*1_type,$1_dim0); %} + +%typemap(argout) SWIGTYPE* OUTPUT[ANY] +%{ SWIG_write_ptr_array(L,(void**)$1,$1_dim0,$*1_descriptor,0); SWIG_arg++; %} + +%typemap(freearg) SWIGTYPE* OUTPUT[ANY] +%{ SWIG_FREE_ARRAY($1); %} + +// inout fixed arrays +%typemap(in) SWIGTYPE* INOUT[ANY]=SWIGTYPE* INPUT[ANY]; +%typemap(argout) SWIGTYPE* INOUT[ANY]=SWIGTYPE* OUTPUT[ANY]; +%typemap(freearg) SWIGTYPE* INOUT[ANY]=SWIGTYPE* INPUT[ANY]; +// inout variable arrays +%typemap(in) (SWIGTYPE** INOUT,int)=(SWIGTYPE** INPUT,int); +%typemap(argout) (SWIGTYPE** INOUT,int) +%{ SWIG_write_ptr_array(L,(void**)$1,$2,$*1_descriptor,0); SWIG_arg++; %} +%typemap(freearg) (SWIGTYPE**INOUT,int)=(SWIGTYPE**INPUT,int); + +/* ----------------------------------------------------------------------------- + * Pointer-Pointer typemaps + * ----------------------------------------------------------------------------- */ +/* +This code is to deal with the issue for pointer-pointer's +In particular for factory methods. + +for example take the following code segment: + +struct iMath; // some structure +int Create_Math(iMath** pptr); // its factory (assume it mallocs) + +to use it you might have the following C code: + +iMath* ptr; +int ok; +ok=Create_Math(&ptr); +// do things with ptr +//... +free(ptr); + +With the following SWIG code +%apply SWIGTYPE** OUTPUT{iMath **pptr }; + +You can get natural wrapping in Lua as follows: +ok,ptr=Create_Math() -- ptr is a iMath* which is returned with the int +ptr=nil -- the iMath* will be GC'ed as normal +*/ + +%typemap(in,numinputs=0) SWIGTYPE** OUTPUT ($*ltype temp) +%{ temp = ($*ltype)0; + $1 = &temp; %} +%typemap(argout) SWIGTYPE** OUTPUT +%{SWIG_NewPointerObj(L,*$1,$*descriptor,1); SWIG_arg++; %} + diff --git a/macx64/bin/swig/share/swig/4.0.0/lua/wchar.i b/macx64/bin/swig/share/swig/4.0.0/lua/wchar.i new file mode 100644 index 00000000..9f3be6fc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/lua/wchar.i @@ -0,0 +1,42 @@ +/* ----------------------------------------------------------------------------- + * wchar.i + * + * Typemaps for the wchar_t type + * These are mapped to a Lua string and are passed around by value. + * ----------------------------------------------------------------------------- */ + +// note: only support for pointer right now, not fixed length strings +// TODO: determine how long a const wchar_t* is so we can write wstr2str() +// & do the output typemap + +%{ +#include + +wchar_t* str2wstr(const char *str, int len) +{ + wchar_t* p; + if (str==0 || len<1) return 0; + p=(wchar_t *)malloc((len+1)*sizeof(wchar_t)); + if (p==0) return 0; + if (mbstowcs(p, str, len)==(size_t)-1) + { + free(p); + return 0; + } + p[len]=0; + return p; +} +%} + +%typemap(in, checkfn="SWIG_lua_isnilstring", fragment="SWIG_lua_isnilstring") wchar_t * +%{ +$1 = str2wstr(lua_tostring( L, $input ),lua_rawlen( L, $input )); +if ($1==0) {SWIG_Lua_pushferrstring(L,"Error in converting to wchar (arg %d)",$input);goto fail;} +%} + +%typemap(freearg) wchar_t * +%{ +free($1); +%} + +%typemap(typecheck) wchar_t * = char *; diff --git a/macx64/bin/swig/share/swig/4.0.0/math.i b/macx64/bin/swig/share/swig/4.0.0/math.i new file mode 100644 index 00000000..a37c92d1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/math.i @@ -0,0 +1,82 @@ +/* ----------------------------------------------------------------------------- + * math.i + * + * SWIG library file for floating point operations. + * ----------------------------------------------------------------------------- */ + +%module math +%{ +#include +%} + +extern double cos(double x); +/* Cosine of x */ + +extern double sin(double x); +/* Sine of x */ + +extern double tan(double x); +/* Tangent of x */ + +extern double acos(double x); +/* Inverse cosine in range [-PI/2,PI/2], x in [-1,1]. */ + +extern double asin(double x); +/* Inverse sine in range [0,PI], x in [-1,1]. */ + +extern double atan(double x); +/* Inverse tangent in range [-PI/2,PI/2]. */ + +extern double atan2(double y, double x); +/* Inverse tangent of y/x in range [-PI,PI]. */ + +extern double cosh(double x); +/* Hyperbolic cosine of x */ + +extern double sinh(double x); +/* Hyperbolic sine of x */ + +extern double tanh(double x); +/* Hyperbolic tangent of x */ + +extern double exp(double x); +/* Natural exponential function e^x */ + +extern double log(double x); +/* Natural logarithm ln(x), x > 0 */ + +extern double log10(double x); +/* Base 10 logarithm, x > 0 */ + +extern double pow(double x, double y); +/* Power function x^y. */ + +extern double sqrt(double x); +/* Square root. x >= 0 */ + +extern double fabs(double x); +/* Absolute value of x */ + +extern double ceil(double x); +/* Smallest integer not less than x, as a double */ + +extern double floor(double x); +/* Largest integer not greater than x, as a double */ + +extern double fmod(double x, double y); +/* Floating-point remainder of x/y, with the same sign as x. */ + +#define M_E 2.7182818284590452354 +#define M_LOG2E 1.4426950408889634074 +#define M_LOG10E 0.43429448190325182765 +#define M_LN2 0.69314718055994530942 +#define M_LN10 2.30258509299404568402 +#define M_PI 3.14159265358979323846 +#define M_PI_2 1.57079632679489661923 +#define M_PI_4 0.78539816339744830962 +#define M_1_PI 0.31830988618379067154 +#define M_2_PI 0.63661977236758134308 +#define M_2_SQRTPI 1.12837916709551257390 +#define M_SQRT2 1.41421356237309504880 +#define M_SQRT1_2 0.70710678118654752440 + diff --git a/macx64/bin/swig/share/swig/4.0.0/mzscheme/mzrun.swg b/macx64/bin/swig/share/swig/4.0.0/mzscheme/mzrun.swg new file mode 100644 index 00000000..c438c9ce --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/mzscheme/mzrun.swg @@ -0,0 +1,499 @@ +/* ----------------------------------------------------------------------------- + * mzrun.swg + * ----------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Common SWIG API */ + +#define SWIG_ConvertPtr(s, result, type, flags) \ + SWIG_MzScheme_ConvertPtr(s, result, type, flags) +#define SWIG_NewPointerObj(ptr, type, owner) \ + SWIG_MzScheme_NewPointerObj((void *)ptr, type, owner) +#define SWIG_MustGetPtr(s, type, argnum, flags) \ + SWIG_MzScheme_MustGetPtr(s, type, argnum, flags, FUNC_NAME, argc, argv) + +#define SWIG_contract_assert(expr,msg) \ + if (!(expr)) { \ + char *m=(char *) scheme_malloc(strlen(msg)+1000); \ + sprintf(m,"SWIG contract, assertion failed: function=%s, message=%s", \ + (char *) FUNC_NAME,(char *) msg); \ + scheme_signal_error(m); \ + } + +/* Runtime API */ +#define SWIG_GetModule(clientdata) SWIG_MzScheme_GetModule((Scheme_Env *)(clientdata)) +#define SWIG_SetModule(clientdata, pointer) SWIG_MzScheme_SetModule((Scheme_Env *) (clientdata), pointer) +#define SWIG_MODULE_CLIENTDATA_TYPE Scheme_Env * + +/* MzScheme-specific SWIG API */ + +#define SWIG_malloc(size) SWIG_MzScheme_Malloc(size, FUNC_NAME) +#define SWIG_free(mem) free(mem) +#define SWIG_NewStructFromPtr(ptr,type) \ + _swig_convert_struct_##type##(ptr) + +#define MAXVALUES 6 +#define swig_make_boolean(b) (b ? scheme_true : scheme_false) + +static long +SWIG_convert_integer(Scheme_Object *o, + long lower_bound, long upper_bound, + const char *func_name, int argnum, int argc, + Scheme_Object **argv) +{ + long value; + int status = scheme_get_int_val(o, &value); + if (!status) + scheme_wrong_type(func_name, "integer", argnum, argc, argv); + if (value < lower_bound || value > upper_bound) + scheme_wrong_type(func_name, "integer", argnum, argc, argv); + return value; +} + +static int +SWIG_is_integer(Scheme_Object *o) +{ + long value; + return scheme_get_int_val(o, &value); +} + +static unsigned long +SWIG_convert_unsigned_integer(Scheme_Object *o, + unsigned long lower_bound, unsigned long upper_bound, + const char *func_name, int argnum, int argc, + Scheme_Object **argv) +{ + unsigned long value; + int status = scheme_get_unsigned_int_val(o, &value); + if (!status) + scheme_wrong_type(func_name, "integer", argnum, argc, argv); + if (value < lower_bound || value > upper_bound) + scheme_wrong_type(func_name, "integer", argnum, argc, argv); + return value; +} + +static int +SWIG_is_unsigned_integer(Scheme_Object *o) +{ + unsigned long value; + return scheme_get_unsigned_int_val(o, &value); +} + +/* ----------------------------------------------------------------------- + * mzscheme 30X support code + * ----------------------------------------------------------------------- */ + +#ifndef SCHEME_STR_VAL +#define MZSCHEME30X 1 +#endif + +#ifdef MZSCHEME30X +/* + * This is MZSCHEME 299.100 or higher (30x). From version 299.100 of + * mzscheme upwards, strings are in unicode. These functions convert + * to and from utf8 encodings of these strings. NB! strlen(s) will be + * the size in bytes of the string, not the actual length. + */ +#define SCHEME_STR_VAL(obj) SCHEME_BYTE_STR_VAL(scheme_char_string_to_byte_string(obj)) +#define SCHEME_STRLEN_VAL(obj) SCHEME_BYTE_STRLEN_VAL(scheme_char_string_to_byte_string(obj)) +#define SCHEME_STRINGP(obj) SCHEME_CHAR_STRINGP(obj) +#define scheme_make_string(s) scheme_make_utf8_string(s) +#define scheme_make_sized_string(s,l) scheme_make_sized_utf8_string(s,l) +#define scheme_make_sized_offset_string(s,d,l) \ + scheme_make_sized_offset_utf8_string(s,d,l) +#define SCHEME_MAKE_STRING(s) scheme_make_utf8_string(s) +#else +#define SCHEME_MAKE_STRING(s) scheme_make_string_without_copying(s) +#endif +/* ----------------------------------------------------------------------- + * End of mzscheme 30X support code + * ----------------------------------------------------------------------- */ + +struct swig_mz_proxy { + Scheme_Type mztype; + swig_type_info *type; + void *object; +}; + +static Scheme_Type swig_type; + +static void +mz_free_swig(void *p, void *data) { + struct swig_mz_proxy *proxy = (struct swig_mz_proxy *) p; + if (SCHEME_NULLP((Scheme_Object*)p) || SCHEME_TYPE((Scheme_Object*)p) != swig_type) + return; + if (proxy->type) { + if (proxy->type->clientdata) { + ((Scheme_Prim *)proxy->type->clientdata)(1, (Scheme_Object **)&proxy); + } + } +} + +static Scheme_Object * +SWIG_MzScheme_NewPointerObj(void *ptr, swig_type_info *type, int owner) { + struct swig_mz_proxy *new_proxy; + new_proxy = (struct swig_mz_proxy *) scheme_malloc(sizeof(struct swig_mz_proxy)); + new_proxy->mztype = swig_type; + new_proxy->type = type; + new_proxy->object = ptr; + if (owner) { + scheme_add_finalizer(new_proxy, mz_free_swig, NULL); + } + return (Scheme_Object *) new_proxy; +} + +static int +SWIG_MzScheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type, int flags) { + swig_cast_info *cast; + + if (SCHEME_NULLP(s)) { + *result = NULL; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } else if (SCHEME_TYPE(s) == swig_type) { + struct swig_mz_proxy *proxy = (struct swig_mz_proxy *) s; + if (type) { + cast = SWIG_TypeCheckStruct(proxy->type, type); + if (cast) { + int newmemory = 0; + *result = SWIG_TypeCast(cast, proxy->object, &newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + return 0; + } else { + return 1; + } + } else { + *result = proxy->object; + return 0; + } + } + return 1; +} + +static SWIGINLINE void * +SWIG_MzScheme_MustGetPtr(Scheme_Object *s, swig_type_info *type, + int argnum, int flags, const char *func_name, + int argc, Scheme_Object **argv) { + void *result; + if (SWIG_MzScheme_ConvertPtr(s, &result, type, flags)) { + scheme_wrong_type(func_name, type->str ? type->str : "void *", argnum - 1, argc, argv); + } + return result; +} + +static SWIGINLINE void * +SWIG_MzScheme_Malloc(size_t size, const char *func_name) { + void *p = malloc(size); + if (p == NULL) { + scheme_signal_error("swig-memory-error"); + } else return p; +} + +static Scheme_Object * +SWIG_MzScheme_PackageValues(int num, Scheme_Object **values) { + /* ignore first value if void */ + if (num > 0 && SCHEME_VOIDP(values[0])) + num--, values++; + if (num == 0) return scheme_void; + else if (num == 1) return values[0]; + else return scheme_values(num, values); +} + +#ifndef scheme_make_inspector +#define scheme_make_inspector(x,y) \ + _scheme_apply(scheme_builtin_value("make-inspector"), x, y) +#endif + +/* Function to create a new struct. */ +static Scheme_Object * +SWIG_MzScheme_new_scheme_struct (Scheme_Env* env, const char* basename, + int num_fields, char** field_names) +{ + Scheme_Object *new_type; + int count_out, i; + Scheme_Object **struct_names; + Scheme_Object **vals; + Scheme_Object **a = (Scheme_Object**) \ + scheme_malloc(num_fields*sizeof(Scheme_Object*)); + + for (i=0; i +#else +#include +#endif + + static char **mz_dlopen_libraries=NULL; + static void **mz_libraries=NULL; + static char **mz_dynload_libpaths=NULL; + + static void mz_set_dlopen_libraries(const char *_libs) + { + int i,k,n; + int mz_dynload_debug=(1==0); + char *extra_paths[1000]; + char *EP; + + { + char *dbg=getenv("MZ_DYNLOAD_DEBUG"); + if (dbg!=NULL) { + mz_dynload_debug=atoi(dbg); + } + } + + { + char *ep=getenv("MZ_DYNLOAD_LIBPATH"); + int i,k,j; + k=0; + if (ep!=NULL) { + EP=strdup(ep); + for(i=0,j=0;EP[i]!='\0';i++) { + if (EP[i]==':') { + EP[i]='\0'; + extra_paths[k++]=&EP[j]; + j=i+1; + } + } + if (j!=i) { + extra_paths[k++]=&EP[j]; + } + } + else { + EP=strdup(""); + } + extra_paths[k]=NULL; + k+=1; + + if (mz_dynload_debug) { + fprintf(stderr,"SWIG:mzscheme:MZ_DYNLOAD_LIBPATH=%s\n",(ep==NULL) ? "(null)" : ep); + fprintf(stderr,"SWIG:mzscheme:extra_paths[%d]\n",k-1); + for(i=0;i %p\n",libp,mz_libraries[i]); + } + free(libp); + } + } + } + } + { + int i; + void *func=NULL; + + for(i=0;mz_dlopen_libraries[i]!=NULL && func==NULL;i++) { + if (mz_libraries[i]!=NULL) { +#ifdef __OS_WIN32 + func=GetProcAddress(mz_libraries[i],function); +#else + func=dlsym(mz_libraries[i],function); +#endif + } + if (mz_dynload_debug) { + fprintf(stderr, + "SWIG:mzscheme:library:%s;dlopen=%p,function=%s,func=%p\n", + mz_dlopen_libraries[i],mz_libraries[i],function,func + ); + } + } + + return func; + } + } + } + +/* The interpreter will store a pointer to this structure in a global + variable called swig-runtime-data-type-pointer. The instance of this + struct is only used if no other module has yet been loaded */ +struct swig_mzscheme_runtime_data { + swig_module_info *module_head; + Scheme_Type type; +}; +static struct swig_mzscheme_runtime_data swig_mzscheme_runtime_data; + + +static swig_module_info * +SWIG_MzScheme_GetModule(Scheme_Env *env) { + Scheme_Object *pointer, *symbol; + struct swig_mzscheme_runtime_data *data; + + /* first check if pointer already created */ + symbol = scheme_intern_symbol("swig-runtime-data-type-pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME); + pointer = scheme_lookup_global(symbol, env); + if (pointer && SCHEME_CPTRP(pointer)) { + data = (struct swig_mzscheme_runtime_data *) SCHEME_CPTR_VAL(pointer); + swig_type = data->type; + return data->module_head; + } else { + return NULL; + } +} + +static void +SWIG_MzScheme_SetModule(Scheme_Env *env, swig_module_info *module) { + Scheme_Object *pointer, *symbol; + struct swig_mzscheme_runtime_data *data; + + /* first check if pointer already created */ + symbol = scheme_intern_symbol("swig-runtime-data-type-pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME); + pointer = scheme_lookup_global(symbol, env); + if (pointer && SCHEME_CPTRP(pointer)) { + data = (struct swig_mzscheme_runtime_data *) SCHEME_CPTR_VAL(pointer); + swig_type = data->type; + data->module_head = module; + } else { + /* create a new type for wrapped pointer values */ + swig_type = scheme_make_type((char *)"swig"); + swig_mzscheme_runtime_data.module_head = module; + swig_mzscheme_runtime_data.type = swig_type; + + /* create a new pointer */ +#ifndef MZSCHEME30X + pointer = scheme_make_cptr((void *) &swig_mzscheme_runtime_data, "swig_mzscheme_runtime_data"); +#else + pointer = scheme_make_cptr((void *) &swig_mzscheme_runtime_data, + scheme_make_byte_string("swig_mzscheme_runtime_data")); +#endif + scheme_add_global_symbol(symbol, pointer, env); + } +} + +#ifdef __cplusplus +} +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/mzscheme/mzscheme.swg b/macx64/bin/swig/share/swig/4.0.0/mzscheme/mzscheme.swg new file mode 100644 index 00000000..f45c8725 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/mzscheme/mzscheme.swg @@ -0,0 +1,56 @@ +/* ----------------------------------------------------------------------------- + * mzscheme.swg + * + * SWIG Configuration File for MzScheme. + * This file is parsed by SWIG before reading any other interface file. + * ----------------------------------------------------------------------------- */ + +/* Include headers */ +%runtime "swigrun.swg" // Common C API type-checking code +%runtime "swigerrors.swg" // SWIG errors +%runtime "mzrun.swg" + +%define SWIG_APPEND_VALUE(value) + values[lenv++] = value +%enddef + +/* Definitions */ +#define SWIG_malloc(size) swig_malloc(size, FUNC_NAME) +#define SWIG_free(mem) free(mem) + +#define SWIG_convert_short(o) \ + SWIG_convert_integer(o, - (1 << (8 * sizeof(short) - 1)), \ + (1 << (8 * sizeof(short) - 1)) - 1, \ + FUNC_NAME, $argnum-1, argc, argv) +#define SWIG_convert_int(o) \ + SWIG_convert_integer(o, INT_MIN, INT_MAX, \ + FUNC_NAME, $argnum-1, argc, argv) +#define SWIG_convert_long(o) \ + SWIG_convert_integer(o, LONG_MIN, LONG_MAX, \ + FUNC_NAME, $argnum-1, argc, argv) +#define SWIG_convert_unsigned_short(o) \ + SWIG_convert_unsigned_integer(o, 0, \ + (1 << (8 * sizeof(short))) - 1, \ + FUNC_NAME, $argnum-1, argc, argv) +#define SWIG_convert_unsigned_int(o) \ + SWIG_convert_unsigned_integer(o, 0, UINT_MAX, \ + FUNC_NAME, $argnum-1, argc, argv) +#define SWIG_convert_unsigned_long(o) \ + SWIG_convert_unsigned_integer(o, 0, ULONG_MAX, \ + FUNC_NAME, $argnum-1, argc, argv) + +/* Guile compatibility kludges */ +#define SCM_VALIDATE_VECTOR(argnum, value) (void)0 +#define SCM_VALIDATE_LIST(argnum, value) (void)0 + +/* Read in standard typemaps. */ +%include + +%insert(init) "swiginit.swg" + +%init %{ +Scheme_Object *scheme_reload(Scheme_Env *env) { + Scheme_Env *menv = SWIG_MZSCHEME_CREATE_MENV(env); + + SWIG_InitializeModule((void *) env); +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_common.i b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_common.i new file mode 100644 index 00000000..a83e2731 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_common.i @@ -0,0 +1,23 @@ +/* ----------------------------------------------------------------------------- + * std_common.i + * + * SWIG typemaps for STL - common utilities + * ----------------------------------------------------------------------------- */ + +%include + +%apply size_t { std::size_t }; + +%{ +#include + +SWIGINTERNINLINE +std::string swig_scm_to_string(Scheme_Object *x) { + return std::string(SCHEME_STR_VAL(x)); +} + +SWIGINTERNINLINE +Scheme_Object *swig_make_string(const std::string &s) { + return scheme_make_string(s.c_str()); +} +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_map.i b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_map.i new file mode 100644 index 00000000..1d3eec24 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_map.i @@ -0,0 +1,1388 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// +// The aim of all that follows would be to integrate std::map with +// MzScheme as much as possible, namely, to allow the user to pass and +// be returned Scheme association lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::map), f(const std::map&), f(const std::map*): +// the parameter being read-only, either a Scheme alist or a +// previously wrapped std::map can be passed. +// -- f(std::map&), f(std::map*): +// the parameter must be modified; therefore, only a wrapped std::map +// can be passed. +// -- std::map f(): +// the map is returned by copy; therefore, a Scheme alist +// is returned which is most easily used in other Scheme functions +// -- std::map& f(), std::map* f(), const std::map& f(), +// const std::map* f(): +// the map is returned by reference; therefore, a wrapped std::map +// is returned +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template > class map { + %typemap(in) map< K, T, C > (std::map< K, T, C >* m) { + if (SCHEME_NULLP($input)) { + $1 = std::map< K, T, C >(); + } else if (SCHEME_PAIRP($input)) { + $1 = std::map< K, T, C >(); + Scheme_Object* alist = $input; + while (!SCHEME_NULLP(alist)) { + K* k; + T* x; + Scheme_Object *entry, *key, *val; + entry = scheme_car(alist); + if (!SCHEME_PAIRP(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = scheme_car(entry); + val = scheme_cdr(entry); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == -1) { + if (!SCHEME_PAIRP(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = scheme_car(val); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); + } + (($1_type &)$1)[*k] = *x; + alist = scheme_cdr(alist); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const map< K, T, C >& (std::map< K, T, C > temp, + std::map< K, T, C >* m), + const map< K, T, C >* (std::map< K, T, C > temp, + std::map< K, T, C >* m) { + if (SCHEME_NULLP($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + } else if (SCHEME_PAIRP($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + Scheme_Object* alist = $input; + while (!SCHEME_NULLP(alist)) { + K* k; + T* x; + Scheme_Object *entry, *key, *val; + entry = scheme_car(alist); + if (!SCHEME_PAIRP(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = scheme_car(entry); + val = scheme_cdr(entry); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == -1) { + if (!SCHEME_PAIRP(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = scheme_car(val); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); + } + temp[*k] = *x; + alist = scheme_cdr(alist); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) map< K, T, C > { + Scheme_Object* alist = scheme_null; + for (std::map< K, T, C >::reverse_iterator i=$1.rbegin(); + i!=$1.rend(); ++i) { + K* key = new K(i->first); + T* val = new T(i->second); + Scheme_Object* k = SWIG_NewPointerObj(key,$descriptor(K *), 1); + Scheme_Object* x = SWIG_NewPointerObj(val,$descriptor(T *), 1); + Scheme_Object* entry = scheme_make_pair(k,x); + alist = scheme_make_pair(entry,alist); + } + $result = alist; + } + %typecheck(SWIG_TYPECHECK_MAP) map< K, T, C > { + /* native sequence? */ + if (SCHEME_NULLP($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + /* check the first element only */ + K* k; + T* x; + Scheme_Object* head = scheme_car($input); + if (SCHEME_PAIRP(head)) { + Scheme_Object* key = scheme_car(head); + Scheme_Object* val = scheme_cdr(head); + if (SWIG_ConvertPtr(key,(void**) &k, + $descriptor(K *), 0) == -1) { + $1 = 0; + } else { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) { + $1 = 1; + } else if (SCHEME_PAIRP(val)) { + val = scheme_car(val); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + /* wrapped map? */ + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_MAP) const map< K, T, C >&, + const map< K, T, C >* { + /* native sequence? */ + if (SCHEME_NULLP($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + /* check the first element only */ + K* k; + T* x; + Scheme_Object* head = scheme_car($input); + if (SCHEME_PAIRP(head)) { + Scheme_Object* key = scheme_car(head); + Scheme_Object* val = scheme_cdr(head); + if (SWIG_ConvertPtr(key,(void**) &k, + $descriptor(K *), 0) == -1) { + $1 = 0; + } else { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) { + $1 = 1; + } else if (SCHEME_PAIRP(val)) { + val = scheme_car(val); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + /* wrapped map? */ + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %rename("length") size; + %rename("null?") empty; + %rename("clear!") clear; + %rename("ref") __getitem__; + %rename("set!") __setitem__; + %rename("delete!") __delitem__; + %rename("has-key?") has_key; + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + T& __getitem__(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void __setitem__(const K& key, const T& x) { + (*self)[key] = x; + } + void __delitem__(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + Scheme_Object* keys() { + Scheme_Object* result = scheme_null; + for (std::map< K, T, C >::reverse_iterator i=self->rbegin(); + i!=self->rend(); ++i) { + K* key = new K(i->first); + Scheme_Object* k = SWIG_NewPointerObj(key,$descriptor(K *), 1); + result = scheme_make_pair(k,result); + } + return result; + } + } + }; + + + // specializations for built-ins + + %define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) + + template class map< K, T, C > { + %typemap(in) map< K, T, C > (std::map< K, T, C >* m) { + if (SCHEME_NULLP($input)) { + $1 = std::map< K, T, C >(); + } else if (SCHEME_PAIRP($input)) { + $1 = std::map< K, T, C >(); + Scheme_Object* alist = $input; + while (!SCHEME_NULLP(alist)) { + T* x; + Scheme_Object *entry, *key, *val; + entry = scheme_car(alist); + if (!SCHEME_PAIRP(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = scheme_car(entry); + val = scheme_cdr(entry); + if (!CHECK(key)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == -1) { + if (!SCHEME_PAIRP(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = scheme_car(val); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); + } + (($1_type &)$1)[CONVERT_FROM(key)] = *x; + alist = scheme_cdr(alist); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const map< K, T, C >& (std::map< K, T, C > temp, + std::map< K, T, C >* m), + const map< K, T, C >* (std::map< K, T, C > temp, + std::map< K, T, C >* m) { + if (SCHEME_NULLP($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + } else if (SCHEME_PAIRP($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + Scheme_Object* alist = $input; + while (!SCHEME_NULLP(alist)) { + T* x; + Scheme_Object *entry, *key, *val; + entry = scheme_car(alist); + if (!SCHEME_PAIRP(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = scheme_car(entry); + val = scheme_cdr(entry); + if (!CHECK(key)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == -1) { + if (!SCHEME_PAIRP(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = scheme_car(val); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); + } + temp[CONVERT_FROM(key)] = *x; + alist = scheme_cdr(alist); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) map< K, T, C > { + Scheme_Object* alist = scheme_null; + for (std::map< K, T, C >::reverse_iterator i=$1.rbegin(); + i!=$1.rend(); ++i) { + T* val = new T(i->second); + Scheme_Object* k = CONVERT_TO(i->first); + Scheme_Object* x = SWIG_NewPointerObj(val,$descriptor(T *), 1); + Scheme_Object* entry = scheme_make_pair(k,x); + alist = scheme_make_pair(entry,alist); + } + $result = alist; + } + %typecheck(SWIG_TYPECHECK_MAP) map< K, T, C > { + // native sequence? + if (SCHEME_NULLP($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + // check the first element only + T* x; + Scheme_Object* head = scheme_car($input); + if (SCHEME_PAIRP(head)) { + Scheme_Object* key = scheme_car(head); + Scheme_Object* val = scheme_cdr(head); + if (!CHECK(key)) { + $1 = 0; + } else { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) { + $1 = 1; + } else if (SCHEME_PAIRP(val)) { + val = scheme_car(val); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_MAP) const map< K, T, C >&, + const map< K, T, C >* { + // native sequence? + if (SCHEME_NULLP($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + // check the first element only + T* x; + Scheme_Object* head = scheme_car($input); + if (SCHEME_PAIRP(head)) { + Scheme_Object* key = scheme_car(head); + Scheme_Object* val = scheme_cdr(head); + if (!CHECK(key)) { + $1 = 0; + } else { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) { + $1 = 1; + } else if (SCHEME_PAIRP(val)) { + val = scheme_car(val); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %rename("length") size; + %rename("null?") empty; + %rename("clear!") clear; + %rename("ref") __getitem__; + %rename("set!") __setitem__; + %rename("delete!") __delitem__; + %rename("has-key?") has_key; + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + T& __getitem__(K key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void __setitem__(K key, const T& x) { + (*self)[key] = x; + } + void __delitem__(K key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(K key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + Scheme_Object* keys() { + Scheme_Object* result = scheme_null; + for (std::map< K, T, C >::reverse_iterator i=self->rbegin(); + i!=self->rend(); ++i) { + Scheme_Object* k = CONVERT_TO(i->first); + result = scheme_make_pair(k,result); + } + return result; + } + } + }; + %enddef + + %define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) + template class map< K, T, C > { + %typemap(in) map< K, T, C > (std::map< K, T, C >* m) { + if (SCHEME_NULLP($input)) { + $1 = std::map< K, T, C >(); + } else if (SCHEME_PAIRP($input)) { + $1 = std::map< K, T, C >(); + Scheme_Object* alist = $input; + while (!SCHEME_NULLP(alist)) { + K* k; + Scheme_Object *entry, *key, *val; + entry = scheme_car(alist); + if (!SCHEME_PAIRP(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = scheme_car(entry); + val = scheme_cdr(entry); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (!CHECK(val)) { + if (!SCHEME_PAIRP(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = scheme_car(val); + if (!CHECK(val)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + } + (($1_type &)$1)[*k] = CONVERT_FROM(val); + alist = scheme_cdr(alist); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const map< K, T, C >& (std::map< K, T, C > temp, + std::map< K, T, C >* m), + const map< K, T, C >* (std::map< K, T, C > temp, + std::map< K, T, C >* m) { + if (SCHEME_NULLP($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + } else if (SCHEME_PAIRP($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + Scheme_Object* alist = $input; + while (!SCHEME_NULLP(alist)) { + K* k; + Scheme_Object *entry, *key, *val; + entry = scheme_car(alist); + if (!SCHEME_PAIRP(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = scheme_car(entry); + val = scheme_cdr(entry); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (!CHECK(val)) { + if (!SCHEME_PAIRP(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = scheme_car(val); + if (!CHECK(val)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + } + temp[*k] = CONVERT_FROM(val); + alist = scheme_cdr(alist); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) map< K, T, C > { + Scheme_Object* alist = scheme_null; + for (std::map< K, T, C >::reverse_iterator i=$1.rbegin(); + i!=$1.rend(); ++i) { + K* key = new K(i->first); + Scheme_Object* k = SWIG_NewPointerObj(key,$descriptor(K *), 1); + Scheme_Object* x = CONVERT_TO(i->second); + Scheme_Object* entry = scheme_make_pair(k,x); + alist = scheme_make_pair(entry,alist); + } + $result = alist; + } + %typecheck(SWIG_TYPECHECK_MAP) map< K, T, C > { + // native sequence? + if (SCHEME_NULLP($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + // check the first element only + K* k; + Scheme_Object* head = scheme_car($input); + if (SCHEME_PAIRP(head)) { + Scheme_Object* key = scheme_car(head); + Scheme_Object* val = scheme_cdr(head); + if (SWIG_ConvertPtr(val,(void **) &k, + $descriptor(K *), 0) == -1) { + $1 = 0; + } else { + if (CHECK(val)) { + $1 = 1; + } else if (SCHEME_PAIRP(val)) { + val = scheme_car(val); + if (CHECK(val)) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_MAP) const map< K, T, C >&, + const map< K, T, C >* { + // native sequence? + if (SCHEME_NULLP($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + // check the first element only + K* k; + Scheme_Object* head = scheme_car($input); + if (SCHEME_PAIRP(head)) { + Scheme_Object* key = scheme_car(head); + Scheme_Object* val = scheme_cdr(head); + if (SWIG_ConvertPtr(val,(void **) &k, + $descriptor(K *), 0) == -1) { + $1 = 0; + } else { + if (CHECK(val)) { + $1 = 1; + } else if (SCHEME_PAIRP(val)) { + val = scheme_car(val); + if (CHECK(val)) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %rename("length") size; + %rename("null?") empty; + %rename("clear!") clear; + %rename("ref") __getitem__; + %rename("set!") __setitem__; + %rename("delete!") __delitem__; + %rename("has-key?") has_key; + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + T __getitem__(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void __setitem__(const K& key, T x) { + (*self)[key] = x; + } + void __delitem__(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + Scheme_Object* keys() { + Scheme_Object* result = scheme_null; + for (std::map< K, T, C >::reverse_iterator i=self->rbegin(); + i!=self->rend(); ++i) { + K* key = new K(i->first); + Scheme_Object* k = SWIG_NewPointerObj(key,$descriptor(K *), 1); + result = scheme_make_pair(k,result); + } + return result; + } + } + }; + %enddef + + %define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, + T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) + template<> class map< K, T, C > { + %typemap(in) map< K, T, C > (std::map< K, T, C >* m) { + if (SCHEME_NULLP($input)) { + $1 = std::map< K, T, C >(); + } else if (SCHEME_PAIRP($input)) { + $1 = std::map< K, T, C >(); + Scheme_Object* alist = $input; + while (!SCHEME_NULLP(alist)) { + Scheme_Object *entry, *key, *val; + entry = scheme_car(alist); + if (!SCHEME_PAIRP(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = scheme_car(entry); + val = scheme_cdr(entry); + if (!CHECK_K(key)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + if (!CHECK_T(val)) { + if (!SCHEME_PAIRP(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = scheme_car(val); + if (!CHECK_T(val)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + } + (($1_type &)$1)[CONVERT_K_FROM(key)] = + CONVERT_T_FROM(val); + alist = scheme_cdr(alist); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const map< K, T, C >& (std::map< K, T, C > temp, + std::map< K, T, C >* m), + const map< K, T, C >* (std::map< K, T, C > temp, + std::map< K, T, C >* m) { + if (SCHEME_NULLP($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + } else if (SCHEME_PAIRP($input)) { + temp = std::map< K, T, C >(); + $1 = &temp; + Scheme_Object* alist = $input; + while (!SCHEME_NULLP(alist)) { + Scheme_Object *entry, *key, *val; + entry = scheme_car(alist); + if (!SCHEME_PAIRP(entry)) + SWIG_exception(SWIG_TypeError,"alist expected"); + key = scheme_car(entry); + val = scheme_cdr(entry); + if (!CHECK_K(key)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + if (!CHECK_T(val)) { + if (!SCHEME_PAIRP(val)) + SWIG_exception(SWIG_TypeError,"alist expected"); + val = scheme_car(val); + if (!CHECK_T(val)) + SWIG_exception(SWIG_TypeError, + "map<" #K "," #T "," #C "> expected"); + } + temp[CONVERT_K_FROM(key)] = CONVERT_T_FROM(val); + alist = scheme_cdr(alist); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) map< K, T, C > { + Scheme_Object* alist = scheme_null; + for (std::map< K, T, C >::reverse_iterator i=$1.rbegin(); + i!=$1.rend(); ++i) { + Scheme_Object* k = CONVERT_K_TO(i->first); + Scheme_Object* x = CONVERT_T_TO(i->second); + Scheme_Object* entry = scheme_make_pair(k,x); + alist = scheme_make_pair(entry,alist); + } + $result = alist; + } + %typecheck(SWIG_TYPECHECK_MAP) map< K, T, C > { + // native sequence? + if (SCHEME_NULLP($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + // check the first element only + Scheme_Object* head = scheme_car($input); + if (SCHEME_PAIRP(head)) { + Scheme_Object* key = scheme_car(head); + Scheme_Object* val = scheme_cdr(head); + if (!CHECK_K(key)) { + $1 = 0; + } else { + if (CHECK_T(val)) { + $1 = 1; + } else if (SCHEME_PAIRP(val)) { + val = scheme_car(val); + if (CHECK_T(val)) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_MAP) const map< K, T, C >&, + const map< K, T, C >* { + // native sequence? + if (SCHEME_NULLP($input)) { + /* an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + // check the first element only + Scheme_Object* head = scheme_car($input); + if (SCHEME_PAIRP(head)) { + Scheme_Object* key = scheme_car(head); + Scheme_Object* val = scheme_cdr(head); + if (!CHECK_K(key)) { + $1 = 0; + } else { + if (CHECK_T(val)) { + $1 = 1; + } else if (SCHEME_PAIRP(val)) { + val = scheme_car(val); + if (CHECK_T(val)) + $1 = 1; + else + $1 = 0; + } else { + $1 = 0; + } + } + } else { + $1 = 0; + } + } else { + // wrapped map? + std::map< K, T, C >* m; + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %rename("length") size; + %rename("null?") empty; + %rename("clear!") clear; + %rename("ref") __getitem__; + %rename("set!") __setitem__; + %rename("delete!") __delitem__; + %rename("has-key?") has_key; + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + T __getitem__(K key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void __setitem__(K key, T x) { + (*self)[key] = x; + } + void __delitem__(K key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(K key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + Scheme_Object* keys() { + Scheme_Object* result = scheme_null; + for (std::map< K, T, C >::reverse_iterator i=self->rbegin(); + i!=self->rend(); ++i) { + Scheme_Object* k = CONVERT_K_TO(i->first); + result = scheme_make_pair(k,result); + } + return result; + } + } + }; + %enddef + + + specialize_std_map_on_key(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_key(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_key(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_key(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_key(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_key(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_key(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_key(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_key(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_key(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + + specialize_std_map_on_value(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_value(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_value(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_value(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_value(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_value(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_value(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_value(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_value(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_value(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_map_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_pair.i new file mode 100644 index 00000000..75f6751c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_pair.i @@ -0,0 +1,874 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + + +// ------------------------------------------------------------------------ +// std::pair +// +// See std_vector.i for the rationale of typemap application +// ------------------------------------------------------------------------ + +%{ +#include +%} + +// exported class + +namespace std { + + template struct pair { + %typemap(in) pair (std::pair* m) { + if (SCHEME_PAIRP($input)) { + T* x; + U* y; + Scheme_Object *first, *second; + first = scheme_car($input); + second = scheme_cdr($input); + x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0); + y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0); + $1 = std::make_pair(*x,*y); + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const pair& (std::pair temp, + std::pair* m), + const pair* (std::pair temp, + std::pair* m) { + if (SCHEME_PAIRP($input)) { + T* x; + U* y; + Scheme_Object *first, *second; + first = scheme_car($input); + second = scheme_cdr($input); + x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0); + y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0); + temp = std::make_pair(*x,*y); + $1 = &temp; + } else { + $1 = ($1_ltype) + SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) pair { + T* x = new T($1.first); + U* y = new U($1.second); + Scheme_Object* first = SWIG_NewPointerObj(x,$descriptor(T *), 1); + Scheme_Object* second = SWIG_NewPointerObj(y,$descriptor(U *), 1); + $result = scheme_make_pair(first,second); + } + %typecheck(SWIG_TYPECHECK_PAIR) pair { + /* native pair? */ + if (SCHEME_PAIRP($input)) { + T* x; + U* y; + Scheme_Object* first = scheme_car($input); + Scheme_Object* second = scheme_cdr($input); + if (SWIG_ConvertPtr(first,(void**) &x, + $descriptor(T *), 0) != -1 && + SWIG_ConvertPtr(second,(void**) &y, + $descriptor(U *), 0) != -1) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair* p; + if (SWIG_ConvertPtr($input,(void **) &p, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_PAIR) const pair&, + const pair* { + /* native pair? */ + if (SCHEME_PAIRP($input)) { + T* x; + U* y; + Scheme_Object* first = scheme_car($input); + Scheme_Object* second = scheme_cdr($input); + if (SWIG_ConvertPtr(first,(void**) &x, + $descriptor(T *), 0) != -1 && + SWIG_ConvertPtr(second,(void**) &y, + $descriptor(U *), 0) != -1) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair* p; + if (SWIG_ConvertPtr($input,(void **) &p, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // specializations for built-ins + + %define specialize_std_pair_on_first(T,CHECK,CONVERT_FROM,CONVERT_TO) + template struct pair { + %typemap(in) pair (std::pair* m) { + if (SCHEME_PAIRP($input)) { + U* y; + Scheme_Object *first, *second; + first = scheme_car($input); + second = scheme_cdr($input); + if (!CHECK(first)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0); + $1 = std::make_pair(CONVERT_FROM(first),*y); + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const pair& (std::pair temp, + std::pair* m), + const pair* (std::pair temp, + std::pair* m) { + if (SCHEME_PAIRP($input)) { + U* y; + Scheme_Object *first, *second; + first = scheme_car($input); + second = scheme_cdr($input); + if (!CHECK(first)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0); + temp = std::make_pair(CONVERT_FROM(first),*y); + $1 = &temp; + } else { + $1 = ($1_ltype) + SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) pair { + U* y = new U($1.second); + Scheme_Object* second = SWIG_NewPointerObj(y,$descriptor(U *), 1); + $result = scheme_make_pair(CONVERT_TO($1.first),second); + } + %typecheck(SWIG_TYPECHECK_PAIR) pair { + /* native pair? */ + if (SCHEME_PAIRP($input)) { + U* y; + Scheme_Object* first = scheme_car($input); + Scheme_Object* second = scheme_cdr($input); + if (CHECK(first) && + SWIG_ConvertPtr(second,(void**) &y, + $descriptor(U *), 0) != -1) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair* p; + if (SWIG_ConvertPtr($input,(void **) &p, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_PAIR) const pair&, + const pair* { + /* native pair? */ + if (SCHEME_PAIRP($input)) { + U* y; + Scheme_Object* first = scheme_car($input); + Scheme_Object* second = scheme_cdr($input); + if (CHECK(first) && + SWIG_ConvertPtr(second,(void**) &y, + $descriptor(U *), 0) != -1) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair* p; + if (SWIG_ConvertPtr($input,(void **) &p, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + %enddef + + %define specialize_std_pair_on_second(U,CHECK,CONVERT_FROM,CONVERT_TO) + template struct pair { + %typemap(in) pair (std::pair* m) { + if (SCHEME_PAIRP($input)) { + T* x; + Scheme_Object *first, *second; + first = scheme_car($input); + second = scheme_cdr($input); + x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0); + if (!CHECK(second)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + $1 = std::make_pair(*x,CONVERT_FROM(second)); + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const pair& (std::pair temp, + std::pair* m), + const pair* (std::pair temp, + std::pair* m) { + if (SCHEME_PAIRP($input)) { + T* x; + Scheme_Object *first, *second; + first = scheme_car($input); + second = scheme_cdr($input); + x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0); + if (!CHECK(second)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + temp = std::make_pair(*x,CONVERT_FROM(second)); + $1 = &temp; + } else { + $1 = ($1_ltype) + SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) pair { + T* x = new T($1.first); + Scheme_Object* first = SWIG_NewPointerObj(x,$descriptor(T *), 1); + $result = scheme_make_pair(first,CONVERT_TO($1.second)); + } + %typecheck(SWIG_TYPECHECK_PAIR) pair { + /* native pair? */ + if (SCHEME_PAIRP($input)) { + T* x; + Scheme_Object* first = scheme_car($input); + Scheme_Object* second = scheme_cdr($input); + if (SWIG_ConvertPtr(first,(void**) &x, + $descriptor(T *), 0) != -1 && + CHECK(second)) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair* p; + if (SWIG_ConvertPtr($input,(void **) &p, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_PAIR) const pair&, + const pair* { + /* native pair? */ + if (SCHEME_PAIRP($input)) { + T* x; + Scheme_Object* first = scheme_car($input); + Scheme_Object* second = scheme_cdr($input); + if (SWIG_ConvertPtr(first,(void**) &x, + $descriptor(T *), 0) != -1 && + CHECK(second)) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair* p; + if (SWIG_ConvertPtr($input,(void **) &p, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + %enddef + + %define specialize_std_pair_on_both(T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO, + U,CHECK_U,CONVERT_U_FROM,CONVERT_U_TO) + template<> struct pair { + %typemap(in) pair (std::pair* m) { + if (SCHEME_PAIRP($input)) { + Scheme_Object *first, *second; + first = scheme_car($input); + second = scheme_cdr($input); + if (!CHECK_T(first) || !CHECK_U(second)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + $1 = make_pair(CONVERT_T_FROM(first), + CONVERT_U_FROM(second)); + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const pair& (std::pair temp, + std::pair* m), + const pair* (std::pair temp, + std::pair* m) { + if (SCHEME_PAIRP($input)) { + Scheme_Object *first, *second; + T *x; + first = scheme_car($input); + second = scheme_cdr($input); + x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0); + if (!CHECK_T(first) || !CHECK_U(second)) + SWIG_exception(SWIG_TypeError, + "pair<" #T "," #U "> expected"); + temp = make_pair(CONVERT_T_FROM(first), + CONVERT_U_FROM(second)); + $1 = &temp; + } else { + $1 = ($1_ltype) + SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) pair { + $result = scheme_make_pair(CONVERT_T_TO($1.first), + CONVERT_U_TO($1.second)); + } + %typecheck(SWIG_TYPECHECK_PAIR) pair { + /* native pair? */ + if (SCHEME_PAIRP($input)) { + Scheme_Object* first = scheme_car($input); + Scheme_Object* second = scheme_cdr($input); + if (CHECK_T(first) && CHECK_U(second)) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair* p; + if (SWIG_ConvertPtr($input,(void **) &p, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_PAIR) const pair&, + const pair* { + /* native pair? */ + if (SCHEME_PAIRP($input)) { + Scheme_Object* first = scheme_car($input); + Scheme_Object* second = scheme_cdr($input); + if (CHECK_T(first) && CHECK_U(second)) { + $1 = 1; + } else { + $1 = 0; + } + } else { + /* wrapped pair? */ + std::pair* p; + if (SWIG_ConvertPtr($input,(void **) &p, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + %enddef + + + specialize_std_pair_on_first(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_first(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_first(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_first(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_first(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_first(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_first(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_first(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_first(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_first(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + + specialize_std_pair_on_second(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_second(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_second(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_second(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_second(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_second(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_second(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_second(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_second(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_second(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + bool,SCHEME_BOOLP, + SCHEME_TRUEP,swig_make_boolean); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + unsigned int,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + unsigned short,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + unsigned long,SCHEME_INTP, + SCHEME_INT_VAL,scheme_make_integer_value); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + double,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + float,SCHEME_REALP, + scheme_real_to_double,scheme_make_double); + specialize_std_pair_on_both(std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string, + std::string,SCHEME_STRINGP, + swig_scm_to_string,swig_make_string); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_string.i b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_string.i new file mode 100644 index 00000000..b19e8567 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_string.i @@ -0,0 +1,57 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * SWIG typemaps for std::string types + * ----------------------------------------------------------------------------- */ + +// ------------------------------------------------------------------------ +// std::string is typemapped by value +// This can prevent exporting methods which return a string +// in order for the user to modify it. +// However, I think I'll wait until someone asks for it... +// ------------------------------------------------------------------------ + +%include + +%{ +#include +%} + +namespace std { + + %naturalvar string; + + class string; + + /* Overloading check */ + + %typemap(typecheck) string = char *; + %typemap(typecheck) const string & = char *; + + %typemap(in) string { + if (SCHEME_STRINGP($input)) + $1.assign(SCHEME_STR_VAL($input)); + else + SWIG_exception(SWIG_TypeError, "string expected"); + } + + %typemap(in) const string & ($*1_ltype temp) { + if (SCHEME_STRINGP($input)) { + temp.assign(SCHEME_STR_VAL($input)); + $1 = &temp; + } else { + SWIG_exception(SWIG_TypeError, "string expected"); + } + } + + %typemap(out) string { + $result = scheme_make_string($1.c_str()); + } + + %typemap(out) const string & { + $result = scheme_make_string($1->c_str()); + } + +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_vector.i new file mode 100644 index 00000000..0ef5edb1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/mzscheme/std_vector.i @@ -0,0 +1,451 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * + * SWIG typemaps for std::vector + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::vector +// +// The aim of all that follows would be to integrate std::vector with +// MzScheme as much as possible, namely, to allow the user to pass and +// be returned MzScheme vectors or lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::vector), f(const std::vector&), f(const std::vector*): +// the parameter being read-only, either a MzScheme sequence or a +// previously wrapped std::vector can be passed. +// -- f(std::vector&), f(std::vector*): +// the parameter must be modified; therefore, only a wrapped std::vector +// can be passed. +// -- std::vector f(): +// the vector is returned by copy; therefore, a MzScheme vector of T:s +// is returned which is most easily used in other MzScheme functions +// -- std::vector& f(), std::vector* f(), const std::vector& f(), +// const std::vector* f(): +// the vector is returned by reference; therefore, a wrapped std::vector +// is returned +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template class vector { + %typemap(in) vector { + if (SCHEME_VECTORP($input)) { + unsigned int size = SCHEME_VEC_SIZE($input); + $1 = std::vector(size); + Scheme_Object** items = SCHEME_VEC_ELS($input); + for (unsigned int i=0; i(); + } else if (SCHEME_PAIRP($input)) { + Scheme_Object *head, *tail; + $1 = std::vector(); + tail = $input; + while (!SCHEME_NULLP(tail)) { + head = scheme_car(tail); + tail = scheme_cdr(tail); + $1.push_back(*((T*)SWIG_MustGetPtr(head, + $descriptor(T *), + $argnum, 0))); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const vector& (std::vector temp), + const vector* (std::vector temp) { + if (SCHEME_VECTORP($input)) { + unsigned int size = SCHEME_VEC_SIZE($input); + temp = std::vector(size); + $1 = &temp; + Scheme_Object** items = SCHEME_VEC_ELS($input); + for (unsigned int i=0; i(); + $1 = &temp; + } else if (SCHEME_PAIRP($input)) { + temp = std::vector(); + $1 = &temp; + Scheme_Object *head, *tail; + tail = $input; + while (!SCHEME_NULLP(tail)) { + head = scheme_car(tail); + tail = scheme_cdr(tail); + temp.push_back(*((T*) SWIG_MustGetPtr(head, + $descriptor(T *), + $argnum, 0))); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); + } + } + %typemap(out) vector { + $result = scheme_make_vector($1.size(),scheme_undefined); + Scheme_Object** els = SCHEME_VEC_ELS($result); + for (unsigned int i=0; i<$1.size(); i++) { + T* x = new T((($1_type &)$1)[i]); + els[i] = SWIG_NewPointerObj(x,$descriptor(T *), 1); + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) vector { + /* native sequence? */ + if (SCHEME_VECTORP($input)) { + unsigned int size = SCHEME_VEC_SIZE($input); + if (size == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* x; + Scheme_Object** items = SCHEME_VEC_ELS($input); + if (SWIG_ConvertPtr(items[0],(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } + } else if (SCHEME_NULLP($input)) { + /* again, an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + /* check the first element only */ + T* x; + Scheme_Object *head = scheme_car($input); + if (SWIG_ConvertPtr(head,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } else { + /* wrapped vector? */ + std::vector* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) const vector&, + const vector* { + /* native sequence? */ + if (SCHEME_VECTORP($input)) { + unsigned int size = SCHEME_VEC_SIZE($input); + if (size == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* x; + Scheme_Object** items = SCHEME_VEC_ELS($input); + if (SWIG_ConvertPtr(items[0],(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } + } else if (SCHEME_NULLP($input)) { + /* again, an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + /* check the first element only */ + T* x; + Scheme_Object *head = scheme_car($input); + if (SWIG_ConvertPtr(head,(void**) &x, + $descriptor(T *), 0) != -1) + $1 = 1; + else + $1 = 0; + } else { + /* wrapped vector? */ + std::vector* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor, 0) != -1) + $1 = 1; + else + $1 = 0; + } + } + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, const T& value); + vector(const vector& other); + + %rename(length) size; + unsigned int size() const; + %rename("empty?") empty; + bool empty() const; + %rename("clear!") clear; + void clear(); + %rename("set!") set; + %rename("pop!") pop; + %rename("push!") push_back; + void push_back(const T& x); + %extend { + T pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T x = self->back(); + self->pop_back(); + return x; + } + T& ref(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class vector { + %typemap(in) vector { + if (SCHEME_VECTORP($input)) { + unsigned int size = SCHEME_VEC_SIZE($input); + $1 = std::vector(size); + Scheme_Object** items = SCHEME_VEC_ELS($input); + for (unsigned int i=0; i", + $argnum - 1, argc, argv); + } + } else if (SCHEME_NULLP($input)) { + $1 = std::vector(); + } else if (SCHEME_PAIRP($input)) { + Scheme_Object *head, *tail; + $1 = std::vector(); + tail = $input; + while (!SCHEME_NULLP(tail)) { + head = scheme_car(tail); + tail = scheme_cdr(tail); + if (CHECK(head)) + $1.push_back((T)(CONVERT_FROM(head))); + else + scheme_wrong_type(FUNC_NAME, "vector<" #T ">", + $argnum - 1, argc, argv); + } + } else { + $1 = *(($&1_type) + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); + } + } + %typemap(in) const vector& (std::vector temp), + const vector* (std::vector temp) { + if (SCHEME_VECTORP($input)) { + unsigned int size = SCHEME_VEC_SIZE($input); + temp = std::vector(size); + $1 = &temp; + Scheme_Object** items = SCHEME_VEC_ELS($input); + for (unsigned int i=0; i", + $argnum - 1, argc, argv); + } + } else if (SCHEME_NULLP($input)) { + temp = std::vector(); + $1 = &temp; + } else if (SCHEME_PAIRP($input)) { + temp = std::vector(); + $1 = &temp; + Scheme_Object *head, *tail; + tail = $input; + while (!SCHEME_NULLP(tail)) { + head = scheme_car(tail); + tail = scheme_cdr(tail); + if (CHECK(head)) + temp.push_back((T)(CONVERT_FROM(head))); + else + scheme_wrong_type(FUNC_NAME, "vector<" #T ">", + $argnum - 1, argc, argv); + } + } else { + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum - 1, 0); + } + } + %typemap(out) vector { + $result = scheme_make_vector($1.size(),scheme_undefined); + Scheme_Object** els = SCHEME_VEC_ELS($result); + for (unsigned int i=0; i<$1.size(); i++) + els[i] = CONVERT_TO((($1_type &)$1)[i]); + } + %typecheck(SWIG_TYPECHECK_VECTOR) vector { + /* native sequence? */ + if (SCHEME_VECTORP($input)) { + unsigned int size = SCHEME_VEC_SIZE($input); + if (size == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* x; + Scheme_Object** items = SCHEME_VEC_ELS($input); + $1 = CHECK(items[0]) ? 1 : 0; + } + } else if (SCHEME_NULLP($input)) { + /* again, an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + /* check the first element only */ + T* x; + Scheme_Object *head = scheme_car($input); + $1 = CHECK(head) ? 1 : 0; + } else { + /* wrapped vector? */ + std::vector* v; + $1 = (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor, 0) != -1) ? 1 : 0; + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) const vector&, + const vector* { + /* native sequence? */ + if (SCHEME_VECTORP($input)) { + unsigned int size = SCHEME_VEC_SIZE($input); + if (size == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* x; + Scheme_Object** items = SCHEME_VEC_ELS($input); + $1 = CHECK(items[0]) ? 1 : 0; + } + } else if (SCHEME_NULLP($input)) { + /* again, an empty sequence can be of any type */ + $1 = 1; + } else if (SCHEME_PAIRP($input)) { + /* check the first element only */ + T* x; + Scheme_Object *head = scheme_car($input); + $1 = CHECK(head) ? 1 : 0; + } else { + /* wrapped vector? */ + std::vector* v; + $1 = (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor, 0) != -1) ? 1 : 0; + } + } + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, const T& value); + vector(const vector& other); + + %rename(length) size; + unsigned int size() const; + %rename("empty?") empty; + bool empty() const; + %rename("clear!") clear; + void clear(); + %rename("set!") set; + %rename("pop!") pop; + %rename("push!") push_back; + void push_back(T x); + %extend { + T pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T x = self->back(); + self->pop_back(); + return x; + } + T ref(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/mzscheme/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/mzscheme/typemaps.i new file mode 100644 index 00000000..09bda2cc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/mzscheme/typemaps.i @@ -0,0 +1,376 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * ----------------------------------------------------------------------------- */ + +/* The MzScheme module handles all types uniformly via typemaps. Here + are the definitions. */ + +/* Pointers */ + +%typemap(in) SWIGTYPE * { + $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum, 0); +} + +%typemap(in) void * { + $1 = SWIG_MustGetPtr($input, NULL, $argnum, 0); +} + +%typemap(varin) SWIGTYPE * { + $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, 1, 0); +} + +%typemap(varin) SWIGTYPE & { + $1 = *(($1_ltype)SWIG_MustGetPtr($input, $descriptor, 1, 0)); +} + +%typemap(varin) SWIGTYPE && { + $1 = *(($1_ltype)SWIG_MustGetPtr($input, $descriptor, 1, 0)); +} + +%typemap(varin) SWIGTYPE [ANY] { + void *temp; + int ii; + $1_basetype *b = 0; + temp = SWIG_MustGetPtr($input, $1_descriptor, 1, 0); + b = ($1_basetype *) $1; + for (ii = 0; ii < $1_size; ii++) b[ii] = *(($1_basetype *) temp + ii); +} + + +%typemap(varin) void * { + $1 = SWIG_MustGetPtr($input, NULL, 1, 0); +} + +%typemap(out) SWIGTYPE * { + $result = SWIG_NewPointerObj ($1, $descriptor, $owner); +} + +%typemap(out) SWIGTYPE *DYNAMIC { + swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor,(void **) &$1); + $result = SWIG_NewPointerObj ($1, ty, $owner); +} + +%typemap(varout) SWIGTYPE *, SWIGTYPE [] { + $result = SWIG_NewPointerObj ($1, $descriptor, 0); +} + +%typemap(varout) SWIGTYPE & { + $result = SWIG_NewPointerObj((void *) &$1, $1_descriptor, 0); +} + +%typemap(varout) SWIGTYPE && { + $result = SWIG_NewPointerObj((void *) &$1, $1_descriptor, 0); +} + +/* C++ References */ + +#ifdef __cplusplus + +%typemap(in) SWIGTYPE &, SWIGTYPE && { + $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum, 0); + if ($1 == NULL) scheme_signal_error("swig-type-error (null reference)"); +} + +%typemap(out) SWIGTYPE &, SWIGTYPE && { + $result = SWIG_NewPointerObj ($1, $descriptor, $owner); +} + +%typemap(out) SWIGTYPE &DYNAMIC { + swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor,(void **) &$1); + $result = SWIG_NewPointerObj ($1, ty, $owner); +} + +#endif + +/* Arrays */ + +%typemap(in) SWIGTYPE[] { + $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum, 0); +} + +%typemap(out) SWIGTYPE[] { + $result = SWIG_NewPointerObj ($1, $descriptor, $owner); +} + +/* Enums */ +%typemap(in) enum SWIGTYPE { + if (!SWIG_is_integer($input)) + scheme_wrong_type(FUNC_NAME, "integer", $argnum - 1, argc, argv); + $1 = ($1_type) SWIG_convert_int($input); +} + +%typemap(varin) enum SWIGTYPE { + if (!SWIG_is_integer($input)) + scheme_wrong_type(FUNC_NAME, "integer", 0, argc, argv); + $1 = ($1_type) SWIG_convert_int($input); +} + +%typemap(out) enum SWIGTYPE "$result = scheme_make_integer_value($1);"; +%typemap(varout) enum SWIGTYPE "$result = scheme_make_integer_value($1);"; + + +/* Pass-by-value */ + +%typemap(in) SWIGTYPE($&1_ltype argp) { + argp = ($&1_ltype) SWIG_MustGetPtr($input, $&1_descriptor, $argnum, 0); + $1 = *argp; +} + +%typemap(varin) SWIGTYPE { + $&1_ltype argp; + argp = ($&1_ltype) SWIG_MustGetPtr($input, $&1_descriptor, 1, 0); + $1 = *argp; +} + + +%typemap(out) SWIGTYPE +#ifdef __cplusplus +{ + $&1_ltype resultptr; + resultptr = new $1_ltype(($1_ltype &) $1); + $result = SWIG_NewPointerObj (resultptr, $&1_descriptor, 1); +} +#else +{ + $&1_ltype resultptr; + resultptr = ($&1_ltype) malloc(sizeof($1_type)); + memmove(resultptr, &$1, sizeof($1_type)); + $result = SWIG_NewPointerObj(resultptr, $&1_descriptor, 1); +} +#endif + +%typemap(varout) SWIGTYPE +#ifdef __cplusplus +{ + $&1_ltype resultptr; + resultptr = new $1_ltype(($1_ltype &) $1); + $result = SWIG_NewPointerObj (resultptr, $&1_descriptor, 0); +} +#else +{ + $&1_ltype resultptr; + resultptr = ($&1_ltype) malloc(sizeof($1_type)); + memmove(resultptr, &$1, sizeof($1_type)); + $result = SWIG_NewPointerObj(resultptr, $&1_descriptor, 0); +} +#endif + +/* The SIMPLE_MAP macro below defines the whole set of typemaps needed + for simple types. */ + +%define SIMPLE_MAP(C_NAME, MZ_PREDICATE, MZ_TO_C, C_TO_MZ, MZ_NAME) +%typemap(in) C_NAME { + if (!MZ_PREDICATE($input)) + scheme_wrong_type(FUNC_NAME, #MZ_NAME, $argnum - 1, argc, argv); + $1 = MZ_TO_C($input); +} +%typemap(varin) C_NAME { + if (!MZ_PREDICATE($input)) + scheme_wrong_type(FUNC_NAME, #MZ_NAME, 0, argc, argv); + $1 = MZ_TO_C($input); +} +%typemap(out) C_NAME { + $result = C_TO_MZ($1); +} +%typemap(varout) C_NAME { + $result = C_TO_MZ($1); +} +%typemap(in) C_NAME *INPUT (C_NAME temp) { + temp = (C_NAME) MZ_TO_C($input); + $1 = &temp; +} +%typemap(in,numinputs=0) C_NAME *OUTPUT (C_NAME temp) { + $1 = &temp; +} +%typemap(argout) C_NAME *OUTPUT { + Scheme_Object *s; + s = C_TO_MZ(*$1); + SWIG_APPEND_VALUE(s); +} +%typemap(in) C_NAME *BOTH = C_NAME *INPUT; +%typemap(argout) C_NAME *BOTH = C_NAME *OUTPUT; +%typemap(in) C_NAME *INOUT = C_NAME *INPUT; +%typemap(argout) C_NAME *INOUT = C_NAME *OUTPUT; +%enddef + +SIMPLE_MAP(bool, SCHEME_BOOLP, SCHEME_TRUEP, + swig_make_boolean, boolean); +SIMPLE_MAP(char, SCHEME_CHARP, SCHEME_CHAR_VAL, + scheme_make_character, character); +SIMPLE_MAP(unsigned char, SCHEME_CHARP, SCHEME_CHAR_VAL, + scheme_make_character, character); +SIMPLE_MAP(int, SWIG_is_integer, SWIG_convert_int, + scheme_make_integer_value, integer); +SIMPLE_MAP(short, SWIG_is_integer, SWIG_convert_short, + scheme_make_integer_value, integer); +SIMPLE_MAP(long, SWIG_is_integer, SWIG_convert_long, + scheme_make_integer_value, integer); +SIMPLE_MAP(ptrdiff_t, SWIG_is_integer, SWIG_convert_long, + scheme_make_integer_value, integer); +SIMPLE_MAP(unsigned int, SWIG_is_unsigned_integer, SWIG_convert_unsigned_int, + scheme_make_integer_value_from_unsigned, integer); +SIMPLE_MAP(unsigned short, SWIG_is_unsigned_integer, SWIG_convert_unsigned_short, + scheme_make_integer_value_from_unsigned, integer); +SIMPLE_MAP(unsigned long, SWIG_is_unsigned_integer, SWIG_convert_unsigned_long, + scheme_make_integer_value_from_unsigned, integer); +SIMPLE_MAP(size_t, SWIG_is_unsigned_integer, SWIG_convert_unsigned_long, + scheme_make_integer_value_from_unsigned, integer); +SIMPLE_MAP(float, SCHEME_REALP, scheme_real_to_double, + scheme_make_double, real); +SIMPLE_MAP(double, SCHEME_REALP, scheme_real_to_double, + scheme_make_double, real); + +SIMPLE_MAP(char *, SCHEME_STRINGP, SCHEME_STR_VAL, + SCHEME_MAKE_STRING, string); +SIMPLE_MAP(const char *, SCHEME_STRINGP, SCHEME_STR_VAL, + SCHEME_MAKE_STRING, string); + +/* For MzScheme 30x: Use these typemaps if you are not going to use + UTF8 encodings in your C code. + SIMPLE_MAP(char *,SCHEME_BYTE_STRINGP, SCHEME_BYTE_STR_VAL, + scheme_make_byte_string_without_copying,bytestring); + SIMPLE_MAP(const char *,SCHEME_BYTE_STRINGP, SCHEME_BYTE_STR_VAL, + scheme_make_byte_string_without_copying,bytestring); +*/ + +/* Const primitive references. Passed by value */ + +%define REF_MAP(C_NAME, MZ_PREDICATE, MZ_TO_C, C_TO_MZ, MZ_NAME) + %typemap(in) const C_NAME & (C_NAME temp) { + if (!MZ_PREDICATE($input)) + scheme_wrong_type(FUNC_NAME, #MZ_NAME, $argnum - 1, argc, argv); + temp = MZ_TO_C($input); + $1 = &temp; + } + %typemap(out) const C_NAME & { + $result = C_TO_MZ(*$1); + } +%enddef + +REF_MAP(bool, SCHEME_BOOLP, SCHEME_TRUEP, + swig_make_boolean, boolean); +REF_MAP(char, SCHEME_CHARP, SCHEME_CHAR_VAL, + scheme_make_character, character); +REF_MAP(unsigned char, SCHEME_CHARP, SCHEME_CHAR_VAL, + scheme_make_character, character); +REF_MAP(int, SWIG_is_integer, SWIG_convert_int, + scheme_make_integer_value, integer); +REF_MAP(short, SWIG_is_integer, SWIG_convert_short, + scheme_make_integer_value, integer); +REF_MAP(long, SWIG_is_integer, SWIG_convert_long, + scheme_make_integer_value, integer); +REF_MAP(unsigned int, SWIG_is_unsigned_integer, SWIG_convert_unsigned_int, + scheme_make_integer_value_from_unsigned, integer); +REF_MAP(unsigned short, SWIG_is_unsigned_integer, SWIG_convert_unsigned_short, + scheme_make_integer_value_from_unsigned, integer); +REF_MAP(unsigned long, SWIG_is_unsigned_integer, SWIG_convert_unsigned_long, + scheme_make_integer_value_from_unsigned, integer); +REF_MAP(float, SCHEME_REALP, scheme_real_to_double, + scheme_make_double, real); +REF_MAP(double, SCHEME_REALP, scheme_real_to_double, + scheme_make_double, real); + +/* Void */ + +%typemap(out) void "$result = scheme_void;"; + +/* Pass through Scheme_Object * */ + +%typemap (in) Scheme_Object * "$1=$input;"; +%typemap (out) Scheme_Object * "$result=$1;"; +%typecheck(SWIG_TYPECHECK_POINTER) Scheme_Object * "$1=1;"; + + +/* ------------------------------------------------------------ + * String & length + * ------------------------------------------------------------ */ + +//%typemap(in) (char *STRING, int LENGTH) { +// int temp; +// $1 = ($1_ltype) SWIG_Guile_scm2newstr($input, &temp); +// $2 = ($2_ltype) temp; +//} + + +/* ------------------------------------------------------------ + * Typechecking rules + * ------------------------------------------------------------ */ + +%typecheck(SWIG_TYPECHECK_INTEGER) + int, short, long, + unsigned int, unsigned short, unsigned long, + signed char, unsigned char, + long long, unsigned long long, + const int &, const short &, const long &, + const unsigned int &, const unsigned short &, const unsigned long &, + const long long &, const unsigned long long &, + enum SWIGTYPE +{ + $1 = (SWIG_is_integer($input)) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_BOOL) bool, bool &, const bool & +{ + $1 = (SCHEME_BOOLP($input)) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_DOUBLE) + float, double, + const float &, const double & +{ + $1 = (SCHEME_REALP($input)) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_STRING) char { + $1 = (SCHEME_STRINGP($input)) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_STRING) char * { + $1 = (SCHEME_STRINGP($input)) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE [] { + void *ptr; + if (SWIG_ConvertPtr($input, (void **) &ptr, $1_descriptor, 0)) { + $1 = 0; + } else { + $1 = 1; + } +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE &, SWIGTYPE && { + void *ptr; + if (SWIG_ConvertPtr($input, (void **) &ptr, $1_descriptor, SWIG_POINTER_NO_NULL)) { + $1 = 0; + } else { + $1 = 1; + } +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE { + void *ptr; + if (SWIG_ConvertPtr($input, (void **) &ptr, $&1_descriptor, SWIG_POINTER_NO_NULL)) { + $1 = 0; + } else { + $1 = 1; + } +} + +%typecheck(SWIG_TYPECHECK_VOIDPTR) void * { + void *ptr; + if (SWIG_ConvertPtr($input, (void **) &ptr, 0, 0)) { + $1 = 0; + } else { + $1 = 1; + } +} + + +/* Array reference typemaps */ +%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } +%apply SWIGTYPE && { SWIGTYPE ((&&)[ANY]) } + +/* const pointers */ +%apply SWIGTYPE * { SWIGTYPE *const } + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/carray.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/carray.i new file mode 100644 index 00000000..5e74c3da --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/carray.i @@ -0,0 +1,131 @@ +%insert(mli) %{ +type _value = c_obj +%} + +%insert(ml) %{ +type _value = c_obj +%} + +%define %array_tmap_out(type,what,out_f) +%typemap(type) what [ANY] { + int i; + $result = caml_array_new($1_dim0); + for( i = 0; i < $1_dim0; i++ ) { + caml_array_set($result,i,out_f($1[i])); + } +} +%enddef + +%define %array_tmap_in(type,what,in_f) +%typemap(type) what [ANY] { + int i; + $1 = ($*1_type *)malloc( $1_size ); + for( i = 0; i < $1_dim0 && i < caml_array_len($input); i++ ) { + $1[i] = in_f(caml_array_nth($input,i)); + } +} + +%typemap(free) what [ANY] { + free( (void *)$1 ); +} +%enddef + +%define %make_simple_array_typemap(type,out_f,in_f) +%array_tmap_out(out,type,out_f); +%array_tmap_out(varout,type,out_f); +%array_tmap_out(directorin,type,out_f); + +%array_tmap_in(in,type,in_f); +%array_tmap_in(varin,type,in_f); +%array_tmap_in(directorout,type,in_f); +%enddef + +%make_simple_array_typemap(bool,caml_val_bool,caml_long_val); +%make_simple_array_typemap(short,caml_val_short,caml_long_val); +%make_simple_array_typemap(unsigned short,caml_val_ushort,caml_long_val); +%make_simple_array_typemap(int,caml_val_int,caml_long_val); +%make_simple_array_typemap(unsigned int,caml_val_uint,caml_long_val); +%make_simple_array_typemap(long,caml_val_long,caml_long_val); +%make_simple_array_typemap(unsigned long,caml_val_ulong,caml_long_val); +%make_simple_array_typemap(size_t,caml_val_int,caml_long_val); +%make_simple_array_typemap(float,caml_val_float,caml_double_val); +%make_simple_array_typemap(double,caml_val_double,caml_double_val); + +#ifdef __cplusplus +%typemap(in) SWIGTYPE [] { + int i; + + $1 = new $*1_type [$1_dim0]; + for( i = 0; i < $1_dim0 && i < caml_array_len($input); i++ ) { + $1[i] = *(($*1_ltype *) + caml_ptr_val(caml_array_nth($input,i), + $*1_descriptor)) ; + } +} +#else +%typemap(in) SWIGTYPE [] { + int i; + + $1 = ($*1_type *)malloc( $1_size ); + for( i = 0; i < $1_dim0 && i < caml_array_len($input); i++ ) { + $1[i] = *(($*1_ltype) + caml_ptr_val(caml_array_nth($input), + $*1_descriptor)); + } +} +#endif + +%typemap(out) SWIGTYPE [] { + int i; + CAML_VALUE *fromval = caml_named_value("create_$ntype_from_ptr"); + $result = caml_array_new($1_dim0); + + for( i = 0; i < $1_dim0; i++ ) { + if( fromval ) { + caml_array_set + ($result, + i, + caml_callback(*fromval,caml_val_ptr((void *)&$1[i],$*1_descriptor))); + } else { + caml_array_set + ($result, + i, + caml_val_ptr ((void *)&$1[i],$&1_descriptor)); + } + } +} + +%typemap(in) enum SWIGTYPE [] { + int i; + + $1 = ($*1_type *)malloc( $1_size ); + for( i = 0; i < $1_dim0 && i < caml_array_len($input); i++ ) { + $1[i] = ($type) + caml_long_val_full(caml_array_nth($input), + "$type_marker"); + } +} + +%typemap(out) enum SWIGTYPE [] { + int i; + $result = caml_array_new($1_dim0); + + for( i = 0; i < $1_dim0; i++ ) { + caml_array_set + ($result, + i, + caml_callback2(*caml_named_value(SWIG_MODULE "_int_to_enum"), + *caml_named_value("$type_marker"), + Val_int($1[i]))); + } +} + +#ifdef __cplusplus +%typemap(freearg) SWIGTYPE [ANY] { + delete [] $1; +} +#else +%typemap(freearg) SWIGTYPE [ANY] { + free( (void *)$1 ); +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/class.swg b/macx64/bin/swig/share/swig/4.0.0/ocaml/class.swg new file mode 100644 index 00000000..eb369cd7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/class.swg @@ -0,0 +1,67 @@ +(*Stream:class_ctors*) +let create_$classname_from_ptr raw_ptr = + C_obj +begin + let h = Hashtbl.create 20 in + List.iter (fun (nm,fn) -> Hashtbl.replace h nm fn) + [ "nop", (fun args -> C_void) ; + $classbody + "&", (fun args -> raw_ptr) ; + ":parents", + (fun args -> + C_list + (let out = ref [] in + Hashtbl.iter (fun x y -> out := (x,y) :: !out) h ; + (List.map + (fun (x,y) -> + C_string (String.sub x 2 ((String.length x) - 2))) + (List.filter + (fun (x,y) -> + ((String.length x) > 2) + && x.[0] == ':' && x.[1] == ':') !out)))) ; + ":classof", (fun args -> C_string "$realname") ; + ":methods", (fun args -> + C_list (let out = ref [] in + Hashtbl.iter (fun x y -> out := (C_string x) :: !out) h ; !out)) + ] ; + let rec invoke_inner raw_ptr mth arg = + begin + try + let application = Hashtbl.find h mth in + application + (match arg with + C_list l -> (C_list (raw_ptr :: l)) + | C_void -> (C_list [ raw_ptr ]) + | v -> (C_list [ raw_ptr ; v ])) + with Not_found -> + (* Try parent classes *) + begin + let parent_classes = [ + $baselist + ] in + let rec try_parent plist raw_ptr = + match plist with + p :: tl -> + begin + try + (invoke (p raw_ptr)) mth arg + with (BadMethodName (p,m,s)) -> + try_parent tl raw_ptr + end + | [] -> + raise (BadMethodName (raw_ptr,mth,"$realname")) + in try_parent parent_classes raw_ptr + end + end in + (fun mth arg -> invoke_inner raw_ptr mth arg) +end + +let _ = register_class_byname "$realname" create_$classname_from_ptr +let _ = Callback.register + "create_$normalized_from_ptr" + create_$classname_from_ptr + + +(*Stream:mli*) +val create_$classname_from_ptr : c_obj -> c_obj + diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/cstring.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/cstring.i new file mode 100644 index 00000000..f1190ad5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/cstring.i @@ -0,0 +1,268 @@ +/* ----------------------------------------------------------------------------- + * cstring.i + * + * This file provides typemaps and macros for dealing with various forms + * of C character string handling. The primary use of this module + * is in returning character data that has been allocated or changed in + * some way. + * ----------------------------------------------------------------------------- */ + +/* %cstring_input_binary(TYPEMAP, SIZE) + * + * Macro makes a function accept binary string data along with + * a size. + */ + +%define %cstring_input_binary(TYPEMAP, SIZE) +%apply (char *STRING, int LENGTH) { (TYPEMAP, SIZE) }; +%enddef + +/* + * %cstring_bounded_output(TYPEMAP, MAX) + * + * This macro is used to return a NULL-terminated output string of + * some maximum length. For example: + * + * %cstring_bounded_output(char *outx, 512); + * void foo(char *outx) { + * sprintf(outx,"blah blah\n"); + * } + * + */ + +%define %cstring_bounded_output(TYPEMAP,MAX) +%typemap(ignore) TYPEMAP(char temp[MAX+1]) { + $1 = ($1_ltype) temp; +} +%typemap(argout) TYPEMAP { + $1[MAX] = 0; + $result = caml_list_append($result,caml_val_string(str)); +} +%enddef + +/* + * %cstring_chunk_output(TYPEMAP, SIZE) + * + * This macro is used to return a chunk of binary string data. + * Embedded NULLs are okay. For example: + * + * %cstring_chunk_output(char *outx, 512); + * void foo(char *outx) { + * memmove(outx, somedata, 512); + * } + * + */ + +%define %cstring_chunk_output(TYPEMAP,SIZE) +%typemap(ignore) TYPEMAP(char temp[SIZE]) { + $1 = ($1_ltype) temp; +} +%typemap(argout) TYPEMAP { + $result = caml_list_append($result,caml_val_string_len($1,SIZE)); +} +%enddef + +/* + * %cstring_bounded_mutable(TYPEMAP, SIZE) + * + * This macro is used to wrap a string that's going to mutate. + * + * %cstring_bounded_mutable(char *in, 512); + * void foo(in *x) { + * while (*x) { + * *x = toupper(*x); + * x++; + * } + * } + * + */ + + +%define %cstring_bounded_mutable(TYPEMAP,MAX) +%typemap(in) TYPEMAP(char temp[MAX+1]) { + char *t = (char *)caml_ptr_val($input); + strncpy(temp,t,MAX); + $1 = ($1_ltype) temp; +} +%typemap(argout) TYPEMAP { + $result = caml_list_append($result,caml_val_string_len($1,MAX)); +} +%enddef + +/* + * %cstring_mutable(TYPEMAP [, expansion]) + * + * This macro is used to wrap a string that will mutate in place. + * It may change size up to a user-defined expansion. + * + * %cstring_mutable(char *in); + * void foo(in *x) { + * while (*x) { + * *x = toupper(*x); + * x++; + * } + * } + * + */ + +%define %cstring_mutable(TYPEMAP,...) +%typemap(in) TYPEMAP { + char *t = String_val($input); + int n = caml_string_length($input); + $1 = ($1_ltype) t; +#if #__VA_ARGS__ == "" +#ifdef __cplusplus + $1 = ($1_ltype) new char[n+1]; +#else + $1 = ($1_ltype) malloc(n+1); +#endif +#else +#ifdef __cplusplus + $1 = ($1_ltype) new char[n+1+__VA_ARGS__]; +#else + $1 = ($1_ltype) malloc(n+1+__VA_ARGS__); +#endif +#endif + memmove($1,t,n); + $1[n] = 0; +} + +%typemap(argout) TYPEMAP { + $result = caml_list_append($result,caml_val_string($1)); +#ifdef __cplusplus + delete[] $1; +#else + free($1); +#endif +} +%enddef + +/* + * %cstring_output_maxsize(TYPEMAP, SIZE) + * + * This macro returns data in a string of some user-defined size. + * + * %cstring_output_maxsize(char *outx, int max) { + * void foo(char *outx, int max) { + * sprintf(outx,"blah blah\n"); + * } + */ + +%define %cstring_output_maxsize(TYPEMAP, SIZE) +%typemap(in) (TYPEMAP, SIZE) { + $2 = caml_val_long($input); +#ifdef __cplusplus + $1 = ($1_ltype) new char[$2+1]; +#else + $1 = ($1_ltype) malloc($2+1); +#endif +} +%typemap(argout) (TYPEMAP,SIZE) { + $result = caml_list_append($result,caml_val_string($1)); +#ifdef __cplusplus + delete [] $1; +#else + free($1); +#endif +} +%enddef + +/* + * %cstring_output_withsize(TYPEMAP, SIZE) + * + * This macro is used to return character data along with a size + * parameter. + * + * %cstring_output_maxsize(char *outx, int *max) { + * void foo(char *outx, int *max) { + * sprintf(outx,"blah blah\n"); + * *max = strlen(outx); + * } + */ + +%define %cstring_output_withsize(TYPEMAP, SIZE) +%typemap(in) (TYPEMAP, SIZE) { + int n = caml_val_long($input); +#ifdef __cplusplus + $1 = ($1_ltype) new char[n+1]; + $2 = ($2_ltype) new $*1_ltype; +#else + $1 = ($1_ltype) malloc(n+1); + $2 = ($2_ltype) malloc(sizeof($*1_ltype)); +#endif + *$2 = n; +} +%typemap(argout) (TYPEMAP,SIZE) { + $result = caml_list_append($result,caml_val_string_len($1,$2)); +#ifdef __cplusplus + delete [] $1; + delete $2; +#else + free($1); + free($2); +#endif +} +%enddef + +/* + * %cstring_output_allocate(TYPEMAP, RELEASE) + * + * This macro is used to return character data that was + * allocated with new or malloc. + * + * %cstring_output_allocated(char **outx, free($1)); + * void foo(char **outx) { + * *outx = (char *) malloc(512); + * sprintf(outx,"blah blah\n"); + * } + */ + +%define %cstring_output_allocate(TYPEMAP, RELEASE) +%typemap(ignore) TYPEMAP($*1_ltype temp = 0) { + $1 = &temp; +} + +%typemap(argout) TYPEMAP { + if (*$1) { + $result = caml_list_append($result,caml_val_string($1)); + RELEASE; + } else { + $result = caml_list_append($result,caml_val_ptr($1)); + } +} +%enddef + +/* + * %cstring_output_allocate_size(TYPEMAP, SIZE, RELEASE) + * + * This macro is used to return character data that was + * allocated with new or malloc. + * + * %cstring_output_allocated(char **outx, int *sz, free($1)); + * void foo(char **outx, int *sz) { + * *outx = (char *) malloc(512); + * sprintf(outx,"blah blah\n"); + * *sz = strlen(outx); + * } + */ + +%define %cstring_output_allocate_size(TYPEMAP, SIZE, RELEASE) +%typemap(ignore) (TYPEMAP, SIZE) ($*1_ltype temp = 0, $*2_ltype tempn) { + $1 = &temp; + $2 = &tempn; +} + +%typemap(argout)(TYPEMAP,SIZE) { + if (*$1) { + $result = caml_list_append($result,caml_val_string_len($1,$2)); + RELEASE; + } else + $result = caml_list_append($result,caml_val_ptr($1)); +} +%enddef + + + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/director.swg b/macx64/bin/swig/share/swig/4.0.0/ocaml/director.swg new file mode 100644 index 00000000..eb91aaf4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/director.swg @@ -0,0 +1,101 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that Ocaml proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#include +#include + +# define SWIG_DIRECTOR_CAST(ARG) dynamic_cast(ARG) + +namespace Swig { + /* base class for director exceptions */ + class DirectorException : public std::exception { + protected: + std::string swig_msg; + + public: + DirectorException(const char *msg="") : swig_msg(msg) { + } + + virtual ~DirectorException() throw() { + } + + const char *what() const throw() { + return swig_msg.c_str(); + } + }; + + /* type mismatch in the return value from a Ocaml method call */ + class DirectorTypeMismatchException : public DirectorException { + public: + DirectorTypeMismatchException(const char *msg="") : DirectorException(msg) { + } + }; + + /* any Ocaml exception that occurs during a director method call */ + class DirectorMethodException : public DirectorException {}; + + /* attempt to call a pure virtual method via a director method */ + class DirectorPureVirtualException : public DirectorException { + public: + DirectorPureVirtualException(const char *msg="") : DirectorException(msg) { + } + + static void raise(const char *msg) { + throw DirectorPureVirtualException(msg); + } + }; + + /* simple thread abstraction for pthreads on win32 */ +#ifdef __THREAD__ +#define __PTHREAD__ +#if defined(_WIN32) || defined(__WIN32__) +#define pthread_mutex_lock EnterCriticalSection +#define pthread_mutex_unlock LeaveCriticalSection +#define pthread_mutex_t CRITICAL_SECTION +#define MUTEX_INIT(var) CRITICAL_SECTION var +#else +#include +#define MUTEX_INIT(var) pthread_mutex_t var = PTHREAD_MUTEX_INITIALIZER +#endif +#endif + + /* director base class */ + class Director { + private: + /* pointer to the wrapped ocaml object */ + CAML_VALUE swig_self; + /* flag indicating whether the object is owned by ocaml or c++ */ + mutable bool swig_disown_flag; + + public: + /* wrap a ocaml object. */ + Director(CAML_VALUE self) : swig_self(self), swig_disown_flag(false) { + caml_register_global_root(&swig_self); + } + + /* discard our reference at destruction */ + virtual ~Director() { + caml_remove_global_root(&swig_self); + swig_disown(); + // Disown is safe here because we're just divorcing a reference that points to us. + } + + /* return a pointer to the wrapped ocaml object */ + CAML_VALUE swig_get_self() const { + return swig_self; + } + + /* acquire ownership of the wrapped ocaml object (the sense of "disown" is from ocaml) */ + void swig_disown() const { + if (!swig_disown_flag) { + swig_disown_flag=true; + caml_callback(*caml_named_value("caml_obj_disown"),swig_self); + } + } + }; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/ocaml.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/ocaml.i new file mode 100644 index 00000000..96a36c8b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/ocaml.i @@ -0,0 +1,54 @@ +/* ----------------------------------------------------------------------------- + * ocaml.i + * + * SWIG Configuration File for Ocaml + * ----------------------------------------------------------------------------- */ + +/* Insert common stuff */ +%insert(runtime) "swigrun.swg" + +/* Include headers */ +%insert(runtime) "ocamldec.swg" + +/* Type registration */ +%insert(init) "swiginit.swg" +%insert(init) "typeregister.swg" + +%insert(mlitail) %{ + val swig_val : c_enum_type -> c_obj -> Swig.c_obj +%} + +%insert(mltail) %{ + let rec swig_val t v = + match v with + C_enum e -> enum_to_int t v + | C_list l -> Swig.C_list (List.map (swig_val t) l) + | C_array a -> Swig.C_array (Array.map (swig_val t) a) + | _ -> Obj.magic v +%} + +/*#ifndef SWIG_NOINCLUDE*/ +%insert(runtime) "ocaml.swg" +/*#endif*/ + +%insert(classtemplate) "class.swg" + +/* Definitions */ +#define SWIG_malloc(size) swig_malloc(size, FUNC_NAME) +#define SWIG_free(mem) free(mem) + +/* Read in standard typemaps. */ +%include +%include +%include +%include +%include + +/* ocaml keywords */ +/* There's no need to use this, because of my rewriting machinery. C++ + * words never collide with ocaml keywords */ + +/* still we include the file, but the warning says that the offending + name will be properly renamed. Just to let the user to know about + it. */ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/ocaml.swg b/macx64/bin/swig/share/swig/4.0.0/ocaml/ocaml.swg new file mode 100644 index 00000000..3d552cc5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/ocaml.swg @@ -0,0 +1,607 @@ +/* -*-c-*- */ + +/* SWIG pointer structure */ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define C_bool 0 +#define C_char 1 +#define C_uchar 2 +#define C_short 3 +#define C_ushort 4 +#define C_int 5 +#define C_uint 6 +#define C_int32 7 +#define C_int64 8 +#define C_float 9 +#define C_double 10 +#define C_ptr 11 +#define C_array 12 +#define C_list 13 +#define C_obj 14 +#define C_string 15 +#define C_enum 16 +#define C_director_core 17 + + +/* Cast a pointer if possible; returns 1 if successful */ + + SWIGINTERN int + SWIG_Cast (void *source, swig_type_info *source_type, + void **ptr, swig_type_info *dest_type) + { + if( !source ) { /* Special case for NULL. This is a popular question + for other modules on the list, so I want an easy way out... */ + *ptr = 0; + return 0; + } + +#ifdef TYPE_CAST_VERBOSE + fprintf( stderr, "Trying to cast %s to %s\n", + source_type ? source_type->str : "", + dest_type ? dest_type->str : "" ); +#endif + if (dest_type != source_type) { + /* We have a type mismatch. Will have to look through our type + mapping table to figure out whether or not we can accept this + datatype. + -- + Ignore typechecks for void *. Allow any conversion. */ + if( !dest_type || !source_type || + !strcmp(dest_type->name,"_p_void") || + !strcmp(source_type->name,"_p_void") ) { + *ptr = source; + return 0; + } else { + swig_cast_info *tc = + SWIG_TypeCheckStruct(source_type, dest_type ); +#ifdef TYPE_CAST_VERBOSE + fprintf( stderr, "Typecheck -> %s\n", + tc ? tc->type->str : "" ); +#endif + if( tc ) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc, source, &newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + return 0; + } else + return -1; + } + } else { + *ptr = source; + return 0; + } + } + +/* Return 0 if successful. */ + SWIGINTERN int + SWIG_GetPtr(void *inptr, void **outptr, + swig_type_info *intype, swig_type_info *outtype) { + if (intype) { + return SWIG_Cast(inptr, intype, + outptr, outtype) == -1; + } else { + *outptr = inptr; + return 0; + } + } + + SWIGINTERN void caml_print_list( CAML_VALUE v ); + + SWIGINTERN void caml_print_val( CAML_VALUE v ) { + switch( SWIG_Tag_val(v) ) { + case C_bool: + if( Bool_val(SWIG_Field(v,0)) ) fprintf( stderr, "true " ); + else fprintf( stderr, "false " ); + break; + case C_char: + case C_uchar: + fprintf( stderr, "'%c' (\\%03d) ", + (Int_val(SWIG_Field(v,0)) >= ' ' && + Int_val(SWIG_Field(v,0)) < 127) ? Int_val(SWIG_Field(v,0)) : '.', + Int_val(SWIG_Field(v,0)) ); + break; + case C_short: + case C_ushort: + case C_int: + fprintf( stderr, "%d ", (int)caml_long_val(v) ); + break; + + case C_uint: + case C_int32: + fprintf( stderr, "%ud ", (unsigned int)caml_long_val(v) ); + break; + case C_int64: + fprintf( stderr, "%ld ", caml_long_val(v) ); + break; + case C_float: + case C_double: + fprintf( stderr, "%f ", caml_double_val(v) ); + break; + + case C_ptr: + { + void *vout = 0; + swig_type_info *ty = (swig_type_info *)(long)SWIG_Int64_val(SWIG_Field(v,1)); + caml_ptr_val_internal(v,&vout,0); + fprintf( stderr, "PTR(%p,%s) ", + vout, + ty ? ty->name : "(null)" ); + } + break; + case C_array: + { + unsigned int i; + for( i = 0; i < Wosize_val( SWIG_Field(v,0) ); i++ ) + caml_print_val( SWIG_Field(SWIG_Field(v,0),i) ); + } + break; + case C_list: + caml_print_list( SWIG_Field(v,0) ); + break; + case C_obj: + fprintf( stderr, "OBJ(%p) ", (void *)SWIG_Field(v,0) ); + break; + case C_string: + { + void *cout; + caml_ptr_val_internal(v,&cout,0); + fprintf( stderr, "'%s' ", (char *)cout ); + } + break; + } + } + + SWIGINTERN void caml_print_list( CAML_VALUE v ) { + CAMLparam1(v); + while( v && Is_block(v) ) { + fprintf( stderr, "[ " ); + caml_print_val( SWIG_Field(v,0) ); + fprintf( stderr, "]\n" ); + v = SWIG_Field(v,1); + } + CAMLreturn0; + } + + SWIGINTERN CAML_VALUE caml_list_nth( CAML_VALUE lst, int n ) { + CAMLparam1(lst); + int i = 0; + while( i < n && lst && Is_block(lst) ) { + i++; lst = SWIG_Field(lst,1); + } + if( lst == Val_unit ) CAMLreturn(Val_unit); + else CAMLreturn(SWIG_Field(lst,0)); + } + + SWIGINTERN CAML_VALUE caml_list_append( CAML_VALUE lst, CAML_VALUE elt ) { + CAMLparam2(lst,elt); + SWIG_CAMLlocal3(v,vt,lh); + lh = Val_unit; + v = Val_unit; + + /* Appending C_void should have no effect */ + if( !Is_block(elt) ) return lst; + + while( lst && Is_block(lst) ) { + if( v && v != Val_unit ) { + vt = caml_alloc_tuple(2); + SWIG_Store_field(v,1,vt); + v = vt; + } else { + v = lh = caml_alloc_tuple(2); + } + SWIG_Store_field(v,0,SWIG_Field(lst,0)); + lst = SWIG_Field(lst,1); + } + + if( v && Is_block(v) ) { + vt = caml_alloc_tuple(2); + SWIG_Store_field(v,1,vt); + v = vt; + } else { + v = lh = caml_alloc_tuple(2); + } + SWIG_Store_field(v,0,elt); + SWIG_Store_field(v,1,Val_unit); + + CAMLreturn(lh); + } + + SWIGINTERN int caml_list_length( CAML_VALUE lst ) { + CAMLparam1(lst); + int i = 0; + while( lst && Is_block(lst) ) { i++; lst = SWIG_Field(lst,1); } + CAMLreturn(i); + } + + SWIGINTERN void caml_array_set( CAML_VALUE arr, int n, CAML_VALUE item ) { + CAMLparam2(arr,item); + SWIG_Store_field(SWIG_Field(arr,0),n,item); + CAMLreturn0; + } + + SWIGINTERN value caml_array_nth( CAML_VALUE arr, int n ) { + CAMLparam1(arr); + if( SWIG_Tag_val(arr) == C_array ) + CAMLreturn(SWIG_Field(SWIG_Field(arr,0),n)); + else if( SWIG_Tag_val(arr) == C_list ) + CAMLreturn(caml_list_nth(arr,0)); + else + caml_failwith("Need array or list"); + } + + SWIGINTERN int caml_array_len( CAML_VALUE arr ) { + CAMLparam1(arr); + if( SWIG_Tag_val(arr) == C_array ) + CAMLreturn(Wosize_val(SWIG_Field(arr,0))); + else if( SWIG_Tag_val(arr) == C_list ) + CAMLreturn(caml_list_length(arr)); + else + caml_failwith("Need array or list"); + } + + SWIGINTERN CAML_VALUE caml_swig_alloc(int x,int y) { + return caml_alloc(x,y); + } + + SWIGINTERN value caml_array_new( int n ) { + CAMLparam0(); + SWIG_CAMLlocal1(vv); + vv = caml_swig_alloc(1,C_array); + SWIG_Store_field(vv,0,caml_alloc_tuple(n)); + CAMLreturn(vv); + } + + SWIGINTERN CAML_VALUE caml_val_bool( int b ) { + CAMLparam0(); + SWIG_CAMLlocal1(bv); + bv = caml_swig_alloc(1,C_bool); + SWIG_Store_field(bv,0,Val_bool(b)); + CAMLreturn(bv); + } + + SWIGINTERN CAML_VALUE caml_val_char( char c ) { + CAMLparam0(); + SWIG_CAMLlocal1(cv); + cv = caml_swig_alloc(1,C_char); + SWIG_Store_field(cv,0,Val_int(c)); + CAMLreturn(cv); + } + + SWIGINTERN CAML_VALUE caml_val_uchar( unsigned char uc ) { + CAMLparam0(); + SWIG_CAMLlocal1(ucv); + ucv = caml_swig_alloc(1,C_uchar); + SWIG_Store_field(ucv,0,Val_int(uc)); + CAMLreturn(ucv); + } + + SWIGINTERN CAML_VALUE caml_val_short( short s ) { + CAMLparam0(); + SWIG_CAMLlocal1(sv); + sv = caml_swig_alloc(1,C_short); + SWIG_Store_field(sv,0,Val_int(s)); + CAMLreturn(sv); + } + + SWIGINTERN CAML_VALUE caml_val_ushort( unsigned short us ) { + CAMLparam0(); + SWIG_CAMLlocal1(usv); + usv = caml_swig_alloc(1,C_ushort); + SWIG_Store_field(usv,0,Val_int(us)); + CAMLreturn(usv); + } + + SWIGINTERN CAML_VALUE caml_val_int( int i ) { + CAMLparam0(); + SWIG_CAMLlocal1(iv); + iv = caml_swig_alloc(1,C_int); + SWIG_Store_field(iv,0,Val_int(i)); + CAMLreturn(iv); + } + + SWIGINTERN CAML_VALUE caml_val_uint( unsigned int ui ) { + CAMLparam0(); + SWIG_CAMLlocal1(uiv); + uiv = caml_swig_alloc(1,C_int); + SWIG_Store_field(uiv,0,Val_int(ui)); + CAMLreturn(uiv); + } + + SWIGINTERN CAML_VALUE caml_val_long( long l ) { + CAMLparam0(); + SWIG_CAMLlocal1(lv); + lv = caml_swig_alloc(1,C_int64); + SWIG_Store_field(lv,0,caml_copy_int64(l)); + CAMLreturn(lv); + } + + SWIGINTERN CAML_VALUE caml_val_ulong( unsigned long ul ) { + CAMLparam0(); + SWIG_CAMLlocal1(ulv); + ulv = caml_swig_alloc(1,C_int64); + SWIG_Store_field(ulv,0,caml_copy_int64(ul)); + CAMLreturn(ulv); + } + + SWIGINTERN CAML_VALUE caml_val_float( float f ) { + CAMLparam0(); + SWIG_CAMLlocal1(fv); + fv = caml_swig_alloc(1,C_float); + SWIG_Store_field(fv,0,caml_copy_double((double)f)); + CAMLreturn(fv); + } + + SWIGINTERN CAML_VALUE caml_val_double( double d ) { + CAMLparam0(); + SWIG_CAMLlocal1(fv); + fv = caml_swig_alloc(1,C_double); + SWIG_Store_field(fv,0,caml_copy_double(d)); + CAMLreturn(fv); + } + + SWIGINTERN CAML_VALUE caml_val_ptr( void *p, swig_type_info *info ) { + CAMLparam0(); + SWIG_CAMLlocal1(vv); + vv = caml_swig_alloc(2,C_ptr); + SWIG_Store_field(vv,0,caml_copy_int64((long)p)); + SWIG_Store_field(vv,1,caml_copy_int64((long)info)); + CAMLreturn(vv); + } + + SWIGINTERN CAML_VALUE caml_val_string( const char *p ) { + CAMLparam0(); + SWIG_CAMLlocal1(vv); + if( !p ) CAMLreturn(caml_val_ptr( (void *)p, 0 )); + vv = caml_swig_alloc(1,C_string); + SWIG_Store_field(vv,0,caml_copy_string(p)); + CAMLreturn(vv); + } + + SWIGINTERN CAML_VALUE caml_val_string_len( const char *p, int len ) { + CAMLparam0(); + SWIG_CAMLlocal1(vv); + if( !p || len < 0 ) CAMLreturn(caml_val_ptr( (void *)p, 0 )); + vv = caml_swig_alloc(1,C_string); + SWIG_Store_field(vv,0,caml_alloc_string(len)); + memcpy(String_val(SWIG_Field(vv,0)),p,len); + CAMLreturn(vv); + } + + #define caml_val_obj(v, name) caml_val_obj_helper(v, SWIG_TypeQuery((name)), name) + SWIGINTERN CAML_VALUE caml_val_obj_helper( void *v, swig_type_info *type, char *name) { + CAMLparam0(); + CAMLreturn(caml_callback2(*caml_named_value("caml_create_object_fn"), + caml_val_ptr(v,type), + caml_copy_string(name))); + } + + SWIGINTERN long caml_long_val_full( CAML_VALUE v, const char *name ) { + CAMLparam1(v); + if( !Is_block(v) ) return 0; + + switch( SWIG_Tag_val(v) ) { + case C_bool: + case C_char: + case C_uchar: + case C_short: + case C_ushort: + case C_int: + CAMLreturn(Int_val(SWIG_Field(v,0))); + case C_uint: + case C_int32: + CAMLreturn(Int32_val(SWIG_Field(v,0))); + case C_int64: + CAMLreturn((long)SWIG_Int64_val(SWIG_Field(v,0))); + case C_float: + case C_double: + CAMLreturn((long)Double_val(SWIG_Field(v,0))); + case C_string: + CAMLreturn((long)String_val(SWIG_Field(v,0))); + case C_ptr: + CAMLreturn((long)SWIG_Int64_val(SWIG_Field(SWIG_Field(v,0),0))); + case C_enum: { + SWIG_CAMLlocal1(ret); + CAML_VALUE *enum_to_int = caml_named_value(SWIG_MODULE "_enum_to_int"); + if( !name ) caml_failwith( "Not an enum conversion" ); + ret = caml_callback2(*enum_to_int,*caml_named_value(name),v); + CAMLreturn(caml_long_val(ret)); + } + default: + caml_failwith("No conversion to int"); + } + } + + SWIGINTERN long caml_long_val( CAML_VALUE v ) { + return caml_long_val_full(v,0); + } + + SWIGINTERN double caml_double_val( CAML_VALUE v ) { + CAMLparam1(v); + if( !Is_block(v) ) return 0.0; + switch( SWIG_Tag_val(v) ) { + case C_bool: + case C_char: + case C_uchar: + case C_short: + case C_ushort: + case C_int: + CAMLreturn_type(Int_val(SWIG_Field(v,0))); + case C_uint: + case C_int32: + CAMLreturn_type(Int32_val(SWIG_Field(v,0))); + case C_int64: + CAMLreturn_type(SWIG_Int64_val(SWIG_Field(v,0))); + case C_float: + case C_double: + CAMLreturn_type(Double_val(SWIG_Field(v,0))); + default: + fprintf( stderr, "Unknown block tag %d\n", SWIG_Tag_val(v) ); + caml_failwith("No conversion to double"); + } + } + + SWIGINTERN int caml_ptr_val_internal( CAML_VALUE v, void **out, + swig_type_info *descriptor ) { + CAMLparam1(v); + void *outptr = NULL; + swig_type_info *outdescr = NULL; + static CAML_VALUE *func_val = NULL; + + if( v == Val_unit ) { + *out = 0; + CAMLreturn_type(0); + } + if( !Is_block(v) ) return -1; + switch( SWIG_Tag_val(v) ) { + case C_obj: + if (!func_val) { + func_val = caml_named_value("caml_obj_ptr"); + } + CAMLreturn_type(caml_ptr_val_internal(caml_callback(*func_val, v), out, descriptor)); + case C_string: + outptr = (void *)String_val(SWIG_Field(v,0)); + break; + case C_ptr: + outptr = (void *)(long)SWIG_Int64_val(SWIG_Field(v,0)); + outdescr = (swig_type_info *)(long)SWIG_Int64_val(SWIG_Field(v,1)); + break; + default: + *out = 0; + CAMLreturn_type(1); + break; + } + + CAMLreturn_type(SWIG_GetPtr(outptr, out, outdescr, descriptor)); + } + + SWIGINTERN void *caml_ptr_val( CAML_VALUE v, swig_type_info *descriptor ) { + CAMLparam0(); +#ifdef TYPE_CAST_VERBOSE + caml_print_val( v ); +#endif + void *out = NULL; + if( !caml_ptr_val_internal( v, &out, descriptor ) ) + CAMLreturn_type(out); + else + caml_failwith( "No appropriate conversion found." ); + } + + SWIGINTERN char *caml_string_val( CAML_VALUE v ) { + return (char *)caml_ptr_val( v, 0 ); + } + + SWIGINTERN int caml_string_len( CAML_VALUE v ) { + switch( SWIG_Tag_val(v) ) { + case C_string: + return caml_string_length(SWIG_Field(v,0)); + default: + return strlen((char *)caml_ptr_val(v,0)); + } + } + + SWIGINTERN int caml_bool_check( CAML_VALUE v ) { + CAMLparam1(v); + + if( !Is_block(v) ) return 0; + + switch( SWIG_Tag_val(v) ) { + case C_bool: + case C_ptr: + case C_string: + CAMLreturn(1); + default: + CAMLreturn(0); + } + } + + SWIGINTERN int caml_int_check( CAML_VALUE v ) { + CAMLparam1(v); + + if( !Is_block(v) ) return 0; + + switch( SWIG_Tag_val(v) ) { + case C_char: + case C_uchar: + case C_short: + case C_ushort: + case C_int: + case C_uint: + case C_int32: + case C_int64: + CAMLreturn(1); + + default: + CAMLreturn(0); + } + } + + SWIGINTERN int caml_float_check( CAML_VALUE v ) { + CAMLparam1(v); + if( !Is_block(v) ) return 0; + + switch( SWIG_Tag_val(v) ) { + case C_float: + case C_double: + CAMLreturn(1); + + default: + CAMLreturn(0); + } + } + + SWIGINTERN int caml_ptr_check( CAML_VALUE v ) { + CAMLparam1(v); + if( !Is_block(v) ) return 0; + + switch( SWIG_Tag_val(v) ) { + case C_string: + case C_ptr: + case C_int64: + CAMLreturn(1); + + default: + CAMLreturn(0); + } + } + + SWIGINTERN CAML_VALUE SWIG_Ocaml_ptr_to_val(const char *name, void *ptr, swig_type_info *descriptor) { + CAMLparam0(); + SWIG_CAMLlocal1(result); + + CAML_VALUE *fromval = caml_named_value(name); + if (fromval) { + result = caml_callback(*fromval, caml_val_ptr(ptr, descriptor)); + } else { + result = caml_val_ptr(ptr, descriptor); + } + CAMLreturn(result); + } + + static swig_module_info *SWIG_Ocaml_GetModule(void *SWIGUNUSEDPARM(clientdata)) { + CAML_VALUE pointer; + + pointer = caml_callback(*caml_named_value("swig_find_type_info"), caml_val_int(0)); + if (Is_block(pointer) && SWIG_Tag_val(pointer) == C_ptr) { + return (swig_module_info *)(void *)(long)SWIG_Int64_val(SWIG_Field(pointer,0)); + } + return 0; + } + + static void SWIG_Ocaml_SetModule(swig_module_info *pointer) { + CAML_VALUE mod_pointer; + + mod_pointer = caml_val_ptr(pointer, NULL); + caml_callback(*caml_named_value("swig_set_type_info"), mod_pointer); + } + +#ifdef __cplusplus +} +#endif +#undef value + diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/ocamldec.swg b/macx64/bin/swig/share/swig/4.0.0/ocaml/ocamldec.swg new file mode 100644 index 00000000..0c2faf77 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/ocamldec.swg @@ -0,0 +1,212 @@ +/* ----------------------------------------------------------------------------- + * ocamldec.swg + * + * Ocaml runtime code -- declarations + * ----------------------------------------------------------------------------- */ + +#include +#include +#include + +#ifdef __cplusplus +#define SWIGEXT extern "C" +SWIGEXT { +#else +#define SWIGEXT +#endif +#define value caml_value_t +#define CAML_VALUE caml_value_t +#define CAML_NAME_SPACE +#include +#include +#include +#include +#include +#include +#include + +#if defined(CAMLassert) +/* Both this macro and version.h were introduced in version 4.02.0 */ +#include +#else +#define OCAML_VERSION 0 /* Unknown, but < 40200 */ +#endif + +#define caml_array_set swig_caml_array_set + +/* Adapted from memory.h and mlvalues.h */ + +#define SWIG_CAMLlocal1(x) \ + caml_value_t x = 0; \ + CAMLxparam1 (x) + +#define SWIG_CAMLlocal2(x, y) \ + caml_value_t x = 0, y = 0; \ + CAMLxparam2 (x, y) + +#define SWIG_CAMLlocal3(x, y, z) \ + caml_value_t x = 0, y = 0, z = 0; \ + CAMLxparam3 (x, y, z) + +#define SWIG_CAMLlocal4(x, y, z, t) \ + caml_value_t x = 0, y = 0, z = 0, t = 0; \ + CAMLxparam4 (x, y, z, t) + +#define SWIG_CAMLlocal5(x, y, z, t, u) \ + caml_value_t x = 0, y = 0, z = 0, t = 0, u = 0; \ + CAMLxparam5 (x, y, z, t, u) + +#define SWIG_CAMLlocalN(x, size) \ + caml_value_t x [(size)] = { 0, /* 0, 0, ... */ }; \ + CAMLxparamN (x, (size)) + +#define SWIG_Field(x, i) (((caml_value_t *)(x)) [i]) /* Also an l-value. */ +#define SWIG_Store_field(block, offset, val) do{ \ + mlsize_t caml__temp_offset = (offset); \ + caml_value_t caml__temp_val = (val); \ + caml_modify (&SWIG_Field ((block), caml__temp_offset), caml__temp_val); \ +}while(0) + +#define SWIG_Data_custom_val(v) ((void *) &SWIG_Field((v), 1)) +#ifdef ARCH_BIG_ENDIAN +#define SWIG_Tag_val(val) (((unsigned char *) (val)) [-1]) + /* Also an l-value. */ +#define SWIG_Tag_hp(hp) (((unsigned char *) (hp)) [sizeof(caml_value_t)-1]) + /* Also an l-value. */ +#else +#define SWIG_Tag_val(val) (((unsigned char *) (val)) [-sizeof(caml_value_t)]) + /* Also an l-value. */ +#define SWIG_Tag_hp(hp) (((unsigned char *) (hp)) [0]) + /* Also an l-value. */ +#endif + +#ifdef CAMLreturn0 +#undef CAMLreturn0 +#endif +#define CAMLreturn0 do{ \ + caml_local_roots = caml__frame; \ + return; \ +}while (0) + +#ifdef CAMLreturn +#undef CAMLreturn +#endif +#define CAMLreturn(result) do{ \ + caml_value_t caml__temp_result = (result); \ + caml_local_roots = caml__frame; \ + return (caml__temp_result); \ +}while(0) + +#define CAMLreturn_type(result) do{ \ + caml_local_roots = caml__frame; \ + return result; \ +}while(0) + +#ifdef CAMLnoreturn +#undef CAMLnoreturn +#endif +#define CAMLnoreturn ((void) caml__frame) + + +#ifndef ARCH_ALIGN_INT64 +#if OCAML_VERSION >= 40300 +#define SWIG_Int64_val(v) (*((int64_t *) SWIG_Data_custom_val(v))) +#else +#define SWIG_Int64_val(v) (*((int64 *) SWIG_Data_custom_val(v))) +#endif +#else +#if OCAML_VERSION >= 40300 +CAMLextern int64_t Int64_val(caml_value_t v); +#else +CAMLextern int64 Int64_val(caml_value_t v); +#endif +#define SWIG_Int64_val(v) Int64_val(v) +#endif + +#define SWIG_NewPointerObj(p,type,flags) caml_val_ptr(p,type) +#define SWIG_GetModule(clientdata) SWIG_Ocaml_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_Ocaml_SetModule(pointer) + +typedef enum { + SWIG_OCamlArithmeticException, + SWIG_OCamlDirectorPureVirtual, + SWIG_OCamlOutOfMemoryError, + SWIG_OCamlOverflowException, + SWIG_OCamlIllegalArgumentException, + SWIG_OCamlIndexOutOfBoundsException, + SWIG_OCamlRuntimeException, + SWIG_OCamlSystemException, + SWIG_OCamlUnknownError +} SWIG_OCamlExceptionCodes; + +SWIGINTERN void SWIG_OCamlThrowException(SWIG_OCamlExceptionCodes code, const char *msg) { + CAMLparam0(); + SWIG_CAMLlocal1(str); + + switch (code) { + case SWIG_OCamlIllegalArgumentException: + caml_invalid_argument(msg); + break; + case SWIG_OCamlSystemException: + str = caml_copy_string(msg); + caml_raise_sys_error(str); + break; + case SWIG_OCamlArithmeticException: + case SWIG_OCamlIndexOutOfBoundsException: + case SWIG_OCamlOutOfMemoryError: + case SWIG_OCamlOverflowException: + case SWIG_OCamlRuntimeException: + case SWIG_OCamlUnknownError: + default: + caml_failwith(msg); + break; + } + CAMLreturn0; +} + +#define SWIG_contract_assert(expr, msg) if(!(expr)) {SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, msg);} + + SWIGINTERN int + SWIG_GetPtr(void *source, void **result, swig_type_info *type, swig_type_info *result_type); + + SWIGINTERN CAML_VALUE caml_list_nth( CAML_VALUE lst, int n ); + SWIGINTERN CAML_VALUE caml_list_append( CAML_VALUE lst, CAML_VALUE elt ); + SWIGINTERN int caml_list_length( CAML_VALUE lst ); + SWIGINTERN CAML_VALUE caml_array_new( int n ); + SWIGINTERN void caml_array_set( CAML_VALUE arr, int n, CAML_VALUE item ); + SWIGINTERN CAML_VALUE caml_array_nth( CAML_VALUE arr, int n ); + SWIGINTERN int caml_array_len( CAML_VALUE arr ); + + SWIGINTERN CAML_VALUE caml_val_char( char c ); + SWIGINTERN CAML_VALUE caml_val_uchar( unsigned char c ); + + SWIGINTERN CAML_VALUE caml_val_short( short s ); + SWIGINTERN CAML_VALUE caml_val_ushort( unsigned short s ); + + SWIGINTERN CAML_VALUE caml_val_int( int x ); + SWIGINTERN CAML_VALUE caml_val_uint( unsigned int x ); + + SWIGINTERN CAML_VALUE caml_val_long( long x ); + SWIGINTERN CAML_VALUE caml_val_ulong( unsigned long x ); + + SWIGINTERN CAML_VALUE caml_val_float( float f ); + SWIGINTERN CAML_VALUE caml_val_double( double d ); + + SWIGINTERN CAML_VALUE caml_val_ptr( void *p, swig_type_info *descriptor ); + + SWIGINTERN CAML_VALUE caml_val_string( const char *str ); + SWIGINTERN CAML_VALUE caml_val_string_len( const char *str, int len ); + + SWIGINTERN long caml_long_val( CAML_VALUE v ); + SWIGINTERN double caml_double_val( CAML_VALUE v ); + + SWIGINTERN int caml_ptr_val_internal( CAML_VALUE v, void **out, + swig_type_info *descriptor ); + SWIGINTERN void *caml_ptr_val( CAML_VALUE v, swig_type_info *descriptor ); + + SWIGINTERN char *caml_string_val( CAML_VALUE v ); + SWIGINTERN int caml_string_len( CAML_VALUE v ); + +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/ocamlkw.swg b/macx64/bin/swig/share/swig/4.0.0/ocaml/ocamlkw.swg new file mode 100644 index 00000000..5e66085e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/ocamlkw.swg @@ -0,0 +1,72 @@ +#ifndef OCAML_OCAMLKW_SWG_ +#define OCAML_OCAMLKW_SWG_ + +/* Warnings for Ocaml keywords */ +#define OCAMLKW(x) %namewarn("314: '" #x "' is an ocaml keyword and it will be appropriately renamed") #x + +/* + from + https://caml.inria.fr/pub/docs/manual-ocaml/lex.html +*/ + + +OCAMLKW(and); +OCAMLKW(as); +OCAMLKW(asr); +OCAMLKW(assert); +OCAMLKW(begin); +OCAMLKW(class); +OCAMLKW(constraint); +OCAMLKW(do); +OCAMLKW(done); +OCAMLKW(downto); +OCAMLKW(else); +OCAMLKW(end); +OCAMLKW(exception); +OCAMLKW(external); +OCAMLKW(false); +OCAMLKW(for); +OCAMLKW(fun); +OCAMLKW(function); +OCAMLKW(functor); +OCAMLKW(if); +OCAMLKW(in); +OCAMLKW(include); +OCAMLKW(inherit); +OCAMLKW(initializer); +OCAMLKW(land); +OCAMLKW(lazy); +OCAMLKW(let); +OCAMLKW(lor); +OCAMLKW(lsl); +OCAMLKW(lsr); +OCAMLKW(lxor); +OCAMLKW(match); +OCAMLKW(method); +OCAMLKW(mod); +OCAMLKW(module); +OCAMLKW(mutable); +OCAMLKW(new); +OCAMLKW(nonrec); +OCAMLKW(object); +OCAMLKW(of); +OCAMLKW(open); +OCAMLKW(or); +OCAMLKW(private); +OCAMLKW(rec); +OCAMLKW(sig); +OCAMLKW(struct); +OCAMLKW(then); +OCAMLKW(to); +OCAMLKW(true); +OCAMLKW(try); +OCAMLKW(type); +OCAMLKW(val); +OCAMLKW(virtual); +OCAMLKW(when); +OCAMLKW(while); +OCAMLKW(with); + +#undef OCAMLKW + +#endif //OCAML_OCAMLKW_SWG_ diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/preamble.swg b/macx64/bin/swig/share/swig/4.0.0/ocaml/preamble.swg new file mode 100644 index 00000000..39374ce4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/preamble.swg @@ -0,0 +1,17 @@ +%insert(mli) %{ +exception BadArgs of string +exception BadMethodName of c_obj * string * string +exception NotObject of c_obj +exception NotEnumType of c_obj +exception LabelNotFromThisEnum of c_obj +exception InvalidDirectorCall of c_obj +%} + +%insert(ml) %{ +exception BadArgs of string +exception BadMethodName of c_obj * string * string +exception NotObject of c_obj +exception NotEnumType of c_obj +exception LabelNotFromThisEnum of c_obj +exception InvalidDirectorCall of c_obj +%} \ No newline at end of file diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/std_common.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_common.i new file mode 100644 index 00000000..7e64607d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_common.i @@ -0,0 +1,23 @@ +/* ----------------------------------------------------------------------------- + * std_common.i + * + * SWIG typemaps for STL - common utilities + * ----------------------------------------------------------------------------- */ + +%include + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + +%{ +#include +SWIGINTERNINLINE +CAML_VALUE SwigString_FromString(const std::string &s) { + return caml_val_string((char *)s.c_str()); +} + +SWIGINTERNINLINE +std::string SwigString_AsString(CAML_VALUE o) { + return std::string((char *)caml_ptr_val(o,0)); +} +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/std_complex.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_complex.i new file mode 100644 index 00000000..5192261a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_complex.i @@ -0,0 +1,65 @@ +// -*- C++ -*- +#ifndef SWIG_STD_COMPLEX_I_ +#define SWIG_STD_COMPLEX_I_ + +#ifdef SWIG + +%{ +#include +%} + +namespace std +{ + template class complex; + + %define specialize_std_complex(T) + + %typemap(in) complex { + if (PyComplex_Check($input)) { + $1 = std::complex(PyComplex_RealAsDouble($input), + PyComplex_ImagAsDouble($input)); + } else if (PyFloat_Check($input)) { + $1 = std::complex(PyFloat_AsDouble($input), 0); + } else if (PyInt_Check($input)) { + $1 = std::complex(PyInt_AsLong($input), 0); + } + else { + PyErr_SetString(PyExc_TypeError,"Expected a complex"); + SWIG_fail; + } + } + + %typemap(in) const complex& (std::complex temp) { + if (PyComplex_Check($input)) { + temp = std::complex(PyComplex_RealAsDouble($input), + PyComplex_ImagAsDouble($input)); + $1 = &temp; + } else if (PyFloat_Check($input)) { + temp = std::complex(PyFloat_AsDouble($input), 0); + $1 = &temp; + } else if (PyInt_Check($input)) { + temp = std::complex(PyInt_AsLong($input), 0); + $1 = &temp; + } else { + PyErr_SetString(PyExc_TypeError,"Expected a complex"); + SWIG_fail; + } + } + + %typemap(out) complex { + $result = PyComplex_FromDoubles($1.real(), $1.imag()); + } + + %typemap(out) const complex & { + $result = PyComplex_FromDoubles($1->real(), $1->imag()); + } + + %enddef + + specialize_std_complex(double); + specialize_std_complex(float); +} + +#endif // SWIG + +#endif //SWIG_STD_COMPLEX_I_ diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_deque.i new file mode 100644 index 00000000..5b38962b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_deque.i @@ -0,0 +1,28 @@ +/* ----------------------------------------------------------------------------- + * std_deque.i + * + * Default std_deque wrapper + * ----------------------------------------------------------------------------- */ + +%module std_deque + +%rename(__getitem__) std::deque::getitem; +%rename(__setitem__) std::deque::setitem; +%rename(__delitem__) std::deque::delitem; +%rename(__getslice__) std::deque::getslice; +%rename(__setslice__) std::deque::setslice; +%rename(__delslice__) std::deque::delslice; + +%extend std::deque { + int __len__() { + return (int) self->size(); + } + int __nonzero__() { + return ! self->empty(); + } + void append(const T &x) { + self->push_back(x); + } +}; + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/std_except.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_except.i new file mode 100644 index 00000000..74ddcb51 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_except.i @@ -0,0 +1,23 @@ +%{ +#include +#include +%} + +namespace std +{ + %ignore exception; + struct exception {}; +} + +%typemap(throws) std::bad_cast "SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1.what());" +%typemap(throws) std::bad_exception "SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1.what());" +%typemap(throws) std::domain_error "SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1.what());" +%typemap(throws) std::exception "SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1.what());" +%typemap(throws) std::invalid_argument "SWIG_OCamlThrowException(SWIG_OCamlIllegalArgumentException, $1.what());" +%typemap(throws) std::length_error "SWIG_OCamlThrowException(SWIG_OCamlIndexOutOfBoundsException, $1.what());" +%typemap(throws) std::logic_error "SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1.what());" +%typemap(throws) std::out_of_range "SWIG_OCamlThrowException(SWIG_OCamlIndexOutOfBoundsException, $1.what());" +%typemap(throws) std::overflow_error "SWIG_OCamlThrowException(SWIG_OCamlArithmeticException, $1.what());" +%typemap(throws) std::range_error "SWIG_OCamlThrowException(SWIG_OCamlIndexOutOfBoundsException, $1.what());" +%typemap(throws) std::runtime_error "SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1.what());" +%typemap(throws) std::underflow_error "SWIG_OCamlThrowException(SWIG_OCamlArithmeticException, $1.what());" diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/std_list.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_list.i new file mode 100644 index 00000000..e0524aa4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_list.i @@ -0,0 +1,217 @@ +/* ----------------------------------------------------------------------------- + * std_list.i + * + * SWIG typemaps for std::list types + * ----------------------------------------------------------------------------- */ + +%include + +%module std_list +%{ +#include +#include +%} + + +namespace std { + template class list + { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef T &iterator; + typedef const T& const_iterator; + + list(); + list(unsigned int size, const T& value = T()); + list(const list& other); + + void assign(unsigned int n, const T& value); + void swap(list &x); + + const_reference front(); + const_reference back(); + const_iterator begin(); + const_iterator end(); + + void resize(unsigned int n, T c = T()); + bool empty() const; + + void push_front(const T& x); + void push_back(const T& x); + + void pop_front(); + void pop_back(); + void clear(); + unsigned int size() const; + unsigned int max_size() const; + void resize(unsigned int n, const T& value); + + void remove(const T& value); + void unique(); + void reverse(); + void sort(); + + %extend + { + const_reference __getitem__(int i) throw (std::out_of_range) + { + std::list::iterator first = self->begin(); + int size = int(self->size()); + if (i<0) i += size; + if (i>=0 && i::iterator first = self->begin(); + int size = int(self->size()); + if (i<0) i += size; + if (i>=0 && i::iterator first = self->begin(); + int size = int(self->size()); + if (i<0) i += size; + if (i>=0 && ierase(first); + } + else throw std::out_of_range("list index out of range"); + } + std::list __getslice__(int i,int j) + { + std::list::iterator first = self->begin(); + std::list::iterator end = self->end(); + + int size = int(self->size()); + if (i<0) i += size; + if (j<0) j += size; + if (i<0) i = 0; + if (j>size) j = size; + if (i>=j) i=j; + if (i>=0 && i=0) + { + for (int k=0;k tmp(j-i); + if (j>i) std::copy(first,end,tmp.begin()); + return tmp; + } + else throw std::out_of_range("list index out of range"); + } + void __delslice__(int i,int j) + { + std::list::iterator first = self->begin(); + std::list::iterator end = self->end(); + + int size = int(self->size()); + if (i<0) i += size; + if (j<0) j += size; + if (i<0) i = 0; + if (j>size) j = size; + + for (int k=0;kerase(first,end); + } + void __setslice__(int i,int j, const std::list& v) + { + std::list::iterator first = self->begin(); + std::list::iterator end = self->end(); + + int size = int(self->size()); + if (i<0) i += size; + if (j<0) j += size; + if (i<0) i = 0; + if (j>size) j = size; + + for (int k=0;kerase(first,end); + if (i+1 <= int(self->size())) + { + first = self->begin(); + for (int k=0;kinsert(first,v.begin(),v.end()); + } + else self->insert(self->end(),v.begin(),v.end()); + } + + } + unsigned int __len__() + { + return self->size(); + } + bool __nonzero__() + { + return !(self->empty()); + } + void append(const T& x) + { + self->push_back(x); + } + void pop() + { + self->pop_back(); + } + } + }; +} + + + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/std_map.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_map.i new file mode 100644 index 00000000..3f197baa --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_map.i @@ -0,0 +1,79 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + template > class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + } + }; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_pair.i new file mode 100644 index 00000000..732347db --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_pair.i @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/std_string.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_string.i new file mode 100644 index 00000000..712c3bb7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_string.i @@ -0,0 +1,124 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * SWIG typemaps for std::string + * ----------------------------------------------------------------------------- */ + +// ------------------------------------------------------------------------ +// std::string is typemapped by value +// This can prevent exporting methods which return a string +// in order for the user to modify it. +// However, I think I'll wait until someone asks for it... +// ------------------------------------------------------------------------ + +%{ +#include +#include +%} + +%include +%include + +namespace std { + +%naturalvar string; +%naturalvar wstring; + +class string; +class wstring; + +/* Overloading check */ +%typemap(in) string { + if (caml_ptr_check($input)) + $1.assign((char *)caml_ptr_val($input,0), caml_string_len($input)); + else + SWIG_exception(SWIG_TypeError, "string expected"); +} + +%typemap(in) const string & ($*1_ltype temp) { + if (caml_ptr_check($input)) { + temp.assign((char *)caml_ptr_val($input,0), caml_string_len($input)); + $1 = &temp; + } else { + SWIG_exception(SWIG_TypeError, "string expected"); + } +} + +%typemap(in) string & ($*1_ltype temp) { + if (caml_ptr_check($input)) { + temp.assign((char *)caml_ptr_val($input,0), caml_string_len($input)); + $1 = &temp; + } else { + SWIG_exception(SWIG_TypeError, "string expected"); + } +} + +%typemap(in) string * ($*1_ltype *temp) { + if (caml_ptr_check($input)) { + temp = new $*1_ltype((char *)caml_ptr_val($input,0), caml_string_len($input)); + $1 = temp; + } else { + SWIG_exception(SWIG_TypeError, "string expected"); + } +} + +%typemap(free) string * ($*1_ltype *temp) { + delete temp; +} + +%typemap(argout) string & { + swig_result = caml_list_append(swig_result,caml_val_string_len((*$1).c_str(), (*$1).size())); +} + +%typemap(directorin) string { + swig_result = caml_val_string_len($1.c_str(), $1.size()); + args = caml_list_append(args, swig_result); +} + +%typemap(directorout) string { + $result.assign((char *)caml_ptr_val($input,0), caml_string_len($input)); +} + +%typemap(out) string { + $result = caml_val_string_len($1.c_str(),$1.size()); +} + +%typemap(out) string * { + $result = caml_val_string_len((*$1).c_str(),(*$1).size()); +} +%typemap(typecheck) string, const string & = char *; +} + +#ifdef ENABLE_CHARPTR_ARRAY +char **c_charptr_array( const std::vector &str_v ); + +%{ + SWIGEXT char **c_charptr_array( const std::vector &str_v ) { + char **out = new char *[str_v.size() + 1]; + out[str_v.size()] = 0; + for( int i = 0; i < str_v.size(); i++ ) { + out[i] = (char *)str_v[i].c_str(); + } + return out; + } +%} +#endif + +#ifdef ENABLE_STRING_VECTOR +%template (StringVector) std::vector; + +%insert(ml) %{ + (* Some STL convenience items *) + + let string_array_to_vector sa = + let nv = _new_StringVector C_void in + ignore (array_to_vector nv (fun x -> C_string x) sa) ; nv + + let c_string_array ar = + _c_charptr_array (string_array_to_vector ar) +%} + +%insert(mli) %{ + val c_string_array: string array -> c_obj +%} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_vector.i new file mode 100644 index 00000000..891d038c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/std_vector.i @@ -0,0 +1,98 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * + * SWIG typemaps for std::vector types + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::vector +// +// The aim of all that follows would be to integrate std::vector with +// Python as much as possible, namely, to allow the user to pass and +// be returned Python tuples or lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::vector), f(const std::vector&), f(const std::vector*): +// the parameter being read-only, either a Python sequence or a +// previously wrapped std::vector can be passed. +// -- f(std::vector&), f(std::vector*): +// the parameter must be modified; therefore, only a wrapped std::vector +// can be passed. +// -- std::vector f(): +// the vector is returned by copy; therefore, a Python sequence of T:s +// is returned which is most easily used in other Python functions +// -- std::vector& f(), std::vector* f(), const std::vector& f(), +// const std::vector* f(): +// the vector is returned by reference; therefore, a wrapped std::vector +// is returned +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + template class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, const T& value); + vector(const vector& other); + + unsigned int size() const; + bool empty() const; + void clear(); + void push_back(const T& x); + T operator [] ( int f ); + vector &operator = ( vector &other ); + %extend { + void set( int i, const T &x ) { + self->resize(i+1); + (*self)[i] = x; + } + }; + %extend { + T *to_array() { + T *array = new T[self->size() + 1]; + for( int i = 0; i < self->size(); i++ ) + array[i] = (*self)[i]; + return array; + } + }; + }; +}; + +%insert(ml) %{ + + let array_to_vector v argcons array = + for i = 0 to (Array.length array) - 1 do + ignore ((invoke v) "set" (C_list [ C_int i ; (argcons array.(i)) ])) + done ; + v + + let vector_to_array v argcons array = + for i = 0; to (get_int ((invoke v) "size" C_void)) - 1 do + array.(i) <- argcons ((invoke v) "[]" (C_int i)) + done ; + v + +%} + +%insert(mli) %{ + val array_to_vector : c_obj -> ('a -> c_obj) -> 'a array -> c_obj + val vector_to_array : c_obj -> (c_obj -> 'a) -> 'a array -> c_obj +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/stl.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/swig.ml b/macx64/bin/swig/share/swig/4.0.0/ocaml/swig.ml new file mode 100644 index 00000000..58a93347 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/swig.ml @@ -0,0 +1,166 @@ +(* -*- tuareg -*- *) +open Int32 +open Int64 + +type enum = [ `Int of int ] + +type 'a c_obj_t = + 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 'a c_obj_t array + | C_list of 'a c_obj_t list + | C_obj of (string -> 'a c_obj_t -> 'a c_obj_t) + | C_string of string + | C_enum of 'a + | C_director_core of 'a c_obj_t * 'a c_obj_t option ref + +type c_obj = enum c_obj_t + +exception BadArgs of string +exception BadMethodName of string * string +exception NotObject of c_obj +exception NotEnumType of c_obj +exception LabelNotFromThisEnum of c_obj +exception InvalidDirectorCall of c_obj +exception NoSuchClass of string +let rec invoke obj = + match obj with + C_obj o -> o + | C_director_core (o,r) -> invoke o + | _ -> raise (NotObject (Obj.magic obj)) +let _ = Callback.register "swig_runmethod" invoke + +let fnhelper arg = + match arg with C_list l -> l | C_void -> [] | _ -> [ arg ] + +let director_core_helper fnargs = + try + match List.hd fnargs with + | C_director_core (o,r) -> fnargs + | _ -> C_void :: fnargs + with Failure _ -> C_void :: fnargs + +let rec get_int x = + match x with + C_bool b -> if b then 1 else 0 + | C_char c + | C_uchar c -> (int_of_char c) + | C_short s + | C_ushort s + | C_int s -> s + | C_uint u + | C_int32 u -> (Int32.to_int u) + | C_int64 u -> (Int64.to_int u) + | C_float f -> (int_of_float f) + | C_double d -> (int_of_float d) + | C_ptr (p,q) -> (Int64.to_int p) + | C_obj o -> (try (get_int (o "int" C_void)) + with _ -> (get_int (o "&" C_void))) + | _ -> raise (Failure "Can't convert to int") + +let rec get_float x = + match x with + C_char c + | C_uchar c -> (float_of_int (int_of_char c)) + | C_short s -> (float_of_int s) + | C_ushort s -> (float_of_int s) + | C_int s -> (float_of_int s) + | C_uint u + | C_int32 u -> (float_of_int (Int32.to_int u)) + | C_int64 u -> (float_of_int (Int64.to_int u)) + | C_float f -> f + | C_double d -> d + | C_obj o -> (try (get_float (o "float" C_void)) + with _ -> (get_float (o "double" C_void))) + | _ -> raise (Failure "Can't convert to float") + +let rec get_char x = + (char_of_int (get_int x)) + +let rec get_string x = + match x with + C_string str -> str + | _ -> raise (Failure "Can't convert to string") + +let rec get_bool x = + match x with + C_bool b -> b + | _ -> + (try if get_int x != 0 then true else false + with _ -> raise (Failure "Can't convert to bool")) + +let disown_object obj = + match obj with + C_director_core (o,r) -> r := None + | _ -> raise (Failure "Not a director core object") +let _ = Callback.register "caml_obj_disown" disown_object +let addr_of obj = + match obj with + C_obj _ -> (invoke obj) "&" C_void + | C_director_core (self,r) -> (invoke self) "&" C_void + | C_ptr _ -> obj + | _ -> raise (Failure "Not a pointer.") +let _ = Callback.register "caml_obj_ptr" addr_of + +let make_float f = C_float f +let make_double f = C_double f +let make_string s = C_string s +let make_bool b = C_bool b +let make_char c = C_char c +let make_char_i c = C_char (char_of_int c) +let make_uchar c = C_uchar c +let make_uchar_i c = C_uchar (char_of_int c) +let make_short i = C_short i +let make_ushort i = C_ushort i +let make_int i = C_int i +let make_uint i = C_uint (Int32.of_int i) +let make_int32 i = C_int32 (Int32.of_int i) +let make_int64 i = C_int64 (Int64.of_int i) + +let new_derived_object cfun x_class args = + begin + let get_object ob = + match !ob with + None -> + raise (NotObject C_void) + | Some o -> o in + let ob_ref = ref None in + let class_fun class_f ob_r = + (fun meth args -> class_f (get_object ob_r) meth args) in + let new_class = class_fun x_class ob_ref in + let dircore = C_director_core (C_obj new_class,ob_ref) in + let obj = + cfun (match args with + C_list argl -> (C_list ((dircore :: argl))) + | C_void -> (C_list [ dircore ]) + | a -> (C_list [ dircore ; a ])) in + ob_ref := Some obj ; + obj + end + +let swig_current_type_info = ref C_void +let find_type_info obj = !swig_current_type_info +let _ = Callback.register "swig_find_type_info" find_type_info +let set_type_info obj = + match obj with + C_ptr _ -> swig_current_type_info := obj ; + obj + | _ -> raise (Failure "Internal error: passed non pointer to set_type_info") +let _ = Callback.register "swig_set_type_info" set_type_info + +let class_master_list = Hashtbl.create 20 +let register_class_byname nm co = + Hashtbl.replace class_master_list nm (Obj.magic co) +let create_class nm = + try (Obj.magic (Hashtbl.find class_master_list nm)) with _ -> raise (NoSuchClass nm) diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/swig.mli b/macx64/bin/swig/share/swig/4.0.0/ocaml/swig.mli new file mode 100644 index 00000000..c5ffadb1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/swig.mli @@ -0,0 +1,62 @@ +(* -*- tuareg -*- *) + +type enum = [ `Int of int ] + +type 'a c_obj_t = + 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 'a c_obj_t array + | C_list of 'a c_obj_t list + | C_obj of (string -> 'a c_obj_t -> 'a c_obj_t) + | C_string of string + | C_enum of 'a + | C_director_core of 'a c_obj_t * 'a c_obj_t option ref + +type c_obj = enum c_obj_t + +exception InvalidDirectorCall of c_obj +exception NoSuchClass of string + +val invoke : ('a c_obj_t) -> (string -> 'a c_obj_t -> 'a c_obj_t) +val fnhelper : 'a c_obj_t -> 'a c_obj_t list +val director_core_helper : 'a c_obj_t list -> 'a c_obj_t list + +val get_int : 'a c_obj_t -> int +val get_float : 'a c_obj_t -> float +val get_string : 'a c_obj_t -> string +val get_char : 'a c_obj_t -> char +val get_bool : 'a c_obj_t -> bool + +val make_float : float -> 'a c_obj_t +val make_double : float -> 'a c_obj_t +val make_string : string -> 'a c_obj_t +val make_bool : bool -> 'a c_obj_t +val make_char : char -> 'a c_obj_t +val make_char_i : int -> 'a c_obj_t +val make_uchar : char -> 'a c_obj_t +val make_uchar_i : int -> 'a c_obj_t +val make_short : int -> 'a c_obj_t +val make_ushort : int -> 'a c_obj_t +val make_int : int -> 'a c_obj_t +val make_uint : int -> 'a c_obj_t +val make_int32 : int -> 'a c_obj_t +val make_int64 : int -> 'a c_obj_t + +val new_derived_object: + ('a c_obj_t -> 'a c_obj_t) -> + ('a c_obj_t -> string -> 'a c_obj_t -> 'a c_obj_t) -> + 'a c_obj_t -> 'a c_obj_t + +val register_class_byname : string -> ('a c_obj_t -> 'a c_obj_t) -> unit +val create_class : string -> 'a c_obj_t -> 'a c_obj_t diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/swigp4.ml b/macx64/bin/swig/share/swig/4.0.0/ocaml/swigp4.ml new file mode 100644 index 00000000..2f6074a9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/swigp4.ml @@ -0,0 +1,135 @@ +open Camlp4 + +module Id : Sig.Id = +struct + let name = "swigp4" + let version = "0.1" +end + +module Make (Syntax : Sig.Camlp4Syntax) = +struct + open Sig + include Syntax + + let _loc = Loc.ghost + let lap x y = x :: y + let c_ify e loc = + match e with + <:expr< $int:_$ >> -> <:expr< (C_int $e$) >> + | <:expr< $str:_$ >> -> <:expr< (C_string $e$) >> + | <:expr< $chr:_$ >> -> <:expr< (C_char $e$) >> + | <:expr< $flo:_$ >> -> <:expr< (C_double $e$) >> + | <:expr< True >> -> <:expr< (C_bool $e$) >> + | <:expr< False >> -> <:expr< (C_bool $e$) >> + | _ -> <:expr< $e$ >> + let mk_list args loc f = + let rec mk_list_inner args loc f = + match args with + [] -> <:expr< [] >> + | x :: xs -> + (let loc = Ast.loc_of_expr x in + <:expr< [ ($f x _loc$) ] @ ($mk_list_inner xs loc f$) >>) in + match args with + [] -> <:expr< (Obj.magic C_void) >> + | [ a ] -> <:expr< (Obj.magic $f a _loc$) >> + | _ -> <:expr< (Obj.magic (C_list ($mk_list_inner args loc f$))) >> ;; + + EXTEND Gram + GLOBAL: expr; + + expr: LEVEL "top" + [ [ e1 = expr ; "'" ; "[" ; e2 = expr ; "]" -> + <:expr< (invoke $e1$) "[]" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "->" ; l = LIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" -> + <:expr< (invoke $e1$) $str:l$ ($mk_list args _loc c_ify$) >> + | e1 = expr ; "->" ; u = UIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" -> + <:expr< (invoke $e1$) $str:u$ ($mk_list args _loc c_ify$) >> + | e1 = expr ; "->" ; s = expr LEVEL "simple" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" -> + <:expr< (invoke $e1$) $s$ ($mk_list args _loc c_ify$) >> + | e1 = expr ; "'" ; "." ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" -> + <:expr< (invoke $e1$) "()" ($mk_list args _loc c_ify$) >> + | e1 = expr ; "'" ; "->" ; l = LIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" -> + <:expr< (invoke ((invoke $e1$) "->" C_void)) $str:l$ ($mk_list args _loc c_ify$) >> + | e1 = expr ; "'" ; "->" ; u = UIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" -> + <:expr< (invoke ((invoke $e1$) "->" C_void)) $str:u$ ($mk_list args _loc c_ify$) >> + | e1 = expr ; "'" ; "->" ; s = expr LEVEL "simple" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" -> + <:expr< (invoke ((invoke $e1$) "->" C_void)) $s$ ($mk_list args _loc c_ify$) >> + | e1 = expr ; "'" ; "++" -> + <:expr< (invoke $e1$) "++" C_void >> + | e1 = expr ; "'" ; "--" -> + <:expr< (invoke $e1$) "--" C_void >> + | e1 = expr ; "'" ; "-" ; e2 = expr -> + <:expr< (invoke $e1$) "-" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "+" ; e2 = expr -> <:expr< (invoke $e1$) "+" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "*" ; e2 = expr -> <:expr< (invoke $e1$) "*" (C_list [ $c_ify e2 _loc$ ]) >> + | "'" ; "&" ; e1 = expr -> + <:expr< (invoke $e1$) "&" C_void >> + | "'" ; "!" ; e1 = expr -> + <:expr< (invoke $e1$) "!" C_void >> + | "'" ; "~" ; e1 = expr -> + <:expr< (invoke $e1$) "~" C_void >> + | e1 = expr ; "'" ; "/" ; e2 = expr -> + <:expr< (invoke $e1$) "/" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "%" ; e2 = expr -> + <:expr< (invoke $e1$) "%" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "lsl" ; e2 = expr -> + <:expr< (invoke $e1$) ("<" ^ "<") (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "lsr" ; e2 = expr -> + <:expr< (invoke $e1$) (">" ^ ">") (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "<" ; e2 = expr -> + <:expr< (invoke $e1$) "<" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "<=" ; e2 = expr -> + <:expr< (invoke $e1$) "<=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; ">" ; e2 = expr -> + <:expr< (invoke $e1$) ">" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; ">=" ; e2 = expr -> + <:expr< (invoke $e1$) ">=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "==" ; e2 = expr -> + <:expr< (invoke $e1$) "==" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "!=" ; e2 = expr -> + <:expr< (invoke $e1$) "!=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "&" ; e2 = expr -> + <:expr< (invoke $e1$) "&" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "^" ; e2 = expr -> + <:expr< (invoke $e1$) "^" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "|" ; e2 = expr -> + <:expr< (invoke $e1$) "|" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "&&" ; e2 = expr -> + <:expr< (invoke $e1$) "&&" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "||" ; e2 = expr -> + <:expr< (invoke $e1$) "||" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "=" ; e2 = expr -> + <:expr< (invoke $e1$) "=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "+=" ; e2 = expr -> + <:expr< (invoke $e1$) "+=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "-=" ; e2 = expr -> + <:expr< (invoke $e1$) "-=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "*=" ; e2 = expr -> + <:expr< (invoke $e1$) "*=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "/=" ; e2 = expr -> + <:expr< (invoke $e1$) "/=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "%=" ; e2 = expr -> + <:expr< (invoke $e1$) "%=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "lsl" ; "=" ; e2 = expr -> + <:expr< (invoke $e1$) ("<" ^ "<=") (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "lsr" ; "=" ; e2 = expr -> + <:expr< (invoke $e1$) (">" ^ ">=") (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "&=" ; e2 = expr -> + <:expr< (invoke $e1$) "&=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "^=" ; e2 = expr -> + <:expr< (invoke $e1$) "^=" (C_list [ $c_ify e2 _loc$ ]) >> + | e1 = expr ; "'" ; "|=" ; e2 = expr -> + <:expr< (invoke $e1$) "|=" (C_list [ $c_ify e2 _loc$ ]) >> + | "'" ; e = expr -> c_ify e _loc + | c = expr ; "as" ; id = LIDENT -> <:expr< $lid:"get_" ^ id$ $c$ >> + | c = expr ; "to" ; id = LIDENT -> <:expr< $uid:"C_" ^ id$ $c$ >> + | "`" ; "`" ; l = LIDENT -> <:expr< C_enum `$lid:l$ >> + | "`" ; "`" ; u = UIDENT -> <:expr< C_enum `$uid:u$ >> + | f = expr ; "'" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" -> + <:expr< $f$ ($mk_list args _loc c_ify$) >> + ] ] ; + END ;; + +end + +module M = Register.OCamlSyntaxExtension(Id)(Make) diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/typecheck.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/typecheck.i new file mode 100644 index 00000000..0c0a600a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/typecheck.i @@ -0,0 +1,197 @@ +/* ----------------------------------------------------------------------------- + * typecheck.i + * + * Typechecking rules + * ----------------------------------------------------------------------------- */ + +%typecheck(SWIG_TYPECHECK_INT8) char, signed char, const char &, const signed char & { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_char: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_UINT8) unsigned char, const unsigned char & { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_uchar: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_INT16) short, signed short, const short &, const signed short &, wchar_t { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_short: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_UINT16) unsigned short, const unsigned short & { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_ushort: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +// XXX arty +// Will move enum SWIGTYPE later when I figure out what to do with it... + +%typecheck(SWIG_TYPECHECK_INT32) int, signed int, const int &, const signed int &, enum SWIGTYPE { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_int: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_UINT32) unsigned int, const unsigned int & { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_uint: $1 = 1; break; + case C_int32: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_INT64) + long, signed long, unsigned long, + long long, signed long long, unsigned long long, + const long &, const signed long &, const unsigned long &, + const long long &, const signed long long &, const unsigned long long &, + size_t, const size_t & +{ + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_int64: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_BOOL) bool, const bool & { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_bool: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_FLOAT) float, const float & { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_float: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_DOUBLE) double, const double & { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_double: $1 = 1; break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_STRING) char * { + if( !Is_block($input) ) $1 = 0; + else { + switch( SWIG_Tag_val($input) ) { + case C_string: $1 = 1; break; + case C_ptr: { + swig_type_info *typeinfo = + (swig_type_info *)(long)SWIG_Int64_val(SWIG_Field($input,1)); + $1 = SWIG_TypeCheck("char *",typeinfo) || + SWIG_TypeCheck("signed char *",typeinfo) || + SWIG_TypeCheck("unsigned char *",typeinfo) || + SWIG_TypeCheck("const char *",typeinfo) || + SWIG_TypeCheck("const signed char *",typeinfo) || + SWIG_TypeCheck("const unsigned char *",typeinfo) || + SWIG_TypeCheck("std::string",typeinfo); + } break; + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] { + if (!Is_block($input) || !(SWIG_Tag_val($input) == C_obj || SWIG_Tag_val($input) == C_ptr)) { + $1 = 0; + } else { + void *ptr; + $1 = !caml_ptr_val_internal($input, &ptr, $descriptor); + } +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE { + swig_type_info *typeinfo; + if (!Is_block($input)) { + $1 = 0; + } else { + switch (SWIG_Tag_val($input)) { + case C_obj: { + void *ptr; + $1 = !caml_ptr_val_internal($input, &ptr, $&1_descriptor); + break; + } + case C_ptr: { + typeinfo = (swig_type_info *)SWIG_Int64_val(SWIG_Field($input, 1)); + $1 = SWIG_TypeCheck("$1_type", typeinfo) != NULL; + break; + } + default: $1 = 0; break; + } + } +} + +%typecheck(SWIG_TYPECHECK_VOIDPTR) void * { + void *ptr; + $1 = !caml_ptr_val_internal($input, &ptr, 0); +} + +%typecheck(SWIG_TYPECHECK_SWIGOBJECT) CAML_VALUE "$1 = 1;" + +/* ------------------------------------------------------------ + * Exception handling + * ------------------------------------------------------------ */ + +%typemap(throws) int, + long, + short, + unsigned int, + unsigned long, + unsigned short { + char error_msg[256]; + sprintf(error_msg, "C++ $1_type exception thrown, value: %d", $1); + SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, error_msg); +} + +%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE *, SWIGTYPE [], SWIGTYPE [ANY] { + (void)$1; + SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, "C++ $1_type exception thrown"); +} + +%typemap(throws) char * { + SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/ocaml/typemaps.i new file mode 100644 index 00000000..23e2955f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/typemaps.i @@ -0,0 +1,321 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * The Ocaml module handles all types uniformly via typemaps. Here + * are the definitions. + * ----------------------------------------------------------------------------- */ + +/* Pointers */ + +%typemap(in) void "" + +%typemap(out) void "$result = Val_int(0);" + +%typemap(in) void * { + $1 = caml_ptr_val($input,$descriptor); +} + +%typemap(varin) void * { + $1 = ($ltype)caml_ptr_val($input,$descriptor); +} + +%typemap(out) void * { + $result = caml_val_ptr($1,$descriptor); +} + +%typemap(varout) void * { + $result = caml_val_ptr($1,$descriptor); +} + +%typemap(in) char *& (char *temp) { + temp = (char*)caml_val_ptr($1,$descriptor); + $1 = &temp; +} + +%typemap(argout) char *& { + swig_result = caml_list_append(swig_result,caml_val_string_len(*$1, strlen(*$1))); +} + +%typemap(in) SWIGTYPE & { + $1 = ($ltype) caml_ptr_val($input,$1_descriptor); +} + +%typemap(in) SWIGTYPE && { + $1 = ($ltype) caml_ptr_val($input,$1_descriptor); +} + +%typemap(varin) SWIGTYPE & { + $1 = *(($ltype) caml_ptr_val($input,$1_descriptor)); +} + +%typemap(varin) SWIGTYPE && { + $1 = *(($ltype) caml_ptr_val($input,$1_descriptor)); +} + +%typemap(varout) SWIGTYPE &, SWIGTYPE && { + $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)&$1, $1_descriptor); +} + +%typemap(out) SWIGTYPE &, SWIGTYPE && { + $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)$1, $1_descriptor); +} + +#if 0 +%typemap(argout) SWIGTYPE & { + CAML_VALUE *fromval = caml_named_value("create_$ntype_from_ptr"); + if( fromval ) { + swig_result = + caml_list_append(swig_result, + caml_callback(*fromval,caml_val_ptr((void *) $1, + $1_descriptor))); + } else { + swig_result = + caml_list_append(swig_result, + caml_val_ptr ((void *) $1,$1_descriptor)); + } +} +%typemap(argout) SWIGTYPE && { + CAML_VALUE *fromval = caml_named_value("create_$ntype_from_ptr"); + if( fromval ) { + swig_result = + caml_list_append(swig_result, + caml_callback(*fromval,caml_val_ptr((void *) $1, + $1_descriptor))); + } else { + swig_result = + caml_list_append(swig_result, + caml_val_ptr ((void *) $1,$1_descriptor)); + } +} +#endif + +%typemap(in) SWIGTYPE { + $1 = *(($&1_ltype) caml_ptr_val($input,$&1_descriptor)) ; +} + +#ifdef __cplusplus + +%typemap(out) SWIGTYPE { + $&1_ltype temp = new $ltype((const $1_ltype &) $1); + $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)temp, $&1_descriptor); +} + +#else + +%typemap(out) SWIGTYPE { + void *temp = calloc(1,sizeof($ltype)); + memmove(temp, &$1, sizeof($1_type)); + $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", temp, $&1_descriptor); +} + +#endif + +%typemap(directorin) SWIGTYPE { + $<ype temp = new $ltype((const $ltype &)$1); + swig_result = SWIG_Ocaml_ptr_to_val("create_$ltype_from_ptr", (void *)temp, $&1_descriptor); + args = caml_list_append(args, swig_result); +} + +%typemap(directorin) SWIGTYPE *, SWIGTYPE [], SWIGTYPE &, SWIGTYPE && { + swig_result = SWIG_Ocaml_ptr_to_val("create_$ltype_from_ptr", (void *)&$1, $&1_descriptor); + args = caml_list_append(args, swig_result); +} + +/* The SIMPLE_MAP macro below defines the whole set of typemaps needed + for simple types. */ + +%define SIMPLE_MAP(C_NAME, C_TO_OCAML, OCAML_TO_C) +/* In */ +%typemap(in) C_NAME { + $1 = OCAML_TO_C($input); +} +%typemap(varin) C_NAME { + $1 = OCAML_TO_C($input); +} +%typemap(in) const C_NAME & ($*1_ltype temp) { + temp = ($*1_ltype) OCAML_TO_C($input); + $1 = &temp; +} +%typemap(varin) const C_NAME & { + $1 = OCAML_TO_C($input); +} +%typemap(directorout) C_NAME { + $1 = OCAML_TO_C($input); +} +%typemap(in) C_NAME *INPUT ($*1_ltype temp) { + temp = ($*1_ltype) OCAML_TO_C($input); + $1 = &temp; +} +%typemap(in,numinputs=0) C_NAME *OUTPUT ($*1_ltype temp) { + $1 = &temp; +} +/* Out */ +%typemap(out) C_NAME { + $result = C_TO_OCAML($1); +} +%typemap(varout) C_NAME { + $result = C_TO_OCAML($1); +} +%typemap(varout) const C_NAME & { + $result = C_TO_OCAML($1); +} +%typemap(argout) C_NAME *OUTPUT { + swig_result = caml_list_append(swig_result, C_TO_OCAML((long)*$1)); +} +%typemap(out) const C_NAME & { + $result = C_TO_OCAML(*$1); +} +%typemap(directorin) C_NAME { + args = caml_list_append(args, C_TO_OCAML($1)); +} +%enddef + +SIMPLE_MAP(bool, caml_val_bool, caml_long_val); +SIMPLE_MAP(char, caml_val_char, caml_long_val); +SIMPLE_MAP(signed char, caml_val_char, caml_long_val); +SIMPLE_MAP(unsigned char, caml_val_uchar, caml_long_val); +SIMPLE_MAP(int, caml_val_int, caml_long_val); +SIMPLE_MAP(short, caml_val_short, caml_long_val); +SIMPLE_MAP(wchar_t, caml_val_short, caml_long_val); +SIMPLE_MAP(long, caml_val_long, caml_long_val); +SIMPLE_MAP(ptrdiff_t, caml_val_int, caml_long_val); +SIMPLE_MAP(unsigned int, caml_val_uint, caml_long_val); +SIMPLE_MAP(unsigned short, caml_val_ushort, caml_long_val); +SIMPLE_MAP(unsigned long, caml_val_ulong, caml_long_val); +SIMPLE_MAP(size_t, caml_val_int, caml_long_val); +SIMPLE_MAP(float, caml_val_float, caml_double_val); +SIMPLE_MAP(double, caml_val_double, caml_double_val); +SIMPLE_MAP(long long,caml_val_ulong,caml_long_val); +SIMPLE_MAP(unsigned long long,caml_val_ulong,caml_long_val); + +/* Void */ + +%typemap(out) void "$result = Val_unit;"; + +/* Pass through value */ + +%typemap (in) CAML_VALUE "$1=$input;"; +%typemap (out) CAML_VALUE "$result=$1;"; + +#if 0 +%include +#endif + +/* Handle char arrays as strings */ + +%define %char_ptr_in(how) +%typemap(how) char *, signed char *, unsigned char * { + $1 = ($ltype)caml_string_val($input); +} +/* Again work around the empty array bound bug */ +%typemap(how) char [ANY], signed char [ANY], unsigned char [ANY] { + char *temp = caml_string_val($input); + strcpy((char *)$1,temp); +} +%enddef + +%char_ptr_in(in); +%char_ptr_in(varin); +%char_ptr_in(directorout); + +%define %char_ptr_out(how) +%typemap(how) + char *, signed char *, unsigned char *, + const char *, const signed char *, const unsigned char * { + $result = caml_val_string((char *)$1); +} +/* I'd like to use the length here but can't because it might be empty */ +%typemap(how) + char [ANY], signed char [ANY], unsigned char [ANY], + const char [ANY], const signed char [ANY], const unsigned char [ANY] { + $result = caml_val_string((char *)$1); +} +%enddef + +%char_ptr_out(out); +%char_ptr_out(varout); +%char_ptr_out(directorin); + +%define %swigtype_ptr_in(how) +%typemap(how) SWIGTYPE * { + $1 = ($ltype)caml_ptr_val($input,$1_descriptor); +} +%typemap(how) SWIGTYPE (CLASS::*) { + void *v = caml_ptr_val($input,$1_descriptor); + memcpy(& $1, &v, sizeof(v)); +} +%enddef + +%typemap(out) SWIGTYPE * { + $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)$1, $1_descriptor); +} + +%define %swigtype_ptr_out(how) +%typemap(how) SWIGTYPE (CLASS::*) { + void *v; + memcpy(&v,& $1, sizeof(void *)); + $result = caml_val_ptr (v,$1_descriptor); +} +%enddef + +%swigtype_ptr_in(in); +%swigtype_ptr_in(varin); +%swigtype_ptr_in(directorout); +%swigtype_ptr_out(out); +%swigtype_ptr_out(varout); +%swigtype_ptr_out(directorin); + +%define %swigtype_array_fail(how,msg) +%typemap(how) SWIGTYPE [] { + caml_failwith(msg); +} +%enddef + +%swigtype_array_fail(in,"Array arguments for arbitrary types need a typemap"); +%swigtype_array_fail(varin,"Assignment to global arrays for arbitrary types need a typemap"); +%swigtype_array_fail(out,"Array arguments for arbitrary types need a typemap"); +%swigtype_array_fail(varout,"Array variables need a typemap"); +%swigtype_array_fail(directorin,"Array results with arbitrary types need a typemap"); +%swigtype_array_fail(directorout,"Array arguments with arbitrary types need a typemap"); + +/* C++ References */ + +/* Enums */ +%define %swig_enum_in(how) +%typemap(how) enum SWIGTYPE { + $1 = ($type)caml_long_val_full($input,"$type_marker"); +} +%enddef + +%define %swig_enum_out(how) +%typemap(how) enum SWIGTYPE { + $result = caml_callback2(*caml_named_value(SWIG_MODULE "_int_to_enum"),*caml_named_value("$type_marker"),Val_int((int)$1)); +} +%enddef + +%swig_enum_in(in) +%swig_enum_in(varin) +%swig_enum_in(directorout) +%swig_enum_out(out) +%swig_enum_out(varout) +%swig_enum_out(directorin) + +%typemap(in) (char *STRING, int LENGTH), (char *STRING, size_t LENGTH) { + $1 = ($1_ltype) caml_string_val($input); + $2 = ($2_ltype) caml_string_len($input); +} + +%typemap(out) SWIGTYPE *DYNAMIC, SWIGTYPE &DYNAMIC { + swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor, (void **)&$1); + $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)$1, ty); +} + +/* Array reference typemaps */ +%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } +%apply SWIGTYPE && { SWIGTYPE ((&)[ANY]) } + +/* const pointers */ +%apply SWIGTYPE * { SWIGTYPE *const } +%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) } +%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) } + diff --git a/macx64/bin/swig/share/swig/4.0.0/ocaml/typeregister.swg b/macx64/bin/swig/share/swig/4.0.0/ocaml/typeregister.swg new file mode 100644 index 00000000..c3ba904a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ocaml/typeregister.swg @@ -0,0 +1,2 @@ +SWIGEXT void SWIG_init() { + SWIG_InitializeModule(0); diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/attribute.i b/macx64/bin/swig/share/swig/4.0.0/octave/attribute.i new file mode 100644 index 00000000..779716cd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/attribute.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/boost_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/octave/boost_shared_ptr.i new file mode 100644 index 00000000..668bf435 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/boost_shared_ptr.i @@ -0,0 +1,401 @@ +%include + +// Set SHARED_PTR_DISOWN to $disown if required, for example +// #define SHARED_PTR_DISOWN $disown +#if !defined(SHARED_PTR_DISOWN) +#define SHARED_PTR_DISOWN 0 +#endif + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_SHARED_PTR_TYPEMAPS(CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor wrapper customisation +%feature("unref") TYPE +//"if (debug_shared) { cout << \"deleting use_count: \" << (*smartarg1).use_count() << \" [\" << (boost::get_deleter(*smartarg1) ? std::string(\"CANNOT BE DETERMINED SAFELY\") : ( (*smartarg1).get() ? (*smartarg1)->getValue() : std::string(\"NULL PTR\") )) << \"]\" << endl << flush; }\n" + "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +// plain value +%typemap(in) CONST TYPE (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(out) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(varout) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) CONST TYPE (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE (void *swig_argp, int swig_res = 0) { + int newmem = 0; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (!swig_argp) { + %dirout_nullref("$type"); + } else { + $result = *(%reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} + +// plain pointer +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) CONST TYPE * (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} + +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), $owner | SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE * { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0; + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE * %{ +#error "directorout typemap for plain pointer not implemented" +%} + +// plain reference +%typemap(in) CONST TYPE & (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + $1 = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE & { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + if (!argp) { + %variable_nullref("$type", "$name"); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = *%const_cast(tempshared.get(), $1_ltype); + } else { + $1 = *%const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE & %{ +#error "directorout typemap for plain reference not implemented" +%} + +// plain pointer by reference +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) TYPE *CONST& (void *argp = 0, int res = 0, $*1_ltype temp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + temp = %const_cast(tempshared.get(), $*1_ltype); + } else { + temp = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $*1_ltype); + } + $1 = &temp; +} +%typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) TYPE *CONST& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) TYPE *CONST& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") TYPE *CONST& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) TYPE *CONST& %{ +#error "directorout typemap for plain pointer by reference not implemented" +%} + +// shared_ptr by value +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) $1 = *(%reinterpret_cast(argp, $<ype)); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + int newmem = 0; + void *argp = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = argp ? *(%reinterpret_cast(argp, $<ype)) : SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE >(); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *swig_argp, int swig_res = 0) { + int newmem = 0; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (swig_argp) { + $result = *(%reinterpret_cast(swig_argp, $<ype)); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, $<ype); + } +} + +// shared_ptr by reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "directorout typemap for shared_ptr ref not implemented" +%} + +// shared_ptr by pointer +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); + if ($owner) delete $1; +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "directorout typemap for pointer to shared_ptr not implemented" +%} + +// shared_ptr by pointer reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (void *argp, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, $*1_ltype temp = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) tempshared = *%reinterpret_cast(argp, $*ltype); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $*ltype); + temp = &tempshared; + $1 = &temp; +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = (*$1 && **$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(**$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "directorout typemap for pointer ref to shared_ptr not implemented" +%} + +// Typecheck typemaps +// Note: SWIG_ConvertPtr with void ** parameter set to 0 instead of using SWIG_ConvertPtrAndOwn, so that the casting +// function is not called thereby avoiding a possible smart pointer copy constructor call when casting up the inheritance chain. +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + int res = SWIG_ConvertPtr($input, 0, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), 0); + $1 = SWIG_CheckState(res); +} + + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + + +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/carrays.i b/macx64/bin/swig/share/swig/4.0.0/octave/carrays.i new file mode 100644 index 00000000..014de37f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/carrays.i @@ -0,0 +1,5 @@ +%define %array_class(TYPE,NAME) + %array_class_wrap(TYPE,NAME,__paren__,__paren_asgn__) +%enddef + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/cdata.i b/macx64/bin/swig/share/swig/4.0.0/octave/cdata.i new file mode 100644 index 00000000..36796599 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/cdata.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/cmalloc.i b/macx64/bin/swig/share/swig/4.0.0/octave/cmalloc.i new file mode 100644 index 00000000..248f06b9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/cmalloc.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/director.swg b/macx64/bin/swig/share/swig/4.0.0/octave/director.swg new file mode 100644 index 00000000..bf71d18e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/director.swg @@ -0,0 +1,148 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that Octave proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +# define SWIG_DIRECTOR_CAST(ARG) dynamic_cast(ARG) + +#include + +namespace Swig { + + class Director { + octave_swig_type *self; + bool swig_disowned; + + Director(const Director &x); + Director &operator=(const Director &rhs); + public: + + Director(void *vptr):self(0), swig_disowned(false) { + set_rtdir(vptr, this); + } + + ~Director() { + swig_director_destroyed(self, this); + if (swig_disowned) + self->decref(); + } + + void swig_set_self(octave_swig_type *new_self) { + assert(!swig_disowned); + self = new_self; + } + + octave_swig_type *swig_get_self() const { + return self; + } + + void swig_disown() { + if (swig_disowned) + return; + swig_disowned = true; + self->incref(); + } + }; + + // Base class for director exceptions. + class DirectorException : public std::exception { + public: + static void raise(const char *msg) { + // ... todo + throw DirectorException(); + } + + static void raise(const octave_value &ov, const char *msg) { + // ... todo + raise(msg); + } + }; + + class DirectorTypeMismatchException : public DirectorException { + public: + static void raise(const char *msg) { + // ... todo + throw DirectorTypeMismatchException(); + } + + static void raise(const octave_value &ov, const char *msg) { + // ... todo + raise(msg); + } + }; + + class DirectorPureVirtualException : public DirectorException { + public: + static void raise(const char *msg) { + // ... todo + throw DirectorPureVirtualException(); + } + + static void raise(const octave_value &ov, const char *msg) { + // ... todo + raise(msg); + } + }; + + SWIGINTERN rtdir_map *get_rtdir_map() { + static swig_module_info *module = 0; + if (!module) + module = SWIG_GetModule(0); + if (!module) + return 0; + if (!module->clientdata) + module->clientdata = new rtdir_map; + return (rtdir_map *) module->clientdata; + } + + SWIGINTERNINLINE void set_rtdir(void *vptr, Director *d) { + rtdir_map *rm = get_rtdir_map(); + if (rm) + (*rm)[vptr] = d; + } + + SWIGINTERNINLINE void erase_rtdir(void *vptr) { + rtdir_map *rm = get_rtdir_map(); + if (rm) + (*rm).erase(vptr); + } + + SWIGINTERNINLINE Director *get_rtdir(void *vptr) { + rtdir_map *rm = get_rtdir_map(); + if (!rm) + return 0; + rtdir_map::const_iterator pos = rm->find(vptr); + Director *rtdir = (pos != rm->end())? pos->second : 0; + return rtdir; + } + + SWIGRUNTIME void swig_director_destroyed(octave_swig_type *self, Director *d) { + self->director_destroyed(d); + } + + SWIGRUNTIME octave_swig_type *swig_director_get_self(Director *d) { + return d->swig_get_self(); + } + + SWIGRUNTIME void swig_director_set_self(Director *d, octave_swig_type *self) { + d->swig_set_self(self); + } + +} + +SWIGRUNTIME void swig_acquire_ownership(void *vptr) { + // assert(0); + // ... todo +} + +SWIGRUNTIME void swig_acquire_ownership_array(void *vptr) { + // assert(0); + // ... todo +} + +SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own) { + // assert(0); + // ... todo +} diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/exception.i b/macx64/bin/swig/share/swig/4.0.0/octave/exception.i new file mode 100644 index 00000000..2f0f489a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/exception.i @@ -0,0 +1,14 @@ +%include + +%insert("runtime") { + %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) +} + +%define SWIG_RETHROW_OCTAVE_EXCEPTIONS + /* rethrow any exceptions thrown by Octave */ +%#if SWIG_OCTAVE_PREREQ(4,2,0) + catch (octave::execution_exception& _e) { throw; } + catch (octave::exit_exception& _e) { throw; } + catch (octave::interrupt_exception& _e) { throw; } +%#endif +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/factory.i b/macx64/bin/swig/share/swig/4.0.0/octave/factory.i new file mode 100644 index 00000000..46a0a873 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/factory.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/implicit.i b/macx64/bin/swig/share/swig/4.0.0/octave/implicit.i new file mode 100644 index 00000000..152c2b05 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/implicit.i @@ -0,0 +1,7 @@ +%include +%include + +#warning "This file provides the %implicit directive, which is an old and fragile" +#warning "way to implement the C++ implicit conversion mechanism." +#warning "Try using the more robust '%implicitconv Type;' directive instead." + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octave.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octave.swg new file mode 100644 index 00000000..872054d8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octave.swg @@ -0,0 +1,8 @@ +%include +%include +%include +%include +%include +%include + +%define %docstring %feature("docstring") %enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octcomplex.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octcomplex.swg new file mode 100644 index 00000000..a3e9ebf7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octcomplex.swg @@ -0,0 +1,92 @@ +/* + Defines the As/From conversors for double/float complex, you need to + provide complex Type, the Name you want to use in the conversors, + the complex Constructor method, and the Real and Imag complex + accesor methods. + + See the std_complex.i and ccomplex.i for concrete examples. +*/ + +/* the common from conversor */ +%define %swig_fromcplx_conv(Type, OctConstructor, Real, Imag) + %fragment(SWIG_From_frag(Type),"header") +{ + SWIGINTERNINLINE octave_value + SWIG_From(Type)(const Type& c) + { + return octave_value(OctConstructor(Real(c), Imag(c))); + } +} +%enddef + +// the double case +%define %swig_cplxdbl_conv(Type, Constructor, Real, Imag) + %fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(double)) +{ + SWIGINTERN int + SWIG_AsVal(Type) (const octave_value& ov, Type* val) + { + if (ov.is_complex_scalar()) { + if (val) { + Complex c(ov.complex_value()); + *val=Constructor(c.real(),c.imag()); + } + return SWIG_OK; + } else { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(ov, &d)); + if (SWIG_IsOK(res)) { + if (val) + *val = Constructor(d, 0.0); + return res; + } + } + return SWIG_TypeError; + } +} +%swig_fromcplx_conv(Type, Complex, Real, Imag); +%enddef + +// the float case +%define %swig_cplxflt_conv(Type, Constructor, Real, Imag) + %fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(float)) { + SWIGINTERN int + SWIG_AsVal(Type) (const octave_value& ov, Type* val) + { + if (ov.is_complex_scalar()) { + if (val) { + Complex c(ov.complex_value()); + double re = c.real(); + double im = c.imag(); + if ((-FLT_MAX <= re && re <= FLT_MAX) && (-FLT_MAX <= im && im <= FLT_MAX)) { + if (val) + *val = Constructor(%numeric_cast(re, float), + %numeric_cast(im, float)); + return SWIG_OK; + } else + return SWIG_OverflowError; + } + } else { + float d; + int res = SWIG_AddCast(SWIG_AsVal(float)(ov, &d)); + if (SWIG_IsOK(res)) { + if (val) + *val = Constructor(d, 0.0); + return res; + } + } + return SWIG_TypeError; + } +} + +%swig_fromcplx_conv(Type, FloatComplex, Real, Imag); +%enddef + +#define %swig_cplxflt_convn(Type, Constructor, Real, Imag) \ +%swig_cplxflt_conv(Type, Constructor, Real, Imag) + + +#define %swig_cplxdbl_convn(Type, Constructor, Real, Imag) \ +%swig_cplxdbl_conv(Type, Constructor, Real, Imag) diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octcontainer.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octcontainer.swg new file mode 100644 index 00000000..269ff754 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octcontainer.swg @@ -0,0 +1,627 @@ +/* ----------------------------------------------------------------------------- + * octcontainer.swg + * + * Octave cell <-> C++ container wrapper + * + * This wrapper, and its iterator, allows a general use (and reuse) of + * the mapping between C++ and Octave, thanks to the C++ templates. + * + * Of course, it needs the C++ compiler to support templates, but + * since we will use this wrapper with the STL containers, that should + * be the case. + * ----------------------------------------------------------------------------- */ + +%{ +#include +#include +%} + + +#if !defined(SWIG_NO_EXPORT_ITERATOR_METHODS) +# if !defined(SWIG_EXPORT_ITERATOR_METHODS) +# define SWIG_EXPORT_ITERATOR_METHODS SWIG_EXPORT_ITERATOR_METHODS +# endif +#endif + +%include + +// The Octave C++ Wrap + +%fragment(""); + +%include + +%fragment(SWIG_Traits_frag(octave_value),"header",fragment="StdTraits") { +namespace swig { + template <> struct traits { + typedef value_category category; + static const char* type_name() { return "octave_value"; } + }; + + template <> struct traits_from { + typedef octave_value value_type; + static octave_value from(const value_type& val) { + return val; + } + }; + + template <> + struct traits_check { + static bool check(const octave_value&) { + return true; + } + }; + + template <> struct traits_asval { + typedef octave_value value_type; + static int asval(const octave_value& obj, value_type *val) { + if (val) *val = obj; + return SWIG_OK; + } + }; +} +} + +%fragment("OctSequence_Base","header",fragment="") +{ +%#include + +namespace std { + template <> + struct less + { + bool + operator()(const octave_value& v, const octave_value& w) const + { + octave_value res = do_binary_op(octave_value::op_le,v,w); + return res.is_true(); + } + }; +} + +namespace swig { + inline size_t + check_index(ptrdiff_t i, size_t size, bool insert = false) { + if ( i < 0 ) { + if ((size_t) (-i) <= size) + return (size_t) (i + size); + } else if ( (size_t) i < size ) { + return (size_t) i; + } else if (insert && ((size_t) i == size)) { + return size; + } + + throw std::out_of_range("index out of range"); + } + + inline size_t + slice_index(ptrdiff_t i, size_t size) { + if ( i < 0 ) { + if ((size_t) (-i) <= size) { + return (size_t) (i + size); + } else { + throw std::out_of_range("index out of range"); + } + } else { + return ( (size_t) i < size ) ? ((size_t) i) : size; + } + } + + template + inline typename Sequence::iterator + getpos(Sequence* self, Difference i) { + typename Sequence::iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline typename Sequence::const_iterator + cgetpos(const Sequence* self, Difference i) { + typename Sequence::const_iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline Sequence* + getslice(const Sequence* self, Difference i, Difference j) { + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size); + typename Sequence::size_type jj = swig::slice_index(j, size); + + if (jj > ii) { + typename Sequence::const_iterator vb = self->begin(); + typename Sequence::const_iterator ve = self->begin(); + std::advance(vb,ii); + std::advance(ve,jj); + return new Sequence(vb, ve); + } else { + return new Sequence(); + } + } + + template + inline void + setslice(Sequence* self, Difference i, Difference j, const InputSeq& v) { + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size, true); + typename Sequence::size_type jj = swig::slice_index(j, size); + if (jj < ii) jj = ii; + size_t ssize = jj - ii; + if (ssize <= v.size()) { + typename Sequence::iterator sb = self->begin(); + typename InputSeq::const_iterator vmid = v.begin(); + std::advance(sb,ii); + std::advance(vmid, jj - ii); + self->insert(std::copy(v.begin(), vmid, sb), vmid, v.end()); + } else { + typename Sequence::iterator sb = self->begin(); + typename Sequence::iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + self->erase(sb,se); + self->insert(sb, v.begin(), v.end()); + } + } + + template + inline void + delslice(Sequence* self, Difference i, Difference j) { + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size, true); + typename Sequence::size_type jj = swig::slice_index(j, size); + if (jj > ii) { + typename Sequence::iterator sb = self->begin(); + typename Sequence::iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + self->erase(sb,se); + } + } +} +} + +%fragment("OctSequence_Cont","header", + fragment="StdTraits", + fragment="OctSequence_Base", + fragment="OctSwigIterator_T") +{ +namespace swig +{ + template + struct OctSequence_Ref // * octave can't support these, because of how assignment works + { + OctSequence_Ref(const octave_value& seq, int index) + : _seq(seq), _index(index) + { + } + + operator T () const + { + // swig::SwigVar_PyObject item = OctSequence_GetItem(_seq, _index); + octave_value item; // * todo + try { + return swig::as(item); + } catch (const std::exception& e) { + char msg[1024]; + sprintf(msg, "in sequence element %d ", _index); + if (!Octave_Error_Occurred()) { + %type_error(swig::type_name()); + } + SWIG_Octave_AddErrorMsg(msg); + SWIG_Octave_AddErrorMsg(e.what()); + throw; + } + } + + OctSequence_Ref& operator=(const T& v) + { + // OctSequence_SetItem(_seq, _index, swig::from(v)); + // * todo + return *this; + } + + private: + octave_value _seq; + int _index; + }; + + template + struct OctSequence_ArrowProxy + { + OctSequence_ArrowProxy(const T& x): m_value(x) {} + const T* operator->() const { return &m_value; } + operator const T*() const { return &m_value; } + T m_value; + }; + + template + struct OctSequence_InputIterator + { + typedef OctSequence_InputIterator self; + + typedef std::random_access_iterator_tag iterator_category; + typedef Reference reference; + typedef T value_type; + typedef T* pointer; + typedef int difference_type; + + OctSequence_InputIterator() + { + } + + OctSequence_InputIterator(const octave_value& seq, int index) + : _seq(seq), _index(index) + { + } + + reference operator*() const + { + return reference(_seq, _index); + } + + OctSequence_ArrowProxy + operator->() const { + return OctSequence_ArrowProxy(operator*()); + } + + bool operator==(const self& ri) const + { + return (_index == ri._index); + } + + bool operator!=(const self& ri) const + { + return !(operator==(ri)); + } + + self& operator ++ () + { + ++_index; + return *this; + } + + self& operator -- () + { + --_index; + return *this; + } + + self& operator += (difference_type n) + { + _index += n; + return *this; + } + + self operator +(difference_type n) const + { + return self(_seq, _index + n); + } + + self& operator -= (difference_type n) + { + _index -= n; + return *this; + } + + self operator -(difference_type n) const + { + return self(_seq, _index - n); + } + + difference_type operator - (const self& ri) const + { + return _index - ri._index; + } + + bool operator < (const self& ri) const + { + return _index < ri._index; + } + + reference + operator[](difference_type n) const + { + return reference(_seq, _index + n); + } + + private: + octave_value _seq; + difference_type _index; + }; + + template + struct OctSequence_Cont + { + typedef OctSequence_Ref reference; + typedef const OctSequence_Ref const_reference; + typedef T value_type; + typedef T* pointer; + typedef int difference_type; + typedef int size_type; + typedef const pointer const_pointer; + typedef OctSequence_InputIterator iterator; + typedef OctSequence_InputIterator const_iterator; + + OctSequence_Cont(const octave_value& seq) : _seq(seq) + { + // * assert that we have map type etc. + /* + if (!OctSequence_Check(seq)) { + throw std::invalid_argument("a sequence is expected"); + } + _seq = seq; + Py_INCREF(_seq); + */ + } + + ~OctSequence_Cont() + { + } + + size_type size() const + { + // return static_cast(OctSequence_Size(_seq)); + return 0; // * todo + } + + bool empty() const + { + return size() == 0; + } + + iterator begin() + { + return iterator(_seq, 0); + } + + const_iterator begin() const + { + return const_iterator(_seq, 0); + } + + iterator end() + { + return iterator(_seq, size()); + } + + const_iterator end() const + { + return const_iterator(_seq, size()); + } + + reference operator[](difference_type n) + { + return reference(_seq, n); + } + + const_reference operator[](difference_type n) const + { + return const_reference(_seq, n); + } + + bool check(bool set_err = true) const + { + int s = size(); + for (int i = 0; i < s; ++i) { + // swig::SwigVar_PyObject item = OctSequence_GetItem(_seq, i); + octave_value item; // * todo + if (!swig::check(item)) { + if (set_err) { + char msg[1024]; + sprintf(msg, "in sequence element %d", i); + SWIG_Error(SWIG_RuntimeError, msg); + } + return false; + } + } + return true; + } + + private: + octave_value _seq; + }; + +} +} + +%define %swig_sequence_iterator(Sequence...) +#if defined(SWIG_EXPORT_ITERATOR_METHODS) + class iterator; + class reverse_iterator; + class const_iterator; + class const_reverse_iterator; + + %typemap(out,noblock=1,fragment="OctSequence_Cont") + iterator, reverse_iterator, const_iterator, const_reverse_iterator { + $result = SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &)), + swig::OctSwigIterator::descriptor(),SWIG_POINTER_OWN); + } + %typemap(out,fragment="OctSequence_Cont") + std::pair, std::pair { + octave_value_list tmpc; + tmpc.append(SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &).first), + swig::OctSwigIterator::descriptor(),SWIG_POINTER_OWN)); + tmpc.append(SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &).second), + swig::OctSwigIterator::descriptor(),SWIG_POINTER_OWN)); + $result = Cell(tmpc); + } + + %fragment("SwigPyPairBoolOutputIterator","header",fragment=SWIG_From_frag(bool),fragment="OctSequence_Cont") {} + + %typemap(out,fragment="OctPairBoolOutputIterator") + std::pair, std::pair { + octave_value_list tmpc; + tmpc.append(SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &).first), + swig::OctSwigIterator::descriptor(),SWIG_POINTER_OWN)); + tmpc.append(SWIG_From(bool)(%static_cast($1,const $type &).second)); + $result = Cell(tmpc); + } + + %typemap(in,noblock=1,fragment="OctSequence_Cont") + iterator(swig::OctSwigIterator *iter = 0, int res), + reverse_iterator(swig::OctSwigIterator *iter = 0, int res), + const_iterator(swig::OctSwigIterator *iter = 0, int res), + const_reverse_iterator(swig::OctSwigIterator *iter = 0, int res) { + res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::OctSwigIterator::descriptor(), 0); + if (!SWIG_IsOK(res) || !iter) { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } else { + swig::OctSwigIterator_T<$type > *iter_t = dynamic_cast *>(iter); + if (iter_t) { + $1 = iter_t->get_current(); + } else { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } + } + } + + %typecheck(%checkcode(ITERATOR),noblock=1,fragment="OctSequence_Cont") + iterator, reverse_iterator, const_iterator, const_reverse_iterator { + swig::OctSwigIterator *iter = 0; + int res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::OctSwigIterator::descriptor(), 0); + $1 = (SWIG_IsOK(res) && iter && (dynamic_cast *>(iter) != 0)); + } + + %fragment("OctSequence_Cont"); +#endif //SWIG_EXPORT_ITERATOR_METHODS +%enddef + +// The octave container methods + +%define %swig_container_methods(Container...) +%enddef + +%define %swig_sequence_methods_common(Sequence...) + %swig_sequence_iterator(%arg(Sequence)) + %swig_container_methods(%arg(Sequence)) + + %fragment("OctSequence_Base"); + + %extend { + value_type pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty container"); + Sequence::value_type x = self->back(); + self->pop_back(); + return x; + } + + value_type __paren__(difference_type i) throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + void __paren_asgn__(difference_type i, value_type x) throw (std::out_of_range) { + *(swig::getpos(self,i)) = x; + } + + void append(value_type x) { + self->push_back(x); + } + } + +%enddef + +%define %swig_sequence_methods(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) +%enddef + +%define %swig_sequence_methods_val(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) +%enddef + +// +// Common fragments +// + +%fragment("StdSequenceTraits","header", + fragment="StdTraits", + fragment="OctSequence_Cont") +{ +namespace swig { + template + inline void + assign(const OctSeq& octseq, Seq* seq) { +%#ifdef SWIG_STD_NOASSIGN_STL + typedef typename OctSeq::value_type value_type; + typename OctSeq::const_iterator it = octseq.begin(); + for (;it != octseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } +%#else + seq->assign(octseq.begin(), octseq.end()); +%#endif + } + + template + struct traits_asptr_stdseq { + typedef Seq sequence; + typedef T value_type; + + static int asptr(const octave_value& obj, sequence **seq) { + if (!obj.is_defined() || Swig::swig_value_deref(obj)) { + sequence *p; + swig_type_info *descriptor = swig::type_info(); + if (descriptor && SWIG_IsOK(SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0))) { + if (seq) *seq = p; + return SWIG_OLDOBJ; + } +%#if SWIG_OCTAVE_PREREQ(4,4,0) + } else if (obj.iscell()) { +%#else + } else if (obj.is_cell()) { +%#endif + try { + OctSequence_Cont octseq(obj); + if (seq) { + sequence *pseq = new sequence(); + assign(octseq, pseq); + *seq = pseq; + return SWIG_NEWOBJ; + } else { + return octseq.check() ? SWIG_OK : SWIG_ERROR; + } + } catch (std::exception& e) { + if (seq&&!error_state) + error("swig type error: %s",e.what()); + return SWIG_ERROR; + } + } + return SWIG_ERROR; + } + }; + + template + struct traits_from_stdseq { + typedef Seq sequence; + typedef T value_type; + typedef typename Seq::size_type size_type; + typedef typename sequence::const_iterator const_iterator; + + static octave_value from(const sequence& seq) { +#ifdef SWIG_OCTAVE_EXTRA_NATIVE_CONTAINERS + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN); + } +#endif + size_type size = seq.size(); + if (size <= (size_type)INT_MAX) { + Cell c(size,1); + int i = 0; + for (const_iterator it = seq.begin(); + it != seq.end(); ++it, ++i) { + c(i) = swig::from(*it); + } + return c; + } else { + error("swig overflow error: sequence size not valid in octave"); + return octave_value(); + } + return octave_value(); + } + }; +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octfragments.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octfragments.swg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octfragments.swg @@ -0,0 +1 @@ + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octiterators.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octiterators.swg new file mode 100644 index 00000000..e186c94a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octiterators.swg @@ -0,0 +1,357 @@ +/* ----------------------------------------------------------------------------- + * octiterators.swg + * + * Users can derive form the OctSwigIterator to implement their + * own iterators. As an example (real one since we use it for STL/STD + * containers), the template OctSwigIterator_T does the + * implementation for generic C++ iterators. + * ----------------------------------------------------------------------------- */ + +%include + +%fragment("OctSwigIterator","header",fragment="") { +namespace swig { + struct stop_iteration { + }; + + struct OctSwigIterator { + private: + octave_value _seq; + + protected: + OctSwigIterator(octave_value seq) : _seq(seq) + { + } + + public: + virtual ~OctSwigIterator() {} + + virtual octave_value value() const = 0; + + virtual OctSwigIterator *incr(size_t n = 1) = 0; + + virtual OctSwigIterator *decr(size_t n = 1) + { + throw stop_iteration(); + } + + virtual ptrdiff_t distance(const OctSwigIterator &x) const + { + throw std::invalid_argument("operation not supported"); + } + + virtual bool equal (const OctSwigIterator &x) const + { + throw std::invalid_argument("operation not supported"); + } + + virtual OctSwigIterator *copy() const = 0; + + octave_value next() + { + octave_value obj = value(); + incr(); + return obj; + } + + octave_value previous() + { + decr(); + return value(); + } + + OctSwigIterator *advance(ptrdiff_t n) + { + return (n > 0) ? incr(n) : decr(-n); + } + + bool operator == (const OctSwigIterator& x) const + { + return equal(x); + } + + bool operator != (const OctSwigIterator& x) const + { + return ! operator==(x); + } + + OctSwigIterator* operator ++ () { + incr(); + return this; + } + + OctSwigIterator* operator -- () { + decr(); + return this; + } + + OctSwigIterator* operator + (ptrdiff_t n) const + { + return copy()->advance(n); + } + + OctSwigIterator* operator - (ptrdiff_t n) const + { + return copy()->advance(-n); + } + + ptrdiff_t operator - (const OctSwigIterator& x) const + { + return x.distance(*this); + } + + static swig_type_info* descriptor() { + static int init = 0; + static swig_type_info* desc = 0; + if (!init) { + desc = SWIG_TypeQuery("swig::OctSwigIterator *"); + init = 1; + } + return desc; + } + }; +} +} + +%fragment("OctSwigIterator_T","header",fragment="",fragment="OctSwigIterator",fragment="StdTraits",fragment="StdIteratorTraits") { +namespace swig { + template + class OctSwigIterator_T : public OctSwigIterator + { + public: + typedef OutIterator out_iterator; + typedef typename std::iterator_traits::value_type value_type; + typedef OctSwigIterator_T self_type; + + OctSwigIterator_T(out_iterator curr, octave_value seq) + : OctSwigIterator(seq), current(curr) + { + } + + const out_iterator& get_current() const + { + return current; + } + + + bool equal (const OctSwigIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return (current == iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + ptrdiff_t distance(const OctSwigIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return std::distance(current, iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + protected: + out_iterator current; + }; + + template + struct from_oper + { + typedef const ValueType& argument_type; + typedef octave_value result_type; + result_type operator()(argument_type v) const + { + return swig::from(v); + } + }; + + template::value_type, + typename FromOper = from_oper > + class OctSwigIteratorOpen_T : public OctSwigIterator_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef OctSwigIterator_T base; + typedef OctSwigIteratorOpen_T self_type; + + OctSwigIteratorOpen_T(out_iterator curr, octave_value seq) + : OctSwigIterator_T(curr, seq) + { + } + + octave_value value() const { + return from(static_cast(*(base::current))); + } + + OctSwigIterator *copy() const + { + return new self_type(*this); + } + + OctSwigIterator *incr(size_t n = 1) + { + while (n--) { + ++base::current; + } + return this; + } + + OctSwigIterator *decr(size_t n = 1) + { + while (n--) { + --base::current; + } + return this; + } + }; + + template::value_type, + typename FromOper = from_oper > + class OctSwigIteratorClosed_T : public OctSwigIterator_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef OctSwigIterator_T base; + typedef OctSwigIteratorClosed_T self_type; + + OctSwigIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, octave_value seq) + : OctSwigIterator_T(curr, seq), begin(first), end(last) + { + } + + octave_value value() const { + if (base::current == end) { + throw stop_iteration(); + } else { + return from(static_cast(*(base::current))); + } + } + + OctSwigIterator *copy() const + { + return new self_type(*this); + } + + OctSwigIterator *incr(size_t n = 1) + { + while (n--) { + if (base::current == end) { + throw stop_iteration(); + } else { + ++base::current; + } + } + return this; + } + + OctSwigIterator *decr(size_t n = 1) + { + while (n--) { + if (base::current == begin) { + throw stop_iteration(); + } else { + --base::current; + } + } + return this; + } + + private: + out_iterator begin; + out_iterator end; + }; + + template + inline OctSwigIterator* + make_output_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, octave_value seq = octave_value()) + { + return new OctSwigIteratorClosed_T(current, begin, end, seq); + } + + template + inline OctSwigIterator* + make_output_iterator(const OutIter& current, octave_value seq = octave_value()) + { + return new OctSwigIteratorOpen_T(current, seq); + } +} +} + + +%fragment("OctSwigIterator"); +namespace swig +{ +// Throw a StopIteration exception + %ignore stop_iteration; + struct stop_iteration {}; + + %typemap(throws) stop_iteration { + error("stop_iteration exception"); + SWIG_fail; + } + +// Mark methods that return new objects + %newobject OctSwigIterator::copy; + %newobject OctSwigIterator::operator + (ptrdiff_t n) const; + %newobject OctSwigIterator::operator - (ptrdiff_t n) const; + + %nodirector OctSwigIterator; + + %catches(swig::stop_iteration) OctSwigIterator::value() const; + %catches(swig::stop_iteration) OctSwigIterator::incr(size_t n = 1); + %catches(swig::stop_iteration) OctSwigIterator::decr(size_t n = 1); + %catches(std::invalid_argument) OctSwigIterator::distance(const OctSwigIterator &x) const; + %catches(std::invalid_argument) OctSwigIterator::equal (const OctSwigIterator &x) const; + %catches(swig::stop_iteration) OctSwigIterator::next(); + %catches(swig::stop_iteration) OctSwigIterator::previous(); + %catches(swig::stop_iteration) OctSwigIterator::advance(ptrdiff_t n); + %catches(swig::stop_iteration) OctSwigIterator::operator += (ptrdiff_t n); + %catches(swig::stop_iteration) OctSwigIterator::operator -= (ptrdiff_t n); + %catches(swig::stop_iteration) OctSwigIterator::operator + (ptrdiff_t n) const; + %catches(swig::stop_iteration) OctSwigIterator::operator - (ptrdiff_t n) const; + + + struct OctSwigIterator + { + protected: + OctSwigIterator(octave_value seq); + + public: + virtual ~OctSwigIterator(); + + virtual octave_value value() const = 0; + + virtual OctSwigIterator *incr(size_t n = 1) = 0; + + virtual OctSwigIterator *decr(size_t n = 1); + + virtual ptrdiff_t distance(const OctSwigIterator &x) const; + + virtual bool equal (const OctSwigIterator &x) const; + + virtual OctSwigIterator *copy() const = 0; + + octave_value next(); + octave_value previous(); + OctSwigIterator *advance(ptrdiff_t n); + + bool operator == (const OctSwigIterator& x) const; + bool operator != (const OctSwigIterator& x) const; + OctSwigIterator* operator ++ (); + OctSwigIterator* operator -- (); + OctSwigIterator* operator + (ptrdiff_t n) const; + OctSwigIterator* operator - (ptrdiff_t n) const; + ptrdiff_t operator - (const OctSwigIterator& x) const; + }; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octopers.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octopers.swg new file mode 100644 index 00000000..665b7033 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octopers.swg @@ -0,0 +1,86 @@ +/* ------------------------------------------------------------ + * Overloaded operator support + * ------------------------------------------------------------ */ + +#ifdef __cplusplus + +// operators supported in Octave, and the methods they are routed to + +// __brace__ a{args} +// __brace_asgn__ a{args} = rhs +// __paren__ a(args) +// __paren_asgn__ a(args) = rhs +// __str__ generates string rep + +// __not__ !a +// __uplus__ +a +// __uminus__ -a +// __transpose__ a.' +// __hermitian__ a' +// __incr__ a++ +// __decr__ a-- +// __add__ a + b +// __sub__ a - b +// __mul__ a * b +// __div__ a / b +// __pow__ a ^ b +// __ldiv__ a \ b +// __lt__ a < b +// __le__ a <= b +// __eq__ a == b +// __ge__ a >= b +// __gt__ a > b +// __ne__ a != b +// __el_mul__ a .* b +// __el_div__ a ./ b +// __el_pow__ a .^ b +// __el_ldiv__ a .\ b +// __el_and__ a & b +// __el_or__ a | b + +// operators supported in C++, and the methods that route to them + +%rename(__add__) *::operator+; +%rename(__add__) *::operator+(); +%rename(__add__) *::operator+() const; +%rename(__sub__) *::operator-; +%rename(__uminus__) *::operator-(); +%rename(__uminus__) *::operator-() const; +%rename(__mul__) *::operator*; +%rename(__div__) *::operator/; +%rename(__mod__) *::operator%; +%rename(__el_and__) *::operator&&; +%rename(__el_or__) *::operator||; +%rename(__xor__) *::operator^; +%rename(__invert__) *::operator~; +%rename(__lt__) *::operator<; +%rename(__le__) *::operator<=; +%rename(__gt__) *::operator>; +%rename(__ge__) *::operator>=; +%rename(__eq__) *::operator==; +%rename(__ne__) *::operator!=; +%rename(__not__) *::operator!; +%rename(__incr__) *::operator++; +%rename(__decr__) *::operator--; +%rename(__paren__) *::operator(); +%rename(__brace__) *::operator[]; + +// Ignored inplace operators +%ignoreoperator(PLUSEQ) operator+=; +%ignoreoperator(MINUSEQ) operator-=; +%ignoreoperator(MULEQ) operator*=; +%ignoreoperator(DIVEQ) operator/=; +%ignoreoperator(MODEQ) operator%=; +%ignoreoperator(LSHIFTEQ) operator<<=; +%ignoreoperator(RSHIFTEQ) operator>>=; +%ignoreoperator(ANDEQ) operator&=; +%ignoreoperator(OREQ) operator|=; +%ignoreoperator(XOREQ) operator^=; + +// Ignored operators +%ignoreoperator(EQ) operator=; +%ignoreoperator(ARROWSTAR) operator->*; +%ignoreoperator(LSHIFT) operator<<; +%ignoreoperator(RSHIFT) operator>>; + +#endif /* __cplusplus */ diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octprimtypes.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octprimtypes.swg new file mode 100644 index 00000000..1c9aa908 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octprimtypes.swg @@ -0,0 +1,254 @@ +/* ------------------------------------------------------------ + * Primitive Types + * ------------------------------------------------------------ */ + + +// boolean + +%fragment(SWIG_From_frag(bool),"header") { +SWIGINTERNINLINE octave_value + SWIG_From_dec(bool)(bool value) +{ + return octave_value(value); +} +} + +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(bool)(const octave_value& ov, bool *val) +{ +%#if SWIG_OCTAVE_PREREQ(4,4,0) + if (!ov.islogical()) +%#else + if (!ov.is_bool_type()) +%#endif + return SWIG_ERROR; + if (val) + *val = ov.bool_value(); + return SWIG_OK; +} +} + +// long + +%fragment(SWIG_From_frag(long),"header") { + SWIGINTERNINLINE octave_value SWIG_From_dec(long) (long value) + { + return octave_value(value); + } +} + + +%fragment(SWIG_AsVal_frag(long),"header") { + SWIGINTERN int SWIG_AsVal_dec(long)(const octave_value& ov, long* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (ov.is_double_type()||ov.is_single_type()) { + double v=ov.double_value(); + if (v!=floor(v)) + return SWIG_TypeError; + } + if (val) + *val = ov.long_value(); + return SWIG_OK; + } +} + +// unsigned long + +%fragment(SWIG_From_frag(unsigned long),"header") { + SWIGINTERNINLINE octave_value SWIG_From_dec(unsigned long) (unsigned long value) + { + return octave_value(value); + } +} + + +%fragment(SWIG_AsVal_frag(unsigned long),"header") { + SWIGINTERN int SWIG_AsVal_dec(unsigned long)(const octave_value& ov, unsigned long* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (ov.is_double_type()||ov.is_single_type()) { + double v=ov.double_value(); + if (v<0) + return SWIG_OverflowError; + if (v!=floor(v)) + return SWIG_TypeError; + } + if (ov.is_int8_type()||ov.is_int16_type()|| + ov.is_int32_type()) { + long v=ov.long_value(); + if (v<0) + return SWIG_OverflowError; + } + if (ov.is_int64_type()) { + long long v=ov.int64_scalar_value().value(); + if (v<0) + return SWIG_OverflowError; + } + if (val) + *val = ov.ulong_value(); + return SWIG_OK; + } +} + +// long long + +%fragment(SWIG_From_frag(long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE + SWIGINTERNINLINE octave_value SWIG_From_dec(long long) (long long value) + { + return octave_int64(value); + } +%#endif +} + + +%fragment(SWIG_AsVal_frag(long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE + SWIGINTERN int SWIG_AsVal_dec(long long)(const octave_value& ov, long long* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (ov.is_double_type()||ov.is_single_type()) { + double v=ov.double_value(); + if (v!=floor(v)) + return SWIG_TypeError; + } + if (val) { + if (ov.is_int64_type()) + *val = ov.int64_scalar_value().value(); + else if (ov.is_uint64_type()) + *val = ov.uint64_scalar_value().value(); + else + *val = ov.long_value(); + } + return SWIG_OK; + } +%#endif +} + +%fragment(SWIG_From_frag(unsigned long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE + SWIGINTERNINLINE octave_value SWIG_From_dec(unsigned long long) (unsigned long long value) + { + return octave_uint64(value); + } +%#endif +} + +%fragment(SWIG_AsVal_frag(unsigned long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE + SWIGINTERN int SWIG_AsVal_dec(unsigned long long)(const octave_value& ov, unsigned long long* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (ov.is_double_type()||ov.is_single_type()) { + double v=ov.double_value(); + if (v<0) + return SWIG_OverflowError; + if (v!=floor(v)) + return SWIG_TypeError; + } + if (ov.is_int8_type()||ov.is_int16_type()|| + ov.is_int32_type()) { + long v=ov.long_value(); + if (v<0) + return SWIG_OverflowError; + } + if (ov.is_int64_type()) { + long long v=ov.int64_scalar_value().value(); + if (v<0) + return SWIG_OverflowError; + } + if (val) { + if (ov.is_int64_type()) + *val = ov.int64_scalar_value().value(); + else if (ov.is_uint64_type()) + *val = ov.uint64_scalar_value().value(); + else + *val = ov.long_value(); + } + return SWIG_OK; + } +%#endif +} + +// double + +%fragment(SWIG_From_frag(double),"header") { + SWIGINTERNINLINE octave_value SWIG_From_dec(double) (double value) + { + return octave_value(value); + } +} + + +%fragment(SWIG_AsVal_frag(double),"header") { + SWIGINTERN int SWIG_AsVal_dec(double)(const octave_value& ov, double* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (val) + *val = ov.double_value(); + return SWIG_OK; + } +} + +// const char* (strings) + +%fragment("SWIG_AsCharPtrAndSize","header") { +SWIGINTERN int +SWIG_AsCharPtrAndSize(octave_value ov, char** cptr, size_t* psize, int *alloc) +{ + if ( +%#if SWIG_OCTAVE_PREREQ(4,4,0) + ov.iscell() +%#else + ov.is_cell() +%#endif + && ov.rows() == 1 && ov.columns() == 1) + ov = ov.cell_value()(0); + if (!ov.is_string()) + return SWIG_TypeError; + + std::string str=ov.string_value(); + size_t len=str.size(); + char* cstr=(char*)str.c_str(); + if (alloc) { + *cptr = %new_copy_array(cstr, len + 1, char); + *alloc = SWIG_NEWOBJ; + } else if (cptr) + *cptr = cstr; + if (psize) + *psize = len + 1; + return SWIG_OK; +} +} + +%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERNINLINE octave_value +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + return std::string(carray,carray+size); +} +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octrun.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octrun.swg new file mode 100644 index 00000000..ff614e68 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octrun.swg @@ -0,0 +1,1557 @@ +#if !SWIG_OCTAVE_PREREQ(3,2,0) +#define SWIG_DEFUN(cname, wname, doc) DEFUNX_DLD(#cname, wname, FS ## cname, args, nargout, doc) +#else +#define SWIG_DEFUN(cname, wname, doc) DEFUNX_DLD(#cname, wname, G ## cname, args, nargout, doc) +#endif + +SWIGRUNTIME bool SWIG_check_num_args(const char *func_name, int num_args, int max_args, int min_args, int varargs) { + if (num_args > max_args && !varargs) + error("function %s takes at most %i arguments", func_name, max_args); + else if (num_args < min_args) + error("function %s requires at least %i arguments", func_name, min_args); + else + return true; + return false; +} + +SWIGRUNTIME octave_value_list *SWIG_Octave_AppendOutput(octave_value_list *ovl, const octave_value &ov) { + ovl->append(ov); + return ovl; +} + +SWIGRUNTIME octave_value SWIG_ErrorType(int code) { + switch (code) { + case SWIG_MemoryError: + return "SWIG_MemoryError"; + case SWIG_IOError: + return "SWIG_IOError"; + case SWIG_RuntimeError: + return "SWIG_RuntimeError"; + case SWIG_IndexError: + return "SWIG_IndexError"; + case SWIG_TypeError: + return "SWIG_TypeError"; + case SWIG_DivisionByZero: + return "SWIG_DivisionByZero"; + case SWIG_OverflowError: + return "SWIG_OverflowError"; + case SWIG_SyntaxError: + return "SWIG_SyntaxError"; + case SWIG_ValueError: + return "SWIG_ValueError"; + case SWIG_SystemError: + return "SWIG_SystemError"; + case SWIG_AttributeError: + return "SWIG_AttributeError"; + } + return "SWIG unknown error"; +} + +SWIGRUNTIME octave_value SWIG_Error(int code, const char *msg) { + octave_value type(SWIG_ErrorType(code)); + std::string r = msg; + r += " (" + type.string_value() + ")"; + error("%s", r.c_str()); + return octave_value(r); +} + +#define SWIG_fail goto fail + +#define SWIG_Octave_ConvertPtr(obj, pptr, type, flags) SWIG_Octave_ConvertPtrAndOwn(obj, pptr, type, flags, 0) +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Octave_ConvertPtr(obj, pptr, type, flags) +#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Octave_ConvertPtrAndOwn(obj, pptr, type, flags, own) +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Octave_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Octave_NewPointerObj(ptr, type, flags) +#define swig_owntype int + +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Octave_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Octave_NewPackedObj(ptr, sz, type) + +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_ConvertPtr(obj, pptr, type, 0) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_NewPointerObj(ptr, type, 0) + +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Octave_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Octave_NewPackedObj(ptr, sz, type) + +#define SWIG_GetModule(clientdata) SWIG_Octave_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_Octave_SetModule(clientdata,pointer); +#define SWIG_MODULE_CLIENTDATA_TYPE void* + +#define Octave_Error_Occurred() 0 +#define SWIG_Octave_AddErrorMsg(msg) {;} + +SWIGRUNTIME swig_module_info *SWIG_Octave_GetModule(void *clientdata); +SWIGRUNTIME void SWIG_Octave_SetModule(void *clientdata, swig_module_info *pointer); + +// For backward compatibility only +#define SWIG_POINTER_EXCEPTION 0 +#define SWIG_arg_fail(arg) 0 + +// Runtime API implementation + +#include +#include +#include + +typedef octave_value_list(*octave_func) (const octave_value_list &, int); +class octave_swig_type; + +namespace Swig { + +#ifdef SWIG_DIRECTORS + + class Director; + + typedef std::map < void *, Director * > rtdir_map; + SWIGINTERN rtdir_map* get_rtdir_map(); + SWIGINTERNINLINE void set_rtdir(void *vptr, Director *d); + SWIGINTERNINLINE void erase_rtdir(void *vptr); + SWIGINTERNINLINE Director *get_rtdir(void *vptr); + + SWIGRUNTIME void swig_director_destroyed(octave_swig_type *self, Director *d); + SWIGRUNTIME octave_swig_type *swig_director_get_self(Director *d); + SWIGRUNTIME void swig_director_set_self(Director *d, octave_swig_type *self); + +#endif + + SWIGRUNTIME octave_base_value *swig_value_ref(octave_swig_type *ost); + SWIGRUNTIME octave_swig_type *swig_value_deref(octave_value ov); + SWIGRUNTIME octave_swig_type *swig_value_deref(const octave_base_value &ov); +} + +#ifdef SWIG_DIRECTORS +SWIGRUNTIME void swig_acquire_ownership(void *vptr); +SWIGRUNTIME void swig_acquire_ownership_array(void *vptr); +SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); +#endif + + struct swig_octave_member { + const char *name; + octave_func method; + octave_func get_method; + octave_func set_method; + int flags; // 1 static, 2 global + const char *doc; + bool is_static() const { + return flags &1; + } bool is_global() const { + return flags &2; + } + }; + + struct swig_octave_class { + const char *name; + swig_type_info **type; + int director; + octave_func constructor; + const char *constructor_doc; + octave_func destructor; + const swig_octave_member *members; + const char **base_names; + const swig_type_info **base; + }; + +#if SWIG_OCTAVE_PREREQ(4,4,0) + // in Octave 4.4 behaviour of octave_builtin() appears to have changed and 'self' argument is no longer passed + // to function (maybe because this is now a 'method'??) so need to create our own octave_function subclass +#define SWIG_OCTAVE_BOUND_FUNC(func, args) octave_value(new octave_swig_bound_func(func, args)) + class octave_swig_bound_func : public octave_function { + public: + + octave_swig_bound_func(void) : octave_function(), method(0), first_args() + { } + + octave_swig_bound_func(octave_function* _method, octave_value_list _first_args) + : octave_function("", ""), method(_method), first_args(_first_args) + { } + + octave_swig_bound_func(const octave_swig_bound_func& f) = delete; + + octave_swig_bound_func& operator= (const octave_swig_bound_func& f) = delete; + + ~octave_swig_bound_func(void) = default; + + bool is_function(void) const { return true; } + + octave_function* function_value(bool = false) { return this; } + + octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { + octave_value_list all_args; + all_args.append(first_args); + all_args.append(args); + return method->call(tw, nargout, all_args); + } + + octave_value subsref(const std::string &ops, const std::list < octave_value_list > &idx) { + octave_value_list ovl = subsref(ops, idx, 1); + return ovl.length() ? ovl(0) : octave_value(); + } + + octave_value_list subsref(const std::string &ops, const std::list < octave_value_list > &idx, int nargout) { + assert(ops.size() > 0); + assert(ops.size() == idx.size()); + if (ops != "(") + error("invalid function call"); + octave::tree_evaluator& tw = octave::interpreter::the_interpreter()->get_evaluator(); + return call(tw, nargout, *idx.begin()); + } + + protected: + + octave_function* method; + octave_value_list first_args; + + std::set dispatch_classes; + + private: + + DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA + }; + DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_swig_bound_func, "octave_swig_bound_func", "octave_swig_bound_func"); +#else +#define SWIG_OCTAVE_BOUND_FUNC(func, args) octave_value(func) +#endif + + // octave_swig_type plays the role of both the shadow class and the class + // representation within Octave, since there is no support for classes. + // + // These should really be decoupled, with the class support added to Octave + // and the shadow class given by an m-file script. That would dramatically + // reduce the runtime complexity, and be more in line w/ other modules. + + class octave_swig_type:public octave_base_value { + struct cpp_ptr { + void *ptr; + bool destroyed; + cpp_ptr(void *_ptr):ptr(_ptr), destroyed(false) { + }}; + typedef std::pair < const swig_type_info *, cpp_ptr > type_ptr_pair; + + mutable swig_module_info *module; + + const swig_type_info *construct_type; // type of special type object + std::vector < type_ptr_pair > types; // our c++ base classes + int own; // whether we call c++ destructors when we die + + typedef std::pair < const swig_octave_member *, octave_value > member_value_pair; + typedef std::map < std::string, member_value_pair > member_map; + member_map members; + bool always_static; + + const swig_octave_member *find_member(const swig_type_info *type, const std::string &name) { + if (!type->clientdata) + return 0; + swig_octave_class *c = (swig_octave_class *) type->clientdata; + const swig_octave_member *m; + for (m = c->members; m->name; ++m) + if (m->name == name) + return m; + for (int j = 0; c->base_names[j]; ++j) { + if (!c->base[j]) { + if (!module) + module = SWIG_GetModule(0); + assert(module); + c->base[j] = SWIG_MangledTypeQueryModule(module, module, c->base_names[j]); + } + if (!c->base[j]) + return 0; + if ((m = find_member(c->base[j], name))) + return m; + } + return 0; + } + + member_value_pair *find_member(const std::string &name, bool insert_if_not_found) { + member_map::iterator it = members.find(name); + if (it != members.end()) + return &it->second; + const swig_octave_member *m; + for (unsigned int j = 0; j < types.size(); ++j) + if ((m = find_member(types[j].first, name))) + return &members.insert(std::make_pair(name, std::make_pair(m, octave_value()))).first->second; + if (!insert_if_not_found) + return 0; + return &members[name]; + } + + const swig_type_info *find_base(const std::string &name, const swig_type_info *base) { + if (!base) { + for (unsigned int j = 0; j < types.size(); ++j) { + assert(types[j].first->clientdata); + swig_octave_class *cj = (swig_octave_class *) types[j].first->clientdata; + if (cj->name == name) + return types[j].first; + } + return 0; + } + assert(base->clientdata); + swig_octave_class *c = (swig_octave_class *) base->clientdata; + for (int j = 0; c->base_names[j]; ++j) { + if (!c->base[j]) { + if (!module) + module = SWIG_GetModule(0); + assert(module); + c->base[j] = SWIG_MangledTypeQueryModule(module, module, c->base_names[j]); + } + if (!c->base[j]) + return 0; + assert(c->base[j]->clientdata); + swig_octave_class *cj = (swig_octave_class *) c->base[j]->clientdata; + if (cj->name == name) + return c->base[j]; + } + return 0; + } + + void load_members(const swig_octave_class* c,member_map& out) const { + for (const swig_octave_member *m = c->members; m->name; ++m) { + if (out.find(m->name) == out.end()) + out.insert(std::make_pair(m->name, std::make_pair(m, octave_value()))); + } + for (int j = 0; c->base_names[j]; ++j) { + if (!c->base[j]) { + if (!module) + module = SWIG_GetModule(0); + assert(module); + c->base[j] = SWIG_MangledTypeQueryModule(module, module, c->base_names[j]); + } + if (!c->base[j]) + continue; + assert(c->base[j]->clientdata); + const swig_octave_class *cj = + (const swig_octave_class *) c->base[j]->clientdata; + load_members(cj,out); + } + } + + void load_members(member_map& out) const { + out=members; + for (unsigned int j = 0; j < types.size(); ++j) + if (types[j].first->clientdata) + load_members((const swig_octave_class *) types[j].first->clientdata, out); + } + + octave_value_list member_invoke(member_value_pair *m, const octave_value_list &args, int nargout) { + if (m->second.is_defined()) + return m->second.subsref("(", std::list < octave_value_list > (1, args), nargout); + else if (m->first && m->first->method) + return m->first->method(args, nargout); + error("member not defined or not invocable"); + return octave_value_list(); + } + + bool dispatch_unary_op(const std::string &symbol, octave_value &ret) const { + octave_swig_type *nc_this = const_cast < octave_swig_type *>(this); + member_value_pair *m = nc_this->find_member(symbol, false); + if (!m || m->first->is_static() || m->first->is_global()) + return false; + octave_value_list args; + args.append(nc_this->as_value()); + octave_value_list argout(nc_this->member_invoke(m, args, 1)); + if (argout.length() < 1) + return false; + ret = argout(0); + return true; + } + + bool dispatch_binary_op(const std::string &symbol, const octave_base_value &rhs, octave_value &ret) const { + octave_swig_type *nc_this = const_cast < octave_swig_type *>(this); + member_value_pair *m = nc_this->find_member(symbol, false); + if (!m || m->first->is_static() || m->first->is_global()) + return false; + octave_value_list args; + args.append(nc_this->as_value()); + args.append(make_value_hack(rhs)); + octave_value_list argout(nc_this->member_invoke(m, args, 1)); + if (argout.length() < 1) + return false; + ret = argout(0); + return true; + } + + bool dispatch_index_op(const std::string &symbol, const octave_value_list &rhs, octave_value_list &ret) const { + octave_swig_type *nc_this = const_cast < octave_swig_type *>(this); + member_value_pair *m = nc_this->find_member(symbol, false); + if (!m || m->first->is_static() || m->first->is_global()) + return false; + octave_value_list args; + args.append(nc_this->as_value()); + args.append(rhs); + octave_value_list argout(nc_this->member_invoke(m, args, 1)); + if (argout.length() >= 1) + ret = argout(0); + return true; + } + + octave_value_list member_deref(member_value_pair *m, const octave_value_list &args) { + if (m->second.is_defined()) { + if (m->second.is_function() || m->second.is_function_handle()) { + return SWIG_OCTAVE_BOUND_FUNC(m->second.function_value(), args); + } else { + return m->second; + } + } else if (m->first) { + if (m->first->get_method) + return m->first->get_method(args, 1); + else if (m->first->method) + return SWIG_OCTAVE_BOUND_FUNC(new octave_builtin(m->first->method), args); + } + error("undefined member"); + return octave_value_list(); + } + + static octave_value make_value_hack(const octave_base_value &x) { + ((octave_swig_type &) x).count++; + return octave_value((octave_base_value *) &x); + } + + octave_swig_type(const octave_swig_type &x); + octave_swig_type &operator=(const octave_swig_type &rhs); + public: + + octave_swig_type(void *_ptr = 0, const swig_type_info *_type = 0, int _own = 0, + bool _always_static = false) + : module(0), construct_type(_ptr ? 0 : _type), own(_own), + always_static(_always_static) { + if (_type || _ptr) + types.push_back(std::make_pair(_type, _ptr)); +#ifdef SWIG_DIRECTORS + if (_ptr) { + Swig::Director *d = Swig::get_rtdir(_ptr); + if (d) + Swig::swig_director_set_self(d, this); + } +#endif + } + + ~octave_swig_type() { + if (own) { + ++count; + for (unsigned int j = 0; j < types.size(); ++j) { + if (!types[j].first || !types[j].first->clientdata) + continue; + swig_octave_class *c = (swig_octave_class *) types[j].first->clientdata; + if (c->destructor && !types[j].second.destroyed && types[j].second.ptr) { + c->destructor(as_value(), 0); + } + } + } +#ifdef SWIG_DIRECTORS + for (unsigned int j = 0; j < types.size(); ++j) + Swig::erase_rtdir(types[j].second.ptr); +#endif + } + + dim_vector dims(void) const { + octave_value out; + if (!dispatch_unary_op("__dims__", out)) + return dim_vector(1,1); + + // Return value should be cell or matrix of integers +#if SWIG_OCTAVE_PREREQ(4,4,0) + if (out.iscell()) { +#else + if (out.is_cell()) { +#endif + const Cell & c=out.cell_value(); + int ndim = c.rows(); + if (ndim==1 && c.columns()!=1) ndim = c.columns(); + + dim_vector d; + d.resize(ndim < 2 ? 2 : ndim); + d(0) = d(1) = 1; + + // Fill in dim_vector + for (int k=0;k a = out.int_vector_value(); + if (error_state) return dim_vector(1,1); + dim_vector d; + d.resize(a.numel() < 2 ? 2 : a.numel()); + d(0) = d(1) = 1; + for (int k=0;kclientdata) + return 0; + swig_octave_class *c = (swig_octave_class *) types[0].first->clientdata; + return c->constructor_doc; + } + + std::string swig_type_name() const { + // * need some way to manually name subclasses. + // * eg optional first arg to subclass(), or named_subclass() + std::string ret; + for (unsigned int j = 0; j < types.size(); ++j) { + if (j) + ret += "_"; + if (types[j].first->clientdata) { + swig_octave_class *c = (swig_octave_class *) types[j].first->clientdata; + ret += c->name; + } else + ret += types[j].first->name; + } + return ret; + } + + void merge(octave_swig_type &rhs) { + rhs.own = 0; + for (unsigned int j = 0; j < rhs.types.size(); ++j) { + assert(!rhs.types[j].second.destroyed); +#ifdef SWIG_DIRECTORS + Swig::Director *d = Swig::get_rtdir(rhs.types[j].second.ptr); + if (d) + Swig::swig_director_set_self(d, this); +#endif + } + types.insert(types.end(), rhs.types.begin(), rhs.types.end()); + members.insert(rhs.members.begin(), rhs.members.end()); +#if SWIG_OCTAVE_PREREQ(4,4,0) + assign(rhs.swig_type_name(), rhs.as_value()); +#else + rhs.types.clear(); + rhs.members.clear(); +#endif + } + + typedef member_map::const_iterator swig_member_const_iterator; + swig_member_const_iterator swig_members_begin() { return members.begin(); } + swig_member_const_iterator swig_members_end() { return members.end(); } + + int cast(void **vptr, swig_type_info *type, int *_own, int flags) { + int res = SWIG_ERROR; + if (_own) + *_own = own; + if (flags &SWIG_POINTER_DISOWN) + own = 0; + if (!type && types.size()) { + if(vptr) + *vptr = types[0].second.ptr; + return SWIG_OK; + } + for (unsigned int j = 0; j < types.size(); ++j) + if (type == types[j].first) { + if(vptr) + *vptr = types[j].second.ptr; + return SWIG_OK; + } + for (unsigned int j = 0; j < types.size(); ++j) { + swig_cast_info *tc = SWIG_TypeCheck(types[j].first->name, type); + if (!tc) + continue; + if(vptr) { + int newmemory = 0; + *vptr = SWIG_TypeCast(tc, types[j].second.ptr, &newmemory); + if (newmemory == SWIG_CAST_NEW_MEMORY) { + assert(_own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ + if (_own) + *_own = *_own | SWIG_CAST_NEW_MEMORY; + } + } + res = SWIG_OK; + break; + } + return res; + } + + bool is_owned() const { + return own; + } + +#ifdef SWIG_DIRECTORS + void director_destroyed(Swig::Director *d) { + bool found = false; + for (unsigned int j = 0; j < types.size(); ++j) { + Swig::Director *dj = Swig::get_rtdir(types[j].second.ptr); + if (dj == d) { + types[j].second.destroyed = true; + found = true; + } + } + assert(found); + } +#endif + + void assign(const std::string &name, const octave_value &ov) { + members[name] = std::make_pair((const swig_octave_member *) 0, ov); + } + + void assign(const std::string &name, const swig_octave_member *m) { + members[name] = std::make_pair(m, octave_value()); + } + + octave_base_value *clone() const { + // pass-by-value is probably not desired, and is harder; + // requires calling copy constructors of contained types etc. + assert(0); + *(int *) 0 = 0; + return 0; + } + + octave_base_value *empty_clone() const { + return new octave_swig_type(); + } + + bool is_defined() const { + return true; + } + + virtual bool is_map() const { + return true; + } + + virtual octave_value subsref(const std::string &ops, const std::list < octave_value_list > &idx) { + octave_value_list ovl = subsref(ops, idx, 1); + return ovl.length()? ovl(0) : octave_value(); + } + + virtual octave_value_list subsref(const std::string &ops, const std::list < octave_value_list > &idx, int nargout) { + assert(ops.size() > 0); + assert(ops.size() == idx.size()); + + std::list < octave_value_list >::const_iterator idx_it = idx.begin(); + int skip = 0; + octave_value_list sub_ovl; + + // constructor invocation + if (ops[skip] == '(' && construct_type) { + assert(construct_type->clientdata); + swig_octave_class *c = (swig_octave_class *) construct_type->clientdata; + if (!c->constructor) { + error("cannot create instance"); + return octave_value_list(); + } + octave_value_list args; + if (c->director) + args.append(Swig::swig_value_ref(new octave_swig_type(this, 0, 0))); + args.append(*idx_it++); + ++skip; + sub_ovl = c->constructor(args, nargout); + } + // member dereference or invocation + else if (ops[skip] == '.') { + std::string subname; + const swig_type_info *base = 0; // eg, a.base.base_cpp_mem + for (;;) { + octave_value_list subname_ovl(*idx_it++); + ++skip; + assert(subname_ovl.length() == 1 && subname_ovl(0).is_string()); + subname = subname_ovl(0).string_value(); + + const swig_type_info *next_base = find_base(subname, base); + if (!next_base || skip >= (int) ops.size() || ops[skip] != '.') + break; + base = next_base; + } + + member_value_pair tmp, *m = &tmp; + if (!base || !(m->first = find_member(base, subname))) + m = find_member(subname, false); + if (!m) { + error("member not found"); + return octave_value_list(); + } + + octave_value_list args; + if (!always_static && + (!m->first || (!m->first->is_static() && !m->first->is_global()))) + args.append(as_value()); + if (skip < (int) ops.size() && ops[skip] == '(' && + ((m->first && m->first->method) || m->second.is_function() || + m->second.is_function_handle())) { + args.append(*idx_it++); + ++skip; + sub_ovl = member_invoke(m, args, nargout); + } else { + sub_ovl = member_deref(m, args); + } + } + // index operator + else { + if (ops[skip] == '(' || ops[skip] == '{') { + const char *op_name = ops[skip] == '(' ? "__paren__" : "__brace__"; + octave_value_list args; + args.append(*idx_it++); + ++skip; + if (!dispatch_index_op(op_name, args, sub_ovl)) { + error("error evaluating index operator"); + return octave_value_list(); + } + } else { + error("unsupported subsref"); + return octave_value_list(); + } + } + + if (skip >= (int) ops.size()) + return sub_ovl; + if (sub_ovl.length() < 1) { + error("bad subs ref"); + return octave_value_list(); + } + return sub_ovl(0).next_subsref(nargout, ops, idx, skip); + } + + octave_value subsasgn(const std::string &ops, const std::list < octave_value_list > &idx, const octave_value &rhs) { + assert(ops.size() > 0); + assert(ops.size() == idx.size()); + + std::list < octave_value_list >::const_iterator idx_it = idx.begin(); + int skip = 0; + + if (ops.size() > 1) { + std::list < octave_value_list >::const_iterator last = idx.end(); + --last; + std::list < octave_value_list > next_idx(idx.begin(), last); + octave_value next_ov = subsref(ops.substr(0, ops.size() - 1), next_idx); + next_ov.subsasgn(ops.substr(ops.size() - 1), std::list < octave_value_list > (1, *last), rhs); + } + + else if (ops[skip] == '(' || ops[skip] == '{') { + const char *op_name = ops[skip] == '(' ? "__paren_asgn__" : "__brace_asgn__"; + member_value_pair *m = find_member(op_name, false); + if (m) { + octave_value_list args; + args.append(as_value()); + args.append(*idx_it); + args.append(rhs); + member_invoke(m, args, 1); + } else + error("%s member not found", op_name); + } + + else if (ops[skip] == '.') { + octave_value_list subname_ovl(*idx_it++); + ++skip; + assert(subname_ovl.length() == 1 &&subname_ovl(0).is_string()); + std::string subname = subname_ovl(0).string_value(); + + member_value_pair *m = find_member(subname, true); + if (!m->first || !m->first->set_method) { + m->first = 0; + m->second = rhs; + } else if (m->first->set_method) { + octave_value_list args; + if (!m->first->is_static() && !m->first->is_global()) + args.append(as_value()); + args.append(rhs); + m->first->set_method(args, 1); + } else + error("member not assignable"); + } else + error("unsupported subsasgn"); + + return as_value(); + } + + virtual bool is_object() const { + return true; + } + + virtual bool is_string() const { + octave_swig_type *nc_this = const_cast < octave_swig_type *>(this); + return !!nc_this->find_member("__str__", false); + } + + virtual std::string string_value(bool force = false) const { + octave_value ret; + if (!dispatch_unary_op("__str__", ret)) { + error("__str__ method not defined"); + return std::string(); + } + if (!ret.is_string()) { + error("__str__ method did not return a string"); + return std::string(); + } + return ret.string_value(); + } + + virtual double scalar_value(bool frc_str_conv = false) const { + octave_value ret; + if (!dispatch_unary_op("__float__", ret)) { + error("__float__ method not defined"); + } + return ret.scalar_value(); + } + +#if SWIG_OCTAVE_PREREQ(4,2,0) + virtual octave_value as_double(void) const { + octave_value ret; + if (!dispatch_unary_op("__float__", ret)) { + error("__float__ method not defined"); + } + return ret.as_double(); + } + + virtual octave_value as_single(void) const { + octave_value ret; + if (!dispatch_unary_op("__float__", ret)) { + error("__float__ method not defined"); + } + return ret.as_single(); + } +#endif + +#if SWIG_OCTAVE_PREREQ(3,8,0) + virtual octave_value map(octave_base_value::unary_mapper_t umap) const { + const std::string opname = std::string("__") + octave_base_value::get_umap_name(umap) + std::string("__"); + octave_value ret; + if (!dispatch_unary_op(opname, ret)) { + error("%s", (opname + std::string(" method not found")).c_str()); + return octave_value(); + } + return ret; + } +#endif + +#if SWIG_OCTAVE_PREREQ(3,3,52) + virtual octave_map map_value() const { + return octave_map(); + } +#else + virtual Octave_map map_value() const { + return Octave_map(); + } +#endif + + virtual string_vector map_keys() const { + member_map tmp; + load_members(tmp); + + string_vector keys(tmp.size()); + int k = 0; + for (member_map::iterator it = tmp.begin(); it != tmp.end(); ++it) + keys(k++) = it->first; + + return keys; + } + + virtual bool save_ascii (std::ostream& os) { + return true; + } + + virtual bool load_ascii (std::istream& is) { + return true; + } + + virtual bool save_binary (std::ostream& os, bool& save_as_floats) { + return true; + } + + virtual bool load_binary (std::istream& is, bool swap, + oct_mach_info::float_format fmt) { + return true; + } + +#if defined (HAVE_HDF5) +# if SWIG_OCTAVE_PREREQ(4,0,0) + virtual bool + save_hdf5 (octave_hdf5_id loc_id, const char *name, bool save_as_floats) { + return true; + } + + virtual bool + load_hdf5 (octave_hdf5_id loc_id, const char *name, bool have_h5giterate_bug) { + return true; + } +# else + virtual bool + save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) { + return true; + } + + virtual bool + load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug) { + return true; + } +# endif +#endif + + virtual octave_value convert_to_str(bool pad = false, bool force = false, char type = '"') const { + return string_value(); + } + + virtual octave_value convert_to_str_internal(bool pad, bool force, char type) const { + return string_value(); + } + + static bool dispatch_global_op(const std::string &symbol, const octave_value_list &args, octave_value &ret) { + // we assume that SWIG_op_prefix-prefixed functions are installed in global namespace + // (rather than any module namespace). + + octave_function *fcn = is_valid_function(symbol, std::string(), false); + if (!fcn) + return false; +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::tree_evaluator& tw = octave::interpreter::the_interpreter()->get_evaluator(); + octave_value_list retval = fcn->call(tw, 1, args); + if (retval.length() == 1) + ret = retval(0); +#else + ret = fcn->do_multi_index_op(1, args)(0); +#endif + return true; + } + + static octave_value dispatch_unary_op(const octave_base_value &x, const char *op_name) { + octave_swig_type *ost = Swig::swig_value_deref(x); + assert(ost); + + octave_value ret; + if (ost->dispatch_unary_op(std::string("__") + op_name + std::string("__"), ret)) + return ret; + std::string symbol = SWIG_op_prefix + ost->swig_type_name() + "_" + op_name; + octave_value_list args; + args.append(make_value_hack(x)); + if (dispatch_global_op(symbol, args, ret)) + return ret; + + error("could not dispatch unary operator"); + return octave_value(); + } + + static octave_value dispatch_binary_op(const octave_base_value &lhs, const octave_base_value &rhs, const char *op_name) { + octave_swig_type *lhs_ost = Swig::swig_value_deref(lhs); + octave_swig_type *rhs_ost = Swig::swig_value_deref(rhs); + + octave_value ret; + if (lhs_ost && lhs_ost->dispatch_binary_op(std::string("__") + op_name + std::string("__"), rhs, ret)) + return ret; + if (rhs_ost) { + if (strlen(op_name) == 2 && (op_name[1] == 't' || op_name[1] == 'e')) { + if (op_name[0] == 'l' && rhs_ost->dispatch_binary_op(std::string("__g") + op_name[1] + std::string("__"), lhs, ret)) + return ret; + if (op_name[0] == 'g' && rhs_ost->dispatch_binary_op(std::string("__l") + op_name[1] + std::string("__"), lhs, ret)) + return ret; + } + if (rhs_ost->dispatch_binary_op(std::string("__r") + op_name + std::string("__"), lhs, ret)) + return ret; + } + + std::string symbol; + octave_value_list args; + args.append(make_value_hack(lhs)); + args.append(make_value_hack(rhs)); + + symbol = SWIG_op_prefix; + symbol += lhs_ost ? lhs_ost->swig_type_name() : lhs.type_name(); + symbol += "_"; + symbol += op_name; + symbol += "_"; + symbol += rhs_ost ? rhs_ost->swig_type_name() : rhs.type_name(); + if (dispatch_global_op(symbol, args, ret)) + return ret; + + symbol = SWIG_op_prefix; + symbol += lhs_ost ? lhs_ost->swig_type_name() : lhs.type_name(); + symbol += "_"; + symbol += op_name; + symbol += "_"; + symbol += "any"; + if (dispatch_global_op(symbol, args, ret)) + return ret; + + symbol = SWIG_op_prefix; + symbol += "any"; + symbol += "_"; + symbol += op_name; + symbol += "_"; + symbol += rhs_ost ? rhs_ost->swig_type_name() : rhs.type_name(); + if (dispatch_global_op(symbol, args, ret)) + return ret; + + error("could not dispatch binary operator"); + return octave_value(); + } + +#if SWIG_OCTAVE_PREREQ(4,0,0) + void print(std::ostream &os, bool pr_as_read_syntax = false) +#else + void print(std::ostream &os, bool pr_as_read_syntax = false) const +#endif + { + if (is_string()) { + os << string_value(); + return; + } + + member_map tmp; + load_members(tmp); + + indent(os); + os << "{"; newline(os); + increment_indent_level(); + for (unsigned int j = 0; j < types.size(); ++j) { + indent(os); + if (types[j].first->clientdata) { + const swig_octave_class *c = (const swig_octave_class *) types[j].first->clientdata; + os << c->name << ", ptr = " << types[j].second.ptr; newline(os); + } else { + os << types[j].first->name << ", ptr = " << types[j].second.ptr; newline(os); + } + } + for (member_map::const_iterator it = tmp.begin(); it != tmp.end(); ++it) { + indent(os); + if (it->second.first) { + const char *objtype = it->second.first->method ? "method" : "variable"; + const char *modifier = (it->second.first->flags &1) ? "static " : (it->second.first->flags &2) ? "global " : ""; + os << it->second.first->name << " (" << modifier << objtype << ")"; newline(os); + assert(it->second.first->name == it->first); + } else { + os << it->first; newline(os); + } + } + decrement_indent_level(); + indent(os); + os << "}"; newline(os); + } + }; + + // Octave tries hard to preserve pass-by-value semantics. Eg, assignments + // will call clone() via make_unique() if there is more than one outstanding + // reference to the lhs, and forces the clone's reference count to 1 + // (so you can't just increment your own count and return this). + // + // One way to fix this (without modifying Octave) is to add a level of + // indirection such that clone copies ref-counted pointer and we keep + // pass-by-ref semantics (which are more natural/expected for C++ bindings). + // + // Supporting both pass-by-{ref,value} and toggling via %feature/option + // might be nice. + + class octave_swig_ref:public octave_base_value { + octave_swig_type *ptr; + public: + octave_swig_ref(octave_swig_type *_ptr = 0) + :ptr(_ptr) { } + + ~octave_swig_ref() + { if (ptr) ptr->decref(); } + + octave_swig_type *get_ptr() const + { return ptr; } + + octave_base_value *clone() const + { if (ptr) ptr->incref(); return new octave_swig_ref(ptr); } + + octave_base_value *empty_clone() const + { return new octave_swig_ref(0); } + + dim_vector dims(void) const + { return ptr->dims(); } + + bool is_defined() const + { return ptr->is_defined(); } + + virtual bool is_map() const + { return ptr->is_map(); } + + virtual octave_value subsref(const std::string &ops, const std::list < octave_value_list > &idx) + { return ptr->subsref(ops, idx); } + + virtual octave_value_list subsref(const std::string &ops, const std::list < octave_value_list > &idx, int nargout) + { return ptr->subsref(ops, idx, nargout); } + + octave_value subsasgn(const std::string &ops, const std::list < octave_value_list > &idx, const octave_value &rhs) + { return ptr->subsasgn(ops, idx, rhs); } + + virtual bool is_object() const + { return ptr->is_object(); } + + virtual bool is_string() const + { return ptr->is_string(); } + + virtual std::string string_value(bool force = false) const + { return ptr->string_value(force); } + + virtual double scalar_value(bool frc_str_conv = false) const + { return ptr->scalar_value(frc_str_conv); } + +#if SWIG_OCTAVE_PREREQ(4,2,0) + virtual octave_value as_double(void) const + { return ptr->as_double(); } + + virtual octave_value as_single(void) const + { return ptr->as_single(); } +#endif + +#if SWIG_OCTAVE_PREREQ(3,8,0) + virtual octave_value map(octave_base_value::unary_mapper_t umap) const + { return ptr->map(umap); } +#endif + +#if SWIG_OCTAVE_PREREQ(3,3,52) + virtual octave_map map_value() const + { return ptr->map_value(); } +#else + virtual Octave_map map_value() const + { return ptr->map_value(); } +#endif + + virtual string_vector map_keys() const + { return ptr->map_keys(); } + + virtual bool save_ascii (std::ostream& os) + { return ptr->save_ascii(os); } + + virtual bool load_ascii (std::istream& is) + { return ptr->load_ascii(is); } + + virtual bool save_binary (std::ostream& os, bool& save_as_floats) + { return ptr->save_binary(os, save_as_floats); } + + virtual bool load_binary (std::istream& is, bool swap, + oct_mach_info::float_format fmt) + { return ptr->load_binary(is, swap, fmt); } + +#if defined (HAVE_HDF5) +# if SWIG_OCTAVE_PREREQ(4,0,0) + virtual bool + save_hdf5 (octave_hdf5_id loc_id, const char *name, bool save_as_floats) + { return ptr->save_hdf5(loc_id, name, save_as_floats); } + + virtual bool + load_hdf5 (octave_hdf5_id loc_id, const char *name, bool have_h5giterate_bug) + { return ptr->load_hdf5(loc_id, name, have_h5giterate_bug); } +# else + virtual bool + save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) + { return ptr->save_hdf5(loc_id, name, save_as_floats); } + + virtual bool + load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug) + { return ptr->load_hdf5(loc_id, name, have_h5giterate_bug); } +# endif +#endif + + virtual octave_value convert_to_str(bool pad = false, bool force = false, char type = '"') const + { return ptr->convert_to_str(pad, force, type); } + + virtual octave_value convert_to_str_internal(bool pad, bool force, char type) const + { return ptr->convert_to_str_internal(pad, force, type); } + +#if SWIG_OCTAVE_PREREQ(4,0,0) + void print(std::ostream &os, bool pr_as_read_syntax = false) +#else + void print(std::ostream &os, bool pr_as_read_syntax = false) const +#endif + { return ptr->print(os, pr_as_read_syntax); } + + virtual type_conv_info numeric_conversion_function(void) const { + return octave_base_value::type_conv_info (default_numeric_conversion_function, + octave_scalar::static_type_id ()); + } + + private: + static octave_base_value *default_numeric_conversion_function (const octave_base_value& a) { + const octave_swig_ref& v = dynamic_cast(a); + return new octave_scalar(v.scalar_value()); + } + +#if !SWIG_OCTAVE_PREREQ(4,0,0) + DECLARE_OCTAVE_ALLOCATOR; +#endif + DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA; + }; +#if !SWIG_OCTAVE_PREREQ(4,0,0) + DEFINE_OCTAVE_ALLOCATOR(octave_swig_ref); +#endif + DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_swig_ref, "swig_ref", "swig_ref"); + + class octave_swig_packed:public octave_base_value { + swig_type_info *type; + std::vector < char > buf; + public: + + octave_swig_packed(swig_type_info *_type = 0, const void *_buf = 0, size_t _buf_len = 0) + : type(_type), buf((const char*)_buf, (const char*)_buf + _buf_len) { + } + + bool copy(swig_type_info *outtype, void *ptr, size_t sz) const { + if (outtype && outtype != type) + return false; + assert(sz <= buf.size()); + std::copy(buf.begin(), buf.begin()+sz, (char*)ptr); + return true; + } + + octave_base_value *clone() const { + return new octave_swig_packed(*this); + } + + octave_base_value *empty_clone() const { + return new octave_swig_packed(); + } + + bool is_defined() const { + return true; + } + +#if SWIG_OCTAVE_PREREQ(4,0,0) + void print(std::ostream &os, bool pr_as_read_syntax = false) +#else + void print(std::ostream &os, bool pr_as_read_syntax = false) const +#endif + { + indent(os); + os << "swig packed type: name = " << (type ? type->name : std::string()) << ", len = " << buf.size(); newline(os); + } + + + virtual bool save_ascii (std::ostream& os) { + return true; + } + + virtual bool load_ascii (std::istream& is) { + return true; + } + + virtual bool save_binary (std::ostream& os, bool& save_as_floats) { + return true; + } + + virtual bool load_binary (std::istream& is, bool swap, + oct_mach_info::float_format fmt) { + return true; + } + +#if defined (HAVE_HDF5) +# if SWIG_OCTAVE_PREREQ(4,0,0) + virtual bool + save_hdf5 (octave_hdf5_id loc_id, const char *name, bool save_as_floats) { + return true; + } + + virtual bool + load_hdf5 (octave_hdf5_id loc_id, const char *name, bool have_h5giterate_bug) { + return true; + } +# else + virtual bool + save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) { + return true; + } + + virtual bool + load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug) { + return true; + } +# endif +#endif + + private: +#if !SWIG_OCTAVE_PREREQ(4,0,0) + DECLARE_OCTAVE_ALLOCATOR; +#endif + DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA; + }; +#if !SWIG_OCTAVE_PREREQ(4,0,0) + DEFINE_OCTAVE_ALLOCATOR(octave_swig_packed); +#endif + DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_swig_packed, "swig_packed", "swig_packed"); + + SWIGRUNTIME octave_value_list octave_set_immutable(const octave_value_list &args, int nargout) { + error("attempt to set immutable member variable"); + return octave_value_list(); + } + + struct octave_value_ref { + const octave_value_list &ovl; + int j; + + octave_value_ref(const octave_value_list &_ovl, int _j) + :ovl(_ovl), j(_j) { } + + operator octave_value() const { + return ovl(j); + } + + octave_value operator*() const { + return ovl(j); + } + }; + + +namespace Swig { + + SWIGRUNTIME octave_base_value *swig_value_ref(octave_swig_type *ost) { + return new octave_swig_ref(ost); + } + + SWIGRUNTIME octave_swig_type *swig_value_deref(octave_value ov) { + if ( +#if SWIG_OCTAVE_PREREQ(4,4,0) + ov.iscell() +#else + ov.is_cell() +#endif + && ov.rows() == 1 && ov.columns() == 1) + ov = ov.cell_value()(0); + return swig_value_deref(*ov.internal_rep()); + } + + SWIGRUNTIME octave_swig_type *swig_value_deref(const octave_base_value &ov) { + if (ov.type_id() != octave_swig_ref::static_type_id()) + return 0; + const octave_swig_ref *osr = static_cast < const octave_swig_ref *>(&ov); + return osr->get_ptr(); + } + +} + + +#define swig_unary_op(name) \ +SWIGRUNTIME octave_value swig_unary_op_##name(const octave_base_value &x) { \ + return octave_swig_type::dispatch_unary_op(x,#name); \ +} +#define swig_binary_op(name) \ +SWIGRUNTIME octave_value swig_binary_op_##name(const octave_base_value&lhs,const octave_base_value &rhs) { \ + return octave_swig_type::dispatch_binary_op(lhs,rhs,#name); \ +} +#if SWIG_OCTAVE_PREREQ(4,4,0) +#define swigreg_unary_op(name) \ +if (!octave_value_typeinfo::lookup_unary_op(octave_value::op_##name,tid)) \ +typeinfo.register_unary_op(octave_value::op_##name,tid,swig_unary_op_##name); +#else +#define swigreg_unary_op(name) \ +if (!octave_value_typeinfo::lookup_unary_op(octave_value::op_##name,tid)) \ +octave_value_typeinfo::register_unary_op(octave_value::op_##name,tid,swig_unary_op_##name); +#endif +#if SWIG_OCTAVE_PREREQ(4,4,0) +#define swigreg_binary_op(name) \ +if (!octave_value_typeinfo::lookup_binary_op(octave_value::op_##name,tid1,tid2)) \ +typeinfo.register_binary_op(octave_value::op_##name,tid1,tid2,swig_binary_op_##name); +#else +#define swigreg_binary_op(name) \ +if (!octave_value_typeinfo::lookup_binary_op(octave_value::op_##name,tid1,tid2)) \ +octave_value_typeinfo::register_binary_op(octave_value::op_##name,tid1,tid2,swig_binary_op_##name); +#endif + + swig_unary_op(not); + swig_unary_op(uplus); + swig_unary_op(uminus); + swig_unary_op(transpose); + swig_unary_op(hermitian); + swig_unary_op(incr); + swig_unary_op(decr); + + swig_binary_op(add); + swig_binary_op(sub); + swig_binary_op(mul); + swig_binary_op(div); + swig_binary_op(pow); + swig_binary_op(ldiv); +#if !SWIG_OCTAVE_PREREQ(4,2,0) + swig_binary_op(lshift); + swig_binary_op(rshift); +#endif + swig_binary_op(lt); + swig_binary_op(le); + swig_binary_op(eq); + swig_binary_op(ge); + swig_binary_op(gt); + swig_binary_op(ne); + swig_binary_op(el_mul); + swig_binary_op(el_div); + swig_binary_op(el_pow); + swig_binary_op(el_ldiv); + swig_binary_op(el_and); + swig_binary_op(el_or); + + SWIGRUNTIME void SWIG_InstallUnaryOps(int tid) { +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::type_info& typeinfo = octave::interpreter::the_interpreter()->get_type_info(); +#endif + swigreg_unary_op(not); + swigreg_unary_op(uplus); + swigreg_unary_op(uminus); + swigreg_unary_op(transpose); + swigreg_unary_op(hermitian); + swigreg_unary_op(incr); + swigreg_unary_op(decr); + } + SWIGRUNTIME void SWIG_InstallBinaryOps(int tid1, int tid2) { +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::type_info& typeinfo = octave::interpreter::the_interpreter()->get_type_info(); +#endif + swigreg_binary_op(add); + swigreg_binary_op(sub); + swigreg_binary_op(mul); + swigreg_binary_op(div); + swigreg_binary_op(pow); + swigreg_binary_op(ldiv); +#if !SWIG_OCTAVE_PREREQ(4,2,0) + swigreg_binary_op(lshift); + swigreg_binary_op(rshift); +#endif + swigreg_binary_op(lt); + swigreg_binary_op(le); + swigreg_binary_op(eq); + swigreg_binary_op(ge); + swigreg_binary_op(gt); + swigreg_binary_op(ne); + swigreg_binary_op(el_mul); + swigreg_binary_op(el_div); + swigreg_binary_op(el_pow); + swigreg_binary_op(el_ldiv); + swigreg_binary_op(el_and); + swigreg_binary_op(el_or); + } + SWIGRUNTIME void SWIG_InstallOps(int tid) { + // here we assume that tid are conseq integers increasing from zero, and + // that our tid is the last one. might be better to have explicit string + // list of types we should bind to, and use lookup_type to resolve their tid. + + SWIG_InstallUnaryOps(tid); + SWIG_InstallBinaryOps(tid, tid); + for (int j = 0; j < tid; ++j) { + SWIG_InstallBinaryOps(j, tid); + SWIG_InstallBinaryOps(tid, j); + } + } + +SWIGRUNTIME octave_value SWIG_Octave_NewPointerObj(void *ptr, swig_type_info *type, int flags) { + int own = (flags &SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; + +#ifdef SWIG_DIRECTORS + Swig::Director *d = Swig::get_rtdir(ptr); + if (d && Swig::swig_director_get_self(d)) + return Swig::swig_director_get_self(d)->as_value(); +#endif + return Swig::swig_value_ref(new octave_swig_type(ptr, type, own)); +} + +SWIGRUNTIME int SWIG_Octave_ConvertPtrAndOwn(octave_value ov, void **ptr, swig_type_info *type, int flags, int *own) { + if ( +#if SWIG_OCTAVE_PREREQ(4,4,0) + ov.iscell() +#else + ov.is_cell() +#endif + && ov.rows() == 1 && ov.columns() == 1) + ov = ov.cell_value()(0); + if (!ov.is_defined() || + (ov.is_matrix_type() && ov.rows() == 0 && ov.columns() == 0) ) { + if (ptr) + *ptr = 0; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } + if (ov.type_id() != octave_swig_ref::static_type_id()) + return SWIG_ERROR; + octave_swig_ref *osr = static_cast < octave_swig_ref *>(ov.internal_rep()); + octave_swig_type *ost = osr->get_ptr(); + return ost->cast(ptr, type, own, flags); +} + +SWIGRUNTIME octave_value SWIG_Octave_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { + return new octave_swig_packed(type, (char *) ptr, sz); +} + +SWIGRUNTIME int SWIG_Octave_ConvertPacked(const octave_value &ov, void *ptr, size_t sz, swig_type_info *type) { + if (!ov.is_defined()) + return SWIG_ERROR; + if (ov.type_id() != octave_swig_packed::static_type_id()) + return SWIG_ERROR; + octave_swig_packed *ost = static_cast < octave_swig_packed *>(ov.internal_rep()); + return ost->copy(type, (char *) ptr, sz) ? SWIG_OK : SWIG_ERROR; +} + +SWIGRUNTIMEINLINE void SWIG_Octave_SetConstant(octave_swig_type *module_ns, const std::string &name, const octave_value &ov) { + module_ns->assign(name, ov); +} + +SWIGRUNTIMEINLINE octave_value SWIG_Octave_GetGlobalValue(std::string name) { +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); + return symtab.global_varval(name); +#else + return get_global_value(name, true); +#endif +} + +SWIGRUNTIME void SWIG_Octave_SetGlobalValue(std::string name, const octave_value& value) { +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); + symtab.global_assign(name, value); +#else + set_global_value(name, value); +#endif +} + +SWIGRUNTIME void SWIG_Octave_LinkGlobalValue(std::string name) { +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); + octave::symbol_scope symscope = octave::interpreter::the_interpreter()->get_current_scope(); + symscope.assign(name, symtab.global_varval(name)); + symscope.mark_global(name); +#else +#if !SWIG_OCTAVE_PREREQ(3,2,0) + link_to_global_variable(curr_sym_tab->lookup(name, true)); +#else +#if !SWIG_OCTAVE_PREREQ(3,8,0) + symbol_table::varref(name); +#endif + symbol_table::mark_global(name); +#endif +#endif +} + +SWIGRUNTIME swig_module_info *SWIG_Octave_GetModule(void *clientdata) { + octave_value ov = SWIG_Octave_GetGlobalValue("__SWIG_MODULE__" SWIG_TYPE_TABLE_NAME SWIG_RUNTIME_VERSION); + if (!ov.is_defined() || + ov.type_id() != octave_swig_packed::static_type_id()) + return 0; + const octave_swig_packed* osp = + static_cast < const octave_swig_packed *> (ov.internal_rep()); + swig_module_info *pointer = 0; + osp->copy(0, &pointer, sizeof(swig_module_info *)); + return pointer; +} + +SWIGRUNTIME void SWIG_Octave_SetModule(void *clientdata, swig_module_info *pointer) { + octave_value ov = new octave_swig_packed(0, &pointer, sizeof(swig_module_info *)); + SWIG_Octave_SetGlobalValue("__SWIG_MODULE__" SWIG_TYPE_TABLE_NAME SWIG_RUNTIME_VERSION, ov); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octruntime.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octruntime.swg new file mode 100644 index 00000000..f98bf4fe --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octruntime.swg @@ -0,0 +1,505 @@ +%insert(runtime) %{ + +#include +#include + +#include +#include + +// Macro for enabling features which require Octave version >= major.minor.patch +// - Use (OCTAVE_PATCH_VERSION + 0) to handle both '' (released) and '+' (in development) patch numbers +#define SWIG_OCTAVE_PREREQ(major, minor, patch) \ + ( (OCTAVE_MAJOR_VERSION<<16) + (OCTAVE_MINOR_VERSION<<8) + (OCTAVE_PATCH_VERSION + 0) >= ((major)<<16) + ((minor)<<8) + (patch) ) + +// Reconstruct Octave major, minor, and patch versions for releases prior to 3.8.1 +#if !defined(OCTAVE_MAJOR_VERSION) + +# if !defined(OCTAVE_API_VERSION_NUMBER) + +// Hack to distinguish between Octave 3.8.0, which removed OCTAVE_API_VERSION_NUMBER but did not yet +// introduce OCTAVE_MAJOR_VERSION, and Octave <= 3.2, which did not define OCTAVE_API_VERSION_NUMBER +# include +# if defined(octave_ov_h) +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 8 +# define OCTAVE_PATCH_VERSION 0 +# else + +// Hack to distinguish between Octave 3.2 and earlier versions, before OCTAVE_API_VERSION_NUMBER existed +# define ComplexLU __ignore +# include +# undef ComplexLU +# if defined(octave_Complex_LU_h) + +// We know only that this version is prior to Octave 3.2, i.e. OCTAVE_API_VERSION_NUMBER < 37 +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 1 +# define OCTAVE_PATCH_VERSION 99 + +# else + +// OCTAVE_API_VERSION_NUMBER == 37 +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 2 +# define OCTAVE_PATCH_VERSION 0 + +# endif // defined(octave_Complex_LU_h) + +# endif // defined(octave_ov_h) + +// Correlation between Octave API and version numbers extracted from Octave's +// ChangeLogs; version is the *earliest* released Octave with that API number +# elif OCTAVE_API_VERSION_NUMBER >= 48 +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 6 +# define OCTAVE_PATCH_VERSION 0 + +# elif OCTAVE_API_VERSION_NUMBER >= 45 +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 4 +# define OCTAVE_PATCH_VERSION 1 + +# elif OCTAVE_API_VERSION_NUMBER >= 42 +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 3 +# define OCTAVE_PATCH_VERSION 54 + +# elif OCTAVE_API_VERSION_NUMBER >= 41 +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 3 +# define OCTAVE_PATCH_VERSION 53 + +# elif OCTAVE_API_VERSION_NUMBER >= 40 +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 3 +# define OCTAVE_PATCH_VERSION 52 + +# elif OCTAVE_API_VERSION_NUMBER >= 39 +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 3 +# define OCTAVE_PATCH_VERSION 51 + +# else // OCTAVE_API_VERSION_NUMBER == 38 +# define OCTAVE_MAJOR_VERSION 3 +# define OCTAVE_MINOR_VERSION 3 +# define OCTAVE_PATCH_VERSION 50 + +# endif // !defined(OCTAVE_API_VERSION_NUMBER) + +#endif // !defined(OCTAVE_MAJOR_VERSION) + +#include +#include +#include +#include +#include +#include +#include +#if SWIG_OCTAVE_PREREQ(4,2,0) +#include +#else +#include +#endif +#include +#if SWIG_OCTAVE_PREREQ(4,2,0) +#include +#endif + +%} + +%insert(runtime) "swigrun.swg"; +%insert(runtime) "swigerrors.swg"; +%insert(runtime) "octrun.swg"; + +%insert(initbeforefunc) "swiginit.swg" + +%insert(initbeforefunc) %{ + +static bool SWIG_init_user(octave_swig_type* module_ns); + +SWIGINTERN bool SWIG_Octave_LoadModule(std::string name) { + bool retn = false; + { +#if SWIG_OCTAVE_PREREQ(4,2,0) + octave::unwind_protect frame; + frame.protect_var(discard_error_messages); discard_error_messages = true; + frame.protect_var(discard_warning_messages); discard_warning_messages = true; +#elif SWIG_OCTAVE_PREREQ(3,3,50) + unwind_protect frame; + frame.protect_var(error_state); error_state = 0; + frame.protect_var(warning_state); warning_state = 0; + frame.protect_var(discard_error_messages); discard_error_messages = true; + frame.protect_var(discard_warning_messages); discard_warning_messages = true; +#else + unwind_protect::begin_frame("SWIG_Octave_LoadModule"); + unwind_protect_int(error_state); error_state = 0; + unwind_protect_int(warning_state); warning_state = 0; + unwind_protect_bool(discard_error_messages); discard_error_messages = true; + unwind_protect_bool(discard_warning_messages); discard_warning_messages = true; +#endif +#if SWIG_OCTAVE_PREREQ(4,2,0) + try { +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::feval(name, octave_value_list(), 0); +#else + feval(name, octave_value_list(), 0); +#endif + retn = true; + } catch (octave::execution_exception&) { } +#else + feval(name, octave_value_list(), 0); + retn = (error_state == 0); +#endif +#if !SWIG_OCTAVE_PREREQ(3,3,50) + unwind_protect::run_frame("SWIG_Octave_LoadModule"); +#endif + } + if (!retn) { + error(SWIG_name_d ": could not load module `%s'", name.c_str()); + } + return retn; +} + +SWIGINTERN bool SWIG_Octave_InstallFunction(octave_function *octloadfcn, std::string name) { + bool retn = false; + { +#if SWIG_OCTAVE_PREREQ(4,2,0) + octave::unwind_protect frame; + frame.protect_var(discard_error_messages); discard_error_messages = true; + frame.protect_var(discard_warning_messages); discard_warning_messages = true; +#elif SWIG_OCTAVE_PREREQ(3,3,50) + unwind_protect frame; + frame.protect_var(error_state); error_state = 0; + frame.protect_var(warning_state); warning_state = 0; + frame.protect_var(discard_error_messages); discard_error_messages = true; + frame.protect_var(discard_warning_messages); discard_warning_messages = true; +#else + unwind_protect::begin_frame("SWIG_Octave_InstallFunction"); + unwind_protect_int(error_state); error_state = 0; + unwind_protect_int(warning_state); warning_state = 0; + unwind_protect_bool(discard_error_messages); discard_error_messages = true; + unwind_protect_bool(discard_warning_messages); discard_warning_messages = true; +#endif + octave_value_list args; + args.append(name); + args.append(octloadfcn->fcn_file_name()); +#if SWIG_OCTAVE_PREREQ(4,2,0) + try { +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::feval("autoload", args, 0); +#else + feval("autoload", args, 0); +#endif + retn = true; + } catch (octave::execution_exception&) { } +#else + feval("autoload", args, 0); + retn = (error_state == 0); +#endif +#if !SWIG_OCTAVE_PREREQ(3,3,50) + unwind_protect::run_frame("SWIG_Octave_InstallFunction"); +#endif + } + if (!retn) { + error(SWIG_name_d ": could not load function `%s'", name.c_str()); + } + return retn; +} + +static const char *const subclass_usage = "-*- texinfo -*- \n\ +@deftypefn {Loadable Function} {} subclass()\n\ +@deftypefnx{Loadable Function} {} subclass(@var{swigclass}, @var{name}, @var{fcn}, @dots{})\n\ +Subclass a C++ class from within Octave, and provide implementations of its virtual methods.\n\ +\n\ +See the SWIG manual for usage examples.\n\ +@end deftypefn"; + +DEFUN_DLD( subclass, args, nargout, subclass_usage ) { + octave_swig_type *top = new octave_swig_type; + for (int j = 0; j < args.length(); ++j) { + if (args(j).type_id() == octave_swig_ref::static_type_id()) { + octave_swig_ref *osr = static_cast < octave_swig_ref *>(args(j).internal_rep()); + octave_swig_type *ost = osr->get_ptr(); + if (!ost->is_owned()) { + error("subclass: cannot subclass object not constructed on octave side"); + return octave_value_list(); + } + top->merge(*ost); + } else if (args(j).is_function_handle()) { + top->assign(args(j).fcn_handle_value()->fcn_name(), args(j)); + } else if (args(j).is_string()) { + if (j + 1 >= args.length()) { + error("subclass: member assignments must be of string,value form"); + return octave_value_list(); + } + top->assign(args(j).string_value(), args(j + 1)); + ++j; + } else { + error("subclass: invalid arguments to subclass()"); + return octave_value_list(); + } + } + return octave_value(Swig::swig_value_ref(top)); +} + +static const char *const swig_type_usage = "-*- texinfo -*- \n\ +@deftypefn {Loadable Function} {} swig_type(@var{swigref})\n\ +Return the underlying C/C++ type name of a SWIG-wrapped object.\n\ +@end deftypefn"; + +DEFUN_DLD( swig_type, args, nargout, swig_type_usage ) { + if (args.length() != 1) { + error("swig_type: must be called with only a single object"); + return octave_value_list(); + } + octave_swig_type *ost = Swig::swig_value_deref(args(0)); + if (!ost) { + error("swig_type: object is not a swig_ref"); + return octave_value_list(); + } + return octave_value(ost->swig_type_name()); +} + +static const char *const swig_typequery_usage = "-*- texinfo -*- \n\ +@deftypefn {Loadable Function} {} swig_typequery(@var{string})\n\ +Return @var{string} if it is a recognised SWIG-wrapped C/C++ type name;\n\ +otherwise return `'.\n\ +@end deftypefn"; + +DEFUN_DLD( swig_typequery, args, nargout, swig_typequery_usage ) { + if (args.length() != 1 || !args(0).is_string()) { + error("swig_typequery: must be called with single string argument"); + return octave_value_list(); + } + swig_module_info *module = SWIG_GetModule(0); + swig_type_info *type = SWIG_TypeQueryModule(module, module, args(0).string_value().c_str()); + if (!type) + return octave_value(""); + return octave_value(type->name); +} + +static const char *const swig_this_usage = "-*- texinfo -*- \n\ +@deftypefn {Loadable Function} {} swig_this(@var{swigref})\n\ +Return the underlying C/C++ pointer of a SWIG-wrapped object.\n\ +@end deftypefn"; + +DEFUN_DLD( swig_this, args, nargout, swig_this_usage ) { + if (args.length() != 1) { + error("swig_this: must be called with only a single object"); + return octave_value_list(); + } + if (args(0).is_matrix_type() && args(0).rows() == 0 && args(0).columns() == 0) + return octave_value(octave_uint64(0)); + octave_swig_type *ost = Swig::swig_value_deref(args(0)); + if (!ost) { + error("swig_this: object is not a swig_ref"); + return octave_value_list(); + } + return octave_value(octave_uint64((unsigned long long) ost->swig_this())); +} + +static const char *const swig_octave_prereq_usage = "-*- texinfo -*- \n\ +@deftypefn {Loadable Function} {} swig_octave_prereq(@var{major}, @var{minor}, @var{patch})\n\ +Return true if the version of Octave is at least @var{major}.@var{minor}.@var{patch}.\n\ +@end deftypefn"; + +DEFUN_DLD( swig_octave_prereq, args, nargout, swig_octave_prereq_usage ) { + if (args.length() != 3) { + error("swig_octave_prereq: must be called with 3 arguments"); + return octave_value_list(); + } + const int major = args(0).int_value(); + const int minor = args(1).int_value(); + const int patch = args(2).int_value(); + const bool prereq = SWIG_OCTAVE_PREREQ(major, minor, patch); + return octave_value(prereq); +} + +static const char *const SWIG_name_usage = "-*- texinfo -*- \n\ +@deftypefn {Loadable Module} {} " SWIG_name_d "\n\ +Loads the SWIG-generated module `" SWIG_name_d "'.\n\ +@end deftypefn"; + +void __swig_atexit__(void) { ::_Exit(0); } + +DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { + + static octave_swig_type* module_ns = 0; + + // workaround to prevent octave seg-faulting on exit: set Octave exit function + // octave_exit to _Exit, which exits immediately without trying to cleanup memory. + // definitely affected version 3.2.*, not sure about 3.3.*, seems to be fixed in + // version 3.4.*, but reappeared in 4.2.*, so turn on for all versions after 3.2.*. + // can be turned off with macro definition. +#ifndef SWIG_OCTAVE_NO_SEGFAULT_HACK +#if SWIG_OCTAVE_PREREQ(4,4,0) + atexit(__swig_atexit__); +#elif SWIG_OCTAVE_PREREQ(3,2,0) + octave_exit = ::_Exit; +#endif +#endif + + // check for no input and output args + if (args.length() != 0 || nargout != 0) { + print_usage(); + return octave_value_list(); + } + + // create module on first function call + if (!module_ns) { + + // workaround bug in octave where installing global variable of custom type and then + // exiting without explicitly clearing the variable causes octave to segfault. +#if SWIG_OCTAVE_PREREQ(3,2,0) + octave_value_list eval_args; + eval_args.append("base"); + eval_args.append("function __swig_atexit__; " + " if mislocked() " + " clear -all; " + " else " + " mlock(); " + " endif; " + "endfunction; " + "__swig_atexit__; " + "atexit(\"__swig_atexit__\", false); " + "atexit(\"__swig_atexit__\")"); +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::feval("evalin", eval_args, 0); +#else + feval("evalin", eval_args, 0); +#endif +#endif + +#if SWIG_OCTAVE_PREREQ(4,4,0) + { + octave::type_info& typeinfo = octave::interpreter::the_interpreter()->get_type_info(); + string_vector types = typeinfo.installed_type_names(); + bool register_octave_swig_ref = true; + bool register_octave_swig_packed = true; + bool register_octave_swig_bound_func = true; + for (int i = 0; i < types.numel(); ++i) { + if (types(i) == octave_swig_ref::static_type_name()) { + register_octave_swig_ref = false; + } + if (types(i) == octave_swig_packed::static_type_name()) { + register_octave_swig_packed = false; + } + if (types(i) == octave_swig_bound_func::static_type_name()) { + register_octave_swig_bound_func = false; + } + } + if (register_octave_swig_ref) { + octave_swig_ref::register_type(); + } + if (register_octave_swig_packed) { + octave_swig_packed::register_type(); + } + if (register_octave_swig_bound_func) { + octave_swig_bound_func::register_type(); + } + } +#else + octave_swig_ref::register_type(); + octave_swig_packed::register_type(); +#endif + SWIG_InitializeModule(0); + SWIG_PropagateClientData(); + +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::call_stack& stack = octave::interpreter::the_interpreter()->get_call_stack(); + octave_function *me = stack.current(); +#else + octave_function *me = octave_call_stack::current(); +#endif + + if (!SWIG_Octave_InstallFunction(me, "subclass")) { + return octave_value_list(); + } + if (!SWIG_Octave_InstallFunction(me, "swig_type")) { + return octave_value_list(); + } + if (!SWIG_Octave_InstallFunction(me, "swig_typequery")) { + return octave_value_list(); + } + if (!SWIG_Octave_InstallFunction(me, "swig_this")) { + return octave_value_list(); + } + if (!SWIG_Octave_InstallFunction(me, "swig_octave_prereq")) { + return octave_value_list(); + } + + octave_swig_type* cvar_ns=0; + if (std::string(SWIG_global_name) != ".") { + cvar_ns=new octave_swig_type; + for (int j=0;swig_globals[j].name;++j) + if (swig_globals[j].get_method) + cvar_ns->assign(swig_globals[j].name,&swig_globals[j]); + } + + module_ns=new octave_swig_type(0, 0, 0, true); + if (std::string(SWIG_global_name) != ".") { + module_ns->assign(SWIG_global_name,Swig::swig_value_ref(cvar_ns)); + } + else { + for (int j=0;swig_globals[j].name;++j) + if (swig_globals[j].get_method) + module_ns->assign(swig_globals[j].name,&swig_globals[j]); + } + for (int j=0;swig_globals[j].name;++j) + if (swig_globals[j].method) + module_ns->assign(swig_globals[j].name,&swig_globals[j]); + + // * need better solution here; swig_type -> octave_class mapping is + // * really n-to-1, in some cases such as template partial spec, etc. + // * see failing tests. + for (int j=0;swig_types[j];++j) + if (swig_types[j]->clientdata) { + swig_octave_class* c=(swig_octave_class*)swig_types[j]->clientdata; + module_ns->assign(c->name, + Swig::swig_value_ref + (new octave_swig_type(0,swig_types[j]))); + } + + if (!SWIG_init_user(module_ns)) { + delete module_ns; + module_ns=0; + return octave_value_list(); + } + + SWIG_InstallOps(octave_swig_ref::static_type_id()); + + octave_swig_type::swig_member_const_iterator mb; + for (mb = module_ns->swig_members_begin(); mb != module_ns->swig_members_end(); ++mb) { + if (mb->second.first && mb->second.first->method) { + if (!SWIG_Octave_InstallFunction(me, mb->first)) { + return octave_value_list(); + } + } + } + +#if SWIG_OCTAVE_PREREQ(4,4,0) + octave::interpreter::the_interpreter()->mlock(); +#elif SWIG_OCTAVE_PREREQ(3,2,0) + mlock(); +#else + mlock(me->name()); +#endif + + } + + octave_swig_type::swig_member_const_iterator mb; + for (mb = module_ns->swig_members_begin(); mb != module_ns->swig_members_end(); ++mb) { + if (mb->second.second.is_defined()) { + SWIG_Octave_SetGlobalValue(mb->first, mb->second.second); + SWIG_Octave_LinkGlobalValue(mb->first); + } + } + + SWIG_Octave_SetGlobalValue(SWIG_name_d, module_ns->as_value()); + SWIG_Octave_LinkGlobalValue(SWIG_name_d); + + return octave_value_list(); + +} + +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octstdcommon.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octstdcommon.swg new file mode 100644 index 00000000..80b2154d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octstdcommon.swg @@ -0,0 +1,222 @@ +%fragment("StdTraits","header",fragment="StdTraitsCommon") +{ +namespace swig { +// Traits that provides the from method + template struct traits_from_ptr { + static octave_value from(Type *val, int owner = 0) { + return SWIG_NewPointerObj(val, type_info(), owner); + } + }; + + template struct traits_from { + static octave_value from(const Type& val) { + return traits_from_ptr::from(new Type(val), 1); + } + }; + + template struct traits_from { + static octave_value from(Type* val) { + return traits_from_ptr::from(val, 0); + } + }; + + template struct traits_from { + static octave_value from(const Type* val) { + return traits_from_ptr::from(const_cast(val), 0); + } + }; + + + template + inline octave_value from(const Type& val) { + return traits_from::from(val); + } + + template + inline octave_value from_ptr(Type* val, int owner) { + return traits_from_ptr::from(val, owner); + } + + // Traits that provides the asval/as/check method + template + struct traits_asptr { + static int asptr(const octave_value& obj, Type **val) { + Type *p = 0; + swig_type_info *descriptor = type_info(); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template + inline int asptr(const octave_value& obj, Type **vptr) { + return traits_asptr::asptr(obj, vptr); + } + + template + struct traits_asval { + static int asval(const octave_value& obj, Type *val) { + if (val) { + Type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (!SWIG_IsOK(res)) return res; + if (p) { + typedef typename noconst_traits::noconst_type noconst_type; + *(const_cast(val)) = *p; + if (SWIG_IsNewObj(res)){ + %delete(p); + res = SWIG_DelNewMask(res); + } + return res; + } else { + return SWIG_ERROR; + } + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template struct traits_asval { + static int asval(const octave_value& obj, Type **val) { + if (val) { + typedef typename noconst_traits::noconst_type noconst_type; + noconst_type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (SWIG_IsOK(res)) { + *(const_cast(val)) = p; + } + return res; + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template + inline int asval(const octave_value& obj, Type *val) { + return traits_asval::asval(obj, val); + } + + template + struct traits_as { + static Type as(const octave_value& obj) { + Type v; + int res = asval(obj, &v); + if (!obj.is_defined() || !SWIG_IsOK(res)) { + if (!Octave_Error_Occurred()) { + %type_error(swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + return v; + } + }; + + template + struct traits_as { + static Type as(const octave_value& obj) { + Type *v = 0; + int res = traits_asptr::asptr(obj, &v); + if (SWIG_IsOK(res) && v) { + if (SWIG_IsNewObj(res)) { + Type r(*v); + %delete(v); + return r; + } else { + return *v; + } + } else { + if (!Octave_Error_Occurred()) { + %type_error(swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + } + }; + + template + struct traits_as { + static Type* as(const octave_value& obj) { + Type *v = 0; + int res = traits_asptr::asptr(obj, &v); + if (SWIG_IsOK(res)) { + return v; + } else { + if (!Octave_Error_Occurred()) { + %type_error(swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + } + }; + + template + inline Type as(const octave_value& obj) { + return traits_as::category>::as(obj); + } + + template + struct traits_check { + static bool check(const octave_value& obj) { + int res = asval(obj, (Type *)(0)); + return SWIG_IsOK(res) ? true : false; + } + }; + + template + struct traits_check { + static bool check(const octave_value& obj) { + int res = asptr(obj, (Type **)(0)); + return SWIG_IsOK(res) ? true : false; + } + }; + + template + inline bool check(const octave_value& obj) { + return traits_check::category>::check(obj); + } +} +} + +%define %specialize_std_container(Type,Check,As,From) +%{ +namespace swig { + template <> struct traits_asval { + typedef Type value_type; + static int asval(const octave_value& obj, value_type *val) { + if (Check(obj)) { + if (val) *val = As(obj); + return SWIG_OK; + } + return SWIG_ERROR; + } + }; + template <> struct traits_from { + typedef Type value_type; + static octave_value from(const value_type& val) { + return From(val); + } + }; + + template <> + struct traits_check { + static int check(const octave_value& obj) { + int res = Check(obj); + return obj && res ? res : 0; + } + }; +} +%} +%enddef + + +#define specialize_std_vector(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_list(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_deque(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_set(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_multiset(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octtypemaps.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octtypemaps.swg new file mode 100644 index 00000000..4acf8e07 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octtypemaps.swg @@ -0,0 +1,92 @@ + +// Include fundamental fragment definitions +%include + +// Look for user fragments file. +%include + +// Octave fragments for primitive types +%include + +// Octave fragments for char* strings +//%include + + +#ifndef SWIG_DIRECTOR_TYPEMAPS +#define SWIG_DIRECTOR_TYPEMAPS +#endif + +// Octave types +#define SWIG_Object octave_value +#define VOID_Object octave_value() + +/* +// Octave allows implicit conversion +#define %implicitconv_flag $implicitconv +*/ + +// append output +#define SWIG_AppendOutput(result, obj) SWIG_Octave_AppendOutput(result, obj) + +// set constant +#define SWIG_SetConstant(name, obj) SWIG_Octave_SetConstant(module_ns,name,obj) + +// raise +#define SWIG_Octave_Raise(OBJ, TYPE, DESC) error("C++ side threw an exception of type " TYPE) +#define SWIG_Raise(obj, type, desc) SWIG_Octave_Raise(obj, type, desc) + +// Include the unified typemap library +%include + +%typecheck(SWIG_TYPECHECK_SWIGOBJECT) SWIG_Object "$1 = (*$input).is_defined();"; +%typecheck(SWIG_TYPECHECK_SWIGOBJECT) octave_value_list "$1 = true;"; + +%typemap(in) (octave_value_list varargs,...) { + for (int j=$argnum-1;jappend($1); +} +%typemap(out,noblock=1) octave_map, Octave_map { + $result=$1; +} +%typemap(out,noblock=1) NDArray { + $result=$1; +} +%typemap(out,noblock=1) Cell { + $result=$1; +} + +/* +// Smart Pointers +%typemap(out,noblock=1) const SWIGTYPE & SMARTPOINTER { + $result = SWIG_NewPointerObj(%new_copy(*$1, $*ltype), $descriptor, SWIG_POINTER_OWN | %newpointer_flags); +} + +%typemap(ret) const SWIGTYPE & SMARTPOINTER, SWIGTYPE SMARTPOINTER { + octave_swig_type* lobj=Swig::swig_value_deref($result); + if (lobj) { + std::list idx; + idx.push_back(octave_value("__deref__")); + idx.push_back(octave_value_list()); + octave_value_list ovl(lobj->subsref(".(",idx)); + octave_swig_type* robj=ovl.length()>=1?Swig::swig_value_deref(ovl(0)):0; + if (robj && !error_state) + lobj->append(robj); + } +} +*/ diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/octuserdir.swg b/macx64/bin/swig/share/swig/4.0.0/octave/octuserdir.swg new file mode 100644 index 00000000..ebb11b3a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/octuserdir.swg @@ -0,0 +1,72 @@ +/* ------------------------------------------------------------------------- + * Special user directives + * ------------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------------- */ +/* + Implicit Conversion using the C++ constructor mechanism +*/ + +#define %implicitconv %feature("implicitconv") +#define %noimplicitconv %feature("implicitconv", "0") +#define %clearimplicitconv %feature("implicitconv", "") + + +/* ------------------------------------------------------------------------- */ +/* + %extend_smart_pointer extend the smart pointer support. + + For example, if you have a smart pointer as: + + template class RCPtr { + public: + ... + RCPtr(Type *p); + Type * operator->() const; + ... + }; + + you use the %extend_smart_pointer directive as: + + %extend_smart_pointer(RCPtr); + %template(RCPtr_A) RCPtr; + + then, if you have something like: + + RCPtr make_ptr(); + int foo(A *); + + you can do the following: + + a = make_ptr(); + b = foo(a); + + ie, swig will accept a RCPtr object where a 'A *' is + expected. + + Also, when using vectors + + %extend_smart_pointer(RCPtr); + %template(RCPtr_A) RCPtr; + %template(vector_A) std::vector >; + + you can type + + a = A(); + v = vector_A(2) + v[0] = a + + ie, an 'A *' object is accepted, via implicit conversion, + where a RCPtr object is expected. Additionally + + x = v[0] + + returns (and sets 'x' as) a copy of v[0], making reference + counting possible and consistent. +*/ + +%define %extend_smart_pointer(Type...) +%implicitconv Type; +%apply const SWIGTYPE& SMARTPOINTER { const Type& }; +%apply SWIGTYPE SMARTPOINTER { Type }; +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_alloc.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_alloc.i new file mode 100644 index 00000000..35dc051b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_alloc.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_basic_string.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_basic_string.i new file mode 100644 index 00000000..01a2c34a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_basic_string.i @@ -0,0 +1,64 @@ +#if !defined(SWIG_STD_STRING) +#define SWIG_STD_BASIC_STRING +#define SWIG_STD_MODERN_STL + +%include + +#define %swig_basic_string(Type...) %swig_sequence_methods_val(Type) + + +%fragment(SWIG_AsPtr_frag(std::basic_string),"header", + fragment="SWIG_AsCharPtrAndSize") { +SWIGINTERN int +SWIG_AsPtr(std::basic_string)(octave_value obj, std::string **val) { + if (obj.is_string()) { + if (val) + *val = new std::string(obj.string_value()); + return SWIG_NEWOBJ; + } + return SWIG_ERROR; +} +} + +%fragment(SWIG_From_frag(std::basic_string),"header", + fragment="SWIG_FromCharPtrAndSize") { +SWIGINTERNINLINE octave_value + SWIG_From(std::basic_string)(const std::string& s) { + return SWIG_FromCharPtrAndSize(s.data(), s.size()); + } +} + +%ignore std::basic_string::operator +=; + +%include +%typemaps_asptrfromn(%checkcode(STRING), std::basic_string); + +#endif + + +#if !defined(SWIG_STD_WSTRING) + +%fragment(SWIG_AsPtr_frag(std::basic_string),"header", + fragment="SWIG_AsWCharPtrAndSize") { +SWIGINTERN int +SWIG_AsPtr(std::basic_string)(octave_value obj, std::wstring **val) { + if (obj.is_string()) { + if (val) + *val = new std::wstring(obj.string_value()); + return SWIG_NEWOBJ; + } + return SWIG_ERROR; +} +} + +%fragment(SWIG_From_frag(std::basic_string),"header", + fragment="SWIG_FromWCharPtrAndSize") { +SWIGINTERNINLINE PyObject* + SWIG_From(std::basic_string)(const std::wstring& s) { + return SWIG_FromWCharPtrAndSize(s.data(), s.size()); + } +} + +%typemaps_asptrfromn(%checkcode(UNISTRING), std::basic_string); + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_carray.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_carray.i new file mode 100644 index 00000000..e69de29b diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_char_traits.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_char_traits.i new file mode 100644 index 00000000..bf4e6c47 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_char_traits.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_common.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_common.i new file mode 100644 index 00000000..c8f17ba7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_common.i @@ -0,0 +1,72 @@ +%include +%include + + +// Generate the traits for a 'primitive' type, such as 'double', +// for which the SWIG_AsVal and SWIG_From methods are already defined. + +%define %traits_ptypen(Type...) + %fragment(SWIG_Traits_frag(Type),"header", + fragment=SWIG_AsVal_frag(Type), + fragment=SWIG_From_frag(Type), + fragment="StdTraits") { +namespace swig { + template <> struct traits< Type > { + typedef value_category category; + static const char* type_name() { return #Type; } + }; + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(octave_value obj, value_type *val) { + return SWIG_AsVal(Type)(obj, val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static octave_value from(const value_type& val) { + return SWIG_From(Type)(val); + } + }; +} +} +%enddef + +/* Traits for enums. This is bit of a sneaky trick needed because a generic template specialization of enums + is not possible (unless using template meta-programming which SWIG doesn't support because of the explicit + instantiations required using %template). The STL containers define the 'front' method and the typemap + below is used whenever the front method is wrapped returning an enum. This typemap simply picks up the + standard enum typemap, but additionally drags in a fragment containing the traits_asval and traits_from + required in the generated code for enums. */ + +%define %traits_enum(Type...) + %fragment("SWIG_Traits_enum_"{Type},"header", + fragment=SWIG_AsVal_frag(int), + fragment=SWIG_From_frag(int), + fragment="StdTraits") { +namespace swig { + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(octave_value obj, value_type *val) { + return SWIG_AsVal(int)(obj, (int *)val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static octave_value from(const value_type& val) { + return SWIG_From(int)((int)val); + } + }; +} +} +%typemap(out, fragment="SWIG_Traits_enum_"{Type}) const enum SWIGTYPE& front %{$typemap(out, const enum SWIGTYPE&)%} +%enddef + + +%include + +// +// Generates the traits for all the known primitive +// C++ types (int, double, ...) +// +%apply_cpptypes(%traits_ptypen); + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_complex.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_complex.i new file mode 100644 index 00000000..30c18824 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_complex.i @@ -0,0 +1,29 @@ +/* + * STD C++ complex typemaps + */ + +%include + +%{ +#include +%} + +namespace std { + %naturalvar complex; + template class complex; + %template() complex; + %template() complex; +} + +/* defining the complex as/from converters */ + +%swig_cplxdbl_convn(std::complex, std::complex, std::real, std::imag) +%swig_cplxflt_convn(std::complex, std::complex, std::real, std::imag) + +/* defining the typemaps */ + +%typemaps_primitive(%checkcode(CPLXDBL), std::complex); +%typemaps_primitive(%checkcode(CPLXFLT), std::complex); + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_container.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_container.i new file mode 100644 index 00000000..cab76452 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_container.i @@ -0,0 +1,2 @@ +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_deque.i new file mode 100644 index 00000000..c40cfee1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_deque.i @@ -0,0 +1,25 @@ +// Deques + +%fragment("StdDequeTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(octave_value obj, std::deque **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static octave_value from(const std::deque& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_deque_methods(Type...) %swig_sequence_methods(Type) +#define %swig_deque_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_except.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_except.i new file mode 100644 index 00000000..af98428f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_except.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_list.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_list.i new file mode 100644 index 00000000..35f6c132 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_list.i @@ -0,0 +1,26 @@ +// Lists + +%fragment("StdListTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(const octave_value& obj, std::list **lis) { + return traits_asptr_stdseq >::asptr(obj, lis); + } + }; + + template + struct traits_from > { + static octave_value *from(const std::list& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_list_methods(Type...) %swig_sequence_methods(Type) +#define %swig_list_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_map.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_map.i new file mode 100644 index 00000000..fd15661c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_map.i @@ -0,0 +1,157 @@ +// Maps + +%include + +%fragment("StdMapCommonTraits","header",fragment="StdSequenceTraits") +{ + namespace swig { + template + struct from_key_oper + { + typedef const ValueType& argument_type; + typedef octave_value result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.first); + } + }; + + template + struct from_value_oper + { + typedef const ValueType& argument_type; + typedef octave_value result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.second); + } + }; + + template + struct OctMapIterator_T : OctSwigIteratorClosed_T + { + OctMapIterator_T(OutIterator curr, OutIterator first, OutIterator last, octave_value seq) + : OctSwigIteratorClosed_T(curr, first, last, seq) + { + } + }; + + + template > + struct OctMapKeyIterator_T : OctMapIterator_T + { + OctMapKeyIterator_T(OutIterator curr, OutIterator first, OutIterator last, octave_value seq) + : OctMapIterator_T(curr, first, last, seq) + { + } + }; + + template + inline OctSwigIterator* + make_output_key_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, octave_value seq = octave_value()) + { + return new OctMapKeyIterator_T(current, begin, end, seq); + } + + template > + struct OctMapValueIterator_T : OctMapIterator_T + { + OctMapValueIterator_T(OutIterator curr, OutIterator first, OutIterator last, octave_value seq) + : OctMapIterator_T(curr, first, last, seq) + { + } + }; + + + template + inline OctSwigIterator* + make_output_value_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, octave_value seq = 0) + { + return new OctMapValueIterator_T(current, begin, end, seq); + } + } +} + +%fragment("StdMapTraits","header",fragment="StdMapCommonTraits") +{ + namespace swig { + template + inline void + assign(const OctSeq& octseq, std::map *map) { + typedef typename std::map::value_type value_type; + typename OctSeq::const_iterator it = octseq.begin(); + for (;it != octseq.end(); ++it) { + map->insert(value_type(it->first, it->second)); + } + } + + template + struct traits_asptr > { + typedef std::map map_type; + static int asptr(octave_value obj, map_type **val) { + /* + int res = SWIG_ERROR; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); + res = traits_asptr_stdseq, std::pair >::asptr(items, val); + } else { + map_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + */ + return SWIG_ERROR; + } + }; + + template + struct traits_from > { + typedef std::map map_type; + typedef typename map_type::const_iterator const_iterator; + typedef typename map_type::size_type size_type; + + static octave_value from(const map_type& map) { + /* + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new map_type(map), desc, SWIG_POINTER_OWN); + } else { + size_type size = map.size(); + int pysize = (size <= (size_type) INT_MAX) ? (int) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, + "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= map.begin(); i!= map.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + return obj; + } + */ + return octave_value(); + } + }; + } +} + +%define %swig_map_common(Map...) + %swig_sequence_iterator(Map); + %swig_container_methods(Map); +%enddef + +%define %swig_map_methods(Map...) + %swig_map_common(Map) +%enddef + + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_pair.i new file mode 100644 index 00000000..2f307380 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_pair.i @@ -0,0 +1,147 @@ +// Pairs + +%include + +//#define SWIG_STD_PAIR_ASVAL + +%fragment("StdPairTraits","header",fragment="StdTraits") { + namespace swig { +#ifdef SWIG_STD_PAIR_ASVAL + template + struct traits_asval > { + typedef std::pair value_type; + + static int get_pair(const octave_value& first, octave_value second, + std::pair *val) + { + if (val) { + T *pfirst = &(val->first); + int res1 = swig::asval(first, pfirst); + if (!SWIG_IsOK(res1)) + return res1; + U *psecond = &(val->second); + int res2 = swig::asval(second, psecond); + if (!SWIG_IsOK(res2)) + return res2; + return res1 > res2 ? res1 : res2; + } else { + T *pfirst = 0; + int res1 = swig::asval(first, pfirst); + if (!SWIG_IsOK(res1)) + return res1; + U *psecond = 0; + int res2 = swig::asval((PyObject*)second, psecond); + if (!SWIG_IsOK(res2)) + return res2; + return res1 > res2 ? res1 : res2; + } + } + + static int asval(const octave_value& obj, std::pair *val) { + if ( +%#if SWIG_OCTAVE_PREREQ(4,4,0) + obj.iscell() +%#else + obj.is_cell() +%#endif + ) { + Cell c=obj.cell_value(); + if (c.numel()<2) { + error("pair from Cell array requires at least two elements"); + return SWIG_ERROR; + } + return get_pair(c(0),c(1),val); + } else { + value_type *p; + swig_type_info *descriptor = swig::type_info(); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) + *val = *p; + return res; + } + return SWIG_ERROR; + } + }; + +#else + template + struct traits_asptr > { + typedef std::pair value_type; + + static int get_pair(const octave_value& first, octave_value second, + std::pair **val) + { + if (val) { + value_type *vp = %new_instance(std::pair); + T *pfirst = &(vp->first); + int res1 = swig::asval(first, pfirst); + if (!SWIG_IsOK(res1)) { + %delete(vp); + return res1; + } + U *psecond = &(vp->second); + int res2 = swig::asval(second, psecond); + if (!SWIG_IsOK(res2)) { + %delete(vp); + return res2; + } + *val = vp; + return SWIG_AddNewMask(res1 > res2 ? res1 : res2); + } else { + T *pfirst = 0; + int res1 = swig::asval(first, pfirst); + if (!SWIG_IsOK(res1)) + return res1; + U *psecond = 0; + int res2 = swig::asval(second, psecond); + if (!SWIG_IsOK(res2)) + return res2; + return res1 > res2 ? res1 : res2; + } + return SWIG_ERROR; + } + + static int asptr(const octave_value& obj, std::pair **val) { + if ( +%#if SWIG_OCTAVE_PREREQ(4,4,0) + obj.iscell() +%#else + obj.is_cell() +%#endif + ) { + Cell c=obj.cell_value(); + if (c.numel()<2) { + error("pair from Cell array requires at least two elements"); + return SWIG_ERROR; + } + return get_pair(c(0),c(1),val); + } else { + value_type *p; + swig_type_info *descriptor = swig::type_info(); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) + *val = p; + return res; + } + return SWIG_ERROR; + } + }; + +#endif + template + struct traits_from > { + static octave_value from(const std::pair& val) { + Cell c(1,2); + c(0)=swig::from(val.first); + c(1)=swig::from(val.second); + return c; + } + }; + } +} + +%define %swig_pair_methods(pair...) +%enddef + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_shared_ptr.i new file mode 100644 index 00000000..df873679 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_shared_ptr.i @@ -0,0 +1,2 @@ +#define SWIG_SHARED_PTR_NAMESPACE std +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_string.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_string.i new file mode 100644 index 00000000..dc1378ae --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_string.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_vector.i new file mode 100644 index 00000000..2862b5e7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_vector.i @@ -0,0 +1,26 @@ +// Vectors + +%fragment("StdVectorTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(const octave_value& obj, std::vector **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static octave_value from(const std::vector& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_vector_methods(Type...) %swig_sequence_methods(Type) +#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/std_wstring.i b/macx64/bin/swig/share/swig/4.0.0/octave/std_wstring.i new file mode 100644 index 00000000..dc1378ae --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/std_wstring.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/stl.i b/macx64/bin/swig/share/swig/4.0.0/octave/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/octave/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/octave/typemaps.i new file mode 100644 index 00000000..1f9b9c43 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/octave/typemaps.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/Makefile.pl b/macx64/bin/swig/share/swig/4.0.0/perl5/Makefile.pl new file mode 100644 index 00000000..cffdc8e7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/Makefile.pl @@ -0,0 +1,19 @@ +# File : Makefile.pl +# MakeMaker file for a SWIG module. Use this file if you are +# producing a module for general use or distribution. +# +# 1. Modify the file as appropriate. Replace $module with the +# real name of your module and wrapper file. +# 2. Run perl as 'perl Makefile.pl' +# 3. Type 'make' to build your module +# 4. Type 'make install' to install your module. +# +# See "Programming Perl", 2nd. Ed, for more gory details than +# you ever wanted to know. + +use ExtUtils::MakeMaker; +WriteMakefile( + 'NAME' => '$module', # Name of your module + 'LIBS' => [''], # Custom libraries (if any) + 'OBJECT' => '$module_wrap.o' # Object files +); diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/attribute.i b/macx64/bin/swig/share/swig/4.0.0/perl5/attribute.i new file mode 100644 index 00000000..779716cd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/attribute.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/carrays.i b/macx64/bin/swig/share/swig/4.0.0/perl5/carrays.i new file mode 100644 index 00000000..8be67abc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/carrays.i @@ -0,0 +1,2 @@ +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/cdata.i b/macx64/bin/swig/share/swig/4.0.0/perl5/cdata.i new file mode 100644 index 00000000..36796599 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/cdata.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/cmalloc.i b/macx64/bin/swig/share/swig/4.0.0/perl5/cmalloc.i new file mode 100644 index 00000000..248f06b9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/cmalloc.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/cpointer.i b/macx64/bin/swig/share/swig/4.0.0/perl5/cpointer.i new file mode 100644 index 00000000..d824792f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/cpointer.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/cstring.i b/macx64/bin/swig/share/swig/4.0.0/perl5/cstring.i new file mode 100644 index 00000000..ede9c596 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/cstring.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/director.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/director.swg new file mode 100644 index 00000000..f0a6614f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/director.swg @@ -0,0 +1,317 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that Perl proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#ifndef SWIG_DIRECTOR_PERL_HEADER_ +#define SWIG_DIRECTOR_PERL_HEADER_ + +#include +#include +#include +#include +#include + + +/* + Use -DSWIG_DIRECTOR_NORTTI if you prefer to avoid the use of the + native C++ RTTI and dynamic_cast<>. But be aware that directors + could stop working when using this option. +*/ +#ifdef SWIG_DIRECTOR_NORTTI +/* + When we don't use the native C++ RTTI, we implement a minimal one + only for Directors. +*/ +# ifndef SWIG_DIRECTOR_RTDIR +# define SWIG_DIRECTOR_RTDIR + +namespace Swig { + class Director; + SWIGINTERN std::map& get_rtdir_map() { + static std::map rtdir_map; + return rtdir_map; + } + + SWIGINTERNINLINE void set_rtdir(void *vptr, Director *rtdir) { + get_rtdir_map()[vptr] = rtdir; + } + + SWIGINTERNINLINE Director *get_rtdir(void *vptr) { + std::map::const_iterator pos = get_rtdir_map().find(vptr); + Director *rtdir = (pos != get_rtdir_map().end()) ? pos->second : 0; + return rtdir; + } +} +# endif /* SWIG_DIRECTOR_RTDIR */ + +# define SWIG_DIRECTOR_CAST(ARG) Swig::get_rtdir(static_cast(ARG)) +# define SWIG_DIRECTOR_RGTR(ARG1, ARG2) Swig::set_rtdir(static_cast(ARG1), ARG2) + +#else + +# define SWIG_DIRECTOR_CAST(ARG) dynamic_cast(ARG) +# define SWIG_DIRECTOR_RGTR(ARG1, ARG2) + +#endif /* SWIG_DIRECTOR_NORTTI */ + +extern "C" { + struct swig_type_info; +} + +namespace Swig { + + /* memory handler */ + struct GCItem { + virtual ~GCItem() {} + + virtual int get_own() const { + return 0; + } + }; + + struct GCItem_var { + GCItem_var(GCItem *item = 0) : _item(item) { + } + + GCItem_var& operator=(GCItem *item) { + GCItem *tmp = _item; + _item = item; + delete tmp; + return *this; + } + + ~GCItem_var() { + delete _item; + } + + GCItem *operator->() const { + return _item; + } + + private: + GCItem *_item; + }; + + struct GCItem_Object : GCItem { + GCItem_Object(int own) : _own(own) { + } + + virtual ~GCItem_Object() { + } + + int get_own() const { + return _own; + } + + private: + int _own; + }; + + template + struct GCItem_T : GCItem { + GCItem_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCItem_T() { + delete _ptr; + } + + private: + Type *_ptr; + }; + + template + struct GCArray_T : GCItem { + GCArray_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCArray_T() { + delete[] _ptr; + } + + private: + Type *_ptr; + }; + + /* base class for director exceptions */ + class DirectorException : public std::exception { + public: + virtual SV *getNative() const = 0; + }; + + /* exceptions emitted by Perl */ + class DirectorMethodException : public DirectorException { + protected: + SV *err; + public: + DirectorMethodException(SV *sv = sv_mortalcopy(ERRSV)) : err(sv) { + SvREFCNT_inc(err); + } + + const char *what() const throw() { + return SvPV_nolen(err); + } + + SV *getNative() const { + return sv_2mortal(newSVsv(err)); + } + + static void raise(SV *sv) { + throw DirectorMethodException(sv); + } + }; + + /* exceptions emitted by wrap code */ + class DirectorWrapException : public DirectorException { + protected: + std::string msg; + DirectorWrapException(const char *str) : msg(str) { + } + + public: + virtual ~DirectorWrapException() throw() { + } + + const char *what() const throw() { + return msg.c_str(); + } + + virtual SV *getNative() const { + return sv_2mortal(newSVpvn(msg.data(), msg.size())); + } + }; + + class DirectorTypeMismatchException : public DirectorWrapException { + public: + DirectorTypeMismatchException(const char *str) : DirectorWrapException(str) { + } + + static void raise(const char *type, const char *msg) { + std::string err = std::string(type); + err += ": "; + err += msg; + throw DirectorTypeMismatchException(err.c_str()); + } + }; + + class DirectorPureVirtualException : public DirectorWrapException { + public: + DirectorPureVirtualException(const char *name) + : DirectorWrapException("SWIG director pure virtual method called: ") { + msg += name; + } + + static void raise(const char *name) { + throw DirectorPureVirtualException(name); + } + }; + + /* director base class */ + class Director { + private: + /* pointer to the wrapped perl object */ + SV *swig_self; + /* class of wrapped perl object */ + std::string swig_class; + /* flag indicating whether the object is owned by perl or c++ */ + mutable bool swig_disown_flag; + + /* decrement the reference count of the wrapped perl object */ + void swig_decref() const { + if (swig_disown_flag) { + SvREFCNT_dec(swig_self); + } + } + + public: + /* wrap a Perl object. */ + Director(SV *pkg) : swig_disown_flag(false) { + STRLEN len; + char *str = SvPV(pkg, len); + swig_class = std::string(str, len); + swig_self = newRV_inc((SV *)newHV()); + } + + /* discard our reference at destruction */ + virtual ~Director() { + swig_decref(); + } + + /* return a pointer to the wrapped Perl object */ + SV *swig_get_self() const { + return swig_self; + } + + const char *swig_get_class() const { + return swig_class.c_str(); + } + + /* acquire ownership of the wrapped Perl object (the sense of "disown" is from perl) */ + void swig_disown() const { + if (!swig_disown_flag) { + swig_disown_flag=true; + swig_incref(); + } + } + + /* increase the reference count of the wrapped Perl object */ + void swig_incref() const { + if (swig_disown_flag) { + SvREFCNT_inc(swig_self); + } + } + + /* methods to implement pseudo protected director members */ + virtual bool swig_get_inner(const char * /* swig_protected_method_name */) const { + return true; + } + + virtual void swig_set_inner(const char * /* swig_protected_method_name */, bool /* swig_val */) const { + } + + /* ownership management */ + private: + typedef std::map swig_ownership_map; + mutable swig_ownership_map swig_owner; + + public: + template + void swig_acquire_ownership_array(Type *vptr) const { + if (vptr) { + swig_owner[vptr] = new GCArray_T(vptr); + } + } + + template + void swig_acquire_ownership(Type *vptr) const { + if (vptr) { + swig_owner[vptr] = new GCItem_T(vptr); + } + } + + void swig_acquire_ownership_obj(void *vptr, int own) const { + if (vptr && own) { + swig_owner[vptr] = new GCItem_Object(own); + } + } + + int swig_release_ownership(void *vptr) const { + int own = 0; + if (vptr) { + swig_ownership_map::iterator iter = swig_owner.find(vptr); + if (iter != swig_owner.end()) { + own = iter->second->get_own(); + swig_owner.erase(iter); + } + } + return own; + } + }; + +} + +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/exception.i b/macx64/bin/swig/share/swig/4.0.0/perl5/exception.i new file mode 100644 index 00000000..b786f25e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/exception.i @@ -0,0 +1,5 @@ +%include + +%insert("runtime") { + %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) +} diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/factory.i b/macx64/bin/swig/share/swig/4.0.0/perl5/factory.i new file mode 100644 index 00000000..46a0a873 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/factory.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/noembed.h b/macx64/bin/swig/share/swig/4.0.0/perl5/noembed.h new file mode 100644 index 00000000..4e30f111 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/noembed.h @@ -0,0 +1,116 @@ +/* Workaround perl5 global namespace pollution. Note that undefining library + * functions like fopen will not solve the problem on all platforms as fopen + * might be a macro on Windows but not necessarily on other operating systems. */ +#ifdef do_open + #undef do_open +#endif +#ifdef do_close + #undef do_close +#endif +#ifdef do_exec + #undef do_exec +#endif +#ifdef scalar + #undef scalar +#endif +#ifdef list + #undef list +#endif +#ifdef apply + #undef apply +#endif +#ifdef convert + #undef convert +#endif +#ifdef Error + #undef Error +#endif +#ifdef form + #undef form +#endif +#ifdef vform + #undef vform +#endif +#ifdef LABEL + #undef LABEL +#endif +#ifdef METHOD + #undef METHOD +#endif +#ifdef Move + #undef Move +#endif +#ifdef yylex + #undef yylex +#endif +#ifdef yyparse + #undef yyparse +#endif +#ifdef yyerror + #undef yyerror +#endif +#ifdef invert + #undef invert +#endif +#ifdef ref + #undef ref +#endif +#ifdef read + #undef read +#endif +#ifdef write + #undef write +#endif +#ifdef eof + #undef eof +#endif +#ifdef close + #undef close +#endif +#ifdef rewind + #undef rewind +#endif +#ifdef free + #undef free +#endif +#ifdef malloc + #undef malloc +#endif +#ifdef calloc + #undef calloc +#endif +#ifdef Stat + #undef Stat +#endif +#ifdef check + #undef check +#endif +#ifdef seekdir + #undef seekdir +#endif +#ifdef open + #undef open +#endif +#ifdef readdir + #undef readdir +#endif +#ifdef bind + #undef bind +#endif +#ifdef access + #undef access +#endif +#ifdef stat + #undef stat +#endif +#ifdef seed + #undef seed +#endif + +#ifdef bool + /* Leave if macro is from C99 stdbool.h */ + #ifndef __bool_true_false_are_defined + #undef bool + #endif +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perl5.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perl5.swg new file mode 100644 index 00000000..693c2b94 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perl5.swg @@ -0,0 +1,42 @@ +/* ------------------------------------------------------------ + * perl.swg + * + * Perl configuration module. + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + * Inner macros + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * The runtime part + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Special user directives + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Typemap specializations + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Overloaded operator support + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Warnings for Perl keywords + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * The Perl initialization function + * ------------------------------------------------------------ */ +%include + + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlerrors.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlerrors.swg new file mode 100644 index 00000000..57296c67 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlerrors.swg @@ -0,0 +1,34 @@ +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGINTERN const char* +SWIG_Perl_ErrorType(int code) { + switch(code) { + case SWIG_MemoryError: + return "MemoryError"; + case SWIG_IOError: + return "IOError"; + case SWIG_RuntimeError: + return "RuntimeError"; + case SWIG_IndexError: + return "IndexError"; + case SWIG_TypeError: + return "TypeError"; + case SWIG_DivisionByZero: + return "ZeroDivisionError"; + case SWIG_OverflowError: + return "OverflowError"; + case SWIG_SyntaxError: + return "SyntaxError"; + case SWIG_ValueError: + return "ValueError"; + case SWIG_SystemError: + return "SystemError"; + case SWIG_AttributeError: + return "AttributeError"; + default: + return "RuntimeError"; + } +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlfragments.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlfragments.swg new file mode 100644 index 00000000..45d25d1f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlfragments.swg @@ -0,0 +1,23 @@ +/* + + Create a file with this name, 'perlfragments.swg', in your working + directory and add all the %fragments you want to take precedence + over the ones defined by default by swig. + + For example, if you add: + + %fragment(SWIG_AsVal_frag(int),"header") { + SWIGINTERNINLINE int + SWIG_AsVal(int)(PyObject *obj, int *val) + { + ; + } + } + + this will replace the code used to retrieve an integer value for all + the typemaps that need it, including: + + int, std::vector, std::list >, etc. + + +*/ diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlhead.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlhead.swg new file mode 100644 index 00000000..5437af5a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlhead.swg @@ -0,0 +1,102 @@ +#ifdef __cplusplus +/* Needed on some windows machines---since MS plays funny games with the header files under C++ */ +#include +#include +extern "C" { +#endif +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +/* Add in functionality missing in older versions of Perl. Much of this is based on Devel-PPPort on cpan. */ + +/* Add PERL_REVISION, PERL_VERSION, PERL_SUBVERSION if missing */ +#ifndef PERL_REVISION +# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION)) +# define PERL_PATCHLEVEL_H_IMPLICIT +# include +# endif +# if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) +# include +# endif +# ifndef PERL_REVISION +# define PERL_REVISION (5) +# define PERL_VERSION PATCHLEVEL +# define PERL_SUBVERSION SUBVERSION +# endif +#endif + +#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE) +#define PerlIO_exportFILE(fh,fl) (FILE*)(fh) +#endif + +#ifndef SvIOK_UV +# define SvIOK_UV(sv) (SvIOK(sv) && (SvUVX(sv) == SvIVX(sv))) +#endif + +#ifndef SvUOK +# define SvUOK(sv) SvIOK_UV(sv) +#endif + +#if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5))) +# define PL_sv_undef sv_undef +# define PL_na na +# define PL_errgv errgv +# define PL_sv_no sv_no +# define PL_sv_yes sv_yes +# define PL_markstack_ptr markstack_ptr +#endif + +#ifndef IVSIZE +# ifdef LONGSIZE +# define IVSIZE LONGSIZE +# else +# define IVSIZE 4 /* A bold guess, but the best we can make. */ +# endif +#endif + +#ifndef INT2PTR +# if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) +# define PTRV UV +# define INT2PTR(any,d) (any)(d) +# else +# if PTRSIZE == LONGSIZE +# define PTRV unsigned long +# else +# define PTRV unsigned +# endif +# define INT2PTR(any,d) (any)(PTRV)(d) +# endif + +# define NUM2PTR(any,d) (any)(PTRV)(d) +# define PTR2IV(p) INT2PTR(IV,p) +# define PTR2UV(p) INT2PTR(UV,p) +# define PTR2NV(p) NUM2PTR(NV,p) + +# if PTRSIZE == LONGSIZE +# define PTR2ul(p) (unsigned long)(p) +# else +# define PTR2ul(p) INT2PTR(unsigned long,p) +# endif +#endif /* !INT2PTR */ + +#ifndef SvPV_nolen +# define SvPV_nolen(x) SvPV(x,PL_na) +#endif + +#ifndef get_sv +# define get_sv perl_get_sv +#endif + +#ifndef ERRSV +# define ERRSV get_sv("@",FALSE) +#endif + +#ifndef pTHX_ +#define pTHX_ +#endif + +#include +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlinit.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlinit.swg new file mode 100644 index 00000000..b49040d2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlinit.swg @@ -0,0 +1,82 @@ + +/* Export the SWIG initialization function */ +%header %{ +#ifdef __cplusplus +extern "C" +#endif +#ifndef PERL_OBJECT +#ifndef MULTIPLICITY +SWIGEXPORT void SWIG_init (CV* cv); +#else +SWIGEXPORT void SWIG_init (pTHXo_ CV* cv); +#endif +#else +SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *); +#endif +%} + +/* Module initialization function */ + +%insert(init) "swiginit.swg" + +%init %{ + +#if defined(__cplusplus) && ! defined(XSPROTO) +extern "C" +#endif + +XS(SWIG_init) { + dXSARGS; + int i; + (void)items; + + SWIG_InitializeModule(0); + + /* Install commands */ + for (i = 0; swig_commands[i].name; i++) { + /* Casts only needed for Perl < 5.10. */ +#ifdef __cplusplus + newXS(const_cast(swig_commands[i].name), swig_commands[i].wrapper, const_cast(__FILE__)); +#else + newXS((char*)swig_commands[i].name, swig_commands[i].wrapper, (char*)__FILE__); +#endif + } + + /* Install variables */ + for (i = 0; swig_variables[i].name; i++) { + SV *sv; + sv = get_sv(swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI); + if (swig_variables[i].type) { + SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0); + } else { + sv_setiv(sv,(IV) 0); + } + swig_create_magic(sv, swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); + } + + /* Install constant */ + for (i = 0; swig_constants[i].type; i++) { + SV *sv; + sv = get_sv(swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI); + switch(swig_constants[i].type) { + case SWIG_INT: + sv_setiv(sv, (IV) swig_constants[i].lvalue); + break; + case SWIG_FLOAT: + sv_setnv(sv, (double) swig_constants[i].dvalue); + break; + case SWIG_STRING: + sv_setpv(sv, (const char *) swig_constants[i].pvalue); + break; + case SWIG_POINTER: + SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0); + break; + case SWIG_BINARY: + SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype)); + break; + default: + break; + } + SvREADONLY_on(sv); + } +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlkw.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlkw.swg new file mode 100644 index 00000000..00648e0b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlkw.swg @@ -0,0 +1,251 @@ +/* Warnings for Perl keywords */ +#define PERLKW(x) %keywordwarn("'" `x` "' is a perl keyword") `x` +#define PERLBN(x) %builtinwarn("'" `x` "' conflicts with a built-in name in perl") "::" `x` + + +/* + + From http://www.rocketaware.com/perl/perlfunc/ + +*/ + +/* Functions for SCALARs or strings*/ +PERLBN(chomp); +PERLBN(chop); +PERLBN(chr); +PERLBN(crypt); +PERLBN(hex); +PERLBN(index); +PERLBN(lc); +PERLBN(lcfirst); +PERLBN(length); +PERLBN(oct); +PERLBN(ord); +PERLBN(pack); +PERLBN(reverse); +PERLBN(rindex); +PERLBN(sprintf); +PERLBN(substr); +PERLBN(uc); +PERLBN(ucfirst); + +/* Regular expressions and pattern matching */ +PERLBN(m); +PERLBN(pos); +PERLBN(quotemeta); +PERLBN(split); +PERLBN(study); + +/* Numeric functions */ +PERLBN(abs); +PERLBN(atan2); +PERLBN(cos); +PERLBN(exp); +PERLBN(hex); +PERLBN(int); +PERLBN(log); +PERLBN(oct); +PERLBN(rand); +PERLBN(sin); +PERLBN(sqrt); +PERLBN(srand); + + +/* Functions for real @ARRAYs*/ +PERLBN(pop); +PERLBN(push); +PERLBN(shift); +PERLBN(splice); +PERLBN(unshift); + +/* Functions for list data*/ +PERLBN(grep); +PERLBN(join); +PERLBN(map); +PERLBN(qw); +PERLBN(reverse); +PERLBN(sort); +PERLBN(unpack); + + +/* Functions for real %HASHes*/ +PERLBN(delete); +PERLBN(each); +PERLBN(exists); +PERLBN(keys); +PERLBN(values); + + +/* Input and output functions*/ + +PERLBN(binmode); +PERLBN(close); +PERLBN(closedir); +PERLBN(dbmclose); +PERLBN(dbmopen); +PERLBN(die); +PERLBN(eof); +PERLBN(fileno); +PERLBN(flock); +PERLBN(format); +PERLBN(getc); +PERLBN(print); +PERLBN(printf); +PERLBN(read); +PERLBN(readdir); +PERLBN(rewinddir); +PERLBN(seek); +PERLBN(seekdir); +PERLBN(select); +PERLBN(syscall); +PERLBN(sysread); +PERLBN(sysseek); +PERLBN(syswrite); +PERLBN(tell); +PERLBN(telldir); +PERLBN(truncate); +PERLBN(warn); +PERLBN(write); + + +/* Functions for fixed length data or records*/ +PERLBN(pack); +PERLBN(read); +PERLBN(syscall); +PERLBN(sysread); +PERLBN(syswrite); +PERLBN(unpack); +PERLBN(vec); + + +/* Functions for filehandles, files, or directories */ +PERLBN(chdir); +PERLBN(chmod); +PERLBN(chown); +PERLBN(chroot); +PERLBN(fcntl); +PERLBN(glob); +PERLBN(ioctl); +PERLBN(link); +PERLBN(lstat); +PERLBN(mkdir); +PERLBN(open); +PERLBN(opendir); +PERLBN(readlink); +PERLBN(rename); +PERLBN(rmdir); +PERLBN(stat); +PERLBN(symlink); +PERLBN(umask); +PERLBN(unlink); +PERLBN(utime); + + +/* Keywords related to the control flow of your perl program */ +PERLKW(caller); +PERLKW(continue); +PERLKW(die); +PERLKW(do); +PERLKW(dump); +PERLKW(eval); +PERLKW(exit); +PERLKW(goto); +PERLKW(last); +PERLKW(next); +PERLKW(redo); +PERLKW(return); +PERLKW(sub); +PERLKW(wantarray); + + +/* Keywords related to scoping */ +PERLKW(caller); +PERLKW(import); +PERLKW(local); +PERLKW(my); +PERLKW(package); +PERLKW(use); + + +/* Miscellaneous functions */ +PERLBN("defined"); +PERLBN(dump); +PERLBN(eval); +PERLBN(formline); +PERLBN(local); +PERLBN(my); +PERLBN(reset); +PERLBN(scalar); +PERLBN(undef); +PERLBN(wantarray); + + +/* Functions for processes and process groups */ +PERLBN(alarm); +PERLBN(exec); +PERLBN(fork); +PERLBN(getpgrp); +PERLBN(getppid); +PERLBN(getpriority); +PERLBN(kill); +PERLBN(pipe); +PERLBN(setpgrp); +PERLBN(setpriority); +PERLBN(sleep); +PERLBN(system); +PERLBN(times); +PERLBN(wait); +PERLBN(waitpid); + + +/* Keywords related to perl modules */ +PERLKW(do); +PERLKW(import); +PERLKW(no); +PERLKW(package); +PERLKW(require); +PERLKW(use); + + +/* Keywords related to classes and object-orientedness */ +PERLKW(bless); +PERLKW(dbmclose); +PERLKW(dbmopen); +PERLKW(package); +PERLKW(ref); +PERLKW(tie); +PERLKW(tied); +PERLKW(untie); +PERLKW(use); + +/* Functions new in perl5 */ +PERLBN(abs); +PERLBN(bless); +PERLBN(chomp); +PERLBN(chr); +PERLBN(exists); +PERLBN(formline); +PERLBN(glob); +PERLBN(import); +PERLBN(lc); +PERLBN(lcfirst); +PERLBN(map); +PERLBN(my); +PERLBN(no); +PERLBN(prototype); +PERLBN(qx); +PERLBN(qw); +PERLBN(readline); +PERLBN(readpipe); +PERLBN(ref); +PERLBN(sub); +PERLBN(sysopen); +PERLBN(tie); +PERLBN(tied); +PERLBN(uc); +PERLBN(ucfirst); +PERLBN(untie); +PERLBN(use); + +#undef PERLKW +#undef PERLBN diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlmacros.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlmacros.swg new file mode 100644 index 00000000..4917f6ef --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlmacros.swg @@ -0,0 +1,2 @@ +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlmain.i b/macx64/bin/swig/share/swig/4.0.0/perl5/perlmain.i new file mode 100644 index 00000000..18ecb7eb --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlmain.i @@ -0,0 +1,82 @@ +/* ----------------------------------------------------------------------------- + * perlmain.i + * + * Code to statically rebuild perl5. + * ----------------------------------------------------------------------------- */ + +#ifdef AUTODOC +%subsection "perlmain.i" +%text %{ +This module provides support for building a new version of the +Perl executable. This will be necessary on systems that do +not support shared libraries and may be necessary with C++ +extensions. + +This module may only build a stripped down version of the +Perl executable. Thus, it may be necessary (or desirable) +to hand-edit this file for your particular application. To +do this, simply copy this file from swig_lib/perl5/perlmain.i +to your working directory and make the appropriate modifications. + +This library file works with Perl 5.003. It may work with earlier +versions, but it hasn't been tested. As far as I know, this +library is C++ safe. +%} +#endif + +%{ + +static void xs_init _((pTHX)); +static PerlInterpreter *my_perl; + +int perl_eval(char *string) { + char *argv[2]; + argv[0] = string; + argv[1] = (char *) 0; + return perl_call_argv("eval",0,argv); +} + +int +main(int argc, char **argv, char **env) +{ + int exitstatus; + + my_perl = perl_alloc(); + if (!my_perl) + exit(1); + perl_construct( my_perl ); + + exitstatus = perl_parse( my_perl, xs_init, argc, argv, (char **) NULL ); + if (exitstatus) + exit( exitstatus ); + + /* Initialize all of the module variables */ + + exitstatus = perl_run( my_perl ); + + perl_destruct( my_perl ); + perl_free( my_perl ); + + exit( exitstatus ); +} + +/* Register any extra external extensions */ + +/* Do not delete this line--writemain depends on it */ +/* EXTERN_C void boot_DynaLoader _((CV* cv)); */ + +static void +xs_init(pTHX) +{ +/* dXSUB_SYS; */ + char *file = __FILE__; + { + /* newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); */ + newXS(SWIG_name, SWIG_init, file); +#ifdef SWIGMODINIT + SWIGMODINIT +#endif + } +} + +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlopers.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlopers.swg new file mode 100644 index 00000000..e7d13b67 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlopers.swg @@ -0,0 +1,54 @@ +/* ------------------------------------------------------------ + * Overloaded operator support + * ------------------------------------------------------------ */ + +#ifdef __cplusplus + +// These are auto-supported by the Perl-module +%rename(__plusplus__) *::operator++; +%rename(__minmin__) *::operator--; +%rename(__add__) *::operator+; +%rename(__sub__) *::operator-; +%rename(__neg__) *::operator-(); +%rename(__neg__) *::operator-() const; +%rename(__mul__) *::operator*; +%rename(__div__) *::operator/; +%rename(__eq__) *::operator==; +%rename(__ne__) *::operator!=; +%rename(__mod__) *::operator%; +%rename(__gt__) *::operator>; +%rename(__lt__) *::operator<; +%rename(__not__) *::operator!; +%rename(__le__) *::operator<=; +%rename(__ge__) *::operator>=; +%rename(__and__) *::operator&; +%rename(__or__) *::operator|; +%rename(__iadd__) *::operator+=; +%rename(__isub__) *::operator-=; + +// These are renamed, but no test exists in operator_overload_runme.pl +%ignoreoperator(EQ) operator=; + +// These are renamed, but no 'use overload...' is added +%rename(__lshift__) *::operator<<; +%rename(__rshift__) *::operator>>; +%rename(__xor__) *::operator^; +%rename(__invert__) *::operator~; +%rename(__call__) *::operator(); + +/* Ignored operators */ +%ignoreoperator(LAND) operator&&; +%ignoreoperator(LOR) operator||; +%ignoreoperator(MULEQ) operator*=; +%ignoreoperator(DIVEQ) operator/=; +%ignoreoperator(MODEQ) operator%=; +%ignoreoperator(LSHIFTEQ) operator<<=; +%ignoreoperator(RSHIFTEQ) operator>>=; +%ignoreoperator(ANDEQ) operator&=; +%ignoreoperator(OREQ) operator|=; +%ignoreoperator(XOREQ) operator^=; +%ignoreoperator(ARROWSTAR) operator->*; +%ignoreoperator(INDEX) operator[]; + + +#endif /* __cplusplus */ diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlprimtypes.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlprimtypes.swg new file mode 100644 index 00000000..4cb67567 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlprimtypes.swg @@ -0,0 +1,364 @@ +/* ------------------------------------------------------------ + * Primitive Types + * ------------------------------------------------------------ */ + +/* bool */ + +%fragment(SWIG_From_frag(bool),"header") { +SWIGINTERNINLINE SV * +SWIG_From_dec(bool)(bool value) +{ + return boolSV(value); +} +} + +%fragment(SWIG_AsVal_frag(bool),"header") { +SWIGINTERN int +SWIG_AsVal_dec(bool)(SV *obj, bool* val) +{ + if (obj == &PL_sv_yes) { + if (val) *val = true; + return SWIG_OK; + } else if (obj == &PL_sv_no) { + if (val) *val = false; + return SWIG_OK; + } else { + if (val) *val = SvTRUE(obj) ? true : false; + return SWIG_AddCast(SWIG_OK); + } +} +} + + +/* long */ + +%fragment(SWIG_From_frag(long),"header") { +SWIGINTERNINLINE SV * +SWIG_From_dec(long)(long value) +{ + SV *sv; + if (IVSIZE >= sizeof(value) || (value >= IV_MIN && value <= IV_MAX)) + sv = newSViv(value); + else + sv = newSVpvf("%ld", value); + return sv_2mortal(sv); +} +} + +%fragment(SWIG_AsVal_frag(long),"header", + fragment="", + fragment="", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(long)(SV *obj, long* val) +{ + if (SvUOK(obj)) { + UV v = SvUV(obj); + if (UVSIZE < sizeof(*val) || v <= LONG_MAX) { + if (val) *val = v; + return SWIG_OK; + } + return SWIG_OverflowError; + } else if (SvIOK(obj)) { + IV v = SvIV(obj); + if (IVSIZE <= sizeof(*val) || (v >= LONG_MIN && v <= LONG_MAX)) { + if(val) *val = v; + return SWIG_OK; + } + return SWIG_OverflowError; + } else { + int dispatch = 0; + const char *nptr = SvPV_nolen(obj); + if (nptr) { + char *endptr; + long v; + errno = 0; + v = strtol(nptr, &endptr,0); + if (errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_Str2NumCast(SWIG_OK); + } + } + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { + if (val) *val = (long)(d); + return res; + } + } + } + return SWIG_TypeError; +} +} + +/* unsigned long */ + +%fragment(SWIG_From_frag(unsigned long),"header") { +SWIGINTERNINLINE SV * +SWIG_From_dec(unsigned long)(unsigned long value) +{ + SV *sv; + if (UVSIZE >= sizeof(value) || value <= UV_MAX) + sv = newSVuv(value); + else + sv = newSVpvf("%lu", value); + return sv_2mortal(sv); +} +} + +%fragment(SWIG_AsVal_frag(unsigned long),"header", + fragment="", + fragment="", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(unsigned long)(SV *obj, unsigned long *val) +{ + if (SvUOK(obj)) { + UV v = SvUV(obj); + if (UVSIZE <= sizeof(*val) || v <= ULONG_MAX) { + if (val) *val = v; + return SWIG_OK; + } + return SWIG_OverflowError; + } else if (SvIOK(obj)) { + IV v = SvIV(obj); + if (v >= 0 && (IVSIZE <= sizeof(*val) || v <= ULONG_MAX)) { + if (val) *val = v; + return SWIG_OK; + } + return SWIG_OverflowError; + } else { + int dispatch = 0; + const char *nptr = SvPV_nolen(obj); + if (nptr) { + char *endptr; + unsigned long v; + errno = 0; + v = strtoul(nptr, &endptr,0); + if (errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_Str2NumCast(SWIG_OK); + } + } + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { + if (val) *val = (unsigned long)(d); + return res; + } + } + } + return SWIG_TypeError; +} +} + +/* long long */ + +%fragment(SWIG_From_frag(long long),"header", + fragment="SWIG_LongLongAvailable", + fragment="") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE SV * +SWIG_From_dec(long long)(long long value) +{ + SV *sv; + if (IVSIZE >= sizeof(value) || (value >= IV_MIN && value <= IV_MAX)) + sv = newSViv((IV)(value)); + else { + //sv = newSVpvf("%lld", value); doesn't work in non 64bit Perl + char temp[256]; + sprintf(temp, "%lld", value); + sv = newSVpv(temp, 0); + } + return sv_2mortal(sv); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(long long),"header", + fragment="SWIG_LongLongAvailable", + fragment="", + fragment="SWIG_CanCastAsInteger") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(long long)(SV *obj, long long *val) +{ + if (SvUOK(obj)) { + UV v = SvUV(obj); + /* pretty sure this could allow v == LLONG MAX */ + if (UVSIZE < sizeof(*val) || v < LLONG_MAX) { + if (val) *val = v; + return SWIG_OK; + } + return SWIG_OverflowError; + } else if (SvIOK(obj)) { + IV v = SvIV(obj); + if (IVSIZE <= sizeof(*val) || (v >= LLONG_MIN && v <= LLONG_MAX)) { + if (val) *val = v; + return SWIG_OK; + } + return SWIG_OverflowError; + } else { + int dispatch = 0; + const char *nptr = SvPV_nolen(obj); + if (nptr) { + char *endptr; + long long v; + errno = 0; + v = strtoll(nptr, &endptr,0); + if (errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_Str2NumCast(SWIG_OK); + } + } + } + if (!dispatch) { + const double mant_max = 1LL << DBL_MANT_DIG; + const double mant_min = -mant_max; + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) { + if (val) *val = (long long)(d); + return res; + } + } + } + return SWIG_TypeError; +} +%#endif +} + +/* unsigned long long */ + +%fragment(SWIG_From_frag(unsigned long long),"header", + fragment="SWIG_LongLongAvailable", + fragment="") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE SV * +SWIG_From_dec(unsigned long long)(unsigned long long value) +{ + SV *sv; + if (UVSIZE >= sizeof(value) || value <= UV_MAX) + sv = newSVuv((UV)(value)); + else { + //sv = newSVpvf("%llu", value); doesn't work in non 64bit Perl + char temp[256]; + sprintf(temp, "%llu", value); + sv = newSVpv(temp, 0); + } + return sv_2mortal(sv); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(unsigned long long),"header", + fragment="SWIG_LongLongAvailable", + fragment="", + fragment="SWIG_CanCastAsInteger") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(unsigned long long)(SV *obj, unsigned long long *val) +{ + if (SvUOK(obj)) { + /* pretty sure this should be conditional on + * (UVSIZE <= sizeof(*val) || v <= ULLONG_MAX) */ + if (val) *val = SvUV(obj); + return SWIG_OK; + } else if (SvIOK(obj)) { + IV v = SvIV(obj); + if (v >= 0 && (IVSIZE <= sizeof(*val) || v <= ULLONG_MAX)) { + if (val) *val = v; + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else { + int dispatch = 0; + const char *nptr = SvPV_nolen(obj); + if (nptr) { + char *endptr; + unsigned long long v; + errno = 0; + v = strtoull(nptr, &endptr,0); + if (errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_Str2NumCast(SWIG_OK); + } + } + } + if (!dispatch) { + const double mant_max = 1LL << DBL_MANT_DIG; + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) { + if (val) *val = (unsigned long long)(d); + return res; + } + } + } + return SWIG_TypeError; +} +%#endif +} + +/* double */ + +%fragment(SWIG_From_frag(double),"header") { +SWIGINTERNINLINE SV * +SWIG_From_dec(double)(double value) +{ + return sv_2mortal(newSVnv(value)); +} +} + +%fragment(SWIG_AsVal_frag(double),"header") { +SWIGINTERN int +SWIG_AsVal_dec(double)(SV *obj, double *val) +{ + if (SvNIOK(obj)) { + if (val) *val = SvNV(obj); + return SWIG_OK; + } else if (SvIOK(obj)) { + if (val) *val = (double) SvIV(obj); + return SWIG_AddCast(SWIG_OK); + } else { + const char *nptr = SvPV_nolen(obj); + if (nptr) { + char *endptr; + double v; + errno = 0; + v = strtod(nptr, &endptr); + if (errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_Str2NumCast(SWIG_OK); + } + } + } + } + return SWIG_TypeError; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlrun.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlrun.swg new file mode 100644 index 00000000..b04002f5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlrun.swg @@ -0,0 +1,520 @@ +/* ----------------------------------------------------------------------------- + * perlrun.swg + * + * This file contains the runtime support for Perl modules + * and includes code for managing global variables and pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +#ifdef PERL_OBJECT +#define SWIG_PERL_OBJECT_DECL CPerlObj *SWIGUNUSEDPARM(pPerl), +#define SWIG_PERL_OBJECT_CALL pPerl, +#else +#define SWIG_PERL_OBJECT_DECL +#define SWIG_PERL_OBJECT_CALL +#endif + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_ConvertPtr(obj, pp, type, flags) SWIG_Perl_ConvertPtr(SWIG_PERL_OBJECT_CALL obj, pp, type, flags) +#define SWIG_ConvertPtrAndOwn(obj, pp, type, flags,own) SWIG_Perl_ConvertPtrAndOwn(SWIG_PERL_OBJECT_CALL obj, pp, type, flags, own) +#define SWIG_NewPointerObj(p, type, flags) SWIG_Perl_NewPointerObj(SWIG_PERL_OBJECT_CALL p, type, flags) +#define SWIG_AcquirePtr(ptr, src) SWIG_Perl_AcquirePtr(ptr, src) +#define swig_owntype int + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, p, s, type) SWIG_Perl_ConvertPacked(SWIG_PERL_OBJECT_CALL obj, p, s, type) +#define SWIG_NewPackedObj(p, s, type) SWIG_Perl_NewPackedObj(SWIG_PERL_OBJECT_CALL p, s, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_ConvertPtr(obj, pptr, type, 0) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_NewPointerObj(ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Perl_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_Perl_SetModule(pointer) + + +/* Error manipulation */ + +#define SWIG_ErrorType(code) SWIG_Perl_ErrorType(code) +#define SWIG_Error(code, msg) sv_setpvf(get_sv("@", GV_ADD), "%s %s", SWIG_ErrorType(code), msg) +#define SWIG_fail goto fail + +/* Perl-specific SWIG API */ + +#define SWIG_MakePtr(sv, ptr, type, flags) SWIG_Perl_MakePtr(SWIG_PERL_OBJECT_CALL sv, ptr, type, flags) +#define SWIG_MakePackedObj(sv, p, s, type) SWIG_Perl_MakePackedObj(SWIG_PERL_OBJECT_CALL sv, p, s, type) +#define SWIG_SetError(str) SWIG_Error(SWIG_RuntimeError, str) + + +#define SWIG_PERL_DECL_ARGS_1(arg1) (SWIG_PERL_OBJECT_DECL arg1) +#define SWIG_PERL_CALL_ARGS_1(arg1) (SWIG_PERL_OBJECT_CALL arg1) +#define SWIG_PERL_DECL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_DECL arg1, arg2) +#define SWIG_PERL_CALL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_CALL arg1, arg2) + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +/* For backward compatibility only */ +#define SWIG_POINTER_EXCEPTION 0 + +#ifdef __cplusplus +extern "C" { +#endif + +#define SWIG_OWNER SWIG_POINTER_OWN +#define SWIG_SHADOW SWIG_OWNER << 1 + +#define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL + +/* SWIG Perl macros */ + +/* Macro to declare an XS function */ +#ifndef XSPROTO +# define XSPROTO(name) void name(pTHX_ CV* cv) +#endif + +/* Macro to call an XS function */ +#ifdef PERL_OBJECT +# define SWIG_CALLXS(_name) _name(cv,pPerl) +#else +# ifndef MULTIPLICITY +# define SWIG_CALLXS(_name) _name(cv) +# else +# define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) +# endif +#endif + +#ifdef PERL_OBJECT +#define MAGIC_PPERL CPerlObj *pPerl = (CPerlObj *) this; + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *); +#ifdef __cplusplus +} +#endif + +#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b) +#define SWIGCLASS_STATIC + +#else /* PERL_OBJECT */ + +#define MAGIC_PPERL +#define SWIGCLASS_STATIC static SWIGUNUSED + +#ifndef MULTIPLICITY +#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b) + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (*SwigMagicFunc)(SV *, MAGIC *); +#ifdef __cplusplus +} +#endif + +#else /* MULTIPLICITY */ + +#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b) + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *); +#ifdef __cplusplus +} +#endif + +#endif /* MULTIPLICITY */ +#endif /* PERL_OBJECT */ + +# ifdef PERL_OBJECT +# define SWIG_croak_null() SWIG_Perl_croak_null(pPerl) +static void SWIGUNUSED SWIG_Perl_croak_null(CPerlObj *pPerl) +# else +static void SWIGUNUSED SWIG_croak_null() +# endif +{ + SV *err = get_sv("@", GV_ADD); +# if (PERL_VERSION < 6) + croak("%_", err); +# else + if (sv_isobject(err)) + croak(0); + else + croak("%s", SvPV_nolen(err)); +# endif +} + + +/* + Define how strict is the cast between strings and integers/doubles + when overloading between these types occurs. + + The default is making it as strict as possible by using SWIG_AddCast + when needed. + + You can use -DSWIG_PERL_NO_STRICT_STR2NUM at compilation time to + disable the SWIG_AddCast, making the casting between string and + numbers less strict. + + In the end, we try to solve the overloading between strings and + numerical types in the more natural way, but if you can avoid it, + well, avoid it using %rename, for example. +*/ +#ifndef SWIG_PERL_NO_STRICT_STR2NUM +# ifndef SWIG_PERL_STRICT_STR2NUM +# define SWIG_PERL_STRICT_STR2NUM +# endif +#endif +#ifdef SWIG_PERL_STRICT_STR2NUM +/* string takes precedence */ +#define SWIG_Str2NumCast(x) SWIG_AddCast(x) +#else +/* number takes precedence */ +#define SWIG_Str2NumCast(x) x +#endif + + + +#include + +SWIGRUNTIME const char * +SWIG_Perl_TypeProxyName(const swig_type_info *type) { + if (!type) return NULL; + if (type->clientdata != NULL) { + return (const char*) type->clientdata; + } + else { + return type->name; + } +} + +/* Identical to SWIG_TypeCheck, except for strcmp comparison */ +SWIGRUNTIME swig_cast_info * +SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (strcmp(SWIG_Perl_TypeProxyName(iter->type), c) == 0) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* Acquire a pointer value */ + +SWIGRUNTIME int +SWIG_Perl_AcquirePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, int own) { + /* TODO */ + return 0; +} + +/* Function for getting a pointer value */ + +SWIGRUNTIME int +SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags, int *own) { + swig_cast_info *tc; + void *voidptr = (void *)0; + SV *tsv = 0; + + if (own) + *own = 0; + + /* If magical, apply more magic */ + if (SvGMAGICAL(sv)) + mg_get(sv); + + /* Check to see if this is an object */ + if (sv_isobject(sv)) { + IV tmp = 0; + tsv = (SV*) SvRV(sv); + if ((SvTYPE(tsv) == SVt_PVHV)) { + MAGIC *mg; + if (SvMAGICAL(tsv)) { + mg = mg_find(tsv,'P'); + if (mg) { + sv = mg->mg_obj; + if (sv_isobject(sv)) { + tsv = (SV*)SvRV(sv); + tmp = SvIV(tsv); + } + } + } else { + return SWIG_ERROR; + } + } else { + tmp = SvIV(tsv); + } + voidptr = INT2PTR(void *,tmp); + } else if (! SvOK(sv)) { /* Check for undef */ + *(ptr) = (void *) 0; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */ + if (!SvROK(sv)) { + /* In Perl 5.12 and later, SVt_RV == SVt_IV, so sv could be a valid integer value. */ + if (SvIOK(sv)) { + return SWIG_ERROR; + } else { + /* NULL pointer (reference to undef). */ + *(ptr) = (void *) 0; + return SWIG_OK; + } + } else { + return SWIG_ERROR; + } + } else { /* Don't know what it is */ + return SWIG_ERROR; + } + if (_t) { + /* Now see if the types match */ + char *_c = HvNAME(SvSTASH(SvRV(sv))); + tc = SWIG_TypeProxyCheck(_c,_t); +#ifdef SWIG_DIRECTORS + if (!tc && !sv_derived_from(sv,SWIG_Perl_TypeProxyName(_t))) { +#else + if (!tc) { +#endif + return SWIG_ERROR; + } + { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,voidptr,&newmemory); + if (newmemory == SWIG_CAST_NEW_MEMORY) { + assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ + if (own) + *own = *own | SWIG_CAST_NEW_MEMORY; + } + } + } else { + *ptr = voidptr; + } + + /* + * DISOWN implementation: we need a perl guru to check this one. + */ + if (tsv && (flags & SWIG_POINTER_DISOWN)) { + /* + * almost copy paste code from below SWIG_POINTER_OWN setting + */ + SV *obj = sv; + HV *stash = SvSTASH(SvRV(obj)); + GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE); + if (isGV(gv)) { + HV *hv = GvHVn(gv); + /* + * To set ownership (see below), a newSViv(1) entry is added. + * Hence, to remove ownership, we delete the entry. + */ + if (hv_exists_ent(hv, obj, 0)) { + hv_delete_ent(hv, obj, 0, 0); + } + } + } + return SWIG_OK; +} + +SWIGRUNTIME int +SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) { + return SWIG_Perl_ConvertPtrAndOwn(sv, ptr, _t, flags, 0); +} + +SWIGRUNTIME void +SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) { + if (ptr && (flags & (SWIG_SHADOW | SWIG_POINTER_OWN))) { + SV *self; + SV *obj=newSV(0); + HV *hash=newHV(); + HV *stash; + sv_setref_pv(obj, SWIG_Perl_TypeProxyName(t), ptr); + stash=SvSTASH(SvRV(obj)); + if (flags & SWIG_POINTER_OWN) { + HV *hv; + GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE); + if (!isGV(gv)) + gv_init(gv, stash, "OWNER", 5, FALSE); + hv=GvHVn(gv); + hv_store_ent(hv, obj, newSViv(1), 0); + } + sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0); + SvREFCNT_dec(obj); + self=newRV_noinc((SV *)hash); + sv_setsv(sv, self); + SvREFCNT_dec((SV *)self); + sv_bless(sv, stash); + } + else { + sv_setref_pv(sv, SWIG_Perl_TypeProxyName(t), ptr); + } +} + +SWIGRUNTIMEINLINE SV * +SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) { + SV *result = sv_newmortal(); + SWIG_MakePtr(result, ptr, t, flags); + return result; +} + +SWIGRUNTIME void +SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) { + char result[1024]; + char *r = result; + if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + strcpy(r,SWIG_Perl_TypeProxyName(type)); + sv_setpv(sv, result); +} + +SWIGRUNTIME SV * +SWIG_Perl_NewPackedObj(SWIG_MAYBE_PERL_OBJECT void *ptr, int sz, swig_type_info *type) { + SV *result = sv_newmortal(); + SWIG_Perl_MakePackedObj(result, ptr, sz, type); + return result; +} + +/* Convert a packed pointer value */ +SWIGRUNTIME int +SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty) { + swig_cast_info *tc; + const char *c = 0; + + if ((!obj) || (!SvOK(obj))) return SWIG_ERROR; + c = SvPV_nolen(obj); + /* Pointer values must start with leading underscore */ + if (*c != '_') return SWIG_ERROR; + c++; + c = SWIG_UnpackData(c,ptr,sz); + if (ty) { + tc = SWIG_TypeCheck(c,ty); + if (!tc) return SWIG_ERROR; + } + return SWIG_OK; +} + + +/* Macros for low-level exception handling */ +#define SWIG_croak(x) { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; } + + +typedef XSPROTO(SwigPerlWrapper); +typedef SwigPerlWrapper *SwigPerlWrapperPtr; + +/* Structure for command table */ +typedef struct { + const char *name; + SwigPerlWrapperPtr wrapper; +} swig_command_info; + +/* Information for constant table */ + +#define SWIG_INT 1 +#define SWIG_FLOAT 2 +#define SWIG_STRING 3 +#define SWIG_POINTER 4 +#define SWIG_BINARY 5 + +/* Constant information structure */ +typedef struct swig_constant_info { + int type; + const char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_constant_info; + + +/* Structure for variable table */ +typedef struct { + const char *name; + SwigMagicFunc set; + SwigMagicFunc get; + swig_type_info **type; +} swig_variable_info; + +/* Magic variable code */ +#ifndef PERL_OBJECT +# ifdef __cplusplus +# define swig_create_magic(s,a,b,c) _swig_create_magic(s,const_cast(a),b,c) +# else +# define swig_create_magic(s,a,b,c) _swig_create_magic(s,(char*)(a),b,c) +# endif +# ifndef MULTIPLICITY +SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) +# else +SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) +# endif +#else +# define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c) +SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) +#endif +{ + MAGIC *mg; + sv_magic(sv,sv,'U',name,strlen(name)); + mg = mg_find(sv,'U'); + mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL)); + mg->mg_virtual->svt_get = (SwigMagicFunc) get; + mg->mg_virtual->svt_set = (SwigMagicFunc) set; + mg->mg_virtual->svt_len = 0; + mg->mg_virtual->svt_clear = 0; + mg->mg_virtual->svt_free = 0; +} + + +SWIGRUNTIME swig_module_info * +SWIG_Perl_GetModule(void *SWIGUNUSEDPARM(clientdata)) { + static void *type_pointer = (void *)0; + SV *pointer; + + /* first check if pointer already created */ + if (!type_pointer) { + pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE | GV_ADDMULTI); + if (pointer && SvOK(pointer)) { + type_pointer = INT2PTR(swig_type_info **, SvIV(pointer)); + } + } + + return (swig_module_info *) type_pointer; +} + +SWIGRUNTIME void +SWIG_Perl_SetModule(swig_module_info *module) { + SV *pointer; + + /* create a new pointer */ + pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE | GV_ADDMULTI); + sv_setiv(pointer, PTR2IV(module)); +} + +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlruntime.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlruntime.swg new file mode 100644 index 00000000..f948023d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlruntime.swg @@ -0,0 +1,8 @@ + +%runtime "swigrun.swg" // Common C API type-checking code +%runtime "swigerrors.swg" // SWIG errors +%runtime "perlhead.swg" // Perl includes and fixes +%runtime "perlerrors.swg" // Perl errors +%runtime "perlrun.swg" // Perl runtime functions +%runtime "noembed.h" // undefine Perl5 macros + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perlstrings.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perlstrings.swg new file mode 100644 index 00000000..242a9c96 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perlstrings.swg @@ -0,0 +1,59 @@ +/* ------------------------------------------------------------ + * utility methods for char strings + * ------------------------------------------------------------ */ + +%fragment("SWIG_AsCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERN int +SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc) +{ + if (SvMAGICAL(obj)) { + SV *tmp = sv_newmortal(); + SvSetSV(tmp, obj); + obj = tmp; + } + if (SvPOK(obj)) { + STRLEN len = 0; + char *cstr = SvPV(obj, len); + size_t size = len + 1; + if (cptr) { + if (alloc) { + if (*alloc == SWIG_NEWOBJ) { + *cptr = %new_copy_array(cstr, size, char); + } else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } + } + if (psize) *psize = size; + return SWIG_OK; + } else { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + char* vptr = 0; + if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = vptr; + if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} +} + +%fragment("SWIG_FromCharPtrAndSize","header") { +SWIGINTERNINLINE SV * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + SV *obj = sv_newmortal(); + if (carray) { + sv_setpvn(obj, carray, size); + } else { + sv_setsv(obj, &PL_sv_undef); + } + return obj; +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perltypemaps.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perltypemaps.swg new file mode 100644 index 00000000..bf1596e9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perltypemaps.swg @@ -0,0 +1,102 @@ +/* ------------------------------------------------------------ + * Typemap specializations for Perl + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + * Fragment section + * ------------------------------------------------------------ */ + +/* + in Perl we need to pass the CPerlObj value, sometimes, so, we define + the decl/call macros as needed. +*/ + +#define SWIG_AS_DECL_ARGS SWIG_PERL_DECL_ARGS_2 +#define SWIG_AS_CALL_ARGS SWIG_PERL_CALL_ARGS_2 + +#define SWIG_FROM_DECL_ARGS SWIG_PERL_DECL_ARGS_1 +#define SWIG_FROM_CALL_ARGS SWIG_PERL_CALL_ARGS_1 + + +/* Include fundamental fragment definitions */ +%include + +/* Look for user fragments file. */ +%include + +/* Perl fragments for primitive types */ +%include + +/* Perl fragments for char* strings */ +%include + + +/* ------------------------------------------------------------ + * Unified typemap section + * ------------------------------------------------------------ */ + +/* director support in Perl is experimental */ +#ifndef SWIG_DIRECTOR_TYPEMAPS +#define SWIG_DIRECTOR_TYPEMAPS +#endif + + +/* Perl types */ +#define SWIG_Object SV * +#define VOID_Object &PL_sv_undef + +/* Perl $shadow flag */ +#define %newpointer_flags $shadow +#define %newinstance_flags $shadow + + +/* Complete overload of the output/constant/exception macros */ + +/* output */ +%define %set_output(obj) $result = obj; argvi++ %enddef + +/* append output */ +%define %append_output(obj) if (argvi >= items) EXTEND(sp, argvi+1); %set_output(obj) %enddef + +/* variable output */ +%define %set_varoutput(obj) sv_setsv($result,obj) %enddef + +/* constant */ +%define %set_constant(name, obj) %begin_block + SV *sv = get_sv((char*) SWIG_prefix name, TRUE | 0x2 | GV_ADDMULTI); + sv_setsv(sv, obj); + SvREADONLY_on(sv); +%end_block %enddef + +/* raise exception */ +%define %raise(obj, type, desc) sv_setsv(get_sv("@", GV_ADD), obj); SWIG_fail %enddef + +/* For directors to raise/throw the original exception */ +%typemap(throws) Swig::DirectorException +%{ sv_setsv(ERRSV, $1.getNative()); SWIG_fail; %} + +/* Include the unified typemap library */ +%include + +/* ------------------------------------------------------------ + * Perl extra typemaps / typemap overrides + * ------------------------------------------------------------ */ + +%typemap(varout,type="$1_descriptor") SWIGTYPE *, SWIGTYPE [] + "sv_setiv(SvRV($result),PTR2IV($1));"; + +%typemap(varout,type="$1_descriptor") SWIGTYPE & + "sv_setiv(SvRV($result),PTR2IV(&$1));"; + +%typemap(varout,type="$1_descriptor") SWIGTYPE && + "sv_setiv(SvRV($result),PTR2IV(&$1));"; + +%typemap(varout,type="$&1_descriptor") SWIGTYPE + "sv_setiv(SvRV($result), PTR2IV(&$1));"; + +%typemap(varout,type="$1_descriptor") SWIGTYPE (CLASS::*) { + SWIG_MakePackedObj($result, (void *) &$1, sizeof($1_type), $1_descriptor); +} + +%typemap(varout) SWIGTYPE *const = SWIGTYPE *; + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/perluserdir.swg b/macx64/bin/swig/share/swig/4.0.0/perl5/perluserdir.swg new file mode 100644 index 00000000..718440e8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/perluserdir.swg @@ -0,0 +1,2 @@ +#define %perlcode %insert("perl") + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/reference.i b/macx64/bin/swig/share/swig/4.0.0/perl5/reference.i new file mode 100644 index 00000000..b424c533 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/reference.i @@ -0,0 +1,261 @@ +/* ----------------------------------------------------------------------------- + * reference.i + * + * Accept Perl references as pointers + * ----------------------------------------------------------------------------- */ + +/* +The following methods make Perl references work like simple C +pointers. References can only be used for simple input/output +values, not C arrays however. It should also be noted that +REFERENCES are specific to Perl and not supported in other +scripting languages at this time. + + int *REFERENCE + short *REFERENCE + long *REFERENCE + unsigned int *REFERENCE + unsigned short *REFERENCE + unsigned long *REFERENCE + unsigned char *REFERENCE + float *REFERENCE + double *REFERENCE + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include reference.i + void neg(double *REFERENCE); + +or you can use the %apply directive : + + %include reference.i + %apply double *REFERENCE { double *x }; + void neg(double *x); + +Unlike the INOUT mapping described in typemaps.i, this approach directly +modifies the value of a Perl reference. Thus, you could use it +as follows : + + $x = 3; + neg(\$x); + print "$x\n"; # Should print out -3. + +*/ + +%typemap(in) double *REFERENCE (double dvalue), double &REFERENCE(double dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if ((!SvNOK(tempsv)) && (!SvIOK(tempsv))) { + printf("Received %d\n", SvTYPE(tempsv)); + SWIG_croak("Expected a double reference."); + } + dvalue = SvNV(tempsv); + $1 = &dvalue; +} + +%typemap(in) float *REFERENCE (float dvalue), float &REFERENCE(float dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if ((!SvNOK(tempsv)) && (!SvIOK(tempsv))) { + SWIG_croak("expected a double reference"); + } + dvalue = (float) SvNV(tempsv); + $1 = &dvalue; +} + +%typemap(in) int *REFERENCE (int dvalue), int &REFERENCE (int dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if (!SvIOK(tempsv)) { + SWIG_croak("expected an integer reference"); + } + dvalue = SvIV(tempsv); + $1 = &dvalue; +} + +%typemap(in) short *REFERENCE (short dvalue), short &REFERENCE(short dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if (!SvIOK(tempsv)) { + SWIG_croak("expected an integer reference"); + } + dvalue = (short) SvIV(tempsv); + $1 = &dvalue; +} +%typemap(in) long *REFERENCE (long dvalue), long &REFERENCE(long dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if (!SvIOK(tempsv)) { + SWIG_croak("expected an integer reference"); + } + dvalue = (long) SvIV(tempsv); + $1 = &dvalue; +} +%typemap(in) unsigned int *REFERENCE (unsigned int dvalue), unsigned int &REFERENCE(unsigned int dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if (!SvIOK(tempsv)) { + SWIG_croak("expected an integer reference"); + } + dvalue = (unsigned int) SvUV(tempsv); + $1 = &dvalue; +} +%typemap(in) unsigned short *REFERENCE (unsigned short dvalue), unsigned short &REFERENCE(unsigned short dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if (!SvIOK(tempsv)) { + SWIG_croak("expected an integer reference"); + } + dvalue = (unsigned short) SvUV(tempsv); + $1 = &dvalue; +} +%typemap(in) unsigned long *REFERENCE (unsigned long dvalue), unsigned long &REFERENCE(unsigned long dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if (!SvIOK(tempsv)) { + SWIG_croak("expected an integer reference"); + } + dvalue = (unsigned long) SvUV(tempsv); + $1 = &dvalue; +} + +%typemap(in) unsigned char *REFERENCE (unsigned char dvalue), unsigned char &REFERENCE(unsigned char dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if (!SvIOK(tempsv)) { + SWIG_croak("expected an integer reference"); + } + dvalue = (unsigned char) SvUV(tempsv); + $1 = &dvalue; +} + +%typemap(in) signed char *REFERENCE (signed char dvalue), signed char &REFERENCE(signed char dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if (!SvIOK(tempsv)) { + SWIG_croak("expected an integer reference"); + } + dvalue = (signed char) SvIV(tempsv); + $1 = &dvalue; +} + +%typemap(in) bool *REFERENCE (bool dvalue), bool &REFERENCE(bool dvalue) +{ + SV *tempsv; + if (!SvROK($input)) { + SWIG_croak("expected a reference"); + } + tempsv = SvRV($input); + if (!SvIOK(tempsv)) { + SWIG_croak("expected an integer reference"); + } + dvalue = SvIV(tempsv) ? true : false; + $1 = &dvalue; +} + +%typemap(typecheck) int *REFERENCE, int &REFERENCE, + short *REFERENCE, short &REFERENCE, + long *REFERENCE, long &REFERENCE, + signed char *REFERENCE, signed char &REFERENCE, + bool *REFERENCE, bool &REFERENCE +{ + $1 = SvROK($input) && SvIOK(SvRV($input)); +} +%typemap(typecheck) double *REFERENCE, double &REFERENCE, + float *REFERENCE, float &REFERENCE +{ + $1 = SvROK($input); + if($1) { + SV *tmpsv = SvRV($input); + $1 = SvNOK(tmpsv) || SvIOK(tmpsv); + } +} +%typemap(typecheck) unsigned int *REFERENCE, unsigned int &REFERENCE, + unsigned short *REFERENCE, unsigned short &REFERENCE, + unsigned long *REFERENCE, unsigned long &REFERENCE, + unsigned char *REFERENCE, unsigned char &REFERENCE +{ + $1 = SvROK($input); + if($1) { + SV *tmpsv = SvRV($input); + $1 = SvUOK(tmpsv) || SvIOK(tmpsv); + } +} + +%typemap(argout) double *REFERENCE, double &REFERENCE, + float *REFERENCE, float &REFERENCE +{ + SV *tempsv; + tempsv = SvRV($arg); + if (!$1) SWIG_croak("expected a reference"); + sv_setnv(tempsv, (double) *$1); +} + +%typemap(argout) int *REFERENCE, int &REFERENCE, + short *REFERENCE, short &REFERENCE, + long *REFERENCE, long &REFERENCE, + signed char *REFERENCE, signed char &REFERENCE, + bool *REFERENCE, bool &REFERENCE +{ + SV *tempsv; + tempsv = SvRV($input); + if (!$1) SWIG_croak("expected a reference"); + sv_setiv(tempsv, (IV) *$1); +} + +%typemap(argout) unsigned int *REFERENCE, unsigned int &REFERENCE, + unsigned short *REFERENCE, unsigned short &REFERENCE, + unsigned long *REFERENCE, unsigned long &REFERENCE, + unsigned char *REFERENCE, unsigned char &REFERENCE +{ + SV *tempsv; + tempsv = SvRV($input); + if (!$1) SWIG_croak("expected a reference"); + sv_setuv(tempsv, (UV) *$1); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/std_common.i b/macx64/bin/swig/share/swig/4.0.0/perl5/std_common.i new file mode 100644 index 00000000..7c1ff232 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/std_common.i @@ -0,0 +1,28 @@ +/* ----------------------------------------------------------------------------- + * std_common.i + * + * SWIG typemaps for STL - common utilities + * ----------------------------------------------------------------------------- */ + +%include + +%apply size_t { std::size_t }; + +%fragment(""); +%{ +SWIGINTERN +double SwigSvToNumber(SV* sv) { + return SvIOK(sv) ? double(SvIVX(sv)) : SvNVX(sv); +} +SWIGINTERN +std::string SwigSvToString(SV* sv) { + STRLEN len; + char *ptr = SvPV(sv, len); + return std::string(ptr, len); +} +SWIGINTERN +void SwigSvFromString(SV* sv, const std::string& s) { + sv_setpvn(sv,s.data(),s.size()); +} +%} + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/perl5/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/std_except.i b/macx64/bin/swig/share/swig/4.0.0/perl5/std_except.i new file mode 100644 index 00000000..af98428f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/std_except.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/std_list.i b/macx64/bin/swig/share/swig/4.0.0/perl5/std_list.i new file mode 100644 index 00000000..36678add --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/std_list.i @@ -0,0 +1,377 @@ +/* ----------------------------------------------------------------------------- + * std_list.i + * + * SWIG typemaps for std::list types + * ----------------------------------------------------------------------------- */ + +%include +%include + +// containers + + +// ------------------------------------------------------------------------ +// std::list +// +// The aim of all that follows would be to integrate std::list with +// Perl as much as possible, namely, to allow the user to pass and +// be returned Perl arrays. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::list), f(const std::list&), f(const std::list*): +// the parameter being read-only, either a Perl sequence or a +// previously wrapped std::list can be passed. +// -- f(std::list&), f(std::list*): +// the parameter must be modified; therefore, only a wrapped std::list +// can be passed. +// -- std::list f(): +// the list is returned by copy; therefore, a Perl sequence of T:s +// is returned which is most easily used in other Perl functions +// -- std::list& f(), std::list* f(), const std::list& f(), +// const std::list* f(): +// the list is returned by reference; therefore, a wrapped std::list +// is returned +// ------------------------------------------------------------------------ + +%{ +#include +%} +%fragment(""); +%fragment(""); + +// exported class + +namespace std { + + template class list { + %typemap(in) list (std::list* v) { + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor,1) != -1) { + $1 = *v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + SV **tv; + I32 len = av_len(av) + 1; + T* obj; + for (int i=0; i& (std::list temp, + std::list* v), + const list* (std::list temp, + std::list* v) { + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,1) != -1) { + $1 = v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + SV **tv; + I32 len = av_len(av) + 1; + T* obj; + for (int i=0; i { + std::list< T >::const_iterator i; + unsigned int j; + int len = $1.size(); + SV **svs = new SV*[len]; + for (i=$1.begin(), j=0; i!=$1.end(); i++, j++) { + T* ptr = new T(*i); + svs[j] = sv_newmortal(); + SWIG_MakePtr(svs[j], (void*) ptr, + $descriptor(T *), $shadow|$owner); + } + AV *myav = av_make(len, svs); + delete[] svs; + $result = newRV_noinc((SV*) myav); + sv_2mortal($result); + argvi++; + } + %typecheck(SWIG_TYPECHECK_LIST) list { + { + /* wrapped list? */ + std::list< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $1_&descriptor,0) != -1) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + SV **tv; + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* obj; + tv = av_fetch(av, 0, 0); + if (SWIG_ConvertPtr(*tv, (void **)&obj, + $descriptor(T *),0) != -1) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + %typecheck(SWIG_TYPECHECK_LIST) const list&, + const list* { + { + /* wrapped list? */ + std::list< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,0) != -1) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + SV **tv; + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* obj; + tv = av_fetch(av, 0, 0); + if (SWIG_ConvertPtr(*tv, (void **)&obj, + $descriptor(T *),0) != -1) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + list(); + list(const list& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %rename(push) push_back; + void push_back(const T& x); + }; + + + // specializations for built-ins + + %define specialize_std_list(T,CHECK_T,TO_T,FROM_T) + template<> class list { + %typemap(in) list (std::list* v) { + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor,1) != -1){ + $1 = *v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + SV **tv; + I32 len = av_len(av) + 1; + for (int i=0; i& (std::list temp, + std::list* v), + const list* (std::list temp, + std::list* v) { + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,1) != -1) { + $1 = v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + SV **tv; + I32 len = av_len(av) + 1; + T* obj; + for (int i=0; i { + std::list< T >::const_iterator i; + unsigned int j; + int len = $1.size(); + SV **svs = new SV*[len]; + for (i=$1.begin(), j=0; i!=$1.end(); i++, j++) { + svs[j] = sv_newmortal(); + FROM_T(svs[j], *i); + } + AV *myav = av_make(len, svs); + delete[] svs; + $result = newRV_noinc((SV*) myav); + sv_2mortal($result); + argvi++; + } + %typecheck(SWIG_TYPECHECK_LIST) list { + { + /* wrapped list? */ + std::list< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $1_&descriptor,0) != -1) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + SV **tv; + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + tv = av_fetch(av, 0, 0); + if (CHECK_T(*tv)) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + %typecheck(SWIG_TYPECHECK_LIST) const list&, + const list* { + { + /* wrapped list? */ + std::list< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,0) != -1) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + SV **tv; + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + tv = av_fetch(av, 0, 0); + if (CHECK_T(*tv)) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + public: + typedef size_t size_type; + typedef T value_type; + typedef const value_type& const_reference; + + list(); + list(const list& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %rename(push) push_back; + void push_back(T x); + }; + %enddef + + specialize_std_list(bool,SvIOK,SvIVX,sv_setiv); + specialize_std_list(char,SvIOK,SvIVX,sv_setiv); + specialize_std_list(int,SvIOK,SvIVX,sv_setiv); + specialize_std_list(short,SvIOK,SvIVX,sv_setiv); + specialize_std_list(long,SvIOK,SvIVX,sv_setiv); + specialize_std_list(unsigned char,SvIOK,SvIVX,sv_setiv); + specialize_std_list(unsigned int,SvIOK,SvIVX,sv_setiv); + specialize_std_list(unsigned short,SvIOK,SvIVX,sv_setiv); + specialize_std_list(unsigned long,SvIOK,SvIVX,sv_setiv); + specialize_std_list(float,SvNIOK,SwigSvToNumber,sv_setnv); + specialize_std_list(double,SvNIOK,SwigSvToNumber,sv_setnv); + specialize_std_list(std::string,SvPOK,SvPVX,SwigSvFromString); + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/std_map.i b/macx64/bin/swig/share/swig/4.0.0/perl5/std_map.i new file mode 100644 index 00000000..1b373183 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/std_map.i @@ -0,0 +1,80 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +%} +%fragment(""); +%fragment(""); + +// exported class + +namespace std { + + template > class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + } + }; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/perl5/std_pair.i new file mode 100644 index 00000000..732347db --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/std_pair.i @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/std_string.i b/macx64/bin/swig/share/swig/4.0.0/perl5/std_string.i new file mode 100644 index 00000000..6f34f184 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/std_string.i @@ -0,0 +1,2 @@ +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/perl5/std_vector.i new file mode 100644 index 00000000..5bfd2c5a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/std_vector.i @@ -0,0 +1,592 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * + * SWIG typemaps for std::vector types + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::vector +// +// The aim of all that follows would be to integrate std::vector with +// Perl as much as possible, namely, to allow the user to pass and +// be returned Perl arrays. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::vector), f(const std::vector&), f(const std::vector*): +// the parameter being read-only, either a Perl sequence or a +// previously wrapped std::vector can be passed. +// -- f(std::vector&), f(std::vector*): +// the parameter must be modified; therefore, only a wrapped std::vector +// can be passed. +// -- std::vector f(): +// the vector is returned by copy; therefore, a Perl sequence of T:s +// is returned which is most easily used in other Perl functions +// -- std::vector& f(), std::vector* f(), const std::vector& f(), +// const std::vector* f(): +// the vector is returned by reference; therefore, a wrapped std::vector +// is returned +// ------------------------------------------------------------------------ + +%{ +#include +%} +%fragment(""); +%fragment(""); + +// exported class + +namespace std { + + template class vector { + %typemap(in) vector (std::vector* v) { + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor,1) != -1) { + $1 = *v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + SV **tv; + I32 len = av_len(av) + 1; + T* obj; + for (int i=0; i& (std::vector temp, + std::vector* v), + const vector* (std::vector temp, + std::vector* v) { + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,1) != -1) { + $1 = v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + SV **tv; + I32 len = av_len(av) + 1; + T* obj; + for (int i=0; i { + size_t len = $1.size(); + SV **svs = new SV*[len]; + for (size_t i=0; i { + { + /* wrapped vector? */ + std::vector< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor,0) != -1) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* obj; + SV **tv = av_fetch(av, 0, 0); + if (SWIG_ConvertPtr(*tv, (void **)&obj, + $descriptor(T *),0) != -1) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) const vector&, + const vector* { + { + /* wrapped vector? */ + std::vector< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,0) != -1) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* obj; + SV **tv = av_fetch(av, 0, 0); + if (SWIG_ConvertPtr(*tv, (void **)&obj, + $descriptor(T *),0) != -1) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, const T& value); + vector(const vector& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %rename(push) push_back; + void push_back(const T& x); + %extend { + T pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T x = self->back(); + self->pop_back(); + return x; + } + T& get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class vector { + %typemap(in) vector (std::vector* v) { + int res = SWIG_ConvertPtr($input,(void **) &v, $&1_descriptor,0); + if (SWIG_IsOK(res)){ + $1 = *v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + I32 len = av_len(av) + 1; + for (int i=0; i& (std::vector temp,std::vector* v), + const vector* (std::vector temp,std::vector* v) { + int res = SWIG_ConvertPtr($input,(void **) &v, $1_descriptor,0); + if (SWIG_IsOK(res)) { + $1 = v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + I32 len = av_len(av) + 1; + for (int i=0; i { + size_t len = $1.size(); + SV **svs = new SV*[len]; + for (size_t i=0; i { + { + /* wrapped vector? */ + std::vector< T *>* v; + int res = SWIG_ConvertPtr($input,(void **) &v, $&1_descriptor,0); + if (SWIG_IsOK(res)) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + void *v; + SV **tv = av_fetch(av, 0, 0); + int res = SWIG_ConvertPtr(*tv, &v, $descriptor(T *),0); + if (SWIG_IsOK(res)) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) const vector&,const vector* { + { + /* wrapped vector? */ + std::vector< T *> *v; + int res = SWIG_ConvertPtr($input,%as_voidptrptr(&v), $1_descriptor,0); + if (SWIG_IsOK(res)) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + void *v; + SV **tv = av_fetch(av, 0, 0); + int res = SWIG_ConvertPtr(*tv, &v, $descriptor(T *),0); + if (SWIG_IsOK(res)) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T* value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, T *value); + vector(const vector& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %rename(push) push_back; + void push_back(T *x); + %extend { + T *pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T *x = self->back(); + self->pop_back(); + return x; + } + T *get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class vector { + %typemap(in) vector (std::vector* v) { + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor,1) != -1){ + $1 = *v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + SV **tv; + I32 len = av_len(av) + 1; + for (int i=0; i& (std::vector temp, + std::vector* v), + const vector* (std::vector temp, + std::vector* v) { + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,1) != -1) { + $1 = v; + } else if (SvROK($input)) { + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) != SVt_PVAV) + SWIG_croak("Type error in argument $argnum of $symname. " + "Expected an array of " #T); + SV **tv; + I32 len = av_len(av) + 1; + for (int i=0; i { + size_t len = $1.size(); + SV **svs = new SV*[len]; + for (size_t i=0; i { + { + /* wrapped vector? */ + std::vector< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor,0) != -1) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + SV **tv = av_fetch(av, 0, 0); + if (CHECK_T(*tv)) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + %typecheck(SWIG_TYPECHECK_VECTOR) const vector&, + const vector* { + { + /* wrapped vector? */ + std::vector< T >* v; + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,0) != -1) { + $1 = 1; + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + SV **tv = av_fetch(av, 0, 0); + if (CHECK_T(*tv)) + $1 = 1; + else + $1 = 0; + } + } + } else { + $1 = 0; + } + } + } + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, T value); + vector(const vector& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %rename(push) push_back; + void push_back(T x); + %extend { + T pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T x = self->back(); + self->pop_back(); + return x; + } + T get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/perl5/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/perl5/typemaps.i new file mode 100644 index 00000000..3e1f60d9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/perl5/typemaps.i @@ -0,0 +1,371 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * The SWIG typemap library provides a language independent mechanism for + * supporting output arguments, input values, and other C function + * calling mechanisms. The primary use of the library is to provide a + * better interface to certain C function--especially those involving + * pointers. + * ----------------------------------------------------------------------------- */ + +#if !defined(SWIG_USE_OLD_TYPEMAPS) +%include +#else + + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + + int *INPUT + short *INPUT + long *INPUT + long long *INPUT + unsigned int *INPUT + unsigned short *INPUT + unsigned long *INPUT + unsigned long long *INPUT + unsigned char *INPUT + bool *INPUT + float *INPUT + double *INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include typemaps.i + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include typemaps.i + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ + +%define INPUT_TYPEMAP(type, converter) +%typemap(in) type *INPUT(type temp), type &INPUT(type temp) { + temp = (type) converter($input); + $1 = &temp; +} +%typemap(typecheck) type *INPUT = type; +%typemap(typecheck) type &INPUT = type; +%enddef + +INPUT_TYPEMAP(float, SvNV); +INPUT_TYPEMAP(double, SvNV); +INPUT_TYPEMAP(int, SvIV); +INPUT_TYPEMAP(long, SvIV); +INPUT_TYPEMAP(short, SvIV); +INPUT_TYPEMAP(signed char, SvIV); +INPUT_TYPEMAP(unsigned int, SvUV); +INPUT_TYPEMAP(unsigned long, SvUV); +INPUT_TYPEMAP(unsigned short, SvUV); +INPUT_TYPEMAP(unsigned char, SvUV); + +%typemap(in) bool *INPUT(bool temp), bool &INPUT(bool temp) { + temp = SvIV($input) ? true : false; + $1 = &temp; +} +%typemap(typecheck) bool *INPUT = bool; +%typemap(typecheck) bool &INPUT = bool; + +%typemap(in) long long *INPUT($*1_ltype temp), long long &INPUT($*1_ltype temp) { + temp = strtoll(SvPV_nolen($input), 0, 0); + $1 = &temp; +} +%typemap(typecheck) long long *INPUT = long long; +%typemap(typecheck) long long &INPUT = long long; + +%typemap(in) unsigned long long *INPUT($*1_ltype temp), unsigned long long &INPUT($*1_ltype temp) { + temp = strtoull(SvPV_nolen($input), 0, 0); + $1 = &temp; +} +%typemap(typecheck) unsigned long long *INPUT = unsigned long long; +%typemap(typecheck) unsigned long long &INPUT = unsigned long long; + + +#undef INPUT_TYPEMAP + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, functions will return a Perl array. + + int *OUTPUT + short *OUTPUT + long *OUTPUT + long long *OUTPUT + unsigned int *OUTPUT + unsigned short *OUTPUT + unsigned long *OUTPUT + unsigned long long *OUTPUT + unsigned char *OUTPUT + bool *OUTPUT + float *OUTPUT + double *OUTPUT + +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).: + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include typemaps.i + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include typemaps.i + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Perl output of the function would be an array containing both +output values. + +*/ + +// Force the argument to be ignored. + +%typemap(in,numinputs=0) int *OUTPUT(int temp), int &OUTPUT(int temp), + short *OUTPUT(short temp), short &OUTPUT(short temp), + long *OUTPUT(long temp), long &OUTPUT(long temp), + unsigned int *OUTPUT(unsigned int temp), unsigned int &OUTPUT(unsigned int temp), + unsigned short *OUTPUT(unsigned short temp), unsigned short &OUTPUT(unsigned short temp), + unsigned long *OUTPUT(unsigned long temp), unsigned long &OUTPUT(unsigned long temp), + unsigned char *OUTPUT(unsigned char temp), unsigned char &OUTPUT(unsigned char temp), + signed char *OUTPUT(signed char temp), signed char &OUTPUT(signed char temp), + bool *OUTPUT(bool temp), bool &OUTPUT(bool temp), + float *OUTPUT(float temp), float &OUTPUT(float temp), + double *OUTPUT(double temp), double &OUTPUT(double temp), + long long *OUTPUT($*1_ltype temp), long long &OUTPUT($*1_ltype temp), + unsigned long long *OUTPUT($*1_ltype temp), unsigned long long &OUTPUT($*1_ltype temp) +"$1 = &temp;"; + +%typemap(argout) int *OUTPUT, int &OUTPUT, + short *OUTPUT, short &OUTPUT, + long *OUTPUT, long &OUTPUT, + signed char *OUTPUT, signed char &OUTPUT, + bool *OUTPUT, bool &OUTPUT +{ + if (argvi >= items) { + EXTEND(sp, argvi+1); + } + $result = sv_newmortal(); + sv_setiv($result,(IV) *($1)); + argvi++; +} + +%typemap(argout) unsigned int *OUTPUT, unsigned int &OUTPUT, + unsigned short *OUTPUT, unsigned short &OUTPUT, + unsigned long *OUTPUT, unsigned long &OUTPUT, + unsigned char *OUTPUT, unsigned char &OUTPUT +{ + if (argvi >= items) { + EXTEND(sp, argvi+1); + } + $result = sv_newmortal(); + sv_setuv($result,(UV) *($1)); + argvi++; +} + + + +%typemap(argout) float *OUTPUT, float &OUTPUT, + double *OUTPUT, double &OUTPUT +{ + if (argvi >= items) { + EXTEND(sp, argvi+1); + } + $result = sv_newmortal(); + sv_setnv($result,(double) *($1)); + argvi++; +} + +%typemap(argout) long long *OUTPUT, long long &OUTPUT { + char temp[256]; + if (argvi >= items) { + EXTEND(sp, argvi+1); + } + sprintf(temp,"%lld", (long long)*($1)); + $result = sv_newmortal(); + sv_setpv($result,temp); + argvi++; +} + +%typemap(argout) unsigned long long *OUTPUT, unsigned long long &OUTPUT { + char temp[256]; + if (argvi >= items) { + EXTEND(sp, argvi+1); + } + sprintf(temp,"%llu", (unsigned long long)*($1)); + $result = sv_newmortal(); + sv_setpv($result,temp); + argvi++; +} + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a Perl array. + + int *INOUT + short *INOUT + long *INOUT + long long *INOUT + unsigned int *INOUT + unsigned short *INOUT + unsigned long *INOUT + unsigned long long *INOUT + unsigned char *INOUT + bool *INOUT + float *INOUT + double *INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include typemaps.i + void neg(double *INOUT); + +or you can use the %apply directive : + + %include typemaps.i + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value. +Rather, the modified input value shows up as the return value of the +function. Thus, to apply this function to a Perl variable you might +do this : + + $x = neg($x); + +*/ + +%typemap(in) int *INOUT = int *INPUT; +%typemap(in) short *INOUT = short *INPUT; +%typemap(in) long *INOUT = long *INPUT; +%typemap(in) unsigned *INOUT = unsigned *INPUT; +%typemap(in) unsigned short *INOUT = unsigned short *INPUT; +%typemap(in) unsigned long *INOUT = unsigned long *INPUT; +%typemap(in) unsigned char *INOUT = unsigned char *INPUT; +%typemap(in) signed char *INOUT = signed char *INPUT; +%typemap(in) bool *INOUT = bool *INPUT; +%typemap(in) float *INOUT = float *INPUT; +%typemap(in) double *INOUT = double *INPUT; +%typemap(in) long long *INOUT = long long *INPUT; +%typemap(in) unsigned long long *INOUT = unsigned long long *INPUT; + +%typemap(in) int &INOUT = int &INPUT; +%typemap(in) short &INOUT = short &INPUT; +%typemap(in) long &INOUT = long &INPUT; +%typemap(in) unsigned &INOUT = unsigned &INPUT; +%typemap(in) unsigned short &INOUT = unsigned short &INPUT; +%typemap(in) unsigned long &INOUT = unsigned long &INPUT; +%typemap(in) unsigned char &INOUT = unsigned char &INPUT; +%typemap(in) signed char &INOUT = signed char &INPUT; +%typemap(in) bool &INOUT = bool &INPUT; +%typemap(in) float &INOUT = float &INPUT; +%typemap(in) double &INOUT = double &INPUT; +%typemap(in) long long &INOUT = long long &INPUT; +%typemap(in) unsigned long long &INOUT = unsigned long long &INPUT; + + +%typemap(argout) int *INOUT = int *OUTPUT; +%typemap(argout) short *INOUT = short *OUTPUT; +%typemap(argout) long *INOUT = long *OUTPUT; +%typemap(argout) unsigned *INOUT = unsigned *OUTPUT; +%typemap(argout) unsigned short *INOUT = unsigned short *OUTPUT; +%typemap(argout) unsigned long *INOUT = unsigned long *OUTPUT; +%typemap(argout) unsigned char *INOUT = unsigned char *OUTPUT; +%typemap(argout) signed char *INOUT = signed char *OUTPUT; +%typemap(argout) bool *INOUT = bool *OUTPUT; +%typemap(argout) float *INOUT = float *OUTPUT; +%typemap(argout) double *INOUT = double *OUTPUT; +%typemap(argout) long long *INOUT = long long *OUTPUT; +%typemap(argout) unsigned long long *INOUT = unsigned long long *OUTPUT; + + +%typemap(argout) int &INOUT = int &OUTPUT; +%typemap(argout) short &INOUT = short &OUTPUT; +%typemap(argout) long &INOUT = long &OUTPUT; +%typemap(argout) unsigned &INOUT = unsigned &OUTPUT; +%typemap(argout) unsigned short &INOUT = unsigned short &OUTPUT; +%typemap(argout) unsigned long &INOUT = unsigned long &OUTPUT; +%typemap(argout) unsigned char &INOUT = unsigned char &OUTPUT; +%typemap(argout) signed char &INOUT = signed char &OUTPUT; +%typemap(argout) bool &INOUT = bool &OUTPUT; +%typemap(argout) float &INOUT = float &OUTPUT; +%typemap(argout) double &INOUT = double &OUTPUT; +%typemap(argout) long long &INOUT = long long &OUTPUT; +%typemap(argout) unsigned long long &INOUT = unsigned long long &OUTPUT; + + +/* Overloading information */ + +%typemap(typecheck) double *INOUT = double; +%typemap(typecheck) bool *INOUT = bool; +%typemap(typecheck) signed char *INOUT = signed char; +%typemap(typecheck) unsigned char *INOUT = unsigned char; +%typemap(typecheck) unsigned long *INOUT = unsigned long; +%typemap(typecheck) unsigned short *INOUT = unsigned short; +%typemap(typecheck) unsigned int *INOUT = unsigned int; +%typemap(typecheck) long *INOUT = long; +%typemap(typecheck) short *INOUT = short; +%typemap(typecheck) int *INOUT = int; +%typemap(typecheck) float *INOUT = float; +%typemap(typecheck) long long *INOUT = long long; +%typemap(typecheck) unsigned long long *INOUT = unsigned long long; + +%typemap(typecheck) double &INOUT = double; +%typemap(typecheck) bool &INOUT = bool; +%typemap(typecheck) signed char &INOUT = signed char; +%typemap(typecheck) unsigned char &INOUT = unsigned char; +%typemap(typecheck) unsigned long &INOUT = unsigned long; +%typemap(typecheck) unsigned short &INOUT = unsigned short; +%typemap(typecheck) unsigned int &INOUT = unsigned int; +%typemap(typecheck) long &INOUT = long; +%typemap(typecheck) short &INOUT = short; +%typemap(typecheck) int &INOUT = int; +%typemap(typecheck) float &INOUT = float; +%typemap(typecheck) long long &INOUT = long long; +%typemap(typecheck) unsigned long long &INOUT = unsigned long long; + +#endif + +// -------------------------------------------------------------------- +// Special types +// -------------------------------------------------------------------- + + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/php/const.i b/macx64/bin/swig/share/swig/4.0.0/php/const.i new file mode 100644 index 00000000..32b4b9b0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/const.i @@ -0,0 +1,47 @@ +/* ----------------------------------------------------------------------------- + * const.i + * + * Typemaps for constants + * ----------------------------------------------------------------------------- */ + +%typemap(consttab) int, + unsigned int, + short, + unsigned short, + long, + unsigned long, + unsigned char, + signed char, + enum SWIGTYPE + "SWIG_LONG_CONSTANT($symname, ($1_type)$value);"; + +%typemap(consttab) bool + "SWIG_BOOL_CONSTANT($symname, ($1_type)$value);"; + +%typemap(consttab) float, + double + "SWIG_DOUBLE_CONSTANT($symname, $value);"; + +%typemap(consttab) char + "SWIG_CHAR_CONSTANT($symname, $value);"; + +%typemap(consttab) char *, + const char *, + char [], + const char [] + "SWIG_STRING_CONSTANT($symname, $value);"; + +%typemap(consttab) SWIGTYPE *, + SWIGTYPE &, + SWIGTYPE &&, + SWIGTYPE [] { + zend_constant c; + SWIG_SetPointerZval(&c.value, (void*)$value, $1_descriptor, 0); + zval_copy_ctor(&c.value); + c.name = zend_string_init("$symname", sizeof("$symname") - 1, 0); + SWIG_ZEND_CONSTANT_SET_FLAGS(&c, CONST_CS, module_number); + zend_register_constant(&c); +} + +/* Handled as a global variable. */ +%typemap(consttab) SWIGTYPE (CLASS::*) ""; diff --git a/macx64/bin/swig/share/swig/4.0.0/php/director.swg b/macx64/bin/swig/share/swig/4.0.0/php/director.swg new file mode 100644 index 00000000..ea0eba8a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/director.swg @@ -0,0 +1,170 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that PHP proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#ifndef SWIG_DIRECTOR_PHP_HEADER_ +#define SWIG_DIRECTOR_PHP_HEADER_ + +#include +#include +#include + +namespace Swig { + + /* memory handler */ + struct GCItem { + virtual ~GCItem() { + } + + virtual int get_own() const { + return 0; + } + }; + + struct GCItem_var { + GCItem_var(GCItem *item = 0) : _item(item) { + } + + GCItem_var& operator=(GCItem *item) { + GCItem *tmp = _item; + _item = item; + delete tmp; + return *this; + } + + ~GCItem_var() { + delete _item; + } + + GCItem * operator->() const { + return _item; + } + + private: + GCItem *_item; + }; + + struct GCItem_Object : GCItem { + GCItem_Object(int own) : _own(own) { + } + + virtual ~GCItem_Object() { + } + + int get_own() const { + return _own; + } + + private: + int _own; + }; + + template + struct GCItem_T : GCItem { + GCItem_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCItem_T() { + delete _ptr; + } + + private: + Type *_ptr; + }; + + class Director { + protected: + // "mutable" so we can get a non-const pointer to it in const methods. + mutable zval swig_self; + typedef std::map swig_ownership_map; + mutable swig_ownership_map swig_owner; + public: + Director(zval *self) { + ZVAL_COPY_VALUE(&swig_self, self); + } + + static bool swig_is_overridden_method(const char *cname, const char *lc_fname) { + bool result = false; + zend_string * cname_str = zend_string_init(cname, strlen(cname), 0); + zend_class_entry *ce = zend_lookup_class(cname_str); + if (ce) { + zval * mptr = zend_hash_str_find(&ce->function_table, lc_fname, strlen(lc_fname)); + if (mptr) { + // common.scope points to zend_class_entry for the declaring class, + // and there's only one of those per class, so we can just use a + // pointer compare here. + result = Z_FUNC_P(mptr)->common.scope != ce; + } + } + zend_string_release(cname_str); + return result; + } + + template + void swig_acquire_ownership(Type *vptr) const { + if (vptr) { + swig_owner[vptr] = new GCItem_T(vptr); + } + } + }; + + /* base class for director exceptions */ + class DirectorException : public std::exception { + protected: + std::string swig_msg; + public: + DirectorException(int code, const char *hdr, const char *msg) : swig_msg(hdr) { + if (msg && msg[0]) { + swig_msg += " "; + swig_msg += msg; + } + SWIG_ErrorCode() = code; + SWIG_ErrorMsg() = swig_msg.c_str(); + } + + virtual ~DirectorException() throw() { + } + + const char *what() const throw() { + return swig_msg.c_str(); + } + + static void raise(int code, const char *hdr, const char *msg) { + throw DirectorException(code, hdr, msg); + } + }; + + /* attempt to call a pure virtual method via a director method */ + class DirectorPureVirtualException : public DirectorException { + public: + DirectorPureVirtualException(const char *msg) + : DirectorException(E_ERROR, "SWIG director pure virtual method called", msg) { + } + + static void raise(const char *msg) { + throw DirectorPureVirtualException(msg); + } + }; + + /* any php exception that occurs during a director method call */ + class DirectorMethodException : public DirectorException + { + public: + DirectorMethodException() + : DirectorException(E_ERROR, "SWIG director method error", NULL) { + } + + DirectorMethodException(const char *msg) + : DirectorException(E_ERROR, "SWIG director method error", msg) { + } + + static void raise(const char *msg) { + throw DirectorMethodException(msg); + } + }; +} + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/php/factory.i b/macx64/bin/swig/share/swig/4.0.0/php/factory.i new file mode 100644 index 00000000..c4e082dd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/factory.i @@ -0,0 +1,109 @@ +/* + Implement a more natural wrap for factory methods, for example, if + you have: + + ---- geometry.h -------- + struct Geometry { + enum GeomType{ + POINT, + CIRCLE + }; + + virtual ~Geometry() {} + virtual int draw() = 0; + + // + // Factory method for all the Geometry objects + // + static Geometry *create(GeomType i); + }; + + struct Point : Geometry { + int draw() { return 1; } + double width() { return 1.0; } + }; + + struct Circle : Geometry { + int draw() { return 2; } + double radius() { return 1.5; } + }; + + // + // Factory method for all the Geometry objects + // + Geometry *Geometry::create(GeomType type) { + switch (type) { + case POINT: return new Point(); + case CIRCLE: return new Circle(); + default: return 0; + } + } + ---- geometry.h -------- + + + You can use the %factory with the Geometry::create method as follows: + + %newobject Geometry::create; + %factory(Geometry *Geometry::create, Point, Circle); + %include "geometry.h" + + and Geometry::create will return a 'Point' or 'Circle' instance + instead of the plain 'Geometry' type. For example, in python: + + circle = Geometry.create(Geometry.CIRCLE) + r = circle.radius() + + where circle is a Circle proxy instance. + + NOTES: remember to fully qualify all the type names and don't + use %factory inside a namespace declaration, ie, instead of + + namespace Foo { + %factory(Geometry *Geometry::create, Point, Circle); + } + + use + + %factory(Foo::Geometry *Foo::Geometry::create, Foo::Point, Foo::Circle); + + +*/ + +/* for loop for macro with one argument */ +%define %_formacro_1(macro, arg1,...)macro(arg1) +#if #__VA_ARGS__ != "__fordone__" +%_formacro_1(macro, __VA_ARGS__) +#endif +%enddef + +/* for loop for macro with one argument */ +%define %formacro_1(macro,...)%_formacro_1(macro,__VA_ARGS__,__fordone__)%enddef +%define %formacro(macro,...)%_formacro_1(macro,__VA_ARGS__,__fordone__)%enddef + +/* for loop for macro with two arguments */ +%define %_formacro_2(macro, arg1, arg2, ...)macro(arg1, arg2) +#if #__VA_ARGS__ != "__fordone__" +%_formacro_2(macro, __VA_ARGS__) +#endif +%enddef + +/* for loop for macro with two arguments */ +%define %formacro_2(macro,...)%_formacro_2(macro, __VA_ARGS__, __fordone__)%enddef + +%define %_factory_dispatch(Type) +if (!dcast) { + Type *dobj = dynamic_cast($1); + if (dobj) { + dcast = 1; + SWIG_SetPointerZval(return_value, SWIG_as_voidptr(dobj),$descriptor(Type *), $owner); + } +}%enddef + +%define %factory(Method,Types...) +%typemap(out) Method { + int dcast = 0; + %formacro(%_factory_dispatch, Types) + if (!dcast) { + SWIG_SetPointerZval(return_value, SWIG_as_voidptr($1),$descriptor, $owner); + } +}%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/php/globalvar.i b/macx64/bin/swig/share/swig/4.0.0/php/globalvar.i new file mode 100644 index 00000000..6b31207a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/globalvar.i @@ -0,0 +1,293 @@ +/* ----------------------------------------------------------------------------- + * globalvar.i + * + * Global variables - add the variable to PHP + * ----------------------------------------------------------------------------- */ + +%typemap(varinit) char * +{ + zval z_var; + if ($1) { + ZVAL_STRING(&z_var, $1); + } else { + ZVAL_STR(&z_var, ZSTR_EMPTY_ALLOC()); + } + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &z_var); +} + +%typemap(varinit) char [] +{ + zval z_var; + ZVAL_STRING(&z_var, $1); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &z_var); +} + +%typemap(varinit) int, + unsigned int, + unsigned short, + short, + unsigned short, + long, + unsigned long, + signed char, + unsigned char, + enum SWIGTYPE +{ + zval z_var; + ZVAL_LONG(&z_var, (long)$1); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &z_var); +} + +%typemap(varinit) bool +{ + zval z_var; + ZVAL_BOOL(&z_var, ($1)?1:0); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &z_var); +} + +%typemap(varinit) float, double +{ + zval z_var; + ZVAL_DOUBLE(&z_var, (double)$1); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &z_var); +} + +%typemap(varinit) char +{ + zval z_var; + char c = $1; + ZVAL_STRINGL(&z_var, &c, 1); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &z_var); +} + +%typemap(varinit) SWIGTYPE *, SWIGTYPE [] +{ + zval z_var; + SWIG_SetPointerZval(&z_var, (void*)$1, $1_descriptor, 0); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &z_var); +} + +%typemap(varinit) SWIGTYPE, SWIGTYPE &, SWIGTYPE && +{ + zval z_var; + SWIG_SetPointerZval(&z_var, (void*)&$1, $&1_descriptor, 0); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &z_var); +} + +%typemap(varinit) char [ANY] +{ + zval z_var; + /* varinit char [ANY] */ + ZVAL_STRINGL(&z_var, $1, $1_dim0); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &z_var); +} + +%typemap(varinit, fragment="swig_php_init_member_ptr") SWIGTYPE (CLASS::*) +{ + zval resource; + void * p = emalloc(sizeof($1)); + memcpy(p, &$1, sizeof($1)); + ZVAL_RES(&resource, zend_register_resource(p, swig_member_ptr)); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &resource); +} + +%typemap(varin) int, unsigned int, short, unsigned short, long, unsigned long, signed char, unsigned char, enum SWIGTYPE +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + $1 = zval_get_long(z_var); +} + +%typemap(varin) bool +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + convert_to_boolean(z_var); + $1 = (Z_TYPE_P(z_var) == IS_TRUE); +} + +%typemap(varin) double,float +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + $1 = zval_get_double(z_var); +} + +%typemap(varin) char +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + convert_to_string(z_var); + if ($1 != Z_STRVAL_P(z_var)[0]) { + $1 = Z_STRVAL_P(z_var)[0]; + } +} + +%typemap(varin) char * +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + char *s1; + convert_to_string(z_var); + s1 = Z_STRVAL_P(z_var); + if ((s1 == NULL) || ($1 == NULL) || strcmp(s1, $1)) { + if (s1) + $1 = estrdup(s1); + else + $1 = NULL; + } +} + + +%typemap(varin) SWIGTYPE [] +{ + if ($1) { + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + SWIG_SetPointerZval(z_var, (void*)$1, $1_descriptor, $owner); + } +} + +%typemap(varin) char [ANY] +{ + zval **z_var; + char *s1; + + zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1, (void**)&z_var); + s1 = Z_STRVAL_P(z_var); + if ((s1 == NULL) || ($1 == NULL) || strcmp(s1, $1)) { + if (s1) + strncpy($1, s1, $1_dim0); + } +} + +%typemap(varin) SWIGTYPE +{ + zval *z_var; + $&1_ltype _temp; + + z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + if (SWIG_ConvertPtr(z_var, (void**)&_temp, $&1_descriptor, 0) < 0) { + SWIG_PHP_Error(E_ERROR,"Type error in value of $symname. Expected $&1_descriptor"); + } + + $1 = *($&1_ltype)_temp; +} + +%typemap(varin) SWIGTYPE *, SWIGTYPE &, SWIGTYPE && +{ + zval *z_var; + $1_ltype _temp; + + z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + if (SWIG_ConvertPtr(z_var, (void **)&_temp, $1_descriptor, 0) < 0) { + SWIG_PHP_Error(E_ERROR,"Type error in value of $symname. Expected $&1_descriptor"); + } + + $1 = ($1_ltype)_temp; +} + +%typemap(varin, fragment="swig_php_init_member_ptr") SWIGTYPE (CLASS::*) +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + void * p = (void*)zend_fetch_resource_ex(z_var, SWIG_MEMBER_PTR, swig_member_ptr); + memcpy(&$1, p, sizeof($1)); +} + +%typemap(varout) int, + unsigned int, + unsigned short, + short, + long, + unsigned long, + signed char, + unsigned char, + enum SWIGTYPE +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + if ($1 != ($1_ltype)Z_LVAL_P(z_var)) { + z_var->value.lval = (long)$1; + } +} + +//SAMFIX need to cast zval->type, what if zend-hash_find fails? etc? +%typemap(varout) bool +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + if ($1 != ($1_ltype)Z_LVAL_P(z_var)) { + z_var->value.lval = (long)$1; + } +} + +%typemap(varout) double, float +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + if ($1 != ($1_ltype)Z_DVAL_P(z_var)) { + z_var->value.dval = (double)$1; + } +} + +%typemap(varout) char +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + char c = $1; + if ($1 != Z_STRVAL_P(z_val)[0]) { + ZVAL_STRING(z_var, &c); + } +} + +%typemap(varout) char * +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + const char *s1 = Z_STRVAL_P(z_var); + if ((s1 == NULL) || ($1 == NULL) || strcmp(s1, $1)) { + if (s1) + efree(s1); + if ($1) { + (z_var)->value.str.val = estrdup($1); + (z_var)->value.str.len = strlen($1) + 1; + } else { + (z_var)->value.str.val = 0; + (z_var)->value.str.len = 0; + } + } +} + +%typemap(varout) SWIGTYPE +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + SWIG_SetPointerZval(z_var, (void*)&$1, $&1_descriptor, 0); +} + +%typemap(varout) SWIGTYPE [] +{ + if($1) { + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + SWIG_SetPointerZval(z_var, (void*)$1, $1_descriptor, 0); + } +} + +%typemap(varout) char [ANY] +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + const char *s1 = Z_STRVAL_P(z_var); +deliberate error cos this code looks bogus to me + if ((s1 == NULL) || strcmp(s1, $1)) { + if ($1) { + (z_var)->value.str.val = estrdup($1); + (z_var)->value.str.len = strlen($1) + 1; + } else { + (z_var)->value.str.val = 0; + (z_var)->value.str.len = 0; + } + } +} + +%typemap(varout) SWIGTYPE *, SWIGTYPE &, SWIGTYPE && +{ + zval *z_var = zend_hash_str_find(&EG(symbol_table), "$1", sizeof("$1") - 1); + SWIG_SetPointerZval(z_var, (void*)$1, $1_descriptor, 0); +} + +%typemap(varout, fragment="swig_php_init_member_ptr") SWIGTYPE (CLASS::*) +{ + zval resource; + void * p = emalloc(sizeof($1)); + memcpy(p, &$1, sizeof($1)); + ZVAL_RES(&resource, zend_register_resource(p, swig_member_ptr)); + zend_hash_str_add(&EG(symbol_table), "$1", sizeof("$1") - 1, &resource); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/php/php.swg b/macx64/bin/swig/share/swig/4.0.0/php/php.swg new file mode 100644 index 00000000..4eba6be2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/php.swg @@ -0,0 +1,539 @@ +/* ----------------------------------------------------------------------------- + * php.swg + * + * PHP configuration file + * ----------------------------------------------------------------------------- */ + +%runtime "swigrun.swg" // Common C API type-checking code +%runtime "swigerrors.swg" // SWIG errors +%runtime "phprun.swg" // PHP runtime functions + +%include // PHP initialization routine. + +%include // Global variables. +%include + +// use %init %{ "/*code goes here*/ " %} +// or %minit %{ "/* code goes here*/ " %} to +// insert code in the PHP_MINIT_FUNCTION +#define %minit %insert("init") + +// use %rinit %{ "/* code goes here*/ " %} to +// insert code in the PHP_RINIT_FUNCTION +#define %rinit %insert("rinit") + +// use %shutdown %{ " /*code goes here*/ " %} to +// insert code in the PHP_MSHUTDOWN_FUNCTION +#define %shutdown %insert("shutdown") +#define %mshutdown %insert("shutdown") + +// use %rshutdown %{ " /*code goes here*/" %} to +// insert code in the PHP_RSHUTDOWN_FUNCTION +#define %rshutdown %insert("rshutdown") + +/* Typemaps for input parameters by value */ + +%include + +%pass_by_val(bool,CONVERT_BOOL_IN); + +%pass_by_val(size_t, CONVERT_INT_IN); + +%pass_by_val(enum SWIGTYPE, CONVERT_INT_IN); + +%pass_by_val(signed int, CONVERT_INT_IN); +%pass_by_val(int,CONVERT_INT_IN); +%pass_by_val(unsigned int,CONVERT_INT_IN); + +%pass_by_val(signed short, CONVERT_INT_IN); +%pass_by_val(short,CONVERT_INT_IN); +%pass_by_val(unsigned short, CONVERT_INT_IN); + +%pass_by_val(signed long, CONVERT_INT_IN); +%pass_by_val(long, CONVERT_INT_IN); +%pass_by_val(unsigned long, CONVERT_INT_IN); + +%pass_by_val(signed long long, CONVERT_LONG_LONG_IN); +%pass_by_val(long long, CONVERT_LONG_LONG_IN); +%pass_by_val(unsigned long long, CONVERT_UNSIGNED_LONG_LONG_IN); + +%pass_by_val(signed char, CONVERT_INT_IN); +%pass_by_val(char, CONVERT_CHAR_IN); +%pass_by_val(unsigned char, CONVERT_INT_IN); + +%pass_by_val(float, CONVERT_FLOAT_IN); + +%pass_by_val(double, CONVERT_FLOAT_IN); + +%pass_by_val(char *, CONVERT_STRING_IN); +%typemap(in) char *& = const char *&; +%typemap(directorout) char *& = const char *&; + +// char array can be in/out, though the passed string may not be big enough... +// so we have to size it +%typemap(in) char[ANY] +%{ + convert_to_string(&$input); + $1 = ($1_ltype) Z_STRVAL($input); +%} + +%typemap(in) (char *STRING, int LENGTH), (char *STRING, size_t LENGTH) %{ + convert_to_string(&$input); + $1 = ($1_ltype) Z_STRVAL($input); + $2 = ($2_ltype) Z_STRLEN($input); +%} + +/* Object passed by value. Convert to a pointer */ +%typemap(in) SWIGTYPE ($&1_ltype tmp) +%{ + if (SWIG_ConvertPtr(&$input, (void **) &tmp, $&1_descriptor, 0) < 0 || tmp == NULL) { + SWIG_PHP_Error(E_ERROR, "Type error in argument $argnum of $symname. Expected $&1_descriptor"); + } + $1 = *tmp; +%} + +%typemap(directorout) SWIGTYPE ($&1_ltype tmp) +%{ + /* If exit was via exception, PHP NULL is returned so skip the conversion. */ + if (!EG(exception)) { + if (SWIG_ConvertPtr($input, (void **) &tmp, $&1_descriptor, 0) < 0 || tmp == NULL) + SWIG_PHP_Error(E_ERROR, "Type error in argument $argnum of $symname. Expected $&1_descriptor"); + $result = *tmp; + } +%} + +%typemap(in) SWIGTYPE *, + SWIGTYPE [] +%{ + if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0) { + SWIG_PHP_Error(E_ERROR, "Type error in argument $argnum of $symname. Expected $1_descriptor"); + } +%} + +%typemap(in) SWIGTYPE & +%{ + if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0 || $1 == NULL) { + SWIG_PHP_Error(E_ERROR, "Type error in argument $argnum of $symname. Expected $1_descriptor"); + } +%} + +%typemap(in) SWIGTYPE && +%{ + if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0 || $1 == NULL) { + SWIG_PHP_Error(E_ERROR, "Type error in argument $argnum of $symname. Expected $1_descriptor"); + } +%} + +%typemap(in) SWIGTYPE *const& ($*ltype temp) +%{ + if (SWIG_ConvertPtr(&$input, (void **) &temp, $*1_descriptor, 0) < 0) { + SWIG_PHP_Error(E_ERROR, "Type error in argument $argnum of $symname. Expected $*1_descriptor"); + } + $1 = ($1_ltype)&temp; +%} + +%typemap(in) SWIGTYPE *DISOWN +%{ + if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, SWIG_POINTER_DISOWN ) < 0) { + SWIG_PHP_Error(E_ERROR, "Type error in argument $argnum of $symname. Expected $1_descriptor"); + } +%} + +%typemap(argout) SWIGTYPE *, + SWIGTYPE [], + SWIGTYPE &, + SWIGTYPE &&; + +%typemap(in) void * +%{ + if (SWIG_ConvertPtr(&$input, (void **) &$1, 0, 0) < 0) { + /* Allow NULL from php for void* */ + if (Z_ISNULL($input)) $1=0; + else + SWIG_PHP_Error(E_ERROR, "Type error in argument $argnum of $symname. Expected $1_descriptor"); + } +%} + +/* Special case when void* is passed by reference so it can be made to point + to opaque api structs */ +%typemap(in) void ** ($*1_ltype ptr, int force), + void *& ($*1_ltype ptr, int force) +{ + /* If they pass NULL by reference, make it into a void* + This bit should go in arginit if arginit support init-ing scripting args */ + if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0) { + /* So... we didn't get a ref or ptr, but we'll accept NULL by reference */ + if (!(Z_ISREF($input) && Z_ISNULL_P(Z_REFVAL($input)))) { + /* wasn't a pre/ref/thing, OR anything like an int thing */ + SWIG_PHP_Error(E_ERROR, "Type error in argument $arg of $symname."); + } + } + force=0; + if (arg1==NULL) { +#ifdef __cplusplus + ptr=new $*1_ltype(); +#else + ptr=($*1_ltype) calloc(1,sizeof($*1_ltype)); +#endif + $1=&ptr; + /* have to passback arg$arg too */ + force=1; + } +} +%typemap(argout) void **, + void *& +%{ + if (force$argnum) { + SWIG_SetPointerZval(&$input, (void*) ptr$argnum, $*1_descriptor, 1); + } +%} + +/* Typemap for output values */ + +%typemap(out) int, + unsigned int, + short, + unsigned short, + long, + unsigned long, + signed char, + unsigned char, + bool, + size_t +%{ + RETVAL_LONG($1); +%} + +%typemap(out) enum SWIGTYPE +%{ + RETVAL_LONG((long)$1); +%} + +%typemap(out) long long +%{ + if ((long long)LONG_MIN <= $1 && $1 <= (long long)LONG_MAX) { + RETVAL_LONG((long)($1)); + } else { + char temp[256]; + sprintf(temp, "%lld", (long long)$1); + RETVAL_STRING(temp); + } +%} +%typemap(out) unsigned long long +%{ + if ($1 <= (unsigned long long)LONG_MAX) { + RETVAL_LONG((long)($1)); + } else { + char temp[256]; + sprintf(temp, "%llu", (unsigned long long)$1); + RETVAL_STRING(temp); + } +%} + +%typemap(out) const int &, + const unsigned int &, + const short &, + const unsigned short &, + const long &, + const unsigned long &, + const signed char &, + const unsigned char &, + const bool &, + const size_t & +%{ + RETVAL_LONG(*$1); +%} + +%typemap(out) const enum SWIGTYPE & +%{ + RETVAL_LONG((long)*$1); +%} + +%typemap(out) const enum SWIGTYPE && +%{ + RETVAL_LONG((long)*$1); +%} + +%typemap(out) const long long & +%{ + if ((long long)LONG_MIN <= *$1 && *$1 <= (long long)LONG_MAX) { + RETVAL_LONG((long)(*$1)); + } else { + char temp[256]; + sprintf(temp, "%lld", (long long)(*$1)); + RETVAL_STRING(temp); + } +%} +%typemap(out) const unsigned long long & +%{ + if (*$1 <= (unsigned long long)LONG_MAX) { + RETVAL_LONG((long)(*$1)); + } else { + char temp[256]; + sprintf(temp, "%llu", (unsigned long long)(*$1)); + RETVAL_STRING(temp); + } +%} + +%typemap(directorin) int, + unsigned int, + short, + unsigned short, + long, + unsigned long, + signed char, + unsigned char, + size_t, + enum SWIGTYPE +%{ + ZVAL_LONG($input,$1); +%} + +%typemap(directorin) enum SWIGTYPE +%{ + ZVAL_LONG($input, (long)$1_name); +%} + +%typemap(directorin) char *, char [] +%{ + if(!$1) { + ZVAL_NULL($input); + } else { + ZVAL_STRING($input, (const char*)$1); + } +%} + +%typemap(out) bool +%{ + RETVAL_BOOL(($1) ? 1 : 0); +%} + +%typemap(out) const bool & +%{ + RETVAL_BOOL((*$1) ? 1 : 0); +%} + +%typemap(directorin) bool +%{ + ZVAL_BOOL($input, ($1) ? 1 : 0); +%} + +%typemap(out) float, + double +%{ + RETVAL_DOUBLE($1); +%} + +%typemap(out) const float &, + const double & +%{ + RETVAL_DOUBLE(*$1); +%} + +%typemap(directorin) float, + double +%{ + ZVAL_DOUBLE($input, $1); +%} + +%typemap(out) char +%{ + RETVAL_STRINGL(&$1, 1); +%} + +%typemap(out) const char & +%{ + RETVAL_STRINGL(&*$1, 1); +%} + +%typemap(out) char *, + char [] +%{ + if (!$1) { + RETVAL_NULL(); + } else { + RETVAL_STRING((const char *)$1); + } +%} + +%typemap(out) char *& +%{ + if (!*$1) { + RETVAL_NULL(); + } else { + RETVAL_STRING((const char *)*$1); + } +%} + +%typemap(out) SWIGTYPE *, + SWIGTYPE [], + SWIGTYPE &, + SWIGTYPE && +%{ + SWIG_SetPointerZval(return_value, (void *)$1, $1_descriptor, $owner); +%} + +%typemap(out) SWIGTYPE *const& +%{ + SWIG_SetPointerZval(return_value, (void *)*$1, $*1_descriptor, $owner); +%} + +%typemap(directorin) SWIGTYPE *, + SWIGTYPE [], + SWIGTYPE &, + SWIGTYPE && +%{ + SWIG_SetPointerZval($input, (void *)&$1, $1_descriptor, ($owner)|2); +%} + +%typemap(out, fragment="swig_php_init_member_ptr") SWIGTYPE (CLASS::*) +{ + void * p = emalloc(sizeof($1)); + memcpy(p, &$1, sizeof($1)); + RETVAL_RES(zend_register_resource(p, swig_member_ptr)); +} + +%typemap(in, fragment="swig_php_init_member_ptr") SWIGTYPE (CLASS::*) +{ + void * p = (void*)zend_fetch_resource_ex(&$input, SWIG_MEMBER_PTR, swig_member_ptr); + memcpy(&$1, p, sizeof($1)); +} + +%typemap(out) SWIGTYPE *DYNAMIC, + SWIGTYPE &DYNAMIC +{ + swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor, (void **) &$1); + SWIG_SetPointerZval(return_value, (void *)$1, ty, $owner); +} + +%typemap(out) SWIGTYPE +#ifdef __cplusplus +{ + $&1_ltype resultobj = new $1_ltype((const $1_ltype &) $1); + SWIG_SetPointerZval(return_value, (void *)resultobj, $&1_descriptor, 1); +} +#else +{ + $&1_ltype resultobj = ($&1_ltype) emalloc(sizeof($1_type)); + memcpy(resultobj, &$1, sizeof($1_type)); + SWIG_SetPointerZval(return_value, (void *)resultobj, $&1_descriptor, 1); +} +#endif + +%typemap(directorin) SWIGTYPE +%{ + SWIG_SetPointerZval($input, SWIG_as_voidptr(new $1_ltype((const $1_ltype &)$1)), $&1_descriptor, 1|2); +%} + +%typemap(out) void ""; + +%typemap(out) char [ANY] +{ + int len = 0; + while (len < $1_dim0 && $1[len]) ++len; + RETVAL_STRINGL($1, len); +} + +// This typecheck does hard checking for proper argument type. If you want +// an argument to be converted from a different PHP type, you must convert +// it yourself before passing it (e.g. (string)4.7 or (int)"6"). +%define %php_typecheck(_type,_prec,is) +%typemap(typecheck,precedence=_prec) _type, const _type & + " $1 = (Z_TYPE($input) == is);" +%enddef + +// Like %php_typecheck but allows either of two values. +%define %php_typecheck2(_type,_prec,is1,is2) +%typemap(typecheck,precedence=_prec) _type, const _type & + " $1 = (Z_TYPE($input) == is1 || Z_TYPE($input) == is2);" +%enddef + +%php_typecheck(int,SWIG_TYPECHECK_INTEGER,IS_LONG) +%php_typecheck(unsigned int,SWIG_TYPECHECK_UINT32,IS_LONG) +%php_typecheck(short,SWIG_TYPECHECK_INT16,IS_LONG) +%php_typecheck(unsigned short,SWIG_TYPECHECK_UINT16,IS_LONG) +%php_typecheck(long,SWIG_TYPECHECK_INT32,IS_LONG) +%php_typecheck(unsigned long,SWIG_TYPECHECK_UINT32,IS_LONG) +%php_typecheck(long long,SWIG_TYPECHECK_INT64,IS_LONG) +%php_typecheck(unsigned long long,SWIG_TYPECHECK_UINT64,IS_LONG) +%php_typecheck(signed char,SWIG_TYPECHECK_INT8,IS_LONG) +%php_typecheck(unsigned char,SWIG_TYPECHECK_UINT8,IS_LONG) +%php_typecheck(size_t,SWIG_TYPECHECK_SIZE,IS_LONG) +%php_typecheck(enum SWIGTYPE,SWIG_TYPECHECK_INTEGER,IS_LONG) +%php_typecheck2(bool,SWIG_TYPECHECK_BOOL,IS_TRUE,IS_FALSE) +%php_typecheck(float,SWIG_TYPECHECK_FLOAT,IS_DOUBLE) +%php_typecheck(double,SWIG_TYPECHECK_DOUBLE,IS_DOUBLE) +%php_typecheck(char,SWIG_TYPECHECK_CHAR,IS_STRING) + +%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) char *, char *&, char [] + " $1 = (Z_TYPE($input) == IS_STRING); " + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE +{ + void *tmp; + $1 = (SWIG_ConvertPtr(&$input, (void **)&tmp, $&1_descriptor, SWIG_POINTER_NO_NULL) >= 0); +} + +%typecheck(SWIG_TYPECHECK_POINTER) + SWIGTYPE *, + SWIGTYPE [], + SWIGTYPE *const& +{ + void *tmp; + $1 = (SWIG_ConvertPtr(&$input, (void**)&tmp, $1_descriptor, 0) >= 0); +} + +%typecheck(SWIG_TYPECHECK_POINTER) + SWIGTYPE &, + SWIGTYPE && +{ + void *tmp; + $1 = (SWIG_ConvertPtr(&$input, (void**)&tmp, $1_descriptor, SWIG_POINTER_NO_NULL) >= 0); +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *const& +{ + void *tmp; + $1 = (SWIG_ConvertPtr(&$input, (void**)&tmp, $*1_descriptor, 0) >= 0); +} + +%typecheck(SWIG_TYPECHECK_VOIDPTR) void * +{ + void *tmp; + $1 = (SWIG_ConvertPtr(&$input, (void**)&tmp, 0, 0) >= 0); +} + +/* Exception handling */ + +%typemap(throws) int, + long, + short, + unsigned int, + unsigned long, + unsigned short %{ + zend_throw_exception(NULL, "C++ $1_type exception thrown", $1); + return; +%} + +%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE *, SWIGTYPE [], SWIGTYPE [ANY] %{ + (void)$1; + zend_throw_exception(NULL, "C++ $1_type exception thrown", 0); + return; +%} + +%typemap(throws) char * %{ + zend_throw_exception(NULL, $1, 0); + return; +%} + +/* Array reference typemaps */ +%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } +%apply SWIGTYPE && { SWIGTYPE ((&&)[ANY]) } + +/* const pointers */ +%apply SWIGTYPE * { SWIGTYPE *const } +%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) } +%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) } + +/* php keywords */ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/php/phpinit.swg b/macx64/bin/swig/share/swig/4.0.0/php/phpinit.swg new file mode 100644 index 00000000..1665f5dc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/phpinit.swg @@ -0,0 +1,25 @@ + +/* ------------------------------------------------------------ + * The start of the PHP initialization function + * ------------------------------------------------------------ */ + +%insert(init) "swiginit.swg" + +%init %{ +SWIG_php_minit { + SWIG_InitializeModule((void*)&module_number); +%} + +%fragment("swig_php_init_member_ptr2", "header") %{ +#define SWIG_MEMBER_PTR "CLASS::*" + +static void swig_member_ptr_dtor(zend_resource *res) { + efree(res->ptr); +} + +static int swig_member_ptr = 0; +%} + +%fragment("swig_php_init_member_ptr", "init", fragment="swig_php_init_member_ptr2") %{ + swig_member_ptr = zend_register_list_destructors_ex(swig_member_ptr_dtor, NULL, SWIG_MEMBER_PTR, module_number); +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/php/phpkw.swg b/macx64/bin/swig/share/swig/4.0.0/php/phpkw.swg new file mode 100644 index 00000000..5c5296a1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/phpkw.swg @@ -0,0 +1,876 @@ +/* ----------------------------------------------------------------------------- + * phpkw.swg + * ----------------------------------------------------------------------------- */ + +/* Keyword (case insensitive) */ +#define PHPKW(x) %keywordwarn("'" `x` "' is a PHP keyword, renaming to 'c_" `x` "'",sourcefmt="%(lower)s",rename="c_%s") `x` + +/* Class (case insensitive) */ +#define PHPCN(x) %keywordwarn("'" `x` "' is a PHP reserved class name, renaming to 'c_" `x` "'",%$isclass,sourcefmt="%(lower)s",rename="c_%s") `x` + +/* Constant (case insensitive) */ +#define PHPBN1a(x) %namewarn(%warningmsg(SWIGWARN_PARSE_BUILTIN_NAME, "enum conflicts with a built-in constant '"`x`"' in PHP"),%$isenumitem,sourcefmt="%(lower)s") `x` +#define PHPBN1b(x) %namewarn(%warningmsg(SWIGWARN_PARSE_BUILTIN_NAME, "constant conflicts with a built-in constant '"`x`"' in PHP"),%$isconstant,sourcefmt="%(lower)s") `x` +%define PHPBN1(X) + PHPBN1a(X); PHPBN1b(X) +%enddef + +/* Constant (case sensitive) */ +#define PHPBN2a(x) %namewarn(%warningmsg(SWIGWARN_PARSE_BUILTIN_NAME, "enum conflicts with a built-in constant '"`x`"' in PHP"),%$isenumitem) `x` +#define PHPBN2b(x) %namewarn(%warningmsg(SWIGWARN_PARSE_BUILTIN_NAME, "constant conflicts with a built-in constant '"`x`"' in PHP"),%$isconstant) `x` +%define PHPBN2(X) + PHPBN2a(X); PHPBN2b(X) +%enddef + +#define PHPFN(x) %keywordwarn("'" `x` "' is a PHP built-in function, renaming to 'c_" `x` "'",sourcefmt="%(lower)s",%$isfunction,%$not %$ismember,rename="c_%s") `x` + +/* From: http://php.net/manual/en/reserved.keywords.php + * "You cannot use any of the following words as constants, class names, + * function or method names. Using them as variable names is generally OK, but + * could lead to confusion." + */ +/* Check is case insensitive - these *MUST* be listed in lower case here */ +PHPKW(abstract); +PHPKW(and); +PHPKW(as); +PHPKW(break); +PHPKW(callable); +PHPKW(case); +PHPKW(catch); +PHPKW(class); +PHPKW(clone); +PHPKW(const); +PHPKW(continue); +PHPKW(declare); +PHPKW(default); +PHPKW(do); +PHPKW(else); +PHPKW(elseif); +PHPKW(enddeclare); +PHPKW(endfor); +PHPKW(endforeach); +PHPKW(endif); +PHPKW(endswitch); +PHPKW(endwhile); +PHPKW(extends); +PHPKW(final); +PHPKW(finally); +PHPKW(for); +PHPKW(foreach); +PHPKW(function); +PHPKW(global); +PHPKW(goto); +PHPKW(if); +PHPKW(implements); +PHPKW(instanceof); +PHPKW(insteadof); +PHPKW(interface); +PHPKW(namespace); +PHPKW(new); +PHPKW(or); +PHPKW(private); +PHPKW(protected); +PHPKW(public); +PHPKW(static); +PHPKW(switch); +PHPKW(throw); +PHPKW(trait); +PHPKW(try); +PHPKW(use); +PHPKW(var); +PHPKW(while); +PHPKW(xor); +PHPKW(yield); + +// Compile-time "magic" constants +// From: http://php.net/manual/en/reserved.keywords.php +// also at: http://php.net/manual/en/language.constants.predefined.php +/* These *MUST* be listed in lower case here */ +PHPKW(__class__); +PHPKW(__dir__); +PHPKW(__file__); +PHPKW(__function__); +PHPKW(__line__); +PHPKW(__method__); +PHPKW(__namespace__); +PHPKW(__trait__); + +/* We classify these as built-in names since they conflict, but PHP still runs */ + +/* Predefined case-insensitive constants */ +/* These *MUST* be listed in lower case here */ +PHPBN1(null); +PHPBN1(true); +PHPBN1(false); + +/* "Core Predefined Constants" from http://php.net/manual/en/reserved.constants.php */ +/* These are case sensitive */ +PHPBN2(PHP_VERSION); +PHPBN2(PHP_MAJOR_VERSION); +PHPBN2(PHP_MINOR_VERSION); +PHPBN2(PHP_RELEASE_VERSION); +PHPBN2(PHP_VERSION_ID); +PHPBN2(PHP_EXTRA_VERSION); +PHPBN2(PHP_ZTS); +PHPBN2(PHP_DEBUG); +PHPBN2(PHP_MAXPATHLEN); +PHPBN2(PHP_OS); +PHPBN2(PHP_SAPI); +PHPBN2(PHP_EOL); +PHPBN2(PHP_INT_MAX); +PHPBN2(PHP_INT_SIZE); +PHPBN2(DEFAULT_INCLUDE_PATH); +PHPBN2(PEAR_INSTALL_DIR); +PHPBN2(PEAR_EXTENSION_DIR); +PHPBN2(PHP_EXTENSION_DIR); +PHPBN2(PHP_PREFIX); +PHPBN2(PHP_BINDIR); +PHPBN2(PHP_BINARY); +PHPBN2(PHP_MANDIR); +PHPBN2(PHP_LIBDIR); +PHPBN2(PHP_DATADIR); +PHPBN2(PHP_SYSCONFDIR); +PHPBN2(PHP_LOCALSTATEDIR); +PHPBN2(PHP_CONFIG_FILE_PATH); +PHPBN2(PHP_CONFIG_FILE_SCAN_DIR); +PHPBN2(PHP_SHLIB_SUFFIX); +PHPBN2(E_ERROR); +PHPBN2(E_WARNING); +PHPBN2(E_PARSE); +PHPBN2(E_NOTICE); +PHPBN2(E_CORE_ERROR); +PHPBN2(E_CORE_WARNING); +PHPBN2(E_COMPILE_ERROR); +PHPBN2(E_COMPILE_WARNING); +PHPBN2(E_USER_ERROR); +PHPBN2(E_USER_WARNING); +PHPBN2(E_USER_NOTICE); +PHPBN2(E_DEPRECATED); +PHPBN2(E_USER_DEPRECATED); +PHPBN2(E_ALL); +PHPBN2(E_STRICT); +PHPBN2(__COMPILER_HALT_OFFSET__); +// TRUE, FALSE, NULL are listed on the same page, but are actually +// case-insensitive, whereas all the other constants listed there seem to be +// case-sensitive, so we handle TRUE, FALSE, NULL in PHPBN1. +PHPBN2(PHP_OUTPUT_HANDLER_START); +PHPBN2(PHP_OUTPUT_HANDLER_CONT); +PHPBN2(PHP_OUTPUT_HANDLER_END); +/* These don't actually seem to be set (tested on Linux, I guess they're + * Windows only?) */ +PHPBN2(PHP_WINDOWS_NT_DOMAIN_CONTROLLER); +PHPBN2(PHP_WINDOWS_NT_SERVER); +PHPBN2(PHP_WINDOWS_NT_WORKSTATION); +PHPBN2(PHP_WINDOWS_VERSION_BUILD); +PHPBN2(PHP_WINDOWS_VERSION_MAJOR); +PHPBN2(PHP_WINDOWS_VERSION_MINOR); +PHPBN2(PHP_WINDOWS_VERSION_PLATFORM); +PHPBN2(PHP_WINDOWS_VERSION_PRODUCTTYPE); +PHPBN2(PHP_WINDOWS_VERSION_SP_MAJOR); +PHPBN2(PHP_WINDOWS_VERSION_SP_MINOR); +PHPBN2(PHP_WINDOWS_VERSION_SUITEMASK); +/* "Standard Predefined Constants" from http://php.net/manual/en/reserved.constants.php */ +PHPBN2(EXTR_OVERWRITE); +PHPBN2(EXTR_SKIP); +PHPBN2(EXTR_PREFIX_SAME); +PHPBN2(EXTR_PREFIX_ALL); +PHPBN2(EXTR_PREFIX_INVALID); +PHPBN2(EXTR_PREFIX_IF_EXISTS); +PHPBN2(EXTR_IF_EXISTS); +PHPBN2(SORT_ASC); +PHPBN2(SORT_DESC); +PHPBN2(SORT_REGULAR); +PHPBN2(SORT_NUMERIC); +PHPBN2(SORT_STRING); +PHPBN2(CASE_LOWER); +PHPBN2(CASE_UPPER); +PHPBN2(COUNT_NORMAL); +PHPBN2(COUNT_RECURSIVE); +PHPBN2(ASSERT_ACTIVE); +PHPBN2(ASSERT_CALLBACK); +PHPBN2(ASSERT_BAIL); +PHPBN2(ASSERT_WARNING); +PHPBN2(ASSERT_QUIET_EVAL); +PHPBN2(CONNECTION_ABORTED); +PHPBN2(CONNECTION_NORMAL); +PHPBN2(CONNECTION_TIMEOUT); +PHPBN2(INI_USER); +PHPBN2(INI_PERDIR); +PHPBN2(INI_SYSTEM); +PHPBN2(INI_ALL); +PHPBN2(INI_SCANNER_NORMAL); +PHPBN2(INI_SCANNER_RAW); +PHPBN2(M_E); +PHPBN2(M_LOG2E); +PHPBN2(M_LOG10E); +PHPBN2(M_LN2); +PHPBN2(M_LN10); +PHPBN2(M_PI); +PHPBN2(M_PI_2); +PHPBN2(M_PI_4); +PHPBN2(M_1_PI); +PHPBN2(M_2_PI); +PHPBN2(M_2_SQRTPI); +PHPBN2(M_SQRT2); +PHPBN2(M_SQRT1_2); +PHPBN2(M_EULER); +PHPBN2(M_LNPI); +PHPBN2(M_SQRT3); +PHPBN2(M_SQRTPI); +PHPBN2(CRYPT_SALT_LENGTH); +PHPBN2(CRYPT_STD_DES); +PHPBN2(CRYPT_EXT_DES); +PHPBN2(CRYPT_MD5); +PHPBN2(CRYPT_BLOWFISH); +PHPBN2(DIRECTORY_SEPARATOR); +PHPBN2(SEEK_SET); +PHPBN2(SEEK_CUR); +PHPBN2(SEEK_END); +PHPBN2(LOCK_SH); +PHPBN2(LOCK_EX); +PHPBN2(LOCK_UN); +PHPBN2(LOCK_NB); +PHPBN2(HTML_SPECIALCHARS); +PHPBN2(HTML_ENTITIES); +PHPBN2(ENT_COMPAT); +PHPBN2(ENT_QUOTES); +PHPBN2(ENT_NOQUOTES); +PHPBN2(INFO_GENERAL); +PHPBN2(INFO_CREDITS); +PHPBN2(INFO_CONFIGURATION); +PHPBN2(INFO_MODULES); +PHPBN2(INFO_ENVIRONMENT); +PHPBN2(INFO_VARIABLES); +PHPBN2(INFO_LICENSE); +PHPBN2(INFO_ALL); +PHPBN2(CREDITS_GROUP); +PHPBN2(CREDITS_GENERAL); +PHPBN2(CREDITS_SAPI); +PHPBN2(CREDITS_MODULES); +PHPBN2(CREDITS_DOCS); +PHPBN2(CREDITS_FULLPAGE); +PHPBN2(CREDITS_QA); +PHPBN2(CREDITS_ALL); +PHPBN2(STR_PAD_LEFT); +PHPBN2(STR_PAD_RIGHT); +PHPBN2(STR_PAD_BOTH); +PHPBN2(PATHINFO_DIRNAME); +PHPBN2(PATHINFO_BASENAME); +PHPBN2(PATHINFO_EXTENSION); +PHPBN2(PATHINFO_FILENAME); +PHPBN2(PATH_SEPARATOR); +PHPBN2(CHAR_MAX); +PHPBN2(LC_CTYPE); +PHPBN2(LC_NUMERIC); +PHPBN2(LC_TIME); +PHPBN2(LC_COLLATE); +PHPBN2(LC_MONETARY); +PHPBN2(LC_ALL); +PHPBN2(LC_MESSAGES); +PHPBN2(ABDAY_1); +PHPBN2(ABDAY_2); +PHPBN2(ABDAY_3); +PHPBN2(ABDAY_4); +PHPBN2(ABDAY_5); +PHPBN2(ABDAY_6); +PHPBN2(ABDAY_7); +PHPBN2(DAY_1); +PHPBN2(DAY_2); +PHPBN2(DAY_3); +PHPBN2(DAY_4); +PHPBN2(DAY_5); +PHPBN2(DAY_6); +PHPBN2(DAY_7); +PHPBN2(ABMON_1); +PHPBN2(ABMON_2); +PHPBN2(ABMON_3); +PHPBN2(ABMON_4); +PHPBN2(ABMON_5); +PHPBN2(ABMON_6); +PHPBN2(ABMON_7); +PHPBN2(ABMON_8); +PHPBN2(ABMON_9); +PHPBN2(ABMON_10); +PHPBN2(ABMON_11); +PHPBN2(ABMON_12); +PHPBN2(MON_1); +PHPBN2(MON_2); +PHPBN2(MON_3); +PHPBN2(MON_4); +PHPBN2(MON_5); +PHPBN2(MON_6); +PHPBN2(MON_7); +PHPBN2(MON_8); +PHPBN2(MON_9); +PHPBN2(MON_10); +PHPBN2(MON_11); +PHPBN2(MON_12); +PHPBN2(AM_STR); +PHPBN2(PM_STR); +PHPBN2(D_T_FMT); +PHPBN2(D_FMT); +PHPBN2(T_FMT); +PHPBN2(T_FMT_AMPM); +PHPBN2(ERA); +PHPBN2(ERA_YEAR); +PHPBN2(ERA_D_T_FMT); +PHPBN2(ERA_D_FMT); +PHPBN2(ERA_T_FMT); +PHPBN2(ALT_DIGITS); +PHPBN2(INT_CURR_SYMBOL); +PHPBN2(CURRENCY_SYMBOL); +PHPBN2(CRNCYSTR); +PHPBN2(MON_DECIMAL_POINT); +PHPBN2(MON_THOUSANDS_SEP); +PHPBN2(MON_GROUPING); +PHPBN2(POSITIVE_SIGN); +PHPBN2(NEGATIVE_SIGN); +PHPBN2(INT_FRAC_DIGITS); +PHPBN2(FRAC_DIGITS); +PHPBN2(P_CS_PRECEDES); +PHPBN2(P_SEP_BY_SPACE); +PHPBN2(N_CS_PRECEDES); +PHPBN2(N_SEP_BY_SPACE); +PHPBN2(P_SIGN_POSN); +PHPBN2(N_SIGN_POSN); +PHPBN2(DECIMAL_POINT); +PHPBN2(RADIXCHAR); +PHPBN2(THOUSANDS_SEP); +PHPBN2(THOUSEP); +PHPBN2(GROUPING); +PHPBN2(YESEXPR); +PHPBN2(NOEXPR); +PHPBN2(YESSTR); +PHPBN2(NOSTR); +PHPBN2(CODESET); +PHPBN2(LOG_EMERG); +PHPBN2(LOG_ALERT); +PHPBN2(LOG_CRIT); +PHPBN2(LOG_ERR); +PHPBN2(LOG_WARNING); +PHPBN2(LOG_NOTICE); +PHPBN2(LOG_INFO); +PHPBN2(LOG_DEBUG); +PHPBN2(LOG_KERN); +PHPBN2(LOG_USER); +PHPBN2(LOG_MAIL); +PHPBN2(LOG_DAEMON); +PHPBN2(LOG_AUTH); +PHPBN2(LOG_SYSLOG); +PHPBN2(LOG_LPR); +PHPBN2(LOG_NEWS); +PHPBN2(LOG_UUCP); +PHPBN2(LOG_CRON); +PHPBN2(LOG_AUTHPRIV); +PHPBN2(LOG_LOCAL0); +PHPBN2(LOG_LOCAL1); +PHPBN2(LOG_LOCAL2); +PHPBN2(LOG_LOCAL3); +PHPBN2(LOG_LOCAL4); +PHPBN2(LOG_LOCAL5); +PHPBN2(LOG_LOCAL6); +PHPBN2(LOG_LOCAL7); +PHPBN2(LOG_PID); +PHPBN2(LOG_CONS); +PHPBN2(LOG_ODELAY); +PHPBN2(LOG_NDELAY); +PHPBN2(LOG_NOWAIT); +PHPBN2(LOG_PERROR); + +PHPBN2(PREG_BACKTRACK_LIMIT_ERROR); +PHPBN2(PREG_BAD_UTF8_ERROR); +PHPBN2(PREG_INTERNAL_ERROR); +PHPBN2(PREG_NO_ERROR); +PHPBN2(PREG_RECURSION_LIMIT_ERROR); +PHPBN2(UPLOAD_ERR_EXTENSION); +PHPBN2(STREAM_SHUT_RD); +PHPBN2(STREAM_SHUT_WR); +PHPBN2(STREAM_SHUT_RDWR); +PHPBN2(CURLE_FILESIZE_EXCEEDED); +PHPBN2(CURLE_FTP_SSL_FAILED); +PHPBN2(CURLE_LDAP_INVALID_URL); +PHPBN2(CURLFTPAUTH_DEFAULT); +PHPBN2(CURLFTPAUTH_SSL); +PHPBN2(CURLFTPAUTH_TLS); +PHPBN2(CURLFTPSSL_ALL); +PHPBN2(CURLFTPSSL_CONTROL); +PHPBN2(CURLFTPSSL_NONE); +PHPBN2(CURLFTPSSL_TRY); +PHPBN2(CURLOPT_FTP_SSL); +PHPBN2(CURLOPT_FTPSSLAUTH); +PHPBN2(CURLOPT_TCP_NODELAY); +PHPBN2(CURLOPT_TIMEOUT_MS); +PHPBN2(CURLOPT_CONNECTTIMEOUT_MS); +PHPBN2(GMP_VERSION); +PHPBN2(SWFTEXTFIELD_USEFONT); +PHPBN2(SWFTEXTFIELD_AUTOSIZE); +PHPBN2(SWF_SOUND_NOT_COMPRESSED); +PHPBN2(SWF_SOUND_ADPCM_COMPRESSED); +PHPBN2(SWF_SOUND_MP3_COMPRESSED); +PHPBN2(SWF_SOUND_NOT_COMPRESSED_LE); +PHPBN2(SWF_SOUND_NELLY_COMPRESSED); +PHPBN2(SWF_SOUND_5KHZ); +PHPBN2(SWF_SOUND_11KHZ); +PHPBN2(SWF_SOUND_22KHZ); +PHPBN2(SWF_SOUND_44KHZ); +PHPBN2(SWF_SOUND_8BITS); +PHPBN2(SWF_SOUND_16BITS); +PHPBN2(SWF_SOUND_MONO); +PHPBN2(SWF_SOUND_STEREO); +PHPBN2(OPENSSL_VERSION_NUMBER); +PHPBN2(SNMP_OID_OUTPUT_FULL); +PHPBN2(SNMP_OID_OUTPUT_NUMERIC); +PHPBN2(MSG_EAGAIN); +PHPBN2(MSG_ENOMSG); + +PHPBN2(CURLOPT_PROGRESSFUNCTION); +PHPBN2(IMG_FILTER_PIXELATE); +PHPBN2(JSON_ERROR_CTRL_CHAR); +PHPBN2(JSON_ERROR_DEPTH); +PHPBN2(JSON_ERROR_NONE); +PHPBN2(JSON_ERROR_STATE_MISMATCH); +PHPBN2(JSON_ERROR_SYNTAX); +PHPBN2(JSON_FORCE_OBJECT); +PHPBN2(JSON_HEX_TAG); +PHPBN2(JSON_HEX_AMP); +PHPBN2(JSON_HEX_APOS); +PHPBN2(JSON_HEX_QUOT); +PHPBN2(LDAP_OPT_NETWORK_TIMEOUT); +PHPBN2(LIBXML_LOADED_VERSION); +PHPBN2(PREG_BAD_UTF8_OFFSET_ERROR); +PHPBN2(BUS_ADRALN); +PHPBN2(BUS_ADRERR); +PHPBN2(BUS_OBJERR); +PHPBN2(CLD_CONTIUNED); +PHPBN2(CLD_DUMPED); +PHPBN2(CLD_EXITED); +PHPBN2(CLD_KILLED); +PHPBN2(CLD_STOPPED); +PHPBN2(CLD_TRAPPED); +PHPBN2(FPE_FLTDIV); +PHPBN2(FPE_FLTINV); +PHPBN2(FPE_FLTOVF); +PHPBN2(FPE_FLTRES); +PHPBN2(FPE_FLTSUB); +PHPBN2(FPE_FLTUND); +PHPBN2(FPE_INTDIV); +PHPBN2(FPE_INTOVF); +PHPBN2(ILL_BADSTK); +PHPBN2(ILL_COPROC); +PHPBN2(ILL_ILLADR); +PHPBN2(ILL_ILLOPC); +PHPBN2(ILL_ILLOPN); +PHPBN2(ILL_ILLTRP); +PHPBN2(ILL_PRVOPC); +PHPBN2(ILL_PRVREG); +PHPBN2(POLL_ERR); +PHPBN2(POLL_HUP); +PHPBN2(POLL_IN); +PHPBN2(POLL_MSG); +PHPBN2(POLL_OUT); +PHPBN2(POLL_PRI); +PHPBN2(SEGV_ACCERR); +PHPBN2(SEGV_MAPERR); +PHPBN2(SI_ASYNCIO); +PHPBN2(SI_KERNEL); +PHPBN2(SI_MESGQ); +PHPBN2(SI_NOINFO); +PHPBN2(SI_QUEUE); +PHPBN2(SI_SIGIO); +PHPBN2(SI_TIMER); +PHPBN2(SI_TKILL); +PHPBN2(SI_USER); +PHPBN2(SIG_BLOCK); +PHPBN2(SIG_SETMASK); +PHPBN2(SIG_UNBLOCK); +PHPBN2(TRAP_BRKPT); +PHPBN2(TRAP_TRACE); + +PHPBN2(ENT_DISALLOWED); +PHPBN2(ENT_HTML401); +PHPBN2(ENT_HTML5); +PHPBN2(ENT_SUBSTITUTE); +PHPBN2(ENT_XML1); +PHPBN2(ENT_XHTML); +PHPBN2(IPPROTO_IP); +PHPBN2(IPPROTO_IPV6); +PHPBN2(IPV6_MULTICAST_HOPS); +PHPBN2(IPV6_MULTICAST_IF); +PHPBN2(IPV6_MULTICAST_LOOP); +PHPBN2(IP_MULTICAST_IF); +PHPBN2(IP_MULTICAST_LOOP); +PHPBN2(IP_MULTICAST_TTL); +PHPBN2(MCAST_JOIN_GROUP); +PHPBN2(MCAST_LEAVE_GROUP); +PHPBN2(MCAST_BLOCK_SOURCE); +PHPBN2(MCAST_UNBLOCK_SOURCE); +PHPBN2(MCAST_JOIN_SOURCE_GROUP); +PHPBN2(MCAST_LEAVE_SOURCE_GROUP); +PHPBN2(CURLOPT_MAX_RECV_SPEED_LARGE); +PHPBN2(CURLOPT_MAX_SEND_SPEED_LARGE); +PHPBN2(LIBXML_HTML_NODEFDTD); +PHPBN2(LIBXML_HTML_NOIMPLIED); +PHPBN2(LIBXML_PEDANTIC); +PHPBN2(OPENSSL_CIPHER_AES_128_CBC); +PHPBN2(OPENSSL_CIPHER_AES_192_CBC); +PHPBN2(OPENSSL_CIPHER_AES_256_CBC); +PHPBN2(OPENSSL_RAW_DATA); +PHPBN2(OPENSSL_ZERO_PADDING); +PHPBN2(PHP_OUTPUT_HANDLER_CLEAN); +PHPBN2(PHP_OUTPUT_HANDLER_CLEANABLE); +PHPBN2(PHP_OUTPUT_HANDLER_DISABLED); +PHPBN2(PHP_OUTPUT_HANDLER_FINAL); +PHPBN2(PHP_OUTPUT_HANDLER_FLUSH); +PHPBN2(PHP_OUTPUT_HANDLER_FLUSHABLE); +PHPBN2(PHP_OUTPUT_HANDLER_REMOVABLE); +PHPBN2(PHP_OUTPUT_HANDLER_STARTED); +PHPBN2(PHP_OUTPUT_HANDLER_STDFLAGS); +PHPBN2(PHP_OUTPUT_HANDLER_WRITE); +PHPBN2(PHP_SESSION_ACTIVE); +PHPBN2(PHP_SESSION_DISABLED); +PHPBN2(PHP_SESSION_NONE); +PHPBN2(STREAM_META_ACCESS); +PHPBN2(STREAM_META_GROUP); +PHPBN2(STREAM_META_GROUP_NAME); +PHPBN2(STREAM_META_OWNER); +PHPBN2(STREAM_META_OWNER_NAME); +PHPBN2(STREAM_META_TOUCH); +PHPBN2(ZLIB_ENCODING_DEFLATE); +PHPBN2(ZLIB_ENCODING_GZIP); +PHPBN2(ZLIB_ENCODING_RAW); +PHPBN2(U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR); +PHPBN2(IDNA_CHECK_BIDI); +PHPBN2(IDNA_CHECK_CONTEXTJ); +PHPBN2(IDNA_NONTRANSITIONAL_TO_ASCII); +PHPBN2(IDNA_NONTRANSITIONAL_TO_UNICODE); +PHPBN2(INTL_IDNA_VARIANT_2003); +PHPBN2(INTL_IDNA_VARIANT_UTS46); +PHPBN2(IDNA_ERROR_EMPTY_LABEL); +PHPBN2(IDNA_ERROR_LABEL_TOO_LONG); +PHPBN2(IDNA_ERROR_DOMAIN_NAME_TOO_LONG); +PHPBN2(IDNA_ERROR_LEADING_HYPHEN); +PHPBN2(IDNA_ERROR_TRAILING_HYPHEN); +PHPBN2(IDNA_ERROR_HYPHEN_3_4); +PHPBN2(IDNA_ERROR_LEADING_COMBINING_MARK); +PHPBN2(IDNA_ERROR_DISALLOWED); +PHPBN2(IDNA_ERROR_PUNYCODE); +PHPBN2(IDNA_ERROR_LABEL_HAS_DOT); +PHPBN2(IDNA_ERROR_INVALID_ACE_LABEL); +PHPBN2(IDNA_ERROR_BIDI); +PHPBN2(IDNA_ERROR_CONTEXTJ); +PHPBN2(JSON_PRETTY_PRINT); +PHPBN2(JSON_UNESCAPED_SLASHES); +PHPBN2(JSON_NUMERIC_CHECK); +PHPBN2(JSON_UNESCAPED_UNICODE); +PHPBN2(JSON_BIGINT_AS_STRING); + +PHPBN2(IMG_AFFINE_TRANSLATE); +PHPBN2(IMG_AFFINE_SCALE); +PHPBN2(IMG_AFFINE_ROTATE); +PHPBN2(IMG_AFFINE_SHEAR_HORIZONTAL); +PHPBN2(IMG_AFFINE_SHEAR_VERTICAL); +PHPBN2(IMG_CROP_DEFAULT); +PHPBN2(IMG_CROP_TRANSPARENT); +PHPBN2(IMG_CROP_BLACK); +PHPBN2(IMG_CROP_WHITE); +PHPBN2(IMG_CROP_SIDES); +PHPBN2(IMG_FLIP_BOTH); +PHPBN2(IMG_FLIP_HORIZONTAL); +PHPBN2(IMG_FLIP_VERTICAL); +PHPBN2(IMG_BELL); +PHPBN2(IMG_BESSEL); +PHPBN2(IMG_BICUBIC); +PHPBN2(IMG_BICUBIC_FIXED); +PHPBN2(IMG_BLACKMAN); +PHPBN2(IMG_BOX); +PHPBN2(IMG_BSPLINE); +PHPBN2(IMG_CATMULLROM); +PHPBN2(IMG_GAUSSIAN); +PHPBN2(IMG_GENERALIZED_CUBIC); +PHPBN2(IMG_HERMITE); +PHPBN2(IMG_HAMMING); +PHPBN2(IMG_HANNING); +PHPBN2(IMG_MITCHELL); +PHPBN2(IMG_POWER); +PHPBN2(IMG_QUADRATIC); +PHPBN2(IMG_SINC); +PHPBN2(IMG_NEAREST_NEIGHBOUR); +PHPBN2(IMG_WEIGHTED4); +PHPBN2(IMG_TRIANGLE); +PHPBN2(JSON_ERROR_RECURSION); +PHPBN2(JSON_ERROR_INF_OR_NAN); +PHPBN2(JSON_ERROR_UNSUPPORTED_TYPE); +PHPBN2(MYSQLI_SERVER_PUBLIC_KEY); + +PHPBN2(LDAP_ESCAPE_DN); +PHPBN2(LDAP_ESCAPE_FILTER); +PHPBN2(OPENSSL_DEFAULT_STREAM_CIPHERS); +PHPBN2(STREAM_CRYPTO_METHOD_ANY_CLIENT); +PHPBN2(STREAM_CRYPTO_METHOD_ANY_SERVER); +PHPBN2(STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT); +PHPBN2(STREAM_CRYPTO_METHOD_TLSv1_0_SERVER); +PHPBN2(STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT); +PHPBN2(STREAM_CRYPTO_METHOD_TLSv1_1_SERVER); +PHPBN2(STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT); +PHPBN2(STREAM_CRYPTO_METHOD_TLSv1_2_SERVER); +PHPBN2(PGSQL_CONNECT_ASYNC); +PHPBN2(PGSQL_CONNECTION_AUTH_OK); +PHPBN2(PGSQL_CONNECTION_AWAITING_RESPONSE); +PHPBN2(PGSQL_CONNECTION_MADE); +PHPBN2(PGSQL_CONNECTION_SETENV); +PHPBN2(PGSQL_CONNECTION_SSL_STARTUP); +PHPBN2(PGSQL_CONNECTION_STARTED); +PHPBN2(PGSQL_DML_ESCAPE); +PHPBN2(PGSQL_POLLING_ACTIVE); +PHPBN2(PGSQL_POLLING_FAILED); +PHPBN2(PGSQL_POLLING_OK); +PHPBN2(PGSQL_POLLING_READING); +PHPBN2(PGSQL_POLLING_WRITING); + +/* Class names reserved by PHP (case insensitive) */ +PHPCN(directory); +PHPCN(stdclass); +PHPCN(__php_incomplete_class); +/* Added in PHP5. */ +PHPCN(exception); +PHPCN(errorexception); +PHPCN(php_user_filter); +PHPCN(closure); +PHPCN(generator); +PHPCN(self); +PHPCN(static); +PHPCN(parent); +/* http://php.net/manual/en/migration70.incompatible.php#migration70.incompatible.other.classes */ +PHPCN(bool); // As of PHP 7.0 +PHPCN(int); // As of PHP 7.0 +PHPCN(float); // As of PHP 7.0 +PHPCN(string); // As of PHP 7.0 +PHPCN(NULL); // As of PHP 7.0 +PHPCN(TRUE); // As of PHP 7.0 +PHPCN(FALSE); // As of PHP 7.0 +PHPCN(resource); // As of PHP 7.0 (currently works but reserved) +PHPCN(object); // As of PHP 7.0 (currently works but reserved) +PHPCN(mixed); // As of PHP 7.0 (currently works but reserved) +PHPCN(numeric); // As of PHP 7.0 (currently works but reserved) +/* http://php.net/manual/en/migration71.incompatible.php#migration71.incompatible.invalid-class-names */ +PHPCN(iterable); // As of PHP 7.1 +PHPCN(void); // As of PHP 7.1 +/* From extensions (which of these are actually predefined depends which + * extensions are loaded by default). */ +PHPCN(xmlwriter); +PHPCN(libxmlerror); +PHPCN(simplexmlelement); +PHPCN(soapclient); +PHPCN(soapvar); +PHPCN(soapserver); +PHPCN(soapfault); +PHPCN(soapparam); +PHPCN(soapheader); +PHPCN(recursiveiteratoriterator); +PHPCN(filteriterator); +PHPCN(recursivefilteriterator); +PHPCN(parentiterator); +PHPCN(limititerator); +PHPCN(cachingiterator); +PHPCN(recursivecachingiterator); +PHPCN(iteratoriterator); +PHPCN(norewinditerator); +PHPCN(appenditerator); +PHPCN(infiniteiterator); +PHPCN(emptyiterator); +PHPCN(arrayobject); +PHPCN(arrayiterator); +PHPCN(recursivearrayiterator); +PHPCN(splfileinfo); +PHPCN(directoryiterator); +PHPCN(recursivedirectoryiterator); +PHPCN(splfileobject); +PHPCN(spltempfileobject); +PHPCN(simplexmliterator); +PHPCN(logicexception); +PHPCN(badfunctioncallexception); +PHPCN(badmethodcallexception); +PHPCN(domainexception); +PHPCN(invalidargumentexception); +PHPCN(lengthexception); +PHPCN(outofrangeexception); +PHPCN(runtimeexception); +PHPCN(outofboundsexception); +PHPCN(overflowexception); +PHPCN(rangeexception); +PHPCN(underflowexception); +PHPCN(unexpectedvalueexception); +PHPCN(splobjectstorage); +PHPCN(reflectionexception); +PHPCN(reflection); +PHPCN(reflectionfunction); +PHPCN(reflectionparameter); +PHPCN(reflectionmethod); +PHPCN(reflectionclass); +PHPCN(reflectionobject); +PHPCN(reflectionproperty); +PHPCN(reflectionextension); +PHPCN(domexception); +PHPCN(domstringlist); +PHPCN(domnamelist); +PHPCN(domimplementationlist); +PHPCN(domimplementationsource); +PHPCN(domimplementation); +PHPCN(domnode); +PHPCN(domnamespacenode); +PHPCN(domdocumentfragment); +PHPCN(domdocument); +PHPCN(domnodelist); +PHPCN(domnamednodemap); +PHPCN(domcharacterdata); +PHPCN(domattr); +PHPCN(domelement); +PHPCN(domtext); +PHPCN(domcomment); +PHPCN(domtypeinfo); +PHPCN(domuserdatahandler); +PHPCN(domdomerror); +PHPCN(domerrorhandler); +PHPCN(domlocator); +PHPCN(domconfiguration); +PHPCN(domcdatasection); +PHPCN(domdocumenttype); +PHPCN(domnotation); +PHPCN(domentity); +PHPCN(domentityreference); +PHPCN(domprocessinginstruction); +PHPCN(domstringextend); +PHPCN(domxpath); +PHPCN(xmlreader); +PHPCN(sqlitedatabase); +PHPCN(sqliteresult); +PHPCN(sqliteunbuffered); +PHPCN(sqliteexception); +PHPCN(datetime); + +/* Built-in PHP functions (incomplete). */ +/* Includes Array Functions - http://php.net/manual/en/ref.array.php */ +/* Check is case insensitive - these *MUST* be listed in lower case here */ +PHPFN(__halt_compiler); +PHPFN(acos); +PHPFN(array); +PHPFN(array_change_key_case); +PHPFN(array_chunk); +PHPFN(array_column); +PHPFN(array_combine); +PHPFN(array_count_values); +PHPFN(array_diff); +PHPFN(array_diff_assoc); +PHPFN(array_diff_key); +PHPFN(array_diff_uassoc); +PHPFN(array_diff_ukey); +PHPFN(array_fill); +PHPFN(array_fill_keys); +PHPFN(array_filter); +PHPFN(array_flip); +PHPFN(array_intersect); +PHPFN(array_intersect_assoc); +PHPFN(array_intersect_key); +PHPFN(array_intersect_uassoc); +PHPFN(array_intersect_ukey); +PHPFN(array_key_exists); +PHPFN(array_keys); +PHPFN(array_map); +PHPFN(array_merge); +PHPFN(array_merge_recursive); +PHPFN(array_multisort); +PHPFN(array_pad); +PHPFN(array_pop); +PHPFN(array_product); +PHPFN(array_push); +PHPFN(array_rand); +PHPFN(array_reduce); +PHPFN(array_replace); +PHPFN(array_replace_recursive); +PHPFN(array_reverse); +PHPFN(array_search); +PHPFN(array_shift); +PHPFN(array_slice); +PHPFN(array_splice); +PHPFN(array_sum); +PHPFN(array_udiff); +PHPFN(array_udiff_assoc); +PHPFN(array_udiff_uassoc); +PHPFN(array_uintersect); +PHPFN(array_uintersect_assoc); +PHPFN(array_uintersect_uassoc); +PHPFN(array_unique); +PHPFN(array_unshift); +PHPFN(array_values); +PHPFN(array_walk); +PHPFN(array_walk_recursive); +PHPFN(arsort); +PHPFN(asin); +PHPFN(asort); +PHPFN(atan); +PHPFN(atan2); +PHPFN(ceil); +PHPFN(compact); +PHPFN(cos); +PHPFN(cosh); +PHPFN(count); +PHPFN(current); +PHPFN(die); // "Language construct" +PHPFN(each); +PHPFN(echo); // "Language construct" +PHPFN(empty); +PHPFN(end); +PHPFN(eval); // "Language construct" +PHPFN(exit); // "Language construct" +PHPFN(exp); +PHPFN(extract); +PHPFN(floor); +PHPFN(fmod); +PHPFN(in_array); +PHPFN(include); // "Language construct" +PHPFN(include_once); // "Language construct" +PHPFN(isset); // "Language construct" +PHPFN(key); +PHPFN(key_exists); +PHPFN(krsort); +PHPFN(ksort); +PHPFN(list); // "Language construct" +PHPFN(log); +PHPFN(log10); +PHPFN(max); +PHPFN(min); +PHPFN(natcasesort); +PHPFN(natsort); +PHPFN(next); +PHPFN(pos); +PHPFN(pow); +PHPFN(prev); +PHPFN(print); // "Language construct" +PHPFN(range); +PHPFN(reset); +PHPFN(rsort); +PHPFN(require); // "Language construct" +PHPFN(require_once); // "Language construct" +PHPFN(return); // "Language construct" +PHPFN(shuffle); +PHPFN(sin); +PHPFN(sinh); +PHPFN(sizeof); +PHPFN(sort); +PHPFN(sqrt); +PHPFN(tan); +PHPFN(tanh); +PHPFN(uasort); +PHPFN(uksort); +PHPFN(unset); // "Language construct" +PHPFN(usort); + +#undef PHPKW +#undef PHPBN1a +#undef PHPBN1b +#undef PHPBN1 +#undef PHPBN2a +#undef PHPBN2b +#undef PHPBN2 +#undef PHPCN +#undef PHPFN diff --git a/macx64/bin/swig/share/swig/4.0.0/php/phppointers.i b/macx64/bin/swig/share/swig/4.0.0/php/phppointers.i new file mode 100644 index 00000000..d79697b5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/phppointers.i @@ -0,0 +1,46 @@ +%define %pass_by_ref( TYPE, CONVERT_IN, CONVERT_OUT ) +%typemap(in, byref=1) TYPE *REF ($*1_ltype tmp), + TYPE &REF ($*1_ltype tmp) +%{ + /* First Check for SWIG wrapped type */ + if (Z_ISNULL($input)) { + $1 = 0; + } else if (Z_ISREF($input)) { + /* Not swig wrapped type, so we check if it's a PHP reference type */ + CONVERT_IN(tmp, $*1_ltype, $input); + $1 = &tmp; + } else { + SWIG_PHP_Error(E_ERROR, SWIG_PHP_Arg_Error_Msg($argnum, Expected a reference)); + } +%} +%typemap(argout) TYPE *REF, + TYPE &REF +%{ + if (Z_ISREF($input)) { + CONVERT_OUT(Z_REFVAL($input), tmp$argnum); + } +%} +%enddef + +%pass_by_ref( size_t, CONVERT_INT_IN, ZVAL_LONG ); + +%pass_by_ref( signed int, CONVERT_INT_IN, ZVAL_LONG ); +%pass_by_ref( int, CONVERT_INT_IN, ZVAL_LONG ); +%pass_by_ref( unsigned int, CONVERT_INT_IN, ZVAL_LONG ); + +%pass_by_ref( signed short, CONVERT_INT_IN, ZVAL_LONG ); +%pass_by_ref( short, CONVERT_INT_IN, ZVAL_LONG ); +%pass_by_ref( unsigned short, CONVERT_INT_IN, ZVAL_LONG ); + +%pass_by_ref( signed long, CONVERT_INT_IN, ZVAL_LONG ); +%pass_by_ref( long, CONVERT_INT_IN, ZVAL_LONG ); +%pass_by_ref( unsigned long, CONVERT_INT_IN, ZVAL_LONG ); + +%pass_by_ref( signed char, CONVERT_INT_IN, ZVAL_LONG ); +%pass_by_ref( char, CONVERT_CHAR_IN, ZVAL_STRING ); +%pass_by_ref( unsigned char, CONVERT_INT_IN, ZVAL_LONG ); + +%pass_by_ref( float, CONVERT_FLOAT_IN, ZVAL_DOUBLE ); +%pass_by_ref( double, CONVERT_FLOAT_IN, ZVAL_DOUBLE ); + +%pass_by_ref( char *, CONVERT_CHAR_IN, ZVAL_STRING ); diff --git a/macx64/bin/swig/share/swig/4.0.0/php/phprun.swg b/macx64/bin/swig/share/swig/4.0.0/php/phprun.swg new file mode 100644 index 00000000..a07a1b9f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/phprun.swg @@ -0,0 +1,246 @@ +/* ----------------------------------------------------------------------------- + * phprun.swg + * + * PHP runtime library + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif +#include "zend.h" +#include "zend_API.h" +#include "zend_exceptions.h" +#include "php.h" + +#if PHP_MAJOR_VERSION != 7 +# error These bindings need PHP7 - to generate PHP5 bindings use: SWIG < 4.0.0 and swig -php5 +#endif + +#include "ext/standard/php_string.h" +#include /* for abort(), used in generated code. */ + +/* This indirection is to work around const correctness issues in older PHP. + * FIXME: Remove for PHP7? Or might user code be using it? */ +#define SWIG_ZEND_NAMED_FE(ZN, N, A) ZEND_NAMED_FE(ZN, N, A) + +#define SWIG_BOOL_CONSTANT(N, V) REGISTER_BOOL_CONSTANT(#N, V, CONST_CS | CONST_PERSISTENT) +#define SWIG_LONG_CONSTANT(N, V) REGISTER_LONG_CONSTANT(#N, V, CONST_CS | CONST_PERSISTENT) +#define SWIG_DOUBLE_CONSTANT(N, V) REGISTER_DOUBLE_CONSTANT(#N, V, CONST_CS | CONST_PERSISTENT) +#define SWIG_STRING_CONSTANT(N, V) REGISTER_STRING_CONSTANT(#N, (char*)V, CONST_CS | CONST_PERSISTENT) +#define SWIG_CHAR_CONSTANT(N, V) do {\ + char swig_char = (V);\ + REGISTER_STRINGL_CONSTANT(#N, &swig_char, 1, CONST_CS | CONST_PERSISTENT);\ +} while (0) + +/* ZEND_CONSTANT_SET_FLAGS is new in PHP 7.3. */ +#ifdef ZEND_CONSTANT_SET_FLAGS +# define SWIG_ZEND_CONSTANT_SET_FLAGS ZEND_CONSTANT_SET_FLAGS +#else +# define SWIG_ZEND_CONSTANT_SET_FLAGS(C, F, N) do { (C)->flags = (F); (C)->module_number = (N); } while (0) +#endif + +#ifdef __cplusplus +} +#endif + +#define SWIG_fail goto fail + +static const char *default_error_msg = "Unknown error occurred"; +static int default_error_code = E_ERROR; + +#define SWIG_PHP_Arg_Error_Msg(argnum,extramsg) "Error in argument " #argnum " "#extramsg + +#define SWIG_PHP_Error(code,msg) do { SWIG_ErrorCode() = code; SWIG_ErrorMsg() = msg; SWIG_fail; } while (0) + +#define SWIG_contract_assert(expr,msg) \ + if (!(expr) ) { zend_printf("Contract Assert Failed %s\n",msg ); } else + +/* Standard SWIG API */ +#define SWIG_GetModule(clientdata) SWIG_Php_GetModule() +#define SWIG_SetModule(clientdata, pointer) SWIG_Php_SetModule(pointer, *(int*)clientdata) + +/* used to wrap returned objects in so we know whether they are newobject + and need freeing, or not */ +typedef struct { + void * ptr; + int newobject; +} swig_object_wrapper; + +#define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) + +static void +SWIG_SetPointerZval(zval *z, void *ptr, swig_type_info *type, int newobject) { + /* + * First test for Null pointers. Return those as PHP native NULL + */ + if (!ptr ) { + ZVAL_NULL(z); + return; + } + if (type->clientdata) { + swig_object_wrapper *value; + if (! (*(int *)(type->clientdata))) + zend_error(E_ERROR, "Type: %s failed to register with zend",type->name); + value=(swig_object_wrapper *)emalloc(sizeof(swig_object_wrapper)); + value->ptr=ptr; + value->newobject=(newobject & 1); + if ((newobject & 2) == 0) { + /* Just register the pointer as a resource. */ + ZVAL_RES(z, zend_register_resource(value, *(int *)(type->clientdata))); + } else { + /* + * Wrap the resource in an object, the resource will be accessible + * via the "_cPtr" member. This is currently only used by + * directorin typemaps. + */ + zval resource; + zend_class_entry *ce = NULL; + const char *type_name = type->name+3; /* +3 so: _p_Foo -> Foo */ + size_t type_name_len; + const char * p; + HashTable * ht; + + /* Namespace__Foo -> Foo */ + /* FIXME: ugly and goes wrong for classes with __ in their names. */ + while ((p = strstr(type_name, "__")) != NULL) { + type_name = p + 2; + } + type_name_len = strlen(type_name); + + ZVAL_RES(&resource, zend_register_resource(value, *(int *)(type->clientdata))); + if (SWIG_PREFIX_LEN > 0) { + zend_string * classname = zend_string_alloc(SWIG_PREFIX_LEN + type_name_len, 0); + memcpy(classname->val, SWIG_PREFIX, SWIG_PREFIX_LEN); + memcpy(classname->val + SWIG_PREFIX_LEN, type_name, type_name_len); + ce = zend_lookup_class(classname); + zend_string_release(classname); + } else { + zend_string * classname = zend_string_init(type_name, type_name_len, 0); + ce = zend_lookup_class(classname); + zend_string_release(classname); + } + if (ce == NULL) { + /* class does not exist */ + ce = zend_standard_class_def; + } + + ALLOC_HASHTABLE(ht); + zend_hash_init(ht, 1, NULL, NULL, 0); + zend_hash_str_update(ht, "_cPtr", sizeof("_cPtr") - 1, &resource); + object_and_properties_init(z, ce, ht); + } + return; + } + zend_error(E_ERROR, "Type: %s not registered with zend",type->name); +} + +/* This pointer conversion routine takes the native pointer p (along with + its type name) and converts it by calling appropriate casting functions + according to ty. The resultant pointer is returned, or NULL is returned + if the pointer can't be cast. + + Sadly PHP has no API to find a type name from a type id, only from an + instance of a resource of the type id, so we have to pass type_name as well. + + The two functions which might call this are: + SWIG_ConvertResourcePtr which gets the type name from the resource + and the registered zend destructors for which we have one per type each + with the type name hard wired in. */ +static void * +SWIG_ConvertResourceData(void * p, const char *type_name, swig_type_info *ty) { + swig_cast_info *tc; + void *result = 0; + + if (!ty) { + /* They don't care about the target type, so just pass on the pointer! */ + return p; + } + + if (! type_name) { + /* can't convert p to ptr type ty if we don't know what type p is */ + return NULL; + } + + /* convert and cast p from type_name to ptr as ty. */ + tc = SWIG_TypeCheck(type_name, ty); + if (tc) { + int newmemory = 0; + result = SWIG_TypeCast(tc, p, &newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } + return result; +} + +/* This function returns a pointer of type ty by extracting the pointer + and type info from the resource in z. z must be a resource. + If it fails, NULL is returned. + It uses SWIG_ConvertResourceData to do the real work. */ +static void * +SWIG_ConvertResourcePtr(zval *z, swig_type_info *ty, int flags) { + swig_object_wrapper *value; + void *p; + const char *type_name; + + if (Z_RES_TYPE_P(z) == -1) return NULL; + value = (swig_object_wrapper *) Z_RES_VAL_P(z); + if (flags & SWIG_POINTER_DISOWN) { + value->newobject = 0; + } + p = value->ptr; + + type_name=zend_rsrc_list_get_rsrc_type(Z_RES_P(z)); + + return SWIG_ConvertResourceData(p, type_name, ty); +} + +/* We allow passing of a RESOURCE pointing to the object or an OBJECT whose + _cPtr is a resource pointing to the object */ +static int +SWIG_ConvertPtr(zval *z, void **ptr, swig_type_info *ty, int flags) { + if (z == NULL) { + *ptr = 0; + return 0; + } + + switch (Z_TYPE_P(z)) { + case IS_OBJECT: { + HashTable * ht = Z_OBJ_HT_P(z)->get_properties(z); + if (ht) { + zval * _cPtr = zend_hash_str_find(ht, "_cPtr", sizeof("_cPtr") - 1); + if (_cPtr) { + if (Z_TYPE_P(_cPtr) == IS_INDIRECT) { + _cPtr = Z_INDIRECT_P(_cPtr); + } + if (Z_TYPE_P(_cPtr) == IS_RESOURCE) { + *ptr = SWIG_ConvertResourcePtr(_cPtr, ty, flags); + return (*ptr == NULL ? -1 : 0); + } + } + } + break; + } + case IS_RESOURCE: + *ptr = SWIG_ConvertResourcePtr(z, ty, flags); + return (*ptr == NULL ? -1 : 0); + case IS_NULL: + *ptr = 0; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } + + return -1; +} + +static const char const_name[] = "swig_runtime_data_type_pointer"; +static swig_module_info *SWIG_Php_GetModule() { + zval *pointer = zend_get_constant_str(const_name, sizeof(const_name) - 1); + if (pointer) { + if (Z_TYPE_P(pointer) == IS_LONG) { + return (swig_module_info *) pointer->value.lval; + } + } + return NULL; +} + +static void SWIG_Php_SetModule(swig_module_info *pointer, int module_number) { + REGISTER_LONG_CONSTANT(const_name, (long) pointer, CONST_CS | CONST_PERSISTENT); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/php/std_common.i b/macx64/bin/swig/share/swig/4.0.0/php/std_common.i new file mode 100644 index 00000000..092bf012 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/std_common.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * std_common.i + * + * SWIG typemaps for STL - common utilities + * ----------------------------------------------------------------------------- */ + +%include + +%apply size_t { std::size_t }; + diff --git a/macx64/bin/swig/share/swig/4.0.0/php/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/php/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/php/std_map.i b/macx64/bin/swig/share/swig/4.0.0/php/std_map.i new file mode 100644 index 00000000..7c015735 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/std_map.i @@ -0,0 +1,82 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template > class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + bool is_empty() const { + return self->empty(); + } + } + }; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/php/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/php/std_pair.i new file mode 100644 index 00000000..732347db --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/std_pair.i @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/php/std_string.i b/macx64/bin/swig/share/swig/4.0.0/php/std_string.i new file mode 100644 index 00000000..b55751f0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/std_string.i @@ -0,0 +1,94 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * SWIG typemaps for std::string types + * ----------------------------------------------------------------------------- */ + +// ------------------------------------------------------------------------ +// std::string is typemapped by value +// This can prevent exporting methods which return a string +// in order for the user to modify it. +// However, I think I'll wait until someone asks for it... +// ------------------------------------------------------------------------ + +%include + +%{ +#include +%} + +namespace std { + + %naturalvar string; + + class string; + + %typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) string, const string& %{ + $1 = (Z_TYPE($input) == IS_STRING) ? 1 : 0; + %} + + %typemap(in) string %{ + convert_to_string(&$input); + $1.assign(Z_STRVAL($input), Z_STRLEN($input)); + %} + + %typemap(directorout) string %{ + if (!EG(exception)) { + convert_to_string($input); + $result.assign(Z_STRVAL_P($input), Z_STRLEN_P($input)); + } + %} + + %typemap(out) string %{ + ZVAL_STRINGL($result, $1.data(), $1.size()); + %} + + %typemap(directorin) string, const string& %{ + ZVAL_STRINGL($input, $1.data(), $1.size()); + %} + + %typemap(out) const string & %{ + ZVAL_STRINGL($result, $1->data(), $1->size()); + %} + + %typemap(throws) string, const string& %{ + zend_throw_exception(NULL, $1.c_str(), 0); + return; + %} + + %typemap(in) const string & ($*1_ltype temp) %{ + convert_to_string(&$input); + temp.assign(Z_STRVAL($input), Z_STRLEN($input)); + $1 = &temp; + %} + + /* These next two handle a function which takes a non-const reference to + * a std::string and modifies the string. */ + %typemap(in,byref=1) string & ($*1_ltype temp) %{ + { + zval * p = Z_ISREF($input) ? Z_REFVAL($input) : &$input; + convert_to_string(p); + temp.assign(Z_STRVAL_P(p), Z_STRLEN_P(p)); + $1 = &temp; + } + %} + + %typemap(directorout) string & ($*1_ltype *temp) %{ + if (!EG(exception)) { + convert_to_string($input); + temp = new $*1_ltype(Z_STRVAL_P($input), Z_STRLEN_P($input)); + swig_acquire_ownership(temp); + $result = temp; + } + %} + + %typemap(argout) string & %{ + if (Z_ISREF($input)) { + ZVAL_STRINGL(Z_REFVAL($input), $1->data(), $1->size()); + } + %} + + /* SWIG will apply the non-const typemap above to const string& without + * this more specific typemap. */ + %typemap(argout) const string & ""; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/php/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/php/std_vector.i new file mode 100644 index 00000000..e633bc3a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/std_vector.i @@ -0,0 +1,116 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * ----------------------------------------------------------------------------- */ + +%include + +%{ +#include +#include +%} + +namespace std { + + template class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(); + vector(size_type n); + vector(const vector& other); + + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + void clear(); + %rename(push) push_back; + void push_back(const value_type& x); + %extend { + bool is_empty() const { + return $self->empty(); + } + T pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T x = self->back(); + self->pop_back(); + return x; + } + const_reference get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef bool value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef bool const_reference; + + vector(); + vector(size_type n); + vector(const vector& other); + + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + void clear(); + %rename(push) push_back; + void push_back(const value_type& x); + %extend { + bool is_empty() const { + return $self->empty(); + } + bool pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + bool x = self->back(); + self->pop_back(); + return x; + } + bool get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/php/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/php/typemaps.i new file mode 100644 index 00000000..c248a588 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/typemaps.i @@ -0,0 +1,305 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i. + * + * SWIG Typemap library for PHP. + * + * This library provides standard typemaps for modifying SWIG's behavior. + * With enough entries in this file, I hope that very few people actually + * ever need to write a typemap. + * + * Define macros to define the following typemaps: + * + * TYPE *INPUT. Argument is passed in as native variable by value. + * TYPE *OUTPUT. Argument is returned as an array from the function call. + * TYPE *INOUT. Argument is passed in by value, and out as part of returned list + * TYPE *REFERENCE. Argument is passed in as native variable with value + * semantics. Variable value is changed with result. + * Use like this: + * int foo(int *REFERENCE); + * + * $a = 0; + * $rc = foo($a); + * + * Even though $a looks like it's passed by value, + * its value can be changed by foo(). + * ----------------------------------------------------------------------------- */ + +%define BOOL_TYPEMAP(TYPE) +%typemap(in) TYPE *INPUT(TYPE temp), TYPE &INPUT(TYPE temp) +%{ + convert_to_boolean(&$input); + temp = (Z_TYPE($input) == IS_TRUE); + $1 = &temp; +%} +%typemap(argout) TYPE *INPUT, TYPE &INPUT ""; +%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp), TYPE &OUTPUT(TYPE temp) "$1 = &temp;"; +%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT, TYPE &OUTPUT +{ + zval o; + ZVAL_BOOL(&o, temp$argnum); + t_output_helper($result, &o); +} +%typemap(in) TYPE *REFERENCE (TYPE lvalue), TYPE &REFERENCE (TYPE lvalue) +%{ + convert_to_boolean($input); + lvalue = (Z_TYPE_P($input) == IS_TRUE); + $1 = &lvalue; +%} +%typemap(argout) TYPE *REFERENCE, TYPE &REFERENCE +%{ + ZVAL_BOOL(&$arg, lvalue$argnum ? true : false); +%} +%enddef + +%define DOUBLE_TYPEMAP(TYPE) +%typemap(in) TYPE *INPUT(TYPE temp), TYPE &INPUT(TYPE temp) +%{ + temp = (TYPE) zval_get_double(&$input); + $1 = &temp; +%} +%typemap(argout) TYPE *INPUT, TYPE &INPUT ""; +%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp), TYPE &OUTPUT(TYPE temp) "$1 = &temp;"; +%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT, TYPE &OUTPUT +{ + zval o; + ZVAL_DOUBLE(&o, temp$argnum); + t_output_helper($result, &o); +} +%typemap(in) TYPE *REFERENCE (TYPE dvalue), TYPE &REFERENCE (TYPE dvalue) +%{ + dvalue = (TYPE) zval_get_double(&$input); + $1 = &dvalue; +%} +%typemap(argout) TYPE *REFERENCE, TYPE &REFERENCE +%{ + ZVAL_DOUBLE(&$arg, (double)(lvalue$argnum)); +%} +%enddef + +%define INT_TYPEMAP(TYPE) +%typemap(in) TYPE *INPUT(TYPE temp), TYPE &INPUT(TYPE temp) +%{ + temp = (TYPE) zval_get_long(&$input); + $1 = &temp; +%} +%typemap(argout) TYPE *INPUT, TYPE &INPUT ""; +%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp), TYPE &OUTPUT(TYPE temp) "$1 = &temp;"; +%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT, TYPE &OUTPUT +{ + zval o; + ZVAL_LONG(&o, temp$argnum); + t_output_helper($result, &o); +} +%typemap(in) TYPE *REFERENCE (TYPE lvalue), TYPE &REFERENCE (TYPE lvalue) +%{ + lvalue = (TYPE) zval_get_long(&$input); + $1 = &lvalue; +%} +%typemap(argout) TYPE *REFERENCE, TYPE &REFERENCE +%{ + ZVAL_LONG(&$arg, (long)(lvalue$argnum)); +%} +%enddef + +BOOL_TYPEMAP(bool); + +DOUBLE_TYPEMAP(float); +DOUBLE_TYPEMAP(double); + +INT_TYPEMAP(int); +INT_TYPEMAP(short); +INT_TYPEMAP(long); +INT_TYPEMAP(unsigned int); +INT_TYPEMAP(unsigned short); +INT_TYPEMAP(unsigned long); +INT_TYPEMAP(unsigned char); +INT_TYPEMAP(signed char); + +INT_TYPEMAP(long long); +%typemap(argout,fragment="t_output_helper") long long *OUTPUT +{ + zval o; + if ((long long)LONG_MIN <= temp$argnum && temp$argnum <= (long long)LONG_MAX) { + ZVAL_LONG(&o, (long)temp$argnum); + } else { + char temp[256]; + sprintf(temp, "%lld", (long long)temp$argnum); + ZVAL_STRING(&o, temp); + } + t_output_helper($result, &o); +} +%typemap(in) TYPE *REFERENCE (long long lvalue) +%{ + CONVERT_LONG_LONG_IN(lvalue, long long, $input) + $1 = &lvalue; +%} +%typemap(argout) long long *REFERENCE +%{ + if ((long long)LONG_MIN <= lvalue$argnum && lvalue$argnum <= (long long)LONG_MAX) { + ZVAL_LONG(&$arg, (long)temp$argnum); + } else { + char temp[256]; + sprintf(temp, "%lld", (long long)lvalue$argnum); + ZVAL_STRING(&$arg, temp); + } +%} +%typemap(argout) long long &OUTPUT +%{ + if ((long long)LONG_MIN <= *arg$argnum && *arg$argnum <= (long long)LONG_MAX) { + ZVAL_LONG($result, (long)(*arg$argnum)); + } else { + char temp[256]; + sprintf(temp, "%lld", (long long)(*arg$argnum)); + ZVAL_STRING($result, temp); + } +%} +INT_TYPEMAP(unsigned long long); +%typemap(argout,fragment="t_output_helper") unsigned long long *OUTPUT +{ + zval o; + if (temp$argnum <= (unsigned long long)LONG_MAX) { + ZVAL_LONG(&o, temp$argnum); + } else { + char temp[256]; + sprintf(temp, "%llu", (unsigned long long)temp$argnum); + ZVAL_STRING(&o, temp); + } + t_output_helper($result, &o); +} +%typemap(in) TYPE *REFERENCE (unsigned long long lvalue) +%{ + CONVERT_UNSIGNED_LONG_LONG_IN(lvalue, unsigned long long, $input) + $1 = &lvalue; +%} +%typemap(argout) unsigned long long *REFERENCE +%{ + if (lvalue$argnum <= (unsigned long long)LONG_MAX) { + ZVAL_LONG($arg, (long)(lvalue$argnum)); + } else { + char temp[256]; + sprintf(temp, "%llu", (unsigned long long)lvalue$argnum); + ZVAL_STRING((*$arg), temp); + } +%} +%typemap(argout) unsigned long long &OUTPUT +%{ + if (*arg$argnum <= (unsigned long long)LONG_MAX) { + ZVAL_LONG($result, (long)(*arg$argnum)); + } else { + char temp[256]; + sprintf(temp, "%llu", (unsigned long long)(*arg$argnum)); + ZVAL_STRING($result, temp); + } +%} + +%typemap(in) bool *INOUT = bool *INPUT; +%typemap(in) float *INOUT = float *INPUT; +%typemap(in) double *INOUT = double *INPUT; + +%typemap(in) int *INOUT = int *INPUT; +%typemap(in) short *INOUT = short *INPUT; +%typemap(in) long *INOUT = long *INPUT; +%typemap(in) long long *INOUT = long long *INPUT; +%typemap(in) unsigned *INOUT = unsigned *INPUT; +%typemap(in) unsigned short *INOUT = unsigned short *INPUT; +%typemap(in) unsigned long *INOUT = unsigned long *INPUT; +%typemap(in) unsigned char *INOUT = unsigned char *INPUT; +%typemap(in) unsigned long long *INOUT = unsigned long long *INPUT; +%typemap(in) signed char *INOUT = signed char *INPUT; + +%typemap(in) bool &INOUT = bool *INPUT; +%typemap(in) float &INOUT = float *INPUT; +%typemap(in) double &INOUT = double *INPUT; + +%typemap(in) int &INOUT = int *INPUT; +%typemap(in) short &INOUT = short *INPUT; +%typemap(in) long &INOUT = long *INPUT; +%typemap(in) long long &INOUT = long long *INPUT; +%typemap(in) long long &INPUT = long long *INPUT; +%typemap(in) unsigned &INOUT = unsigned *INPUT; +%typemap(in) unsigned short &INOUT = unsigned short *INPUT; +%typemap(in) unsigned long &INOUT = unsigned long *INPUT; +%typemap(in) unsigned char &INOUT = unsigned char *INPUT; +%typemap(in) unsigned long long &INOUT = unsigned long long *INPUT; +%typemap(in) unsigned long long &INPUT = unsigned long long *INPUT; +%typemap(in) signed char &INOUT = signed char *INPUT; + +%typemap(argout) bool *INOUT = bool *OUTPUT; +%typemap(argout) float *INOUT = float *OUTPUT; +%typemap(argout) double *INOUT= double *OUTPUT; + +%typemap(argout) int *INOUT = int *OUTPUT; +%typemap(argout) short *INOUT = short *OUTPUT; +%typemap(argout) long *INOUT= long *OUTPUT; +%typemap(argout) long long *INOUT= long long *OUTPUT; +%typemap(argout) unsigned short *INOUT= unsigned short *OUTPUT; +%typemap(argout) unsigned long *INOUT = unsigned long *OUTPUT; +%typemap(argout) unsigned char *INOUT = unsigned char *OUTPUT; +%typemap(argout) unsigned long long *INOUT = unsigned long long *OUTPUT; +%typemap(argout) signed char *INOUT = signed char *OUTPUT; + +%typemap(argout) bool &INOUT = bool *OUTPUT; +%typemap(argout) float &INOUT = float *OUTPUT; +%typemap(argout) double &INOUT= double *OUTPUT; + +%typemap(argout) int &INOUT = int *OUTPUT; +%typemap(argout) short &INOUT = short *OUTPUT; +%typemap(argout) long &INOUT= long *OUTPUT; +%typemap(argout) long long &INOUT= long long *OUTPUT; +%typemap(argout) unsigned short &INOUT= unsigned short *OUTPUT; +%typemap(argout) unsigned long &INOUT = unsigned long *OUTPUT; +%typemap(argout) unsigned char &INOUT = unsigned char *OUTPUT; +%typemap(argout) unsigned long long &INOUT = unsigned long long *OUTPUT; +%typemap(argout) signed char &INOUT = signed char *OUTPUT; + +%typemap(in) char INPUT[ANY] ( char temp[$1_dim0] ) +%{ + convert_to_string(&$input); + strncpy(temp, Z_STRVAL($input), $1_dim0); + $1 = temp; +%} +%typemap(in,numinputs=0) char OUTPUT[ANY] ( char temp[$1_dim0] ) + "$1 = temp;"; +%typemap(argout,fragment="t_output_helper") char OUTPUT[ANY] +{ + zval o; + ZVAL_STRINGL(&o, temp$argnum, $1_dim0); + t_output_helper($result, &o); +} + +%typemap(in,numinputs=0) void **OUTPUT (int force), + void *&OUTPUT (int force) +%{ + /* If they pass NULL by reference, make it into a void* + This bit should go in arginit if arginit support init-ing scripting args */ + if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0) { + /* So... we didn't get a ref or ptr, but we'll accept NULL by reference */ + if (!(Z_ISREF($input) && Z_ISNULL_P(Z_REFVAL($input)))) { + /* wasn't a pre/ref/thing, OR anything like an int thing */ + SWIG_PHP_Error(E_ERROR, "Type error in argument $arg of $symname."); + } + } + force=0; + if (arg1==NULL) { +#ifdef __cplusplus + ptr=new $*1_ltype(); +#else + ptr=($*1_ltype) calloc(1,sizeof($*1_ltype)); +#endif + $1=&ptr; + /* have to passback arg$arg too */ + force=1; + } +%} + +%typemap(argout) void **OUTPUT, + void *&OUTPUT +%{ + if (force$argnum) { /* pass back arg$argnum through params ($arg) if we can */ + if (!Z_ISREF($arg)) { + SWIG_PHP_Error(E_WARNING, "Parameter $argnum of $symname wasn't passed by reference"); + } else { + SWIG_SetPointerZval(*$arg, (void *) ptr$argnum, $*1_descriptor, 1); + } + } +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/php/utils.i b/macx64/bin/swig/share/swig/4.0.0/php/utils.i new file mode 100644 index 00000000..ed6e08ff --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/php/utils.i @@ -0,0 +1,110 @@ + +%define CONVERT_BOOL_IN(lvar,t,invar) + lvar = (t) zval_is_true(&invar); +%enddef + +%define CONVERT_INT_IN(lvar,t,invar) + lvar = (t) zval_get_long(&invar); +%enddef + +%define CONVERT_LONG_LONG_IN(lvar,t,invar) + switch (Z_TYPE(invar)) { + case IS_DOUBLE: + lvar = (t) Z_DVAL(invar); + break; + case IS_STRING: { + char * endptr; + errno = 0; + lvar = (t) strtoll(Z_STRVAL(invar), &endptr, 10); + if (*endptr && !errno) break; + /* FALL THRU */ + } + default: + lvar = (t) zval_get_long(&invar); + } +%enddef + +%define CONVERT_UNSIGNED_LONG_LONG_IN(lvar,t,invar) + switch (Z_TYPE(invar)) { + case IS_DOUBLE: + lvar = (t) Z_DVAL(invar); + break; + case IS_STRING: { + char * endptr; + errno = 0; + lvar = (t) strtoull(Z_STRVAL(invar), &endptr, 10); + if (*endptr && !errno) break; + /* FALL THRU */ + } + default: + lvar = (t) zval_get_long(&invar); + } +%enddef + +%define CONVERT_INT_OUT(lvar,invar) + lvar = (t) zval_get_long(&invar); +%enddef + +%define CONVERT_FLOAT_IN(lvar,t,invar) + lvar = (t) zval_get_double(&invar); +%enddef + +%define CONVERT_CHAR_IN(lvar,t,invar) + convert_to_string(&invar); + lvar = (t) Z_STRVAL(invar)[0]; +%enddef + +%define CONVERT_STRING_IN(lvar,t,invar) + if (Z_ISNULL(invar)) { + lvar = (t) 0; + } else { + convert_to_string(&invar); + lvar = (t) Z_STRVAL(invar); + } +%enddef + +%define %pass_by_val( TYPE, CONVERT_IN ) +%typemap(in) TYPE +%{ + CONVERT_IN($1,$1_ltype,$input); +%} +%typemap(in) const TYPE & ($*1_ltype temp) +%{ + CONVERT_IN(temp,$*1_ltype,$input); + $1 = &temp; +%} +%typemap(directorout) TYPE +%{ + if (!EG(exception)) { + CONVERT_IN($result, $1_ltype, *$input); + } +%} +%typemap(directorout) const TYPE & ($*1_ltype temp) +%{ + if (!EG(exception)) { + CONVERT_IN(temp, $*1_ltype, *$input); + } + $result = &temp; +%} +%enddef + +%fragment("t_output_helper","header") %{ +static void +t_output_helper(zval *target, zval *o) { + zval tmp; + if (Z_TYPE_P(target) == IS_ARRAY) { + /* it's already an array, just append */ + add_next_index_zval(target, o); + return; + } + if (Z_TYPE_P(target) == IS_NULL) { + /* NULL isn't refcounted */ + ZVAL_COPY_VALUE(target, o); + return; + } + ZVAL_DUP(&tmp, target); + array_init(target); + add_next_index_zval(target, &tmp); + add_next_index_zval(target, o); +} +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/pointer.i b/macx64/bin/swig/share/swig/4.0.0/pointer.i new file mode 100644 index 00000000..ea8e535a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/pointer.i @@ -0,0 +1,11 @@ +/* ----------------------------------------------------------------------------- + * pointer.i + * ----------------------------------------------------------------------------- */ + + +%echo "pointer.i is deprecated. Use cpointer.i instead." +%echo "See http://www.swig.org/Doc3.0/Library.html" + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/argcargv.i b/macx64/bin/swig/share/swig/4.0.0/python/argcargv.i new file mode 100644 index 00000000..717fe733 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/argcargv.i @@ -0,0 +1,92 @@ +/* ------------------------------------------------------------ + * --- Argc & Argv --- + * ------------------------------------------------------------ */ + +%fragment("SWIG_AsArgcArgv","header",fragment="SWIG_AsCharPtrAndSize") { +SWIGINTERN int +SWIG_AsArgcArgv(PyObject *input, + swig_type_info *ppchar_info, + size_t *argc, char ***argv, int *owner) +{ + void *vptr; + int res = SWIG_ConvertPtr(input, &vptr, ppchar_info, 0); + if (!SWIG_IsOK(res)) { + int list = 0; + PyErr_Clear(); + list = PyList_Check(input); + if (list || PyTuple_Check(input)) { + size_t i = 0; + size_t size = list ? PyList_Size(input) : PyTuple_Size(input); + if (argc) *argc = size; + if (argv) { + *argv = %new_array(size + 1, char*); + for (; i < size; ++i) { + PyObject *obj = list ? PyList_GetItem(input,i) : PyTuple_GetItem(input,i); + char *cptr = 0; size_t sz = 0; int alloc = 0; + res = SWIG_AsCharPtrAndSize(obj, &cptr, &sz, &alloc); + if (SWIG_IsOK(res)) { + if (cptr && sz) { + (*argv)[i] = (alloc == SWIG_NEWOBJ) ? cptr : %new_copy_array(cptr, sz, char); + } else { + (*argv)[i] = 0; + } + } else { + return SWIG_TypeError; + } + } + (*argv)[i] = 0; + if (owner) *owner = 1; + } else { + for (; i < size; ++i) { + PyObject *obj = list ? PyList_GetItem(input,i) : PyTuple_GetItem(input,i); + res = SWIG_AsCharPtrAndSize(obj, 0, 0, 0); + if (!SWIG_IsOK(res)) return SWIG_TypeError; + } + if (owner) *owner = 0; + } + return SWIG_OK; + } else { + return SWIG_TypeError; + } + } else { + /* seems dangerous, but the user asked for it... */ + size_t i = 0; + if (argv) { while (*argv[i] != 0) ++i;} + if (argc) *argc = i; + if (owner) *owner = 0; + return SWIG_OK; + } +} +} + +/* + This typemap works with either a char **, a python list or a python + tuple + */ + +%typemap(in,noblock=0,fragment="SWIG_AsArgcArgv") (int ARGC, char **ARGV) (int res,char **argv = 0, size_t argc = 0, int owner= 0) { + res = SWIG_AsArgcArgv($input, $descriptor(char**), &argc, &argv, &owner); + if (!SWIG_IsOK(res)) { + $1 = 0; $2 = 0; + %argument_fail(SWIG_TypeError, "int ARGC, char **ARGV", $symname, $argnum); + } else { + $1 = %static_cast(argc,$1_ltype); + $2 = %static_cast(argv, $2_ltype); + } +} + +%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { + int res = SWIG_AsArgcArgv($input, $descriptor(char**), 0, 0, 0); + $1 = SWIG_IsOK(res); +} + +%typemap(freearg,noblock=1) (int ARGC, char **ARGV) { + if (owner$argnum) { + size_t i = argc$argnum; + while (i) { + %delete_array(argv$argnum[--i]); + } + %delete_array(argv$argnum); + } +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/attribute.i b/macx64/bin/swig/share/swig/4.0.0/python/attribute.i new file mode 100644 index 00000000..779716cd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/attribute.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/boost_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/python/boost_shared_ptr.i new file mode 100644 index 00000000..709e7811 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/boost_shared_ptr.i @@ -0,0 +1,411 @@ +%include + +// Set SHARED_PTR_DISOWN to $disown if required, for example +// #define SHARED_PTR_DISOWN $disown +#if !defined(SHARED_PTR_DISOWN) +#define SHARED_PTR_DISOWN 0 +#endif + +%fragment("SWIG_null_deleter_python", "header", fragment="SWIG_null_deleter") { +%#define SWIG_NO_NULL_DELETER_SWIG_BUILTIN_INIT +} + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_SHARED_PTR_TYPEMAPS(CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor wrapper customisation +%feature("unref") TYPE +//"if (debug_shared) { cout << \"deleting use_count: \" << (*smartarg1).use_count() << \" [\" << (boost::get_deleter(*smartarg1) ? std::string(\"CANNOT BE DETERMINED SAFELY\") : ( (*smartarg1).get() ? (*smartarg1)->getValue() : std::string(\"NULL PTR\") )) << \"]\" << endl << flush; }\n" + "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +// plain value +%typemap(in) CONST TYPE (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(out) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(varout) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) CONST TYPE (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE (void *swig_argp, int swig_res = 0) { + int newmem = 0; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (!swig_argp) { + %dirout_nullref("$type"); + } else { + $result = *(%reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} + +// plain pointer +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) CONST TYPE * (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} + +%typemap(out, fragment="SWIG_null_deleter_python") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), $owner | SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE * { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0; + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter_python") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter_python") CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE * %{ +#error "directorout typemap for plain pointer not implemented" +%} + +// plain reference +%typemap(in) CONST TYPE & (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + $1 = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(out, fragment="SWIG_null_deleter_python") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE & { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + if (!argp) { + %variable_nullref("$type", "$name"); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = *%const_cast(tempshared.get(), $1_ltype); + } else { + $1 = *%const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter_python") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter_python") CONST TYPE & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE & %{ +#error "directorout typemap for plain reference not implemented" +%} + +// plain pointer by reference +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) TYPE *CONST& (void *argp = 0, int res = 0, $*1_ltype temp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + temp = %const_cast(tempshared.get(), $*1_ltype); + } else { + temp = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $*1_ltype); + } + $1 = &temp; +} +%typemap(out, fragment="SWIG_null_deleter_python") TYPE *CONST& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) TYPE *CONST& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) TYPE *CONST& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter_python") TYPE *CONST& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) TYPE *CONST& %{ +#error "directorout typemap for plain pointer by reference not implemented" +%} + +// shared_ptr by value +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) $1 = *(%reinterpret_cast(argp, $<ype)); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + int newmem = 0; + void *argp = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = argp ? *(%reinterpret_cast(argp, $<ype)) : SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE >(); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *swig_argp, int swig_res = 0) { + int newmem = 0; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (swig_argp) { + $result = *(%reinterpret_cast(swig_argp, $<ype)); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, $<ype); + } +} + +// shared_ptr by reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "directorout typemap for shared_ptr ref not implemented" +%} + +// shared_ptr by pointer +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); + if ($owner) delete $1; +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "directorout typemap for pointer to shared_ptr not implemented" +%} + +// shared_ptr by pointer reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (void *argp, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, $*1_ltype temp = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) tempshared = *%reinterpret_cast(argp, $*ltype); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $*ltype); + temp = &tempshared; + $1 = &temp; +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = (*$1 && **$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(**$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "directorout typemap for pointer ref to shared_ptr not implemented" +%} + +// Typecheck typemaps +// Note: SWIG_ConvertPtr with void ** parameter set to 0 instead of using SWIG_ConvertPtrAndOwn, so that the casting +// function is not called thereby avoiding a possible smart pointer copy constructor call when casting up the inheritance chain. +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + int res = SWIG_ConvertPtr($input, 0, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), 0); + $1 = SWIG_CheckState(res); +} + + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + +%typemap(doctype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& + %{TYPE%} + + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + + +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/python/builtin.swg b/macx64/bin/swig/share/swig/4.0.0/python/builtin.swg new file mode 100644 index 00000000..5062a8b4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/builtin.swg @@ -0,0 +1,740 @@ +#ifdef __cplusplus +extern "C" { +#endif + +SWIGINTERN Py_hash_t +SwigPyObject_hash(PyObject *obj) { + SwigPyObject *sobj = (SwigPyObject *)obj; + void *ptr = sobj->ptr; + return (Py_hash_t)ptr; +} + +SWIGINTERN Py_hash_t +SWIG_PyNumber_AsPyHash(PyObject *obj) { + Py_hash_t result = -1; +#if PY_VERSION_HEX < 0x03020000 + if (PyInt_Check(obj)) + result = PyInt_AsLong(obj); + else if (PyLong_Check(obj)) + result = PyLong_AsLong(obj); +#else + if (PyNumber_Check(obj)) + result = PyNumber_AsSsize_t(obj, NULL); +#endif + else + PyErr_Format(PyExc_TypeError, "Wrong type for hash function"); + return PyErr_Occurred() ? -1 : result; +} + +SWIGINTERN int +SwigPyBuiltin_BadInit(PyObject *self, PyObject *SWIGUNUSEDPARM(args), PyObject *SWIGUNUSEDPARM(kwds)) { + PyErr_Format(PyExc_TypeError, "Cannot create new instances of type '%.300s'", self->ob_type->tp_name); + return -1; +} + +SWIGINTERN void +SwigPyBuiltin_BadDealloc(PyObject *obj) { + SwigPyObject *sobj = (SwigPyObject *)obj; + if (sobj->own) { + PyErr_Format(PyExc_TypeError, "Swig detected a memory leak in type '%.300s': no callable destructor found.", obj->ob_type->tp_name); + } +} + +typedef struct { + PyCFunction get; + PyCFunction set; +} SwigPyGetSet; + +SWIGINTERN PyObject * +SwigPyBuiltin_GetterClosure (PyObject *obj, void *closure) { + SwigPyGetSet *getset; + PyObject *tuple, *result; + if (!closure) + return SWIG_Py_Void(); + getset = (SwigPyGetSet *)closure; + if (!getset->get) + return SWIG_Py_Void(); + tuple = PyTuple_New(0); + assert(tuple); + result = (*getset->get)(obj, tuple); + Py_DECREF(tuple); + return result; +} + +SWIGINTERN PyObject * +SwigPyBuiltin_FunpackGetterClosure (PyObject *obj, void *closure) { + SwigPyGetSet *getset; + PyObject *result; + if (!closure) + return SWIG_Py_Void(); + getset = (SwigPyGetSet *)closure; + if (!getset->get) + return SWIG_Py_Void(); + result = (*getset->get)(obj, NULL); + return result; +} + +SWIGINTERN int +SwigPyBuiltin_SetterClosure (PyObject *obj, PyObject *val, void *closure) { + SwigPyGetSet *getset; + PyObject *tuple, *result; + if (!closure) { + PyErr_Format(PyExc_TypeError, "Missing getset closure"); + return -1; + } + getset = (SwigPyGetSet *)closure; + if (!getset->set) { + PyErr_Format(PyExc_TypeError, "Illegal member variable assignment in type '%.300s'", obj->ob_type->tp_name); + return -1; + } + tuple = PyTuple_New(1); + assert(tuple); + Py_INCREF(val); + PyTuple_SET_ITEM(tuple, 0, val); + result = (*getset->set)(obj, tuple); + Py_DECREF(tuple); + Py_XDECREF(result); + return result ? 0 : -1; +} + +SWIGINTERN int +SwigPyBuiltin_FunpackSetterClosure (PyObject *obj, PyObject *val, void *closure) { + SwigPyGetSet *getset; + PyObject *result; + if (!closure) { + PyErr_Format(PyExc_TypeError, "Missing getset closure"); + return -1; + } + getset = (SwigPyGetSet *)closure; + if (!getset->set) { + PyErr_Format(PyExc_TypeError, "Illegal member variable assignment in type '%.300s'", obj->ob_type->tp_name); + return -1; + } + result = (*getset->set)(obj, val); + Py_XDECREF(result); + return result ? 0 : -1; +} + +SWIGINTERN void +SwigPyStaticVar_dealloc(PyDescrObject *descr) { + _PyObject_GC_UNTRACK(descr); + Py_XDECREF(PyDescr_TYPE(descr)); + Py_XDECREF(PyDescr_NAME(descr)); + PyObject_GC_Del(descr); +} + +SWIGINTERN PyObject * +SwigPyStaticVar_repr(PyGetSetDescrObject *descr) { +#if PY_VERSION_HEX >= 0x03000000 + + return PyUnicode_FromFormat("", PyDescr_NAME(descr), PyDescr_TYPE(descr)->tp_name); +#else + return PyString_FromFormat("", PyString_AsString(PyDescr_NAME(descr)), PyDescr_TYPE(descr)->tp_name); +#endif +} + +SWIGINTERN int +SwigPyStaticVar_traverse(PyObject *self, visitproc visit, void *arg) { + PyDescrObject *descr; + descr = (PyDescrObject *)self; + Py_VISIT((PyObject*) PyDescr_TYPE(descr)); + return 0; +} + +SWIGINTERN PyObject * +SwigPyStaticVar_get(PyGetSetDescrObject *descr, PyObject *obj, PyObject *SWIGUNUSEDPARM(type)) { + if (descr->d_getset->get != NULL) + return descr->d_getset->get(obj, descr->d_getset->closure); +#if PY_VERSION_HEX >= 0x03000000 + PyErr_Format(PyExc_AttributeError, "attribute '%.300S' of '%.100s' objects is not readable", PyDescr_NAME(descr), PyDescr_TYPE(descr)->tp_name); +#else + PyErr_Format(PyExc_AttributeError, "attribute '%.300s' of '%.100s' objects is not readable", PyString_AsString(PyDescr_NAME(descr)), PyDescr_TYPE(descr)->tp_name); +#endif + return NULL; +} + +SWIGINTERN int +SwigPyStaticVar_set(PyGetSetDescrObject *descr, PyObject *obj, PyObject *value) { + if (descr->d_getset->set != NULL) + return descr->d_getset->set(obj, value, descr->d_getset->closure); +#if PY_VERSION_HEX >= 0x03000000 + PyErr_Format(PyExc_AttributeError, "attribute '%.300S' of '%.100s' objects is not writable", PyDescr_NAME(descr), PyDescr_TYPE(descr)->tp_name); +#else + PyErr_Format(PyExc_AttributeError, "attribute '%.300s' of '%.100s' objects is not writable", PyString_AsString(PyDescr_NAME(descr)), PyDescr_TYPE(descr)->tp_name); +#endif + return -1; +} + +SWIGINTERN int +SwigPyObjectType_setattro(PyObject *typeobject, PyObject *name, PyObject *value) { + PyObject *attribute; + PyTypeObject *type; + descrsetfunc local_set; + + assert(PyType_Check(typeobject)); + type = (PyTypeObject *)typeobject; + attribute = _PyType_Lookup(type, name); + if (attribute != NULL) { + /* Implement descriptor functionality, if any */ + local_set = attribute->ob_type->tp_descr_set; + if (local_set != NULL) + return local_set(attribute, (PyObject *)type, value); +#if PY_VERSION_HEX >= 0x03000000 + PyErr_Format(PyExc_AttributeError, "cannot modify read-only attribute '%.50s.%.400S'", type->tp_name, name); +#else + PyErr_Format(PyExc_AttributeError, "cannot modify read-only attribute '%.50s.%.400s'", type->tp_name, PyString_AS_STRING(name)); +#endif + } else { +#if PY_VERSION_HEX >= 0x03000000 + PyErr_Format(PyExc_AttributeError, "type '%.50s' has no attribute '%.400S'", type->tp_name, name); +#else + PyErr_Format(PyExc_AttributeError, "type '%.50s' has no attribute '%.400s'", type->tp_name, PyString_AS_STRING(name)); +#endif + } + + return -1; +} + +SWIGINTERN PyTypeObject* +SwigPyStaticVar_Type(void) { + static PyTypeObject staticvar_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(&PyType_Type, 0) +#else + PyObject_HEAD_INIT(&PyType_Type) + 0, /* ob_size */ +#endif + "swig_static_var_getset_descriptor", /* tp_name */ + sizeof(PyGetSetDescrObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyStaticVar_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + (reprfunc)SwigPyStaticVar_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_CLASS, /* tp_flags */ + 0, /* tp_doc */ + SwigPyStaticVar_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + (descrgetfunc)SwigPyStaticVar_get, /* tp_descr_get */ + (descrsetfunc)SwigPyStaticVar_set, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ + 0, /* tp_del */ + 0, /* tp_version_tag */ +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ + 0, /* tp_prev */ + 0 /* tp_next */ +#endif + }; + staticvar_type = tmp; + type_init = 1; + if (PyType_Ready(&staticvar_type) < 0) + return NULL; + } + return &staticvar_type; +} + +SWIGINTERN PyTypeObject* +SwigPyObjectType(void) { + static char swigpyobjecttype_doc[] = "Metaclass for SWIG wrapped types"; + static PyTypeObject swigpyobjecttype_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(&PyType_Type, 0) +#else + PyObject_HEAD_INIT(&PyType_Type) + 0, /* ob_size */ +#endif + "SwigPyObjectType", /* tp_name */ + PyType_Type.tp_basicsize, /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + SwigPyObjectType_setattro, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_CLASS, /* tp_flags */ + swigpyobjecttype_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ + 0, /* tp_del */ + 0, /* tp_version_tag */ +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ + 0, /* tp_prev */ + 0 /* tp_next */ +#endif + }; + swigpyobjecttype_type = tmp; + type_init = 1; + swigpyobjecttype_type.tp_base = &PyType_Type; + if (PyType_Ready(&swigpyobjecttype_type) < 0) + return NULL; + } + return &swigpyobjecttype_type; +} + +SWIGINTERN PyGetSetDescrObject * +SwigPyStaticVar_new_getset(PyTypeObject *type, PyGetSetDef *getset) { + + PyGetSetDescrObject *descr; + descr = (PyGetSetDescrObject *)PyType_GenericAlloc(SwigPyStaticVar_Type(), 0); + assert(descr); + Py_XINCREF(type); + PyDescr_TYPE(descr) = type; + PyDescr_NAME(descr) = PyString_InternFromString(getset->name); + descr->d_getset = getset; + if (PyDescr_NAME(descr) == NULL) { + Py_DECREF(descr); + descr = NULL; + } + return descr; +} + +SWIGINTERN void +SwigPyBuiltin_InitBases (PyTypeObject *type, PyTypeObject **bases) { + Py_ssize_t base_count = 0; + PyTypeObject **b; + PyObject *tuple; + Py_ssize_t i; + + if (!bases[0]) { + bases[0] = SwigPyObject_type(); + bases[1] = NULL; + } + type->tp_base = bases[0]; + Py_INCREF((PyObject *)bases[0]); + for (b = bases; *b != NULL; ++b) + ++base_count; + tuple = PyTuple_New(base_count); + for (i = 0; i < base_count; ++i) { + Py_INCREF((PyObject *)bases[i]); + PyTuple_SET_ITEM(tuple, i, (PyObject *)bases[i]); + } + type->tp_bases = tuple; +} + +SWIGINTERN PyObject * +SwigPyBuiltin_ThisClosure (PyObject *self, void *SWIGUNUSEDPARM(closure)) { + PyObject *result; + result = (PyObject *)SWIG_Python_GetSwigThis(self); + Py_XINCREF(result); + return result; +} + +SWIGINTERN void +SwigPyBuiltin_SetMetaType (PyTypeObject *type, PyTypeObject *metatype) +{ +#if PY_VERSION_HEX >= 0x03000000 + type->ob_base.ob_base.ob_type = metatype; +#else + type->ob_type = metatype; +#endif +} + + +/* Start of callback function macros for use in PyTypeObject */ + +typedef PyObject *(*SwigPyWrapperFunction)(PyObject *, PyObject *); + +#define SWIGPY_UNARYFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_unaryfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_unaryfunc_closure(wrapper, a); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_unaryfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + return wrapper(a, NULL); +} + +#define SWIGPY_DESTRUCTOR_CLOSURE(wrapper) \ +SWIGINTERN void \ +wrapper##_destructor_closure(PyObject *a) { \ + SwigPyBuiltin_destructor_closure(wrapper, #wrapper, a); \ +} +SWIGINTERN void +SwigPyBuiltin_destructor_closure(SwigPyWrapperFunction wrapper, const char *wrappername, PyObject *a) { + SwigPyObject *sobj; + sobj = (SwigPyObject *)a; + Py_XDECREF(sobj->dict); + if (sobj->own) { + PyObject *o; + PyObject *type = 0, *value = 0, *traceback = 0; + PyErr_Fetch(&type, &value, &traceback); + o = wrapper(a, NULL); + if (!o) { + PyObject *deallocname = PyString_FromString(wrappername); + PyErr_WriteUnraisable(deallocname); + Py_DECREF(deallocname); + } + PyErr_Restore(type, value, traceback); + Py_XDECREF(o); + } + if (PyType_IS_GC(a->ob_type)) { + PyObject_GC_Del(a); + } else { + PyObject_Del(a); + } +} + +#define SWIGPY_INQUIRY_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_inquiry_closure(PyObject *a) { \ + return SwigPyBuiltin_inquiry_closure(wrapper, a); \ +} +SWIGINTERN int +SwigPyBuiltin_inquiry_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + PyObject *pyresult; + int result; + pyresult = wrapper(a, NULL); + result = pyresult && PyObject_IsTrue(pyresult) ? 1 : 0; + Py_XDECREF(pyresult); + return result; +} + +#define SWIGPY_GETITERFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_getiterfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_getiterfunc_closure(wrapper, a); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_getiterfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + return wrapper(a, NULL); +} + +#define SWIGPY_BINARYFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_binaryfunc_closure(PyObject *a, PyObject *b) { \ + return SwigPyBuiltin_binaryfunc_closure(wrapper, a, b); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_binaryfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b) { + PyObject *tuple, *result; + tuple = PyTuple_New(1); + assert(tuple); + Py_INCREF(b); + PyTuple_SET_ITEM(tuple, 0, b); + result = wrapper(a, tuple); + Py_DECREF(tuple); + return result; +} + +typedef ternaryfunc ternarycallfunc; + +#define SWIGPY_TERNARYFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ternaryfunc_closure(PyObject *a, PyObject *b, PyObject *c) { \ + return SwigPyBuiltin_ternaryfunc_closure(wrapper, a, b, c); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_ternaryfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b, PyObject *c) { + PyObject *tuple, *result; + tuple = PyTuple_New(2); + assert(tuple); + Py_INCREF(b); + PyTuple_SET_ITEM(tuple, 0, b); + Py_INCREF(c); + PyTuple_SET_ITEM(tuple, 1, c); + result = wrapper(a, tuple); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_TERNARYCALLFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ternarycallfunc_closure(PyObject *a, PyObject *b, PyObject *c) { \ + return SwigPyBuiltin_ternarycallfunc_closure(wrapper, a, b, c); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_ternarycallfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b, PyObject *c) { + (void) c; + return wrapper(a, b); +} + +#define SWIGPY_LENFUNC_CLOSURE(wrapper) \ +SWIGINTERN Py_ssize_t \ +wrapper##_lenfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_lenfunc_closure(wrapper, a); \ +} +SWIGINTERN Py_ssize_t +SwigPyBuiltin_lenfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + PyObject *resultobj; + Py_ssize_t result; + resultobj = wrapper(a, NULL); + result = PyNumber_AsSsize_t(resultobj, NULL); + Py_DECREF(resultobj); + return result; +} + +#define SWIGPY_SSIZESSIZEARGFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ssizessizeargfunc_closure(PyObject *a, Py_ssize_t b, Py_ssize_t c) { \ + return SwigPyBuiltin_ssizessizeargfunc_closure(wrapper, a, b, c); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_ssizessizeargfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b, Py_ssize_t c) { + PyObject *tuple, *result; + tuple = PyTuple_New(2); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, _PyLong_FromSsize_t(b)); + PyTuple_SET_ITEM(tuple, 1, _PyLong_FromSsize_t(c)); + result = wrapper(a, tuple); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_SSIZESSIZEOBJARGPROC_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_ssizessizeobjargproc_closure(PyObject *a, Py_ssize_t b, Py_ssize_t c, PyObject *d) { \ + return SwigPyBuiltin_ssizessizeobjargproc_closure(wrapper, a, b, c, d); \ +} +SWIGINTERN int +SwigPyBuiltin_ssizessizeobjargproc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b, Py_ssize_t c, PyObject *d) { + PyObject *tuple, *resultobj; + int result; + tuple = PyTuple_New(d ? 3 : 2); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, _PyLong_FromSsize_t(b)); + PyTuple_SET_ITEM(tuple, 1, _PyLong_FromSsize_t(c)); + if (d) { + Py_INCREF(d); + PyTuple_SET_ITEM(tuple, 2, d); + } + resultobj = wrapper(a, tuple); + result = resultobj ? 0 : -1; + Py_DECREF(tuple); + Py_XDECREF(resultobj); + return result; +} + +#define SWIGPY_SSIZEARGFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ssizeargfunc_closure(PyObject *a, Py_ssize_t b) { \ + return SwigPyBuiltin_funpack_ssizeargfunc_closure(wrapper, a, b); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_funpack_ssizeargfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b) { + PyObject *tuple, *result; + tuple = PyTuple_New(1); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, _PyLong_FromSsize_t(b)); + result = wrapper(a, tuple); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_FUNPACK_SSIZEARGFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ssizeargfunc_closure(PyObject *a, Py_ssize_t b) { \ + return SwigPyBuiltin_ssizeargfunc_closure(wrapper, a, b); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_ssizeargfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b) { + PyObject *arg, *result; + arg = _PyLong_FromSsize_t(b); + result = wrapper(a, arg); + Py_DECREF(arg); + return result; +} + +#define SWIGPY_SSIZEOBJARGPROC_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_ssizeobjargproc_closure(PyObject *a, Py_ssize_t b, PyObject *c) { \ + return SwigPyBuiltin_ssizeobjargproc_closure(wrapper, a, b, c); \ +} +SWIGINTERN int +SwigPyBuiltin_ssizeobjargproc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b, PyObject *c) { + PyObject *tuple, *resultobj; + int result; + tuple = PyTuple_New(2); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, _PyLong_FromSsize_t(b)); + Py_INCREF(c); + PyTuple_SET_ITEM(tuple, 1, c); + resultobj = wrapper(a, tuple); + result = resultobj ? 0 : -1; + Py_XDECREF(resultobj); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_OBJOBJPROC_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_objobjproc_closure(PyObject *a, PyObject *b) { \ + return SwigPyBuiltin_objobjproc_closure(wrapper, a, b); \ +} +SWIGINTERN int +SwigPyBuiltin_objobjproc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b) { + int result; + PyObject *pyresult; + PyObject *tuple; + tuple = PyTuple_New(1); + assert(tuple); + Py_INCREF(b); + PyTuple_SET_ITEM(tuple, 0, b); + pyresult = wrapper(a, tuple); + result = pyresult ? (PyObject_IsTrue(pyresult) ? 1 : 0) : -1; + Py_XDECREF(pyresult); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_FUNPACK_OBJOBJPROC_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_objobjproc_closure(PyObject *a, PyObject *b) { \ + return SwigPyBuiltin_funpack_objobjproc_closure(wrapper, a, b); \ +} +SWIGINTERN int +SwigPyBuiltin_funpack_objobjproc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b) { + int result; + PyObject *pyresult; + pyresult = wrapper(a, b); + result = pyresult ? (PyObject_IsTrue(pyresult) ? 1 : 0) : -1; + Py_XDECREF(pyresult); + return result; +} + +#define SWIGPY_OBJOBJARGPROC_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_objobjargproc_closure(PyObject *a, PyObject *b, PyObject *c) { \ + return SwigPyBuiltin_objobjargproc_closure(wrapper, a, b, c); \ +} +SWIGINTERN int +SwigPyBuiltin_objobjargproc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b, PyObject *c) { + PyObject *tuple, *resultobj; + int result; + tuple = PyTuple_New(c ? 2 : 1); + assert(tuple); + Py_INCREF(b); + PyTuple_SET_ITEM(tuple, 0, b); + if (c) { + Py_INCREF(c); + PyTuple_SET_ITEM(tuple, 1, c); + } + resultobj = wrapper(a, tuple); + result = resultobj ? 0 : -1; + Py_XDECREF(resultobj); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_REPRFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_reprfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_reprfunc_closure(wrapper, a); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_reprfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + return wrapper(a, NULL); +} + +#define SWIGPY_HASHFUNC_CLOSURE(wrapper) \ +SWIGINTERN Py_hash_t \ +wrapper##_hashfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_hashfunc_closure(wrapper, a); \ +} +SWIGINTERN Py_hash_t +SwigPyBuiltin_hashfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + PyObject *pyresult; + Py_hash_t result; + pyresult = wrapper(a, NULL); + if (!pyresult) + return -1; + result = SWIG_PyNumber_AsPyHash(pyresult); + Py_DECREF(pyresult); + return result; +} + +#define SWIGPY_ITERNEXTFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_iternextfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_iternextfunc_closure(wrapper, a);\ +} +SWIGINTERN PyObject * +SwigPyBuiltin_iternextfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + return wrapper(a, NULL); +} + +/* End of callback function macros for use in PyTypeObject */ + +#ifdef __cplusplus +} +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/carrays.i b/macx64/bin/swig/share/swig/4.0.0/python/carrays.i new file mode 100644 index 00000000..74b2be9c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/carrays.i @@ -0,0 +1,13 @@ +%define %array_class(TYPE,NAME) +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "sq_item", functype="ssizeargfunc") NAME::__getitem__; + %feature("python:slot", "sq_ass_item", functype="ssizeobjargproc") NAME::__setitem__; +#endif +%array_class_wrap(TYPE,NAME,__getitem__,__setitem__) +%enddef + +%include + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/ccomplex.i b/macx64/bin/swig/share/swig/4.0.0/python/ccomplex.i new file mode 100644 index 00000000..28872b98 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/ccomplex.i @@ -0,0 +1,26 @@ +/* ----------------------------------------------------------------------------- + * ccomplex.i + * + * C complex typemaps + * ISO C99: 7.3 Complex arithmetic + * ----------------------------------------------------------------------------- */ + + +%include + +%{ +#include +%} + + +/* C complex constructor */ +#define CCplxConst(r, i) ((r) + I*(i)) + +%swig_cplxflt_convn(float complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(double complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(complex, CCplxConst, creal, cimag); + +/* declaring the typemaps */ +%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, complex); diff --git a/macx64/bin/swig/share/swig/4.0.0/python/cdata.i b/macx64/bin/swig/share/swig/4.0.0/python/cdata.i new file mode 100644 index 00000000..36796599 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/cdata.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/cmalloc.i b/macx64/bin/swig/share/swig/4.0.0/python/cmalloc.i new file mode 100644 index 00000000..248f06b9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/cmalloc.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/complex.i b/macx64/bin/swig/share/swig/4.0.0/python/complex.i new file mode 100644 index 00000000..4c3b3c5e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/complex.i @@ -0,0 +1,6 @@ +#ifdef __cplusplus +%include +#else +%include +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/cpointer.i b/macx64/bin/swig/share/swig/4.0.0/python/cpointer.i new file mode 100644 index 00000000..d824792f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/cpointer.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/cstring.i b/macx64/bin/swig/share/swig/4.0.0/python/cstring.i new file mode 100644 index 00000000..ede9c596 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/cstring.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/cwstring.i b/macx64/bin/swig/share/swig/4.0.0/python/cwstring.i new file mode 100644 index 00000000..2824d9c7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/cwstring.i @@ -0,0 +1,3 @@ +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/defarg.swg b/macx64/bin/swig/share/swig/4.0.0/python/defarg.swg new file mode 100644 index 00000000..59450bd8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/defarg.swg @@ -0,0 +1,37 @@ +/* This file defines an internal function for processing default arguments + with proxy classes. + + There seems to be no straightforward way to write proxy functions + involving default arguments. For example : + + def foo(arg1,arg2,*args): + proxyc.foo(arg1,arg2,args) + + This fails because args is now a tuple and SWIG doesn't know what to + do with it. + + This file allows a different approach : + + def foo(arg1,arg2,*args): + proxyc.__call_defarg(proxyc.foo,(arg1,arg2,)+args) + + Basically, we form a new tuple from the object, call this special + __call_defarg method and it passes control to the real wrapper function. + An ugly hack, but it works. +*/ + +SWIGINTERN PyObject *swig_call_defargs(PyObject *self, PyObject *args) { + PyObject *func; + PyObject *parms; + + if (!PyArg_ParseTuple(args, "OO", &func, &parms)) + return NULL; + + if (!PyCallable_Check(func)) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_TypeError, "__call_defarg : Need a callable object!"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + return PyEval_CallObject(func,parms); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/python/director.swg b/macx64/bin/swig/share/swig/4.0.0/python/director.swg new file mode 100644 index 00000000..4bdc94dc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/director.swg @@ -0,0 +1,429 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that Python proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#ifndef SWIG_DIRECTOR_PYTHON_HEADER_ +#define SWIG_DIRECTOR_PYTHON_HEADER_ + +#include +#include +#include +#include +#include + + +/* + Use -DSWIG_PYTHON_DIRECTOR_NO_VTABLE if you don't want to generate a 'virtual + table', and avoid multiple GetAttr calls to retrieve the python + methods. +*/ + +#ifndef SWIG_PYTHON_DIRECTOR_NO_VTABLE +#ifndef SWIG_PYTHON_DIRECTOR_VTABLE +#define SWIG_PYTHON_DIRECTOR_VTABLE +#endif +#endif + + + +/* + Use -DSWIG_DIRECTOR_NO_UEH if you prefer to avoid the use of the + Undefined Exception Handler provided by swig. +*/ +#ifndef SWIG_DIRECTOR_NO_UEH +#ifndef SWIG_DIRECTOR_UEH +#define SWIG_DIRECTOR_UEH +#endif +#endif + + +/* + Use -DSWIG_DIRECTOR_NORTTI if you prefer to avoid the use of the + native C++ RTTI and dynamic_cast<>. But be aware that directors + could stop working when using this option. +*/ +#ifdef SWIG_DIRECTOR_NORTTI +/* + When we don't use the native C++ RTTI, we implement a minimal one + only for Directors. +*/ +# ifndef SWIG_DIRECTOR_RTDIR +# define SWIG_DIRECTOR_RTDIR + +namespace Swig { + class Director; + SWIGINTERN std::map& get_rtdir_map() { + static std::map rtdir_map; + return rtdir_map; + } + + SWIGINTERNINLINE void set_rtdir(void *vptr, Director *rtdir) { + get_rtdir_map()[vptr] = rtdir; + } + + SWIGINTERNINLINE Director *get_rtdir(void *vptr) { + std::map::const_iterator pos = get_rtdir_map().find(vptr); + Director *rtdir = (pos != get_rtdir_map().end()) ? pos->second : 0; + return rtdir; + } +} +# endif /* SWIG_DIRECTOR_RTDIR */ + +# define SWIG_DIRECTOR_CAST(ARG) Swig::get_rtdir(static_cast(ARG)) +# define SWIG_DIRECTOR_RGTR(ARG1, ARG2) Swig::set_rtdir(static_cast(ARG1), ARG2) + +#else + +# define SWIG_DIRECTOR_CAST(ARG) dynamic_cast(ARG) +# define SWIG_DIRECTOR_RGTR(ARG1, ARG2) + +#endif /* SWIG_DIRECTOR_NORTTI */ + +extern "C" { + struct swig_type_info; +} + +namespace Swig { + + /* memory handler */ + struct GCItem { + virtual ~GCItem() {} + + virtual int get_own() const { + return 0; + } + }; + + struct GCItem_var { + GCItem_var(GCItem *item = 0) : _item(item) { + } + + GCItem_var& operator=(GCItem *item) { + GCItem *tmp = _item; + _item = item; + delete tmp; + return *this; + } + + ~GCItem_var() { + delete _item; + } + + GCItem * operator->() const { + return _item; + } + + private: + GCItem *_item; + }; + + struct GCItem_Object : GCItem { + GCItem_Object(int own) : _own(own) { + } + + virtual ~GCItem_Object() { + } + + int get_own() const { + return _own; + } + + private: + int _own; + }; + + template + struct GCItem_T : GCItem { + GCItem_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCItem_T() { + delete _ptr; + } + + private: + Type *_ptr; + }; + + template + struct GCArray_T : GCItem { + GCArray_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCArray_T() { + delete[] _ptr; + } + + private: + Type *_ptr; + }; + + /* base class for director exceptions */ + class DirectorException : public std::exception { + protected: + std::string swig_msg; + public: + DirectorException(PyObject *error, const char *hdr ="", const char *msg ="") : swig_msg(hdr) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (msg[0]) { + swig_msg += " "; + swig_msg += msg; + } + if (!PyErr_Occurred()) { + PyErr_SetString(error, what()); + } + SWIG_PYTHON_THREAD_END_BLOCK; + } + + virtual ~DirectorException() throw() { + } + + /* Deprecated, use what() instead */ + const char *getMessage() const { + return what(); + } + + const char *what() const throw() { + return swig_msg.c_str(); + } + + static void raise(PyObject *error, const char *msg) { + throw DirectorException(error, msg); + } + + static void raise(const char *msg) { + raise(PyExc_RuntimeError, msg); + } + }; + + /* unknown exception handler */ + class UnknownExceptionHandler { +#ifdef SWIG_DIRECTOR_UEH + static void handler() { + try { + throw; + } catch (DirectorException& e) { + std::cerr << "SWIG Director exception caught:" << std::endl + << e.what() << std::endl; + } catch (std::exception& e) { + std::cerr << "std::exception caught: "<< e.what() << std::endl; + } catch (...) { + std::cerr << "Unknown exception caught." << std::endl; + } + + std::cerr << std::endl + << "Python interpreter traceback:" << std::endl; + PyErr_Print(); + std::cerr << std::endl; + + std::cerr << "This exception was caught by the SWIG unexpected exception handler." << std::endl + << "Try using %feature(\"director:except\") to avoid reaching this point." << std::endl + << std::endl + << "Exception is being re-thrown, program will likely abort/terminate." << std::endl; + throw; + } + + public: + + std::unexpected_handler old; + UnknownExceptionHandler(std::unexpected_handler nh = handler) { + old = std::set_unexpected(nh); + } + + ~UnknownExceptionHandler() { + std::set_unexpected(old); + } +#endif + }; + + /* type mismatch in the return value from a python method call */ + class DirectorTypeMismatchException : public DirectorException { + public: + DirectorTypeMismatchException(PyObject *error, const char *msg="") + : DirectorException(error, "SWIG director type mismatch", msg) { + } + + DirectorTypeMismatchException(const char *msg="") + : DirectorException(PyExc_TypeError, "SWIG director type mismatch", msg) { + } + + static void raise(PyObject *error, const char *msg) { + throw DirectorTypeMismatchException(error, msg); + } + + static void raise(const char *msg) { + throw DirectorTypeMismatchException(msg); + } + }; + + /* any python exception that occurs during a director method call */ + class DirectorMethodException : public DirectorException { + public: + DirectorMethodException(const char *msg = "") + : DirectorException(PyExc_RuntimeError, "SWIG director method error.", msg) { + } + + static void raise(const char *msg) { + throw DirectorMethodException(msg); + } + }; + + /* attempt to call a pure virtual method via a director method */ + class DirectorPureVirtualException : public DirectorException { + public: + DirectorPureVirtualException(const char *msg = "") + : DirectorException(PyExc_RuntimeError, "SWIG director pure virtual method called", msg) { + } + + static void raise(const char *msg) { + throw DirectorPureVirtualException(msg); + } + }; + + +#if defined(SWIG_PYTHON_THREADS) +/* __THREAD__ is the old macro to activate some thread support */ +# if !defined(__THREAD__) +# define __THREAD__ 1 +# endif +#endif + +#ifdef __THREAD__ +# include "pythread.h" + class Guard { + PyThread_type_lock &mutex_; + + public: + Guard(PyThread_type_lock & mutex) : mutex_(mutex) { + PyThread_acquire_lock(mutex_, WAIT_LOCK); + } + + ~Guard() { + PyThread_release_lock(mutex_); + } + }; +# define SWIG_GUARD(mutex) Guard _guard(mutex) +#else +# define SWIG_GUARD(mutex) +#endif + + /* director base class */ + class Director { + private: + /* pointer to the wrapped python object */ + PyObject *swig_self; + /* flag indicating whether the object is owned by python or c++ */ + mutable bool swig_disown_flag; + + /* decrement the reference count of the wrapped python object */ + void swig_decref() const { + if (swig_disown_flag) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_DECREF(swig_self); + SWIG_PYTHON_THREAD_END_BLOCK; + } + } + + public: + /* wrap a python object. */ + Director(PyObject *self) : swig_self(self), swig_disown_flag(false) { + } + + /* discard our reference at destruction */ + virtual ~Director() { + swig_decref(); + } + + /* return a pointer to the wrapped python object */ + PyObject *swig_get_self() const { + return swig_self; + } + + /* acquire ownership of the wrapped python object (the sense of "disown" is from python) */ + void swig_disown() const { + if (!swig_disown_flag) { + swig_disown_flag=true; + swig_incref(); + } + } + + /* increase the reference count of the wrapped python object */ + void swig_incref() const { + if (swig_disown_flag) { + Py_INCREF(swig_self); + } + } + + /* methods to implement pseudo protected director members */ + virtual bool swig_get_inner(const char * /* swig_protected_method_name */) const { + return true; + } + + virtual void swig_set_inner(const char * /* swig_protected_method_name */, bool /* swig_val */) const { + } + + /* ownership management */ + private: + typedef std::map swig_ownership_map; + mutable swig_ownership_map swig_owner; +#ifdef __THREAD__ + static PyThread_type_lock swig_mutex_own; +#endif + + public: + template + void swig_acquire_ownership_array(Type *vptr) const { + if (vptr) { + SWIG_GUARD(swig_mutex_own); + swig_owner[vptr] = new GCArray_T(vptr); + } + } + + template + void swig_acquire_ownership(Type *vptr) const { + if (vptr) { + SWIG_GUARD(swig_mutex_own); + swig_owner[vptr] = new GCItem_T(vptr); + } + } + + void swig_acquire_ownership_obj(void *vptr, int own) const { + if (vptr && own) { + SWIG_GUARD(swig_mutex_own); + swig_owner[vptr] = new GCItem_Object(own); + } + } + + int swig_release_ownership(void *vptr) const { + int own = 0; + if (vptr) { + SWIG_GUARD(swig_mutex_own); + swig_ownership_map::iterator iter = swig_owner.find(vptr); + if (iter != swig_owner.end()) { + own = iter->second->get_own(); + swig_owner.erase(iter); + } + } + return own; + } + + template + static PyObject *swig_pyobj_disown(PyObject *pyobj, PyObject *SWIGUNUSEDPARM(args)) { + SwigPyObject *sobj = (SwigPyObject *)pyobj; + sobj->own = 0; + Director *d = SWIG_DIRECTOR_CAST(reinterpret_cast(sobj->ptr)); + if (d) + d->swig_disown(); + return PyWeakref_NewProxy(pyobj, NULL); + } + }; + +#ifdef __THREAD__ + PyThread_type_lock Director::swig_mutex_own = PyThread_allocate_lock(); +#endif +} + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/python/embed.i b/macx64/bin/swig/share/swig/4.0.0/python/embed.i new file mode 100644 index 00000000..efd04878 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/embed.i @@ -0,0 +1,106 @@ +// +// embed.i +// SWIG file embedding the Python interpreter in something else. +// This file is deprecated and no longer actively maintained, but it still +// seems to work with Python 2.7. Status with Python 3 is unknown. +// +// This file makes it possible to extend Python and all of its +// built-in functions without having to hack its setup script. +// + + +#ifdef AUTODOC +%subsection "embed.i" +%text %{ +This module provides support for building a new version of the +Python executable. This will be necessary on systems that do +not support shared libraries and may be necessary with C++ +extensions. This file contains everything you need to build +a new version of Python from include files and libraries normally +installed with the Python language. + +This module will automatically grab all of the Python modules +present in your current Python executable (including any special +purpose modules you have enabled such as Tkinter). Thus, you +may need to provide additional link libraries when compiling. + +As far as I know, this module is C++ safe. +%} +#endif + +%wrapper %{ + +#include + +#ifdef __cplusplus +extern "C" +#endif +void SWIG_init(); /* Forward reference */ + +#define _PyImport_Inittab swig_inittab + +/* Grab Python's inittab[] structure */ + +#ifdef __cplusplus +extern "C" { +#endif +#include + +#undef _PyImport_Inittab + +/* Now define our own version of it. + Hopefully someone does not have more than 1000 built-in modules */ + +struct _inittab SWIG_Import_Inittab[1000]; + +static int swig_num_modules = 0; + +/* Function for adding modules to Python */ + +static void swig_add_module(char *name, void (*initfunc)()) { + SWIG_Import_Inittab[swig_num_modules].name = name; + SWIG_Import_Inittab[swig_num_modules].initfunc = initfunc; + swig_num_modules++; + SWIG_Import_Inittab[swig_num_modules].name = (char *) 0; + SWIG_Import_Inittab[swig_num_modules].initfunc = 0; +} + +/* Function to add all of Python's built-in modules to our interpreter */ + +static void swig_add_builtin() { + int i = 0; + while (swig_inittab[i].name) { + swig_add_module(swig_inittab[i].name, swig_inittab[i].initfunc); + i++; + } +#ifdef SWIGMODINIT + SWIGMODINIT +#endif + /* Add SWIG builtin function */ + swig_add_module(SWIG_name, SWIG_init); +} + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern int Py_Main(int, char **); + +#ifdef __cplusplus +} +#endif + +extern struct _inittab *PyImport_Inittab; + +int +main(int argc, char **argv) { + swig_add_builtin(); + PyImport_Inittab = SWIG_Import_Inittab; + return Py_Main(argc,argv); +} + +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/python/exception.i b/macx64/bin/swig/share/swig/4.0.0/python/exception.i new file mode 100644 index 00000000..bb0b15c9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/exception.i @@ -0,0 +1,6 @@ +%include + + +%insert("runtime") { + %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) +} diff --git a/macx64/bin/swig/share/swig/4.0.0/python/factory.i b/macx64/bin/swig/share/swig/4.0.0/python/factory.i new file mode 100644 index 00000000..46a0a873 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/factory.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/file.i b/macx64/bin/swig/share/swig/4.0.0/python/file.i new file mode 100644 index 00000000..359c34d2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/file.i @@ -0,0 +1,41 @@ +/* ----------------------------------------------------------------------------- + * file.i + * + * Typemaps for FILE* + * ----------------------------------------------------------------------------- */ + +%types(FILE *); + +/* defining basic methods */ +%fragment("SWIG_AsValFilePtr","header") { +SWIGINTERN int +SWIG_AsValFilePtr(PyObject *obj, FILE **val) { + static swig_type_info* desc = 0; + void *vptr = 0; + if (!desc) desc = SWIG_TypeQuery("FILE *"); + if ((SWIG_ConvertPtr(obj, &vptr, desc, 0)) == SWIG_OK) { + if (val) *val = (FILE *)vptr; + return SWIG_OK; + } +%#if PY_VERSION_HEX < 0x03000000 + if (PyFile_Check(obj)) { + if (val) *val = PyFile_AsFile(obj); + return SWIG_OK; + } +%#endif + return SWIG_TypeError; +} +} + + +%fragment("SWIG_AsFilePtr","header",fragment="SWIG_AsValFilePtr") { +SWIGINTERNINLINE FILE* +SWIG_AsFilePtr(PyObject *obj) { + FILE *val = 0; + SWIG_AsValFilePtr(obj, &val); + return val; +} +} + +/* defining the typemaps */ +%typemaps_asval(%checkcode(POINTER), SWIG_AsValFilePtr, "SWIG_AsValFilePtr", FILE*); diff --git a/macx64/bin/swig/share/swig/4.0.0/python/implicit.i b/macx64/bin/swig/share/swig/4.0.0/python/implicit.i new file mode 100644 index 00000000..152c2b05 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/implicit.i @@ -0,0 +1,7 @@ +%include +%include + +#warning "This file provides the %implicit directive, which is an old and fragile" +#warning "way to implement the C++ implicit conversion mechanism." +#warning "Try using the more robust '%implicitconv Type;' directive instead." + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyabc.i b/macx64/bin/swig/share/swig/4.0.0/python/pyabc.i new file mode 100644 index 00000000..fbd91dce --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyabc.i @@ -0,0 +1,10 @@ +%define %pythonabc(Type, Abc) + %feature("python:abc", #Abc) Type; +%enddef +%pythoncode %{import collections.abc%} +%pythonabc(std::vector, collections.abc.MutableSequence); +%pythonabc(std::list, collections.abc.MutableSequence); +%pythonabc(std::map, collections.abc.MutableMapping); +%pythonabc(std::multimap, collections.abc.MutableMapping); +%pythonabc(std::set, collections.abc.MutableSet); +%pythonabc(std::multiset, collections.abc.MutableSet); diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyapi.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyapi.swg new file mode 100644 index 00000000..19e6979b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyapi.swg @@ -0,0 +1,30 @@ +/* ----------------------------------------------------------------------------- + * Python API portion that goes into the runtime + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------------------------------------------------------- + * Constant declarations + * ----------------------------------------------------------------------------- */ + +/* Constant Types */ +#define SWIG_PY_POINTER 4 +#define SWIG_PY_BINARY 5 + +/* Constant information structure */ +typedef struct swig_const_info { + int type; + const char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_const_info; + +#ifdef __cplusplus +} +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pybackward.swg b/macx64/bin/swig/share/swig/4.0.0/python/pybackward.swg new file mode 100644 index 00000000..8305fc78 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pybackward.swg @@ -0,0 +1,45 @@ +/* + adding backward compatibility macros +*/ + +#define SWIG_arg(x...) %arg(x) +#define SWIG_Mangle(x...) %mangle(x) + +#define SWIG_As_frag(Type...) %fragment_name(As, Type) +#define SWIG_As_name(Type...) %symbol_name(As, Type) +#define SWIG_As(Type...) SWIG_As_name(Type) SWIG_AS_CALL_ARGS + +#define SWIG_Check_frag(Type...) %fragment_name(Check, Type) +#define SWIG_Check_name(Type...) %symbol_name(Check, Type) +#define SWIG_Check(Type...) SWIG_Check_name(Type) SWIG_AS_CALL_ARGS + +%define %ascheck_methods(Code, Type...) +%fragment(SWIG_As_frag(Type),"header", fragment=SWIG_AsVal_frag(Type)) { +SWIGINTERNINLINE Type +SWIG_As(Type)(PyObject* obj) +{ + Type v; + int res = SWIG_AsVal(Type)(obj, &v); + if (!SWIG_IsOK(res)) { + /* + this is needed to make valgrind/purify happier. + */ + memset((void*)&v, 0, sizeof(Type)); + SWIG_Error(res, ""); + } + return v; +} +} + +%fragment(SWIG_Check_frag(Type),"header",fragment=SWIG_AsVal_frag(Type)) { +SWIGINTERNINLINE int +SWIG_Check(Type)(PyObject* obj) +{ + int res = SWIG_AsVal(Type)(obj, (Type*)0); + return SWIG_IsOK(res); +} +} +%enddef + +%apply_checkctypes(%ascheck_methods) + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pybuffer.i b/macx64/bin/swig/share/swig/4.0.0/python/pybuffer.i new file mode 100644 index 00000000..577eb69c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pybuffer.i @@ -0,0 +1,121 @@ +/* Implementing buffer protocol typemaps */ + +/* %pybuffer_mutable_binary(TYPEMAP, SIZE) + * + * Macro for functions accept mutable buffer pointer with a size. + * This can be used for both input and output. For example: + * + * %pybuffer_mutable_binary(char *buff, int size); + * void foo(char *buff, int size) { + * for(int i=0; i; + + or as a member variable: + + struct A { + SwigPtr_PyObject obj; + A(PyObject *o) : _obj(o) { + } + }; + + or as a input/output value + + SwigPtr_PyObject func(SwigPtr_PyObject obj) { + SwigPtr_PyObject out = PyString_FromFormat("hello %s", PyObject_AsString(obj)); + Py_DECREF(out); + return out; + } + + just remember to pair the object creation with the proper DECREF, + the same as with plain PyObject *ptr, since SwigPtr_PyObject always add + one reference at construction. + + SwigPtr_PyObject is 'visible' at the wrapped side, so you can do: + + + %template(pyvector) std::vector; + + and all the proper typemaps will be used. + +*/ + +namespace swig { + %ignore SwigPtr_PyObject; + struct SwigPtr_PyObject {}; + %apply PyObject * {SwigPtr_PyObject}; + %apply PyObject * const& {SwigPtr_PyObject const&}; + + %typemap(typecheck,precedence=SWIG_TYPECHECK_SWIGOBJECT,noblock=1) SwigPtr_PyObject const& "$1 = ($input != 0);"; + + + /* For output */ + %typemap(out,noblock=1) SwigPtr_PyObject { + $result = (PyObject *)$1; + Py_INCREF($result); + } + + %typemap(out,noblock=1) SwigPtr_PyObject const & { + $result = (PyObject *)*$1; + Py_INCREF($result); + } + +} + +%{ +namespace swig { + class SwigPtr_PyObject { + protected: + PyObject *_obj; + + public: + SwigPtr_PyObject() :_obj(0) + { + } + + SwigPtr_PyObject(const SwigPtr_PyObject& item) : _obj(item._obj) + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XINCREF(_obj); + SWIG_PYTHON_THREAD_END_BLOCK; + } + + SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj) + { + if (initial_ref) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XINCREF(_obj); + SWIG_PYTHON_THREAD_END_BLOCK; + } + } + + SwigPtr_PyObject & operator=(const SwigPtr_PyObject& item) + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XINCREF(item._obj); + Py_XDECREF(_obj); + _obj = item._obj; + SWIG_PYTHON_THREAD_END_BLOCK; + return *this; + } + + ~SwigPtr_PyObject() + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XDECREF(_obj); + SWIG_PYTHON_THREAD_END_BLOCK; + } + + operator PyObject *() const + { + return _obj; + } + + PyObject *operator->() const + { + return _obj; + } + }; +} +%} + +/* + SwigVar_PyObject is used to manage 'in the scope' PyObject * variables, + as in + + int func () { + SwigVar_PyObject obj = PyString_FromString("hello"); + } + + ie, 'obj' is created and destructed in the same scope from + a python object that carries at least one reference value. + + SwigVar_PyObject just take care of applying the proper Py_DECREF. + + Hence, this class is purely internal and not visible at the wrapped side. + */ +namespace swig { + %ignore SwigVar_PyObject; + struct SwigVar_PyObject {}; + %apply PyObject * {SwigVar_PyObject}; + %apply PyObject * const& {SwigVar_PyObject const&}; +} + +%{ +namespace swig { + struct SwigVar_PyObject : SwigPtr_PyObject { + SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { } + + SwigVar_PyObject & operator = (PyObject* obj) + { + Py_XDECREF(_obj); + _obj = obj; + return *this; + } + }; +} +%} + + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pycomplex.swg b/macx64/bin/swig/share/swig/4.0.0/python/pycomplex.swg new file mode 100644 index 00000000..087c50f9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pycomplex.swg @@ -0,0 +1,86 @@ +/* + Defines the As/From converters for double/float complex, you need to + provide complex Type, the Name you want to use in the converters, + the complex Constructor method, and the Real and Imag complex + accessor methods. + + See the std_complex.i and ccomplex.i for concrete examples. +*/ + +/* the common from converter */ +%define %swig_fromcplx_conv(Type, Real, Imag) +%fragment(SWIG_From_frag(Type),"header") +{ +SWIGINTERNINLINE PyObject* +SWIG_From(Type)(%ifcplusplus(const Type&, Type) c) +{ + return PyComplex_FromDoubles(Real(c), Imag(c)); +} +} +%enddef + +/* the double case */ +%define %swig_cplxdbl_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(double)) +{ +SWIGINTERN int +SWIG_AsVal(Type) (PyObject *o, Type* val) +{ + if (PyComplex_Check(o)) { + if (val) *val = Constructor(PyComplex_RealAsDouble(o), PyComplex_ImagAsDouble(o)); + return SWIG_OK; + } else { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(o, &d)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(d, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +/* the float case */ +%define %swig_cplxflt_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(float)) { +SWIGINTERN int +SWIG_AsVal(Type)(PyObject *o, Type *val) +{ + if (PyComplex_Check(o)) { + double re = PyComplex_RealAsDouble(o); + double im = PyComplex_ImagAsDouble(o); + if ((-FLT_MAX <= re && re <= FLT_MAX) && (-FLT_MAX <= im && im <= FLT_MAX)) { + if (val) *val = Constructor(%numeric_cast(re, float), + %numeric_cast(im, float)); + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else { + float re; + int res = SWIG_AddCast(SWIG_AsVal(float)(o, &re)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(re, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} + +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +#define %swig_cplxflt_convn(Type, Constructor, Real, Imag) \ +%swig_cplxflt_conv(Type, Constructor, Real, Imag) + + +#define %swig_cplxdbl_convn(Type, Constructor, Real, Imag) \ +%swig_cplxdbl_conv(Type, Constructor, Real, Imag) + + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pycontainer.swg b/macx64/bin/swig/share/swig/4.0.0/python/pycontainer.swg new file mode 100644 index 00000000..ef2f725a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pycontainer.swg @@ -0,0 +1,1089 @@ +/* ----------------------------------------------------------------------------- + * pycontainer.swg + * + * Python sequence <-> C++ container wrapper + * + * This wrapper, and its iterator, allows a general use (and reuse) of + * the mapping between C++ and Python, thanks to the C++ templates. + * + * Of course, it needs the C++ compiler to support templates, but + * since we will use this wrapper with the STL containers, that should + * be the case. + * ----------------------------------------------------------------------------- */ + +%{ +#include + +#if PY_VERSION_HEX >= 0x03020000 +# define SWIGPY_SLICE_ARG(obj) ((PyObject*) (obj)) +#else +# define SWIGPY_SLICE_ARG(obj) ((PySliceObject*) (obj)) +#endif +%} + + +#if !defined(SWIG_NO_EXPORT_ITERATOR_METHODS) +# if !defined(SWIG_EXPORT_ITERATOR_METHODS) +# define SWIG_EXPORT_ITERATOR_METHODS SWIG_EXPORT_ITERATOR_METHODS +# endif +#endif + +%include + +/**** The PySequence C++ Wrap ***/ + +%fragment(""); + +%include + +%fragment("container_owner_attribute_init", "init") { + // thread safe initialization + swig::container_owner_attribute(); +} + +%fragment("reference_container_owner", "header", fragment="container_owner_attribute_init") { +namespace swig { + static PyObject* container_owner_attribute() { + static PyObject* attr = SWIG_Python_str_FromChar("__swig_container"); + return attr; + } + + template + struct container_owner { + // By default, do not add the back-reference (for value types) + // Specialization below will check the reference for pointer types. + static bool back_reference(PyObject* child, PyObject* owner) { + return false; + } + }; + + template <> + struct container_owner { + /* + * Call to add a back-reference to the owning object when returning a + * reference from a container. Will only set the reference if child + * is a SWIG wrapper object that does not own the pointer. + * + * returns whether the reference was set or not + */ + static bool back_reference(PyObject* child, PyObject* owner) { + SwigPyObject* swigThis = SWIG_Python_GetSwigThis(child); + if (swigThis && (swigThis->own & SWIG_POINTER_OWN) != SWIG_POINTER_OWN) { + PyObject_SetAttr(child, container_owner_attribute(), owner); + return true; + } + return false; + } + }; +} +} + +%fragment(SWIG_Traits_frag(swig::SwigPtr_PyObject),"header",fragment="StdTraits") { +namespace swig { + template <> struct traits { + typedef value_category category; + static const char* type_name() { return "SwigPtr_PyObject"; } + }; + + template <> struct traits_from { + typedef SwigPtr_PyObject value_type; + static PyObject *from(const value_type& val) { + PyObject *obj = static_cast(val); + Py_XINCREF(obj); + return obj; + } + }; + + template <> + struct traits_check { + static bool check(SwigPtr_PyObject) { + return true; + } + }; + + template <> struct traits_asval { + typedef SwigPtr_PyObject value_type; + static int asval(PyObject *obj, value_type *val) { + if (val) *val = obj; + return SWIG_OK; + } + }; +} +} + +%fragment(SWIG_Traits_frag(swig::SwigVar_PyObject),"header",fragment="StdTraits") { +namespace swig { + template <> struct traits { + typedef value_category category; + static const char* type_name() { return "SwigVar_PyObject"; } + }; + + template <> struct traits_from { + typedef SwigVar_PyObject value_type; + static PyObject *from(const value_type& val) { + PyObject *obj = static_cast(val); + Py_XINCREF(obj); + return obj; + } + }; + + template <> + struct traits_check { + static bool check(SwigVar_PyObject) { + return true; + } + }; + + template <> struct traits_asval { + typedef SwigVar_PyObject value_type; + static int asval(PyObject *obj, value_type *val) { + if (val) *val = obj; + return SWIG_OK; + } + }; +} +} + +%fragment("SwigPySequence_Base","header",fragment="",fragment="StdTraits") +{ +%#include + +namespace std { + template <> + struct less + { + bool + operator()(PyObject * v, PyObject *w) const + { + bool res; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + res = PyObject_RichCompareBool(v, w, Py_LT) ? true : false; + /* This may fall into a case of inconsistent + eg. ObjA > ObjX > ObjB + but ObjA < ObjB + */ + if( PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_TypeError) ) + { + /* Objects can't be compared, this mostly occurred in Python 3.0 */ + /* Compare their ptr directly for a workaround */ + res = (v < w); + PyErr_Clear(); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return res; + } + }; + + template <> + struct less + { + bool + operator()(const swig::SwigPtr_PyObject& v, const swig::SwigPtr_PyObject& w) const + { + return std::less()(v, w); + } + }; + + template <> + struct less + { + bool + operator()(const swig::SwigVar_PyObject& v, const swig::SwigVar_PyObject& w) const + { + return std::less()(v, w); + } + }; + +} + +namespace swig { + template <> struct traits { + typedef value_category category; + static const char* type_name() { return "PyObject *"; } + }; + + template <> struct traits_asval { + typedef PyObject * value_type; + static int asval(PyObject *obj, value_type *val) { + if (val) *val = obj; + return SWIG_OK; + } + }; + + template <> + struct traits_check { + static bool check(PyObject *) { + return true; + } + }; + + template <> struct traits_from { + typedef PyObject * value_type; + static PyObject *from(const value_type& val) { + Py_XINCREF(val); + return val; + } + }; + +} + +namespace swig { + template + inline size_t + check_index(Difference i, size_t size, bool insert = false) { + if ( i < 0 ) { + if ((size_t) (-i) <= size) + return (size_t) (i + size); + } else if ( (size_t) i < size ) { + return (size_t) i; + } else if (insert && ((size_t) i == size)) { + return size; + } + throw std::out_of_range("index out of range"); + } + + template + void + slice_adjust(Difference i, Difference j, Py_ssize_t step, size_t size, Difference &ii, Difference &jj, bool insert = false) { + if (step == 0) { + throw std::invalid_argument("slice step cannot be zero"); + } else if (step > 0) { + // Required range: 0 <= i < size, 0 <= j < size, i <= j + if (i < 0) { + ii = 0; + } else if (i < (Difference)size) { + ii = i; + } else if (insert && (i >= (Difference)size)) { + ii = (Difference)size; + } + if (j < 0) { + jj = 0; + } else { + jj = (j < (Difference)size) ? j : (Difference)size; + } + if (jj < ii) + jj = ii; + } else { + // Required range: -1 <= i < size-1, -1 <= j < size-1, i >= j + if (i < -1) { + ii = -1; + } else if (i < (Difference) size) { + ii = i; + } else if (i >= (Difference)(size-1)) { + ii = (Difference)(size-1); + } + if (j < -1) { + jj = -1; + } else { + jj = (j < (Difference)size ) ? j : (Difference)(size-1); + } + if (ii < jj) + ii = jj; + } + } + + template + inline typename Sequence::iterator + getpos(Sequence* self, Difference i) { + typename Sequence::iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline typename Sequence::const_iterator + cgetpos(const Sequence* self, Difference i) { + typename Sequence::const_iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline void + erase(Sequence* seq, const typename Sequence::iterator& position) { + seq->erase(position); + } + + template + struct traits_reserve { + static void reserve(Sequence & /*seq*/, typename Sequence::size_type /*n*/) { + // This should be specialized for types that support reserve + } + }; + + template + inline Sequence* + getslice(const Sequence* self, Difference i, Difference j, Py_ssize_t step) { + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj); + + if (step > 0) { + typename Sequence::const_iterator sb = self->begin(); + typename Sequence::const_iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + if (step == 1) { + return new Sequence(sb, se); + } else { + Sequence *sequence = new Sequence(); + swig::traits_reserve::reserve(*sequence, (jj - ii + step - 1) / step); + typename Sequence::const_iterator it = sb; + while (it!=se) { + sequence->push_back(*it); + for (Py_ssize_t c=0; c::reserve(*sequence, (ii - jj - step - 1) / -step); + typename Sequence::const_reverse_iterator sb = self->rbegin(); + typename Sequence::const_reverse_iterator se = self->rbegin(); + std::advance(sb,size-ii-1); + std::advance(se,size-jj-1); + typename Sequence::const_reverse_iterator it = sb; + while (it!=se) { + sequence->push_back(*it); + for (Py_ssize_t c=0; c<-step && it!=se; ++c) + it++; + } + return sequence; + } + } + + template + inline void + setslice(Sequence* self, Difference i, Difference j, Py_ssize_t step, const InputSeq& is = InputSeq()) { + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj, true); + if (step > 0) { + if (step == 1) { + size_t ssize = jj - ii; + if (ssize <= is.size()) { + // expanding/staying the same size + swig::traits_reserve::reserve(*self, self->size() - ssize + is.size()); + typename Sequence::iterator sb = self->begin(); + typename InputSeq::const_iterator isit = is.begin(); + std::advance(sb,ii); + std::advance(isit, jj - ii); + self->insert(std::copy(is.begin(), isit, sb), isit, is.end()); + } else { + // shrinking + typename Sequence::iterator sb = self->begin(); + typename Sequence::iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + self->erase(sb,se); + sb = self->begin(); + std::advance(sb,ii); + self->insert(sb, is.begin(), is.end()); + } + } else { + size_t replacecount = (jj - ii + step - 1) / step; + if (is.size() != replacecount) { + char msg[1024]; + sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); + throw std::invalid_argument(msg); + } + typename Sequence::const_iterator isit = is.begin(); + typename Sequence::iterator it = self->begin(); + std::advance(it,ii); + for (size_t rc=0; rcend(); ++rc) { + *it++ = *isit++; + for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) + it++; + } + } + } else { + size_t replacecount = (ii - jj - step - 1) / -step; + if (is.size() != replacecount) { + char msg[1024]; + sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); + throw std::invalid_argument(msg); + } + typename Sequence::const_iterator isit = is.begin(); + typename Sequence::reverse_iterator it = self->rbegin(); + std::advance(it,size-ii-1); + for (size_t rc=0; rcrend(); ++rc) { + *it++ = *isit++; + for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) + it++; + } + } + } + + template + inline void + delslice(Sequence* self, Difference i, Difference j, Py_ssize_t step) { + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj, true); + if (step > 0) { + typename Sequence::iterator sb = self->begin(); + std::advance(sb,ii); + if (step == 1) { + typename Sequence::iterator se = self->begin(); + std::advance(se,jj); + self->erase(sb,se); + } else { + typename Sequence::iterator it = sb; + size_t delcount = (jj - ii + step - 1) / step; + while (delcount) { + it = self->erase(it); + for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) + it++; + delcount--; + } + } + } else { + typename Sequence::reverse_iterator sb = self->rbegin(); + std::advance(sb,size-ii-1); + typename Sequence::reverse_iterator it = sb; + size_t delcount = (ii - jj - step - 1) / -step; + while (delcount) { + it = typename Sequence::reverse_iterator(self->erase((++it).base())); + for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) + it++; + delcount--; + } + } + } +} +} + +%fragment("SwigPySequence_Cont","header", + fragment="StdTraits", + fragment="SwigPySequence_Base", + fragment="SwigPyIterator_T") +{ +namespace swig +{ + template + struct SwigPySequence_Ref + { + SwigPySequence_Ref(PyObject* seq, Py_ssize_t index) + : _seq(seq), _index(index) + { + } + + operator T () const + { + swig::SwigVar_PyObject item = PySequence_GetItem(_seq, _index); + try { + return swig::as(item); + } catch (const std::invalid_argument& e) { + char msg[1024]; + sprintf(msg, "in sequence element %d ", (int)_index); + if (!PyErr_Occurred()) { + ::%type_error(swig::type_name()); + } + SWIG_Python_AddErrorMsg(msg); + SWIG_Python_AddErrorMsg(e.what()); + throw; + } + } + + SwigPySequence_Ref& operator=(const T& v) + { + PySequence_SetItem(_seq, _index, swig::from(v)); + return *this; + } + + private: + PyObject* _seq; + Py_ssize_t _index; + }; + + template + struct SwigPySequence_ArrowProxy + { + SwigPySequence_ArrowProxy(const T& x): m_value(x) {} + const T* operator->() const { return &m_value; } + operator const T*() const { return &m_value; } + T m_value; + }; + + template + struct SwigPySequence_InputIterator + { + typedef SwigPySequence_InputIterator self; + + typedef std::random_access_iterator_tag iterator_category; + typedef Reference reference; + typedef T value_type; + typedef T* pointer; + typedef Py_ssize_t difference_type; + + SwigPySequence_InputIterator() + { + } + + SwigPySequence_InputIterator(PyObject* seq, Py_ssize_t index) + : _seq(seq), _index(index) + { + } + + reference operator*() const + { + return reference(_seq, _index); + } + + SwigPySequence_ArrowProxy + operator->() const { + return SwigPySequence_ArrowProxy(operator*()); + } + + bool operator==(const self& ri) const + { + return (_index == ri._index) && (_seq == ri._seq); + } + + bool operator!=(const self& ri) const + { + return !(operator==(ri)); + } + + self& operator ++ () + { + ++_index; + return *this; + } + + self& operator -- () + { + --_index; + return *this; + } + + self& operator += (difference_type n) + { + _index += n; + return *this; + } + + self operator +(difference_type n) const + { + return self(_seq, _index + n); + } + + self& operator -= (difference_type n) + { + _index -= n; + return *this; + } + + self operator -(difference_type n) const + { + return self(_seq, _index - n); + } + + difference_type operator - (const self& ri) const + { + return _index - ri._index; + } + + bool operator < (const self& ri) const + { + return _index < ri._index; + } + + reference + operator[](difference_type n) const + { + return reference(_seq, _index + n); + } + + private: + PyObject* _seq; + difference_type _index; + }; + + // STL container wrapper around a Python sequence + template + struct SwigPySequence_Cont + { + typedef SwigPySequence_Ref reference; + typedef const SwigPySequence_Ref const_reference; + typedef T value_type; + typedef T* pointer; + typedef Py_ssize_t difference_type; + typedef size_t size_type; + typedef const pointer const_pointer; + typedef SwigPySequence_InputIterator iterator; + typedef SwigPySequence_InputIterator const_iterator; + + SwigPySequence_Cont(PyObject* seq) : _seq(0) + { + if (!PySequence_Check(seq)) { + throw std::invalid_argument("a sequence is expected"); + } + _seq = seq; + Py_INCREF(_seq); + } + + ~SwigPySequence_Cont() + { + Py_XDECREF(_seq); + } + + size_type size() const + { + return static_cast(PySequence_Size(_seq)); + } + + bool empty() const + { + return size() == 0; + } + + iterator begin() + { + return iterator(_seq, 0); + } + + const_iterator begin() const + { + return const_iterator(_seq, 0); + } + + iterator end() + { + return iterator(_seq, size()); + } + + const_iterator end() const + { + return const_iterator(_seq, size()); + } + + reference operator[](difference_type n) + { + return reference(_seq, n); + } + + const_reference operator[](difference_type n) const + { + return const_reference(_seq, n); + } + + bool check(bool set_err = true) const + { + Py_ssize_t s = size(); + for (Py_ssize_t i = 0; i < s; ++i) { + swig::SwigVar_PyObject item = PySequence_GetItem(_seq, i); + if (!swig::check(item)) { + if (set_err) { + char msg[1024]; + sprintf(msg, "in sequence element %d", (int)i); + SWIG_Error(SWIG_RuntimeError, msg); + } + return false; + } + } + return true; + } + + private: + PyObject* _seq; + }; + +} +} + +%define %swig_sequence_iterator(Sequence...) + %swig_sequence_iterator_with_making_function(swig::make_output_iterator,Sequence...) +%enddef + +%define %swig_sequence_forward_iterator(Sequence...) + %swig_sequence_iterator_with_making_function(swig::make_output_forward_iterator,Sequence...) +%enddef + +%define %swig_sequence_iterator_with_making_function(Make_output_iterator,Sequence...) +#if defined(SWIG_EXPORT_ITERATOR_METHODS) + class iterator; + class reverse_iterator; + class const_iterator; + class const_reverse_iterator; + + %typemap(out,noblock=1,fragment="SwigPySequence_Cont") + iterator, reverse_iterator, const_iterator, const_reverse_iterator { + $result = SWIG_NewPointerObj(Make_output_iterator(%static_cast($1,const $type &)), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); + } + %typemap(out,noblock=1,fragment="SwigPySequence_Cont") + std::pair, std::pair { + $result = PyTuple_New(2); + PyTuple_SetItem($result,0,SWIG_NewPointerObj(Make_output_iterator(%static_cast($1,const $type &).first), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN)); + PyTuple_SetItem($result,1,SWIG_NewPointerObj(Make_output_iterator(%static_cast($1,const $type &).second), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN)); + } + + %fragment("SwigPyPairBoolOutputIterator","header",fragment=SWIG_From_frag(bool),fragment="SwigPySequence_Cont") {} + + %typemap(out,noblock=1,fragment="SwigPyPairBoolOutputIterator") + std::pair, std::pair { + $result = PyTuple_New(2); + PyTuple_SetItem($result,0,SWIG_NewPointerObj(Make_output_iterator(%static_cast($1,const $type &).first), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN)); + PyTuple_SetItem($result,1,SWIG_From(bool)(%static_cast($1,const $type &).second)); + } + + %typemap(in,noblock=1,fragment="SwigPySequence_Cont") + iterator(swig::SwigPyIterator *iter = 0, int res), + reverse_iterator(swig::SwigPyIterator *iter = 0, int res), + const_iterator(swig::SwigPyIterator *iter = 0, int res), + const_reverse_iterator(swig::SwigPyIterator *iter = 0, int res) { + res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); + if (!SWIG_IsOK(res) || !iter) { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } else { + swig::SwigPyIterator_T<$type > *iter_t = dynamic_cast *>(iter); + if (iter_t) { + $1 = iter_t->get_current(); + } else { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } + } + } + + %typecheck(%checkcode(ITERATOR),noblock=1,fragment="SwigPySequence_Cont") + iterator, reverse_iterator, const_iterator, const_reverse_iterator { + swig::SwigPyIterator *iter = 0; + int res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); + $1 = (SWIG_IsOK(res) && iter && (dynamic_cast *>(iter) != 0)); + } + + %fragment("SwigPySequence_Cont"); + + %newobject iterator(PyObject **PYTHON_SELF); + %extend { + swig::SwigPyIterator* iterator(PyObject **PYTHON_SELF) { + return Make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "tp_iter", functype="getiterfunc") iterator; +#else + %pythoncode %{def __iter__(self): + return self.iterator()%} +#endif + } + +#endif //SWIG_EXPORT_ITERATOR_METHODS +%enddef + + +/**** The python container methods ****/ + +%define %swig_container_methods(Container...) + +/* deprecated in Python 2 */ +#if 1 + %newobject __getslice__; +#endif + %newobject __getitem__(PySliceObject *slice); + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "nb_nonzero", functype="inquiry") __nonzero__; + %feature("python:slot", "sq_length", functype="lenfunc") __len__; +#endif // SWIGPYTHON_BUILTIN + + %extend { + bool __nonzero__() const { + return !(self->empty()); + } + + /* Alias for Python 3 compatibility */ + bool __bool__() const { + return !(self->empty()); + } + + size_type __len__() const { + return self->size(); + } + + // Although __getitem__, front, back actually use a const value_type& return type, the typemaps below + // use non-const so that they can be easily overridden by users if necessary. + %typemap(ret, fragment="reference_container_owner", noblock=1) value_type& __getitem__, value_type& front, value_type& back { + (void)swig::container_owner::category>::back_reference($result, $self); + } + } +%enddef + + + +%define %swig_sequence_methods_common(Sequence...) + %swig_sequence_iterator(%arg(Sequence)) + %swig_container_methods(%arg(Sequence)) + + %fragment("SwigPySequence_Base"); + +#if defined(SWIGPYTHON_BUILTIN) + //%feature("python:slot", "sq_item", functype="ssizeargfunc") __getitem__; + //%feature("python:slot", "sq_slice", functype="ssizessizeargfunc") __getslice__; + //%feature("python:slot", "sq_ass_item", functype="ssizeobjargproc") __setitem__; + //%feature("python:slot", "sq_ass_slice", functype="ssizessizeobjargproc") __setslice__; + %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__; + %feature("python:slot", "mp_ass_subscript", functype="objobjargproc") __setitem__; +#endif // SWIGPYTHON_BUILTIN + + %extend { + /* typemap for slice object support */ + %typemap(in) PySliceObject* { + if (!PySlice_Check($input)) { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } + $1 = (PySliceObject *) $input; + } + %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) PySliceObject* { + $1 = PySlice_Check($input); + } + +/* deprecated in Python 2 */ +#if 1 + Sequence* __getslice__(difference_type i, difference_type j) throw (std::out_of_range, std::invalid_argument) { + return swig::getslice(self, i, j, 1); + } + + void __setslice__(difference_type i, difference_type j) throw (std::out_of_range, std::invalid_argument) { + swig::setslice(self, i, j, 1, Sequence()); + } + + void __setslice__(difference_type i, difference_type j, const Sequence& v) throw (std::out_of_range, std::invalid_argument) { + swig::setslice(self, i, j, 1, v); + } + + void __delslice__(difference_type i, difference_type j) throw (std::out_of_range, std::invalid_argument) { + swig::delslice(self, i, j, 1); + } +#endif + + void __delitem__(difference_type i) throw (std::out_of_range, std::invalid_argument) { + swig::erase(self, swig::getpos(self, i)); + } + + /* Overloaded methods for Python 3 compatibility + * (Also useful in Python 2.x) + */ + Sequence* __getitem__(PySliceObject *slice) throw (std::out_of_range, std::invalid_argument) { + Py_ssize_t i, j, step; + if( !PySlice_Check(slice) ) { + SWIG_Error(SWIG_TypeError, "Slice object expected."); + return NULL; + } + PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); + Sequence::difference_type id = i; + Sequence::difference_type jd = j; + return swig::getslice(self, id, jd, step); + } + + void __setitem__(PySliceObject *slice, const Sequence& v) throw (std::out_of_range, std::invalid_argument) { + Py_ssize_t i, j, step; + if( !PySlice_Check(slice) ) { + SWIG_Error(SWIG_TypeError, "Slice object expected."); + return; + } + PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); + Sequence::difference_type id = i; + Sequence::difference_type jd = j; + swig::setslice(self, id, jd, step, v); + } + + void __setitem__(PySliceObject *slice) throw (std::out_of_range, std::invalid_argument) { + Py_ssize_t i, j, step; + if( !PySlice_Check(slice) ) { + SWIG_Error(SWIG_TypeError, "Slice object expected."); + return; + } + PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); + Sequence::difference_type id = i; + Sequence::difference_type jd = j; + swig::delslice(self, id, jd, step); + } + + void __delitem__(PySliceObject *slice) throw (std::out_of_range, std::invalid_argument) { + Py_ssize_t i, j, step; + if( !PySlice_Check(slice) ) { + SWIG_Error(SWIG_TypeError, "Slice object expected."); + return; + } + PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); + Sequence::difference_type id = i; + Sequence::difference_type jd = j; + swig::delslice(self, id, jd, step); + } + + } +%enddef + +%define %swig_sequence_methods_non_resizable(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) + %extend { + const value_type& __getitem__(difference_type i) const throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + void __setitem__(difference_type i, const value_type& x) throw (std::out_of_range) { + *(swig::getpos(self,i)) = x; + } + +#if defined(SWIGPYTHON_BUILTIN) + // This will be called through the mp_ass_subscript slot to delete an entry. + void __setitem__(difference_type i) throw (std::out_of_range, std::invalid_argument) { + swig::erase(self, swig::getpos(self, i)); + } +#endif + + } +%enddef + +%define %swig_sequence_methods(Sequence...) + %swig_sequence_methods_non_resizable(%arg(Sequence)) + %extend { + value_type pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty container"); + Sequence::value_type x = self->back(); + self->pop_back(); + return x; + } + + void append(const value_type& x) { + self->push_back(x); + } + } +%enddef + +%define %swig_sequence_methods_non_resizable_val(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) + %extend { + value_type __getitem__(difference_type i) throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + void __setitem__(difference_type i, value_type x) throw (std::out_of_range) { + *(swig::getpos(self,i)) = x; + } + +#if defined(SWIGPYTHON_BUILTIN) + // This will be called through the mp_ass_subscript slot to delete an entry. + void __setitem__(difference_type i) throw (std::out_of_range, std::invalid_argument) { + swig::erase(self, swig::getpos(self, i)); + } +#endif + } +%enddef + +%define %swig_sequence_methods_val(Sequence...) + %swig_sequence_methods_non_resizable_val(%arg(Sequence)) + %extend { + value_type pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty container"); + Sequence::value_type x = self->back(); + self->pop_back(); + return x; + } + + void append(value_type x) { + self->push_back(x); + } + } +%enddef + + + +// +// Common fragments +// + +%fragment("StdSequenceTraits","header", + fragment="StdTraits", + fragment="SwigPySequence_Cont") +{ +namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, Seq* seq) { + // seq->assign(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_asptr_stdseq { + typedef Seq sequence; + typedef T value_type; + + static int asptr(PyObject *obj, sequence **seq) { + if (obj == Py_None || SWIG_Python_GetSwigThis(obj)) { + sequence *p; + swig_type_info *descriptor = swig::type_info(); + if (descriptor && SWIG_IsOK(::SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0))) { + if (seq) *seq = p; + return SWIG_OLDOBJ; + } + } else if (PySequence_Check(obj)) { + try { + SwigPySequence_Cont swigpyseq(obj); + if (seq) { + sequence *pseq = new sequence(); + assign(swigpyseq, pseq); + *seq = pseq; + return SWIG_NEWOBJ; + } else { + return swigpyseq.check() ? SWIG_OK : SWIG_ERROR; + } + } catch (std::exception& e) { + if (seq) { + if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, e.what()); + } + } + return SWIG_ERROR; + } + } + return SWIG_ERROR; + } + }; + + template + struct traits_from_stdseq { + typedef Seq sequence; + typedef T value_type; + typedef typename Seq::size_type size_type; + typedef typename sequence::const_iterator const_iterator; + + static PyObject *from(const sequence& seq) { +%#ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_InternalNewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN); + } +%#endif + size_type size = seq.size(); + if (size <= (size_type)INT_MAX) { + PyObject *obj = PyTuple_New((Py_ssize_t)size); + Py_ssize_t i = 0; + for (const_iterator it = seq.begin(); it != seq.end(); ++it, ++i) { + PyTuple_SetItem(obj,i,swig::from(*it)); + } + return obj; + } else { + PyErr_SetString(PyExc_OverflowError,"sequence size not valid in python"); + return NULL; + } + } + }; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pydocs.swg b/macx64/bin/swig/share/swig/4.0.0/python/pydocs.swg new file mode 100644 index 00000000..1eea41b8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pydocs.swg @@ -0,0 +1,45 @@ + +// Documentation for use with the autodoc feature. + +#ifdef SWIG_DOC_DOXYGEN_STYLE +%typemap(doc) SWIGTYPE "@param $1_name $1_type"; +%typemap(doc) SWIGTYPE * "@param $1_name $1_type"; +%typemap(doc) const SWIGTYPE & "@param $1_name $1_type"; +%typemap(doc) const SWIGTYPE && "@param $1_name $1_type"; +%typemap(doc) enum SWIGTYPE "@param $1_name enum $1_type"; + +%typemap(doc) SWIGTYPE *INOUT, SWIGTYPE &INOUT "@param $1_name $1_type (input/output)"; +%typemap(doc) SWIGTYPE *INPUT, SWIGTYPE &INPUT "@param $1_name $1_type (input)"; +%typemap(doc) SWIGTYPE *OUTPUT, SWIGTYPE &OUTPUT "@param $1_name $1_type (output)"; +#else +%typemap(doc) SWIGTYPE "$1_name: $1_type"; +%typemap(doc) SWIGTYPE * "$1_name: $1_type"; +%typemap(doc) const SWIGTYPE & "$1_name: $1_type"; +%typemap(doc) const SWIGTYPE && "$1_name: $1_type"; +%typemap(doc) enum SWIGTYPE "$1_name: enum $1_type"; + +%typemap(doc) SWIGTYPE *INOUT, SWIGTYPE &INOUT "$1_name: $1_type (input/output)"; +%typemap(doc) SWIGTYPE *INPUT, SWIGTYPE &INPUT "$1_name: $1_type (input)"; +%typemap(doc) SWIGTYPE *OUTPUT, SWIGTYPE &OUTPUT "$1_name: $1_type (output)"; +#endif + + +// Types to use in Python documentation for the parameters of the given C++ type. +%typemap(doctype) bool "boolean"; + +%define int_doctype_for_cppint_type(cppint_type) + %typemap(doctype) cppint_type, unsigned cppint_type "int"; +%enddef +%formacro(int_doctype_for_cppint_type, short, int, long, long long) + +%typemap(doctype) size_t "int"; + +%typemap(doctype) enum SWIGTYPE "int"; + +%typemap(doctype) float, double, long double "float"; + +%typemap(doctype) char*, std::string "string"; + +%typemap(doctype) SWIGTYPE "$1_basetype" +%typemap(doctype) SWIGTYPE * "$typemap(doctype, $*1_ltype)" +%typemap(doctype) SWIGTYPE & "$typemap(doctype, $*1_ltype)" diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyerrors.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyerrors.swg new file mode 100644 index 00000000..dcd99c93 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyerrors.swg @@ -0,0 +1,104 @@ +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIME PyObject* +SWIG_Python_ErrorType(int code) { + PyObject* type = 0; + switch(code) { + case SWIG_MemoryError: + type = PyExc_MemoryError; + break; + case SWIG_IOError: + type = PyExc_IOError; + break; + case SWIG_RuntimeError: + type = PyExc_RuntimeError; + break; + case SWIG_IndexError: + type = PyExc_IndexError; + break; + case SWIG_TypeError: + type = PyExc_TypeError; + break; + case SWIG_DivisionByZero: + type = PyExc_ZeroDivisionError; + break; + case SWIG_OverflowError: + type = PyExc_OverflowError; + break; + case SWIG_SyntaxError: + type = PyExc_SyntaxError; + break; + case SWIG_ValueError: + type = PyExc_ValueError; + break; + case SWIG_SystemError: + type = PyExc_SystemError; + break; + case SWIG_AttributeError: + type = PyExc_AttributeError; + break; + default: + type = PyExc_RuntimeError; + } + return type; +} + + +SWIGRUNTIME void +SWIG_Python_AddErrorMsg(const char* mesg) +{ + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + + if (PyErr_Occurred()) + PyErr_Fetch(&type, &value, &traceback); + if (value) { + PyObject *old_str = PyObject_Str(value); + const char *tmp = SWIG_Python_str_AsChar(old_str); + PyErr_Clear(); + Py_XINCREF(type); + if (tmp) + PyErr_Format(type, "%s %s", tmp, mesg); + else + PyErr_Format(type, "%s", mesg); + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + Py_DECREF(value); + } else { + PyErr_SetString(PyExc_RuntimeError, mesg); + } +} + +SWIGRUNTIME int +SWIG_Python_TypeErrorOccurred(PyObject *obj) +{ + PyObject *error; + if (obj) + return 0; + error = PyErr_Occurred(); + return error && PyErr_GivenExceptionMatches(error, PyExc_TypeError); +} + +SWIGRUNTIME void +SWIG_Python_RaiseOrModifyTypeError(const char *message) +{ + if (SWIG_Python_TypeErrorOccurred(NULL)) { + /* Use existing TypeError to preserve stacktrace and enhance with given message */ + PyObject *newvalue; + PyObject *type = NULL, *value = NULL, *traceback = NULL; + PyErr_Fetch(&type, &value, &traceback); +#if PY_VERSION_HEX >= 0x03000000 + newvalue = PyUnicode_FromFormat("%S\nAdditional information:\n%s", value, message); +#else + newvalue = PyString_FromFormat("%s\nAdditional information:\n%s", PyString_AsString(value), message); +#endif + Py_XDECREF(value); + PyErr_Restore(type, newvalue, traceback); + } else { + /* Raise TypeError using given message */ + PyErr_SetString(PyExc_TypeError, message); + } +} diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyfragments.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyfragments.swg new file mode 100644 index 00000000..535a45bd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyfragments.swg @@ -0,0 +1,23 @@ +/* + + Create a file with this name, 'pyfragments.swg', in your working + directory and add all the %fragments you want to take precedence + over the default ones defined by swig. + + For example, if you add: + + %fragment(SWIG_AsVal_frag(int),"header") { + SWIGINTERNINLINE int + SWIG_AsVal(int)(PyObject *obj, int *val) + { + ; + } + } + + this will replace the code used to retrieve an integer value for all + the typemaps that need it, including: + + int, std::vector, std::list >, etc. + + +*/ diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyhead.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyhead.swg new file mode 100644 index 00000000..c820f901 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyhead.swg @@ -0,0 +1,87 @@ +/* Compatibility macros for Python 3 */ +#if PY_VERSION_HEX >= 0x03000000 + +#define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type) +#define PyInt_Check(x) PyLong_Check(x) +#define PyInt_AsLong(x) PyLong_AsLong(x) +#define PyInt_FromLong(x) PyLong_FromLong(x) +#define PyInt_FromSize_t(x) PyLong_FromSize_t(x) +#define PyString_Check(name) PyBytes_Check(name) +#define PyString_FromString(x) PyUnicode_FromString(x) +#define PyString_Format(fmt, args) PyUnicode_Format(fmt, args) +#define PyString_AsString(str) PyBytes_AsString(str) +#define PyString_Size(str) PyBytes_Size(str) +#define PyString_InternFromString(key) PyUnicode_InternFromString(key) +#define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE +#define PyString_AS_STRING(x) PyUnicode_AS_STRING(x) +#define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x) + +#endif + +#ifndef Py_TYPE +# define Py_TYPE(op) ((op)->ob_type) +#endif + +/* SWIG APIs for compatibility of both Python 2 & 3 */ + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_FromFormat PyUnicode_FromFormat +#else +# define SWIG_Python_str_FromFormat PyString_FromFormat +#endif + + +/* Warning: This function will allocate a new string in Python 3, + * so please call SWIG_Python_str_DelForPy3(x) to free the space. + */ +SWIGINTERN char* +SWIG_Python_str_AsChar(PyObject *str) +{ +#if PY_VERSION_HEX >= 0x03000000 + char *newstr = 0; + str = PyUnicode_AsUTF8String(str); + if (str) { + char *cstr; + Py_ssize_t len; + PyBytes_AsStringAndSize(str, &cstr, &len); + newstr = (char *) malloc(len+1); + memcpy(newstr, cstr, len+1); + Py_XDECREF(str); + } + return newstr; +#else + return PyString_AsString(str); +#endif +} + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_DelForPy3(x) free( (void*) (x) ) +#else +# define SWIG_Python_str_DelForPy3(x) +#endif + + +SWIGINTERN PyObject* +SWIG_Python_str_FromChar(const char *c) +{ +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_FromString(c); +#else + return PyString_FromString(c); +#endif +} + +#ifndef PyObject_DEL +# define PyObject_DEL PyObject_Del +#endif + +// SWIGPY_USE_CAPSULE is no longer used within SWIG itself, but some user +// interface files check for it. +# define SWIGPY_USE_CAPSULE +# define SWIGPY_CAPSULE_NAME ("swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME) + +#if PY_VERSION_HEX < 0x03020000 +#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) +#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) +#define Py_hash_t long +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyinit.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyinit.swg new file mode 100644 index 00000000..dfbf40b3 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyinit.swg @@ -0,0 +1,512 @@ +/* ------------------------------------------------------------ + * The start of the Python initialization function + * ------------------------------------------------------------ */ + +%insert(init) "swiginit.swg" + +#if defined(SWIGPYTHON_BUILTIN) +%fragment(""); // For offsetof +#endif + +%insert(runtime) %{ +#ifdef __cplusplus +extern "C" { +#endif + +/* Method creation and docstring support functions */ + +SWIGINTERN PyMethodDef *SWIG_PythonGetProxyDoc(const char *name); +SWIGINTERN PyObject *SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func); +SWIGINTERN PyObject *SWIG_PyStaticMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func); + +#ifdef __cplusplus +} +#endif +%} + +%init %{ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Python-specific SWIG API */ +#define SWIG_newvarlink() SWIG_Python_newvarlink() +#define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) +#define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) + +/* ----------------------------------------------------------------------------- + * global variable support code. + * ----------------------------------------------------------------------------- */ + +typedef struct swig_globalvar { + char *name; /* Name of global variable */ + PyObject *(*get_attr)(void); /* Return the current value */ + int (*set_attr)(PyObject *); /* Set the value */ + struct swig_globalvar *next; +} swig_globalvar; + +typedef struct swig_varlinkobject { + PyObject_HEAD + swig_globalvar *vars; +} swig_varlinkobject; + +SWIGINTERN PyObject * +swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_InternFromString(""); +#else + return PyString_FromString(""); +#endif +} + +SWIGINTERN PyObject * +swig_varlink_str(swig_varlinkobject *v) { +#if PY_VERSION_HEX >= 0x03000000 + PyObject *str = PyUnicode_InternFromString("("); + PyObject *tail; + PyObject *joined; + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + tail = PyUnicode_FromString(var->name); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + if (var->next) { + tail = PyUnicode_InternFromString(", "); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + } + } + tail = PyUnicode_InternFromString(")"); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; +#else + PyObject *str = PyString_FromString("("); + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + PyString_ConcatAndDel(&str,PyString_FromString(var->name)); + if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); + } + PyString_ConcatAndDel(&str,PyString_FromString(")")); +#endif + return str; +} + +SWIGINTERN void +swig_varlink_dealloc(swig_varlinkobject *v) { + swig_globalvar *var = v->vars; + while (var) { + swig_globalvar *n = var->next; + free(var->name); + free(var); + var = n; + } +} + +SWIGINTERN PyObject * +swig_varlink_getattr(swig_varlinkobject *v, char *n) { + PyObject *res = NULL; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->get_attr)(); + break; + } + var = var->next; + } + if (res == NULL && !PyErr_Occurred()) { + PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n); + } + return res; +} + +SWIGINTERN int +swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { + int res = 1; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->set_attr)(p); + break; + } + var = var->next; + } + if (res == 1 && !PyErr_Occurred()) { + PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n); + } + return res; +} + +SWIGINTERN PyTypeObject* +swig_varlink_type(void) { + static char varlink__doc__[] = "Swig var link object"; + static PyTypeObject varlink_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + "swigvarlink", /* tp_name */ + sizeof(swig_varlinkobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) swig_varlink_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc) swig_varlink_getattr, /* tp_getattr */ + (setattrfunc) swig_varlink_setattr, /* tp_setattr */ + 0, /* tp_compare */ + (reprfunc) swig_varlink_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + (reprfunc) swig_varlink_str, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + 0, /* tp_flags */ + varlink__doc__, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ + 0, /* tp_del */ + 0, /* tp_version_tag */ +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ + 0, /* tp_prev */ + 0 /* tp_next */ +#endif + }; + varlink_type = tmp; + type_init = 1; + if (PyType_Ready(&varlink_type) < 0) + return NULL; + } + return &varlink_type; +} + +/* Create a variable linking object for use later */ +SWIGINTERN PyObject * +SWIG_Python_newvarlink(void) { + swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); + if (result) { + result->vars = 0; + } + return ((PyObject*) result); +} + +SWIGINTERN void +SWIG_Python_addvarlink(PyObject *p, const char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { + swig_varlinkobject *v = (swig_varlinkobject *) p; + swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); + if (gv) { + size_t size = strlen(name)+1; + gv->name = (char *)malloc(size); + if (gv->name) { + memcpy(gv->name, name, size); + gv->get_attr = get_attr; + gv->set_attr = set_attr; + gv->next = v->vars; + } + } + v->vars = gv; +} + +SWIGINTERN PyObject * +SWIG_globals(void) { + static PyObject *globals = 0; + if (!globals) { + globals = SWIG_newvarlink(); + } + return globals; +} + +/* ----------------------------------------------------------------------------- + * constants/methods manipulation + * ----------------------------------------------------------------------------- */ + +/* Install Constants */ +SWIGINTERN void +SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { + PyObject *obj = 0; + size_t i; + for (i = 0; constants[i].type; ++i) { + switch(constants[i].type) { + case SWIG_PY_POINTER: + obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); + break; + case SWIG_PY_BINARY: + obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); + break; + default: + obj = 0; + break; + } + if (obj) { + PyDict_SetItemString(d, constants[i].name, obj); + Py_DECREF(obj); + } + } +} + +/* -----------------------------------------------------------------------------*/ +/* Fix SwigMethods to carry the callback ptrs when needed */ +/* -----------------------------------------------------------------------------*/ + +SWIGINTERN void +SWIG_Python_FixMethods(PyMethodDef *methods, + swig_const_info *const_table, + swig_type_info **types, + swig_type_info **types_initial) { + size_t i; + for (i = 0; methods[i].ml_name; ++i) { + const char *c = methods[i].ml_doc; + if (!c) continue; + c = strstr(c, "swig_ptr: "); + if (c) { + int j; + swig_const_info *ci = 0; + const char *name = c + 10; + for (j = 0; const_table[j].type; ++j) { + if (strncmp(const_table[j].name, name, + strlen(const_table[j].name)) == 0) { + ci = &(const_table[j]); + break; + } + } + if (ci) { + void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; + if (ptr) { + size_t shift = (ci->ptype) - types; + swig_type_info *ty = types_initial[shift]; + size_t ldoc = (c - methods[i].ml_doc); + size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; + char *ndoc = (char*)malloc(ldoc + lptr + 10); + if (ndoc) { + char *buff = ndoc; + memcpy(buff, methods[i].ml_doc, ldoc); + buff += ldoc; + memcpy(buff, "swig_ptr: ", 10); + buff += 10; + SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); + methods[i].ml_doc = ndoc; + } + } + } + } + } +} + +/* ----------------------------------------------------------------------------- + * Method creation and docstring support functions + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * Function to find the method definition with the correct docstring for the + * proxy module as opposed to the low-level API + * ----------------------------------------------------------------------------- */ + +SWIGINTERN PyMethodDef *SWIG_PythonGetProxyDoc(const char *name) { + /* Find the function in the modified method table */ + size_t offset = 0; + int found = 0; + while (SwigMethods_proxydocs[offset].ml_meth != NULL) { + if (strcmp(SwigMethods_proxydocs[offset].ml_name, name) == 0) { + found = 1; + break; + } + offset++; + } + /* Use the copy with the modified docstring if available */ + return found ? &SwigMethods_proxydocs[offset] : NULL; +} + +/* ----------------------------------------------------------------------------- + * Wrapper of PyInstanceMethod_New() used in Python 3 + * It is exported to the generated module, used for -fastproxy + * ----------------------------------------------------------------------------- */ + +SWIGINTERN PyObject *SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) { + if (PyCFunction_Check(func)) { + PyCFunctionObject *funcobj = (PyCFunctionObject *)func; + PyMethodDef *ml = SWIG_PythonGetProxyDoc(funcobj->m_ml->ml_name); + if (ml) + func = PyCFunction_NewEx(ml, funcobj->m_self, funcobj->m_module); + } +#if PY_VERSION_HEX >= 0x03000000 + return PyInstanceMethod_New(func); +#else + return PyMethod_New(func, NULL, NULL); +#endif +} + +/* ----------------------------------------------------------------------------- + * Wrapper of PyStaticMethod_New() + * It is exported to the generated module, used for -fastproxy + * ----------------------------------------------------------------------------- */ + +SWIGINTERN PyObject *SWIG_PyStaticMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) { + if (PyCFunction_Check(func)) { + PyCFunctionObject *funcobj = (PyCFunctionObject *)func; + PyMethodDef *ml = SWIG_PythonGetProxyDoc(funcobj->m_ml->ml_name); + if (ml) + func = PyCFunction_NewEx(ml, funcobj->m_self, funcobj->m_module); + } + return PyStaticMethod_New(func); +} + +#ifdef __cplusplus +} +#endif + +/* -----------------------------------------------------------------------------* + * Partial Init method + * -----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +extern "C" +#endif + +SWIGEXPORT +#if PY_VERSION_HEX >= 0x03000000 + PyObject* +#else + void +#endif +SWIG_init(void) { + PyObject *m, *d, *md, *globals; + +#if PY_VERSION_HEX >= 0x03000000 + static struct PyModuleDef SWIG_module = { + PyModuleDef_HEAD_INIT, + SWIG_name, + NULL, + -1, + SwigMethods, + NULL, + NULL, + NULL, + NULL + }; +#endif + +#if defined(SWIGPYTHON_BUILTIN) + static SwigPyClientData SwigPyObject_clientdata = {0, 0, 0, 0, 0, 0, 0}; + static PyGetSetDef this_getset_def = { + (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL + }; + static SwigPyGetSet thisown_getset_closure = { + SwigPyObject_own, + SwigPyObject_own + }; + static PyGetSetDef thisown_getset_def = { + (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure + }; + PyTypeObject *builtin_pytype; + int builtin_base_count; + swig_type_info *builtin_basetype; + PyObject *tuple; + PyGetSetDescrObject *static_getset; + PyTypeObject *metatype; + PyTypeObject *swigpyobject; + SwigPyClientData *cd; + PyObject *public_interface, *public_symbol; + PyObject *this_descr; + PyObject *thisown_descr; + PyObject *self = 0; + int i; + + (void)builtin_pytype; + (void)builtin_base_count; + (void)builtin_basetype; + (void)tuple; + (void)static_getset; + (void)self; + + /* Metaclass is used to implement static member variables */ + metatype = SwigPyObjectType(); + assert(metatype); +#endif + + (void)globals; + + /* Create singletons now to avoid potential deadlocks with multi-threaded usage after module initialization */ + SWIG_This(); + SWIG_Python_TypeCache(); + SwigPyPacked_type(); +#ifndef SWIGPYTHON_BUILTIN + SwigPyObject_type(); +#endif + + /* Fix SwigMethods to carry the callback ptrs when needed */ + SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); + +#if PY_VERSION_HEX >= 0x03000000 + m = PyModule_Create(&SWIG_module); +#else + m = Py_InitModule(SWIG_name, SwigMethods); +#endif + + md = d = PyModule_GetDict(m); + (void)md; + + SWIG_InitializeModule(0); + +#ifdef SWIGPYTHON_BUILTIN + swigpyobject = SwigPyObject_TypeOnce(); + + SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject"); + assert(SwigPyObject_stype); + cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; + if (!cd) { + SwigPyObject_stype->clientdata = &SwigPyObject_clientdata; + SwigPyObject_clientdata.pytype = swigpyobject; + } else if (swigpyobject->tp_basicsize != cd->pytype->tp_basicsize) { + PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules."); +# if PY_VERSION_HEX >= 0x03000000 + return NULL; +# else + return; +# endif + } + + /* All objects have a 'this' attribute */ + this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def); + (void)this_descr; + + /* All objects have a 'thisown' attribute */ + thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def); + (void)thisown_descr; + + public_interface = PyList_New(0); + public_symbol = 0; + (void)public_symbol; + + PyDict_SetItemString(md, "__all__", public_interface); + Py_DECREF(public_interface); + for (i = 0; SwigMethods[i].ml_name != NULL; ++i) + SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name); + for (i = 0; swig_const_table[i].name != 0; ++i) + SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name); +#endif + + SWIG_InstallConstants(d,swig_const_table); +%} + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyiterators.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyiterators.swg new file mode 100644 index 00000000..cb15e35c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyiterators.swg @@ -0,0 +1,458 @@ +/* ----------------------------------------------------------------------------- + * pyiterators.swg + * + * Implement a python 'output' iterator for Python 2.2 or higher. + * + * Users can derive form the SwigPyIterator to implement their + * own iterators. As an example (real one since we use it for STL/STD + * containers), the template SwigPyIterator_T does the + * implementation for generic C++ iterators. + * ----------------------------------------------------------------------------- */ + +%include + +%fragment("SwigPyIterator","header",fragment="") { +namespace swig { + struct stop_iteration { + }; + + struct SwigPyIterator { + private: + SwigPtr_PyObject _seq; + + protected: + SwigPyIterator(PyObject *seq) : _seq(seq) + { + } + + public: + virtual ~SwigPyIterator() {} + + // Access iterator method, required by Python + virtual PyObject *value() const = 0; + + // Forward iterator method, required by Python + virtual SwigPyIterator *incr(size_t n = 1) = 0; + + // Backward iterator method, very common in C++, but not required in Python + virtual SwigPyIterator *decr(size_t /*n*/ = 1) + { + throw stop_iteration(); + } + + // Random access iterator methods, but not required in Python + virtual ptrdiff_t distance(const SwigPyIterator &/*x*/) const + { + throw std::invalid_argument("operation not supported"); + } + + virtual bool equal (const SwigPyIterator &/*x*/) const + { + throw std::invalid_argument("operation not supported"); + } + + // C++ common/needed methods + virtual SwigPyIterator *copy() const = 0; + + PyObject *next() + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads + PyObject *obj = value(); + incr(); + SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads + return obj; + } + + /* Make an alias for Python 3.x */ + PyObject *__next__() + { + return next(); + } + + PyObject *previous() + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads + decr(); + PyObject *obj = value(); + SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads + return obj; + } + + SwigPyIterator *advance(ptrdiff_t n) + { + return (n > 0) ? incr(n) : decr(-n); + } + + bool operator == (const SwigPyIterator& x) const + { + return equal(x); + } + + bool operator != (const SwigPyIterator& x) const + { + return ! operator==(x); + } + + SwigPyIterator& operator += (ptrdiff_t n) + { + return *advance(n); + } + + SwigPyIterator& operator -= (ptrdiff_t n) + { + return *advance(-n); + } + + SwigPyIterator* operator + (ptrdiff_t n) const + { + return copy()->advance(n); + } + + SwigPyIterator* operator - (ptrdiff_t n) const + { + return copy()->advance(-n); + } + + ptrdiff_t operator - (const SwigPyIterator& x) const + { + return x.distance(*this); + } + + static swig_type_info* descriptor() { + static int init = 0; + static swig_type_info* desc = 0; + if (!init) { + desc = SWIG_TypeQuery("swig::SwigPyIterator *"); + init = 1; + } + return desc; + } + }; + +%#if defined(SWIGPYTHON_BUILTIN) + inline PyObject* make_output_iterator_builtin (PyObject *pyself) + { + Py_INCREF(pyself); + return pyself; + } +%#endif +} +} + +%fragment("SwigPyIterator_T","header",fragment="",fragment="SwigPyIterator",fragment="StdTraits",fragment="StdIteratorTraits") { +namespace swig { + template + class SwigPyIterator_T : public SwigPyIterator + { + public: + typedef OutIterator out_iterator; + typedef typename std::iterator_traits::value_type value_type; + typedef SwigPyIterator_T self_type; + + SwigPyIterator_T(out_iterator curr, PyObject *seq) + : SwigPyIterator(seq), current(curr) + { + } + + const out_iterator& get_current() const + { + return current; + } + + + bool equal (const SwigPyIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return (current == iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + ptrdiff_t distance(const SwigPyIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return std::distance(current, iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + protected: + out_iterator current; + }; + + template + struct from_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v); + } + }; + + template::value_type, + typename FromOper = from_oper > + class SwigPyForwardIteratorOpen_T : public SwigPyIterator_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T base; + typedef SwigPyForwardIteratorOpen_T self_type; + + SwigPyForwardIteratorOpen_T(out_iterator curr, PyObject *seq) + : SwigPyIterator_T(curr, seq) + { + } + + PyObject *value() const { + return from(static_cast(*(base::current))); + } + + SwigPyIterator *copy() const + { + return new self_type(*this); + } + + SwigPyIterator *incr(size_t n = 1) + { + while (n--) { + ++base::current; + } + return this; + } + + }; + + template::value_type, + typename FromOper = from_oper > + class SwigPyIteratorOpen_T : public SwigPyForwardIteratorOpen_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T base; + typedef SwigPyIteratorOpen_T self_type; + + SwigPyIteratorOpen_T(out_iterator curr, PyObject *seq) + : SwigPyForwardIteratorOpen_T(curr, seq) + { + } + + SwigPyIterator *decr(size_t n = 1) + { + while (n--) { + --base::current; + } + return this; + } + }; + + template::value_type, + typename FromOper = from_oper > + class SwigPyForwardIteratorClosed_T : public SwigPyIterator_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T base; + typedef SwigPyForwardIteratorClosed_T self_type; + + SwigPyForwardIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq) + : SwigPyIterator_T(curr, seq), begin(first), end(last) + { + } + + PyObject *value() const { + if (base::current == end) { + throw stop_iteration(); + } else { + return from(static_cast(*(base::current))); + } + } + + SwigPyIterator *copy() const + { + return new self_type(*this); + } + + SwigPyIterator *incr(size_t n = 1) + { + while (n--) { + if (base::current == end) { + throw stop_iteration(); + } else { + ++base::current; + } + } + return this; + } + + protected: + out_iterator begin; + out_iterator end; + }; + + template::value_type, + typename FromOper = from_oper > + class SwigPyIteratorClosed_T : public SwigPyForwardIteratorClosed_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T base; + typedef SwigPyForwardIteratorClosed_T base0; + typedef SwigPyIteratorClosed_T self_type; + + SwigPyIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq) + : SwigPyForwardIteratorClosed_T(curr, first, last, seq) + { + } + + SwigPyIterator *decr(size_t n = 1) + { + while (n--) { + if (base::current == base0::begin) { + throw stop_iteration(); + } else { + --base::current; + } + } + return this; + } + }; + + + template + inline SwigPyIterator* + make_output_forward_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, PyObject *seq = 0) + { + return new SwigPyForwardIteratorClosed_T(current, begin, end, seq); + } + + template + inline SwigPyIterator* + make_output_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, PyObject *seq = 0) + { + return new SwigPyIteratorClosed_T(current, begin, end, seq); + } + + template + inline SwigPyIterator* + make_output_forward_iterator(const OutIter& current, PyObject *seq = 0) + { + return new SwigPyForwardIteratorOpen_T(current, seq); + } + + template + inline SwigPyIterator* + make_output_iterator(const OutIter& current, PyObject *seq = 0) + { + return new SwigPyIteratorOpen_T(current, seq); + } + +} +} + + +%fragment("SwigPyIterator"); +namespace swig +{ + /* + Throw a StopIteration exception + */ + %ignore stop_iteration; + struct stop_iteration {}; + + %typemap(throws) stop_iteration { + (void)$1; + SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); + SWIG_fail; + } + + /* + Mark methods that return new objects + */ + %newobject SwigPyIterator::copy; + %newobject SwigPyIterator::operator + (ptrdiff_t n) const; + %newobject SwigPyIterator::operator - (ptrdiff_t n) const; + + %nodirector SwigPyIterator; + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:tp_iter") SwigPyIterator "&swig::make_output_iterator_builtin"; + %feature("python:slot", "tp_iternext", functype="iternextfunc") SwigPyIterator::__next__; +#else + %extend SwigPyIterator { + %pythoncode %{def __iter__(self): + return self%} + } +#endif + + %catches(swig::stop_iteration) SwigPyIterator::value() const; + %catches(swig::stop_iteration) SwigPyIterator::incr(size_t n = 1); + %catches(swig::stop_iteration) SwigPyIterator::decr(size_t n = 1); + %catches(std::invalid_argument) SwigPyIterator::distance(const SwigPyIterator &x) const; + %catches(std::invalid_argument) SwigPyIterator::equal (const SwigPyIterator &x) const; + %catches(swig::stop_iteration) SwigPyIterator::__next__(); + %catches(swig::stop_iteration) SwigPyIterator::next(); + %catches(swig::stop_iteration) SwigPyIterator::previous(); + %catches(swig::stop_iteration) SwigPyIterator::advance(ptrdiff_t n); + %catches(swig::stop_iteration) SwigPyIterator::operator += (ptrdiff_t n); + %catches(swig::stop_iteration) SwigPyIterator::operator -= (ptrdiff_t n); + %catches(swig::stop_iteration) SwigPyIterator::operator + (ptrdiff_t n) const; + %catches(swig::stop_iteration) SwigPyIterator::operator - (ptrdiff_t n) const; + + struct SwigPyIterator + { + protected: + SwigPyIterator(PyObject *seq); + + public: + virtual ~SwigPyIterator(); + + // Access iterator method, required by Python + virtual PyObject *value() const = 0; + + // Forward iterator method, required by Python + virtual SwigPyIterator *incr(size_t n = 1) = 0; + + // Backward iterator method, very common in C++, but not required in Python + virtual SwigPyIterator *decr(size_t n = 1); + + // Random access iterator methods, but not required in Python + virtual ptrdiff_t distance(const SwigPyIterator &x) const; + + virtual bool equal (const SwigPyIterator &x) const; + + // C++ common/needed methods + virtual SwigPyIterator *copy() const = 0; + + PyObject *next(); + PyObject *__next__(); + PyObject *previous(); + SwigPyIterator *advance(ptrdiff_t n); + + bool operator == (const SwigPyIterator& x) const; + bool operator != (const SwigPyIterator& x) const; + SwigPyIterator& operator += (ptrdiff_t n); + SwigPyIterator& operator -= (ptrdiff_t n); + SwigPyIterator* operator + (ptrdiff_t n) const; + SwigPyIterator* operator - (ptrdiff_t n) const; + ptrdiff_t operator - (const SwigPyIterator& x) const; + }; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pymacros.swg b/macx64/bin/swig/share/swig/4.0.0/python/pymacros.swg new file mode 100644 index 00000000..ab7bace5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pymacros.swg @@ -0,0 +1,4 @@ +%include + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyname_compat.i b/macx64/bin/swig/share/swig/4.0.0/python/pyname_compat.i new file mode 100644 index 00000000..a9630dbe --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyname_compat.i @@ -0,0 +1,85 @@ +/* +* From SWIG 1.3.37 we deprecated all SWIG symbols that start with Py, +* since they are inappropriate and discouraged in Python documentation +* (from http://www.python.org/doc/2.5.2/api/includes.html): +* +* "All user visible names defined by Python.h (except those defined by the included +* standard headers) have one of the prefixes "Py" or "_Py". Names beginning with +* "_Py" are for internal use by the Python implementation and should not be used +* by extension writers. Structure member names do not have a reserved prefix. +* +* Important: user code should never define names that begin with "Py" or "_Py". +* This confuses the reader, and jeopardizes the portability of the user code to +* future Python versions, which may define additional names beginning with one +* of these prefixes." +* +* This file defined macros to provide backward compatibility for these deprecated +* symbols. In the case you have these symbols in your interface file, you can simply +* include this file at beginning of it. +* +* However, this file may be removed in future release of SWIG, so using this file to +* keep these inappropriate names in your SWIG interface file is also not recommended. +* Instead, we provide a simple tool for converting your interface files to +* the new naming convention. You can get the tool from the SWIG distribution: +* Tools/pyname_patch.py +*/ + +%fragment("PySequence_Base", "header", fragment="SwigPySequence_Base") {} +%fragment("PySequence_Cont", "header", fragment="SwigPySequence_Cont") {} +%fragment("PySwigIterator_T", "header", fragment="SwigPyIterator_T") {} +%fragment("PyPairBoolOutputIterator", "header", fragment="SwigPyPairBoolOutputIterator") {} +%fragment("PySwigIterator", "header", fragment="SwigPyIterator") {} +%fragment("PySwigIterator_T", "header", fragment="SwigPyIterator_T") {} + +%inline %{ +#define PyMapIterator_T SwigPyMapIterator_T +#define PyMapKeyIterator_T SwigPyMapKeyIterator_T +#define PyMapValueIterator_T SwigPyMapValueIterator_T +#define PyObject_ptr SwigPtr_PyObject +#define PyObject_var SwigVar_PyObject +#define PyOper SwigPyOper +#define PySeq SwigPySeq +#define PySequence_ArrowProxy SwigPySequence_ArrowProxy +#define PySequence_Cont SwigPySequence_Cont +#define PySequence_InputIterator SwigPySequence_InputIterator +#define PySequence_Ref SwigPySequence_Ref +#define PySwigClientData SwigPyClientData +#define PySwigClientData_Del SwigPyClientData_Del +#define PySwigClientData_New SwigPyClientData_New +#define PySwigIterator SwigPyIterator +#define PySwigIteratorClosed_T SwigPyIteratorClosed_T +#define PySwigIteratorOpen_T SwigPyIteratorOpen_T +#define PySwigIterator_T SwigPyIterator_T +#define PySwigObject SwigPyObject +#define PySwigObject_Check SwigPyObject_Check +#define PySwigObject_GetDesc SwigPyObject_GetDesc +#define PySwigObject_New SwigPyObject_New +#define PySwigObject_acquire SwigPyObject_acquire +#define PySwigObject_append SwigPyObject_append +#define PySwigObject_as_number SwigPyObject_as_number +#define PySwigObject_compare SwigPyObject_compare +#define PySwigObject_dealloc SwigPyObject_dealloc +#define PySwigObject_disown SwigPyObject_disown +#define PySwigObject_format SwigPyObject_format +#define PySwigObject_getattr SwigPyObject_getattr +#define PySwigObject_hex SwigPyObject_hex +#define PySwigObject_long SwigPyObject_long +#define PySwigObject_next SwigPyObject_next +#define PySwigObject_oct SwigPyObject_oct +#define PySwigObject_own SwigPyObject_own +#define PySwigObject_repr SwigPyObject_repr +#define PySwigObject_richcompare SwigPyObject_richcompare +#define PySwigObject_type SwigPyObject_type +#define PySwigPacked SwigPyPacked +#define PySwigPacked_Check SwigPyPacked_Check +#define PySwigPacked_New SwigPyPacked_New +#define PySwigPacked_UnpackData SwigPyPacked_UnpackData +#define PySwigPacked_compare SwigPyPacked_compare +#define PySwigPacked_dealloc SwigPyPacked_dealloc +#define PySwigPacked_repr SwigPyPacked_repr +#define PySwigPacked_str SwigPyPacked_str +#define PySwigPacked_type SwigPyPacked_type +#define pyseq swigpyseq +#define pyswigobject_type swigpyobject_type +#define pyswigpacked_type swigpypacked_type +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyopers.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyopers.swg new file mode 100644 index 00000000..fd2fcc58 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyopers.swg @@ -0,0 +1,264 @@ +/* ------------------------------------------------------------ + * Overloaded operator support + + The directives in this file apply whether or not you use the + -builtin option to SWIG, but operator overloads are particularly + attractive when using -builtin, because they are much faster + than named methods. + + If you're using the -builtin option to SWIG, and you want to define + python operator overloads beyond the defaults defined in this file, + here's what you need to know: + + 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:"), + where is the name of a field in a PyTypeObject, PyNumberMethods, + PyMappingMethods, PySequenceMethods, or PyBufferProcs. For example: + + %feature("python:tp_hash") MyClass "myHashFunc"; + + class MyClass { + public: + ... + }; + + %{ + // Note: Py_hash_t was introduced in Python 3.2 + static Py_hash_t myHashFunc(PyObject *pyobj) { + MyClass *cobj; + // Convert pyobj to cobj + return (cobj->field1 * (cobj->field2 << 7)); + } + %} + + NOTE: It is the responsibility of the programmer (that's you) to ensure + that a statically defined slot function has the correct signature. + + 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; + + class MyClass { + public: + Py_hash_t myHashFunc () const; + ... + }; + + 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-marshall + the arguments before dispatching to the wrapped method. Setting + the "functype" attribute of the feature enables SWIG to generate + a correct closure function. + + -------------------------------------------------------------- + + The tp_richcompare slot is a special case: SWIG automatically generates + a rich compare function for all wrapped types. If a type defines C++ + operator overloads for comparison (operator==, operator<, etc.), they + will be called from the generated rich compare function. If you + want to explicitly choose a method to handle a certain comparison + operation, you may use a different feature, %feature("python:compare") + like this: + + %feature("python:compare", "Py_LT") MyClass::lessThan; + + class MyClass { + public: + bool lessThan(const MyClass& other) const; + ... + }; + + ... where "Py_LT" is one of the rich comparison opcodes defined in the + python header file object.h. + + If there's no method defined to handle a particular comparison operation, + the default behavior is to compare pointer values of the wrapped + C++ objects. + + -------------------------------------------------------------- + + + For more information about python slots, including their names and + signatures, you may refer to the python documentation : + + http://docs.python.org/c-api/typeobj.html + + * ------------------------------------------------------------ */ + + +#ifdef __cplusplus + +#if defined(SWIGPYTHON_BUILTIN) +#define %pybinoperator(pyname,oper,functp,slt) %rename(pyname) oper; %pythonmaybecall oper; %feature("python:slot", #slt, functype=#functp) oper; %feature("python:slot", #slt, functype=#functp) pyname; +#define %pycompare(pyname,oper,comptype) %rename(pyname) oper; %pythonmaybecall oper; %feature("python:compare", #comptype) oper; %feature("python:compare", #comptype) pyname; +#else +#define %pybinoperator(pyname,oper,functp,slt) %rename(pyname) oper; %pythonmaybecall oper +#define %pycompare(pyname,oper,comptype) %pybinoperator(pyname,oper,,comptype) +#endif + +%pybinoperator(__add__, *::operator+, binaryfunc, nb_add); +%pybinoperator(__pos__, *::operator+(), unaryfunc, nb_positive); +%pybinoperator(__pos__, *::operator+() const, unaryfunc, nb_positive); +%pybinoperator(__sub__, *::operator-, binaryfunc, nb_subtract); +%pybinoperator(__neg__, *::operator-(), unaryfunc, nb_negative); +%pybinoperator(__neg__, *::operator-() const, unaryfunc, nb_negative); +%pybinoperator(__mul__, *::operator*, binaryfunc, nb_multiply); +%pybinoperator(__mod__, *::operator%, binaryfunc, nb_remainder); +%pybinoperator(__lshift__, *::operator<<, binaryfunc, nb_lshift); +%pybinoperator(__rshift__, *::operator>>, binaryfunc, nb_rshift); +%pybinoperator(__and__, *::operator&, binaryfunc, nb_and); +%pybinoperator(__or__, *::operator|, binaryfunc, nb_or); +%pybinoperator(__xor__, *::operator^, binaryfunc, nb_xor); +%pycompare(__lt__, *::operator<, Py_LT); +%pycompare(__le__, *::operator<=, Py_LE); +%pycompare(__gt__, *::operator>, Py_GT); +%pycompare(__ge__, *::operator>=, Py_GE); +%pycompare(__eq__, *::operator==, Py_EQ); +%pycompare(__ne__, *::operator!=, Py_NE); + +/* Special cases */ +%rename(__invert__) *::operator~; +%feature("python:slot", "nb_invert", functype="unaryfunc") *::operator~; +%rename(__call__) *::operator(); +%feature("python:slot", "tp_call", functype="ternarycallfunc") *::operator(); + +#if defined(SWIGPYTHON_BUILTIN) +%pybinoperator(__nonzero__, *::operator bool, inquiry, nb_nonzero); +%pybinoperator(__truediv__, *::operator/ , binaryfunc, nb_divide); +#else +%feature("shadow") *::operator bool %{ +def __nonzero__(self): + return $action(self) +__bool__ = __nonzero__ +%}; +%rename(__nonzero__) *::operator bool; +%feature("shadow") *::operator/ %{ +def __truediv__(self, *args): + return $action(self, *args) +__div__ = __truediv__ +%}; +%rename(__truediv__) *::operator/; +%pythonmaybecall *::operator/; +#endif + +/* Ignored operators */ +%ignoreoperator(LNOT) operator!; +%ignoreoperator(LAND) operator&&; +%ignoreoperator(LOR) operator||; +%ignoreoperator(EQ) *::operator=; +%ignoreoperator(PLUSPLUS) *::operator++; +%ignoreoperator(MINUSMINUS) *::operator--; +%ignoreoperator(ARROWSTAR) *::operator->*; +%ignoreoperator(INDEX) *::operator[]; + +/* + Inplace operator declarations. + + They translate the inplace C++ operators (+=, -=, ...) into the + corresponding python equivalents(__iadd__,__isub__), etc, + disabling the ownership of the input 'this' pointer, and assigning + it to the returning object: + + %feature("del") *::Operator; // disables ownership by generating SWIG_POINTER_DISOWN + %feature("new") *::Operator; // claims ownership by generating SWIG_POINTER_OWN + + This makes the most common case safe, ie: + + A& A::operator+=(int i) { ...; return *this; } + ^^^^ ^^^^^^ + + will work fine, even when the resulting python object shares the + 'this' pointer with the input one. The input object is usually + deleted after the operation, including the shared 'this' pointer, + producing 'strange' seg faults, as reported by Lucriz + (lucriz@sitilandia.it). + + If you have an interface that already takes care of that, ie, you + already are using inplace operators and you are not getting + seg. faults, with the new scheme you could end with 'free' elements + that never get deleted (maybe, not sure, it depends). But if that is + the case, you could recover the old behaviour using + + %feature("del","0") A::operator+=; + %feature("new","0") A::operator+=; + + which recovers the old behaviour for the class 'A', or if you are + 100% sure your entire system works fine in the old way, use: + + %feature("del","") *::operator+=; + %feature("new","") *::operator+=; + + The default behaviour assumes that the 'this' pointer's memory is + already owned by the SWIG object; it relinquishes ownership then + takes it back. This may not be the case though as the SWIG object + might be owned by memory managed elsewhere, eg after calling a + function that returns a C++ reference. In such case you will need + to use the features above to recover the old behaviour too. +*/ + +#if defined(SWIGPYTHON_BUILTIN) +#define %pyinplaceoper(SwigPyOper, Oper, functp, slt) %delobject Oper; %newobject Oper; %feature("python:slot", #slt, functype=#functp) Oper; %rename(SwigPyOper) Oper +#else +#define %pyinplaceoper(SwigPyOper, Oper, functp, slt) %delobject Oper; %newobject Oper; %rename(SwigPyOper) Oper +#endif + +%pyinplaceoper(__iadd__ , *::operator +=, binaryfunc, nb_inplace_add); +%pyinplaceoper(__isub__ , *::operator -=, binaryfunc, nb_inplace_subtract); +%pyinplaceoper(__imul__ , *::operator *=, binaryfunc, nb_inplace_multiply); +%pyinplaceoper(__imod__ , *::operator %=, binaryfunc, nb_inplace_remainder); +%pyinplaceoper(__iand__ , *::operator &=, binaryfunc, nb_inplace_and); +%pyinplaceoper(__ior__ , *::operator |=, binaryfunc, nb_inplace_or); +%pyinplaceoper(__ixor__ , *::operator ^=, binaryfunc, nb_inplace_xor); +%pyinplaceoper(__ilshift__, *::operator <<=, binaryfunc, nb_inplace_lshift); +%pyinplaceoper(__irshift__, *::operator >>=, binaryfunc, nb_inplace_rshift); + +/* Special cases */ +#if defined(SWIGPYTHON_BUILTIN) +%pyinplaceoper(__itruediv__ , *::operator /=, binaryfunc, nb_inplace_divide); +#else +%delobject *::operator /=; +%newobject *::operator /=; +%feature("shadow") *::operator /= %{ +def __itruediv__(self, *args): + return $action(self, *args) +__idiv__ = __itruediv__ +%}; +%rename(__itruediv__) *::operator /=; +#endif + +/* Finally, in python we need to mark the binary operations to fail as + 'maybecall' methods */ + +#define %pybinopermaybecall(oper) %pythonmaybecall __ ## oper ## __; %pythonmaybecall __r ## oper ## __ + +%pybinopermaybecall(add); +%pybinopermaybecall(pos); +%pybinopermaybecall(pos); +%pybinopermaybecall(sub); +%pybinopermaybecall(neg); +%pybinopermaybecall(neg); +%pybinopermaybecall(mul); +%pybinopermaybecall(div); +%pybinopermaybecall(truediv); +%pybinopermaybecall(mod); +%pybinopermaybecall(lshift); +%pybinopermaybecall(rshift); +%pybinopermaybecall(and); +%pybinopermaybecall(or); +%pybinopermaybecall(xor); +%pybinopermaybecall(lt); +%pybinopermaybecall(le); +%pybinopermaybecall(gt); +%pybinopermaybecall(ge); +%pybinopermaybecall(eq); +%pybinopermaybecall(ne); + +#endif + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyprimtypes.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyprimtypes.swg new file mode 100644 index 00000000..6a01af17 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyprimtypes.swg @@ -0,0 +1,353 @@ +/* ------------------------------------------------------------ + * Primitive Types + * ------------------------------------------------------------ */ + +/* boolean */ + +%fragment(SWIG_From_frag(bool),"header") { +SWIGINTERNINLINE PyObject* + SWIG_From_dec(bool)(bool value) +{ + return PyBool_FromLong(value ? 1 : 0); +} +} + +#ifdef SWIG_PYTHON_LEGACY_BOOL +// Default prior to SWIG 3.0.0 +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(bool)(PyObject *obj, bool *val) +{ + int r = PyObject_IsTrue(obj); + if (r == -1) + return SWIG_ERROR; + if (val) *val = r ? true : false; + return SWIG_OK; +} +} +#else +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(bool)(PyObject *obj, bool *val) +{ + int r; + if (!PyBool_Check(obj)) + return SWIG_ERROR; + r = PyObject_IsTrue(obj); + if (r == -1) + return SWIG_ERROR; + if (val) *val = r ? true : false; + return SWIG_OK; +} +} +#endif + +/* int */ + +%fragment(SWIG_From_frag(int),"header") { +SWIGINTERNINLINE PyObject* + SWIG_From_dec(int)(int value) +{ + return PyInt_FromLong((long) value); +} +} + +/* unsigned int */ + +%fragment(SWIG_From_frag(unsigned int),"header") { +SWIGINTERNINLINE PyObject* + SWIG_From_dec(unsigned int)(unsigned int value) +{ + return PyInt_FromSize_t((size_t) value); +} +} + +/* long */ + +%fragment(SWIG_From_frag(long),"header") { + %define_as(SWIG_From_dec(long), PyInt_FromLong) +} + +%fragment(SWIG_AsVal_frag(long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(long)(PyObject *obj, long* val) +{ +%#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(obj)) { + if (val) *val = PyInt_AsLong(obj); + return SWIG_OK; + } else +%#endif + if (PyLong_Check(obj)) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + return SWIG_OverflowError; + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + long v = PyInt_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { + if (val) *val = (long)(d); + return res; + } + } + } +%#endif + return SWIG_TypeError; +} +} + +/* unsigned long */ + +%fragment(SWIG_From_frag(unsigned long),"header", + fragment=SWIG_From_frag(long)) { +SWIGINTERNINLINE PyObject* +SWIG_From_dec(unsigned long)(unsigned long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLong(value) : PyInt_FromLong(%numeric_cast(value,long)); +} +} + +%fragment(SWIG_AsVal_frag(unsigned long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(unsigned long)(PyObject *obj, unsigned long *val) +{ +%#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(obj)) { + long v = PyInt_AsLong(obj); + if (v >= 0) { + if (val) *val = v; + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else +%#endif + if (PyLong_Check(obj)) { + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + return SWIG_OverflowError; + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { + if (val) *val = (unsigned long)(d); + return res; + } + } + } +%#endif + return SWIG_TypeError; +} +} + +/* long long */ + +%fragment(SWIG_From_frag(long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE PyObject* +SWIG_From_dec(long long)(long long value) +{ + return ((value < LONG_MIN) || (value > LONG_MAX)) ? + PyLong_FromLongLong(value) : PyInt_FromLong(%numeric_cast(value,long)); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(long long),"header", + fragment=SWIG_AsVal_frag(long), + fragment="SWIG_CanCastAsInteger", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(long long)(PyObject *obj, long long *val) +{ + int res = SWIG_TypeError; + if (PyLong_Check(obj)) { + long long v = PyLong_AsLongLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + res = SWIG_OverflowError; + } + } else { + long v; + res = SWIG_AsVal(long)(obj,&v); + if (SWIG_IsOK(res)) { + if (val) *val = v; + return res; + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + const double mant_max = 1LL << DBL_MANT_DIG; + const double mant_min = -mant_max; + double d; + res = SWIG_AsVal(double)(obj,&d); + if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, mant_min, mant_max)) + return SWIG_OverflowError; + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) { + if (val) *val = (long long)(d); + return SWIG_AddCast(res); + } + res = SWIG_TypeError; + } +%#endif + return res; +} +%#endif +} + +/* unsigned long long */ + +%fragment(SWIG_From_frag(unsigned long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE PyObject* +SWIG_From_dec(unsigned long long)(unsigned long long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLongLong(value) : PyInt_FromLong(%numeric_cast(value,long)); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(unsigned long long),"header", + fragment=SWIG_AsVal_frag(unsigned long), + fragment="SWIG_CanCastAsInteger", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(unsigned long long)(PyObject *obj, unsigned long long *val) +{ + int res = SWIG_TypeError; + if (PyLong_Check(obj)) { + unsigned long long v = PyLong_AsUnsignedLongLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + res = SWIG_OverflowError; + } + } else { + unsigned long v; + res = SWIG_AsVal(unsigned long)(obj,&v); + if (SWIG_IsOK(res)) { + if (val) *val = v; + return res; + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + const double mant_max = 1LL << DBL_MANT_DIG; + double d; + res = SWIG_AsVal(double)(obj,&d); + if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, 0, mant_max)) + return SWIG_OverflowError; + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) { + if (val) *val = (unsigned long long)(d); + return SWIG_AddCast(res); + } + res = SWIG_TypeError; + } +%#endif + return res; +} +%#endif +} + +/* double */ + +%fragment(SWIG_From_frag(double),"header") { + %define_as(SWIG_From_dec(double), PyFloat_FromDouble) +} + +%fragment(SWIG_AsVal_frag(double),"header") { +SWIGINTERN int +SWIG_AsVal_dec(double)(PyObject *obj, double *val) +{ + int res = SWIG_TypeError; + if (PyFloat_Check(obj)) { + if (val) *val = PyFloat_AsDouble(obj); + return SWIG_OK; +%#if PY_VERSION_HEX < 0x03000000 + } else if (PyInt_Check(obj)) { + if (val) *val = (double) PyInt_AsLong(obj); + return SWIG_OK; +%#endif + } else if (PyLong_Check(obj)) { + double v = PyLong_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + double d = PyFloat_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = d; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); + } else { + PyErr_Clear(); + } + } + } +%#endif + return res; +} +} + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyrun.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyrun.swg new file mode 100644 index 00000000..ad1b8196 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyrun.swg @@ -0,0 +1,1573 @@ +/* ----------------------------------------------------------------------------- + * pyrun.swg + * + * This file contains the runtime support for Python modules + * and includes code for managing global variables and pointer + * type checking. + * + * ----------------------------------------------------------------------------- */ + +#if PY_VERSION_HEX < 0x02070000 /* 2.7.0 */ +# error "This version of SWIG only supports Python >= 2.7" +#endif + +#if PY_VERSION_HEX >= 0x03000000 && PY_VERSION_HEX < 0x03020000 +# error "This version of SWIG only supports Python 3 >= 3.2" +#endif + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) +#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) + +#ifdef SWIGPYTHON_BUILTIN +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(self, ptr, type, flags) +#else +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) +#endif + +#define SWIG_InternalNewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) + +#define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) +#define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) +#define swig_owntype int + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(NULL, ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Python_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) +#define SWIG_NewClientData(obj) SwigPyClientData_New(obj) + +#define SWIG_SetErrorObj SWIG_Python_SetErrorObj +#define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg +#define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) +#define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) +#define SWIG_fail goto fail + + +/* Runtime API implementation */ + +/* Error manipulation */ + +SWIGINTERN void +SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetObject(errtype, obj); + Py_DECREF(obj); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +SWIGINTERN void +SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(errtype, msg); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +#define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) + +/* Set a constant value */ + +#if defined(SWIGPYTHON_BUILTIN) + +SWIGINTERN void +SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) { + PyObject *s = PyString_InternFromString(key); + PyList_Append(seq, s); + Py_DECREF(s); +} + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) { + PyDict_SetItemString(d, name, obj); + Py_DECREF(obj); + if (public_interface) + SwigPyBuiltin_AddPublicSymbol(public_interface, name); +} + +#else + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { + PyDict_SetItemString(d, name, obj); + Py_DECREF(obj); +} + +#endif + +/* Append a value to the result obj */ + +SWIGINTERN PyObject* +SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyList_Check(result)) { + PyObject *o2 = result; + result = PyList_New(1); + PyList_SetItem(result, 0, o2); + } + PyList_Append(result,obj); + Py_DECREF(obj); + } + return result; +} + +/* Unpack the argument tuple */ + +SWIGINTERN Py_ssize_t +SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) +{ + if (!args) { + if (!min && !max) { + return 1; + } else { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", + name, (min == max ? "" : "at least "), (int)min); + return 0; + } + } + if (!PyTuple_Check(args)) { + if (min <= 1 && max >= 1) { + Py_ssize_t i; + objs[0] = args; + for (i = 1; i < max; ++i) { + objs[i] = 0; + } + return 2; + } + PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); + return 0; + } else { + Py_ssize_t l = PyTuple_GET_SIZE(args); + if (l < min) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at least "), (int)min, (int)l); + return 0; + } else if (l > max) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at most "), (int)max, (int)l); + return 0; + } else { + Py_ssize_t i; + for (i = 0; i < l; ++i) { + objs[i] = PyTuple_GET_ITEM(args, i); + } + for (; l < max; ++l) { + objs[l] = 0; + } + return i + 1; + } + } +} + +/* A functor is a function object with one single object argument */ +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, (char *)"O", obj); + +/* + Helper for static pointer initialization for both C and C++ code, for example + static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); +*/ +#ifdef __cplusplus +#define SWIG_STATIC_POINTER(var) var +#else +#define SWIG_STATIC_POINTER(var) var = 0; if (!var) var +#endif + +/* ----------------------------------------------------------------------------- + * Pointer declarations + * ----------------------------------------------------------------------------- */ + +/* Flags for new pointer objects */ +#define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) +#define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) + +#define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) + +#define SWIG_BUILTIN_TP_INIT (SWIG_POINTER_OWN << 2) +#define SWIG_BUILTIN_INIT (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN) + +#ifdef __cplusplus +extern "C" { +#endif + +/* The python void return value */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Py_Void(void) +{ + PyObject *none = Py_None; + Py_INCREF(none); + return none; +} + +/* SwigPyClientData */ + +typedef struct { + PyObject *klass; + PyObject *newraw; + PyObject *newargs; + PyObject *destroy; + int delargs; + int implicitconv; + PyTypeObject *pytype; +} SwigPyClientData; + +SWIGRUNTIMEINLINE int +SWIG_Python_CheckImplicit(swig_type_info *ty) +{ + SwigPyClientData *data = (SwigPyClientData *)ty->clientdata; + int fail = data ? data->implicitconv : 0; + if (fail) + PyErr_SetString(PyExc_TypeError, "Implicit conversion is prohibited for explicit constructors."); + return fail; +} + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_ExceptionType(swig_type_info *desc) { + SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0; + PyObject *klass = data ? data->klass : 0; + return (klass ? klass : PyExc_RuntimeError); +} + + +SWIGRUNTIME SwigPyClientData * +SwigPyClientData_New(PyObject* obj) +{ + if (!obj) { + return 0; + } else { + SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData)); + /* the klass element */ + data->klass = obj; + Py_INCREF(data->klass); + /* the newraw method and newargs arguments used to create a new raw instance */ + if (PyClass_Check(obj)) { + data->newraw = 0; + data->newargs = obj; + Py_INCREF(obj); + } else { + data->newraw = PyObject_GetAttrString(data->klass, "__new__"); + if (data->newraw) { + Py_INCREF(data->newraw); + data->newargs = PyTuple_New(1); + PyTuple_SetItem(data->newargs, 0, obj); + } else { + data->newargs = obj; + } + Py_INCREF(data->newargs); + } + /* the destroy method, aka as the C++ delete method */ + data->destroy = PyObject_GetAttrString(data->klass, "__swig_destroy__"); + if (PyErr_Occurred()) { + PyErr_Clear(); + data->destroy = 0; + } + if (data->destroy) { + int flags; + Py_INCREF(data->destroy); + flags = PyCFunction_GET_FLAGS(data->destroy); + data->delargs = !(flags & (METH_O)); + } else { + data->delargs = 0; + } + data->implicitconv = 0; + data->pytype = 0; + return data; + } +} + +SWIGRUNTIME void +SwigPyClientData_Del(SwigPyClientData *data) { + Py_XDECREF(data->newraw); + Py_XDECREF(data->newargs); + Py_XDECREF(data->destroy); +} + +/* =============== SwigPyObject =====================*/ + +typedef struct { + PyObject_HEAD + void *ptr; + swig_type_info *ty; + int own; + PyObject *next; +#ifdef SWIGPYTHON_BUILTIN + PyObject *dict; +#endif +} SwigPyObject; + + +#ifdef SWIGPYTHON_BUILTIN + +SWIGRUNTIME PyObject * +SwigPyObject_get___dict__(PyObject *v, PyObject *SWIGUNUSEDPARM(args)) +{ + SwigPyObject *sobj = (SwigPyObject *)v; + + if (!sobj->dict) + sobj->dict = PyDict_New(); + + Py_INCREF(sobj->dict); + return sobj->dict; +} + +#endif + +SWIGRUNTIME PyObject * +SwigPyObject_long(SwigPyObject *v) +{ + return PyLong_FromVoidPtr(v->ptr); +} + +SWIGRUNTIME PyObject * +SwigPyObject_format(const char* fmt, SwigPyObject *v) +{ + PyObject *res = NULL; + PyObject *args = PyTuple_New(1); + if (args) { + if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) { + PyObject *ofmt = SWIG_Python_str_FromChar(fmt); + if (ofmt) { +#if PY_VERSION_HEX >= 0x03000000 + res = PyUnicode_Format(ofmt,args); +#else + res = PyString_Format(ofmt,args); +#endif + Py_DECREF(ofmt); + } + Py_DECREF(args); + } + } + return res; +} + +SWIGRUNTIME PyObject * +SwigPyObject_oct(SwigPyObject *v) +{ + return SwigPyObject_format("%o",v); +} + +SWIGRUNTIME PyObject * +SwigPyObject_hex(SwigPyObject *v) +{ + return SwigPyObject_format("%x",v); +} + +SWIGRUNTIME PyObject * +SwigPyObject_repr(SwigPyObject *v) +{ + const char *name = SWIG_TypePrettyName(v->ty); + PyObject *repr = SWIG_Python_str_FromFormat("", (name ? name : "unknown"), (void *)v); + if (v->next) { + PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); +# if PY_VERSION_HEX >= 0x03000000 + PyObject *joined = PyUnicode_Concat(repr, nrep); + Py_DecRef(repr); + Py_DecRef(nrep); + repr = joined; +# else + PyString_ConcatAndDel(&repr,nrep); +# endif + } + return repr; +} + +/* We need a version taking two PyObject* parameters so it's a valid + * PyCFunction to use in swigobject_methods[]. */ +SWIGRUNTIME PyObject * +SwigPyObject_repr2(PyObject *v, PyObject *SWIGUNUSEDPARM(args)) +{ + return SwigPyObject_repr((SwigPyObject*)v); +} + +SWIGRUNTIME int +SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) +{ + void *i = v->ptr; + void *j = w->ptr; + return (i < j) ? -1 : ((i > j) ? 1 : 0); +} + +/* Added for Python 3.x, would it also be useful for Python 2.x? */ +SWIGRUNTIME PyObject* +SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op) +{ + PyObject* res; + if( op != Py_EQ && op != Py_NE ) { + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0); + return res; +} + + +SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void); + +#ifdef SWIGPYTHON_BUILTIN +static swig_type_info *SwigPyObject_stype = 0; +SWIGRUNTIME PyTypeObject* +SwigPyObject_type(void) { + SwigPyClientData *cd; + assert(SwigPyObject_stype); + cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; + assert(cd); + assert(cd->pytype); + return cd->pytype; +} +#else +SWIGRUNTIME PyTypeObject* +SwigPyObject_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce(); + return type; +} +#endif + +SWIGRUNTIMEINLINE int +SwigPyObject_Check(PyObject *op) { +#ifdef SWIGPYTHON_BUILTIN + PyTypeObject *target_tp = SwigPyObject_type(); + if (PyType_IsSubtype(op->ob_type, target_tp)) + return 1; + return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0); +#else + return (Py_TYPE(op) == SwigPyObject_type()) + || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0); +#endif +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own); + +SWIGRUNTIME void +SwigPyObject_dealloc(PyObject *v) +{ + SwigPyObject *sobj = (SwigPyObject *) v; + PyObject *next = sobj->next; + if (sobj->own == SWIG_POINTER_OWN) { + swig_type_info *ty = sobj->ty; + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + PyObject *destroy = data ? data->destroy : 0; + if (destroy) { + /* destroy is always a VARARGS method */ + PyObject *res; + + /* PyObject_CallFunction() has the potential to silently drop + the active exception. In cases of unnamed temporary + variable or where we just finished iterating over a generator + StopIteration will be active right now, and this needs to + remain true upon return from SwigPyObject_dealloc. So save + and restore. */ + + PyObject *type = NULL, *value = NULL, *traceback = NULL; + PyErr_Fetch(&type, &value, &traceback); + + if (data->delargs) { + /* we need to create a temporary object to carry the destroy operation */ + PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0); + res = SWIG_Python_CallFunctor(destroy, tmp); + Py_DECREF(tmp); + } else { + PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); + PyObject *mself = PyCFunction_GET_SELF(destroy); + res = ((*meth)(mself, v)); + } + if (!res) + PyErr_WriteUnraisable(destroy); + + PyErr_Restore(type, value, traceback); + + Py_XDECREF(res); + } +#if !defined(SWIG_PYTHON_SILENT_MEMLEAK) + else { + const char *name = SWIG_TypePrettyName(ty); + printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); + } +#endif + } + Py_XDECREF(next); + PyObject_DEL(v); +} + +SWIGRUNTIME PyObject* +SwigPyObject_append(PyObject* v, PyObject* next) +{ + SwigPyObject *sobj = (SwigPyObject *) v; + if (!SwigPyObject_Check(next)) { + PyErr_SetString(PyExc_TypeError, "Attempt to append a non SwigPyObject"); + return NULL; + } + sobj->next = next; + Py_INCREF(next); + return SWIG_Py_Void(); +} + +SWIGRUNTIME PyObject* +SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +{ + SwigPyObject *sobj = (SwigPyObject *) v; + if (sobj->next) { + Py_INCREF(sobj->next); + return sobj->next; + } else { + return SWIG_Py_Void(); + } +} + +SWIGINTERN PyObject* +SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = 0; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = SWIG_POINTER_OWN; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +SwigPyObject_own(PyObject *v, PyObject *args) +{ + PyObject *val = 0; + if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) { + return NULL; + } else { + SwigPyObject *sobj = (SwigPyObject *)v; + PyObject *obj = PyBool_FromLong(sobj->own); + if (val) { + if (PyObject_IsTrue(val)) { + SwigPyObject_acquire(v,args); + } else { + SwigPyObject_disown(v,args); + } + } + return obj; + } +} + +static PyMethodDef +swigobject_methods[] = { + {"disown", SwigPyObject_disown, METH_NOARGS, "releases ownership of the pointer"}, + {"acquire", SwigPyObject_acquire, METH_NOARGS, "acquires ownership of the pointer"}, + {"own", SwigPyObject_own, METH_VARARGS, "returns/sets ownership of the pointer"}, + {"append", SwigPyObject_append, METH_O, "appends another 'this' object"}, + {"next", SwigPyObject_next, METH_NOARGS, "returns the next 'this' object"}, + {"__repr__",SwigPyObject_repr2, METH_NOARGS, "returns object representation"}, + {0, 0, 0, 0} +}; + +SWIGRUNTIME PyTypeObject* +SwigPyObject_TypeOnce(void) { + static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; + + static PyNumberMethods SwigPyObject_as_number = { + (binaryfunc)0, /*nb_add*/ + (binaryfunc)0, /*nb_subtract*/ + (binaryfunc)0, /*nb_multiply*/ + /* nb_divide removed in Python 3 */ +#if PY_VERSION_HEX < 0x03000000 + (binaryfunc)0, /*nb_divide*/ +#endif + (binaryfunc)0, /*nb_remainder*/ + (binaryfunc)0, /*nb_divmod*/ + (ternaryfunc)0,/*nb_power*/ + (unaryfunc)0, /*nb_negative*/ + (unaryfunc)0, /*nb_positive*/ + (unaryfunc)0, /*nb_absolute*/ + (inquiry)0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ +#if PY_VERSION_HEX < 0x03000000 + 0, /*nb_coerce*/ +#endif + (unaryfunc)SwigPyObject_long, /*nb_int*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_long, /*nb_long*/ +#else + 0, /*nb_reserved*/ +#endif + (unaryfunc)0, /*nb_float*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_oct, /*nb_oct*/ + (unaryfunc)SwigPyObject_hex, /*nb_hex*/ +#endif +#if PY_VERSION_HEX >= 0x03050000 /* 3.5 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_matrix_multiply */ +#elif PY_VERSION_HEX >= 0x03000000 /* 3.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */ +#else + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ +#endif + }; + + static PyTypeObject swigpyobject_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + "SwigPyObject", /* tp_name */ + sizeof(SwigPyObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyObject_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX >= 0x03000000 + 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */ +#else + (cmpfunc)SwigPyObject_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyObject_repr, /* tp_repr */ + &SwigPyObject_as_number, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigobject_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + swigobject_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ + 0, /* tp_del */ + 0, /* tp_version_tag */ +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ + 0, /* tp_prev */ + 0 /* tp_next */ +#endif + }; + swigpyobject_type = tmp; + type_init = 1; + if (PyType_Ready(&swigpyobject_type) < 0) + return NULL; + } + return &swigpyobject_type; +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own) +{ + SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type()); + if (sobj) { + sobj->ptr = ptr; + sobj->ty = ty; + sobj->own = own; + sobj->next = 0; + } + return (PyObject *)sobj; +} + +/* ----------------------------------------------------------------------------- + * Implements a simple Swig Packed type, and use it instead of string + * ----------------------------------------------------------------------------- */ + +typedef struct { + PyObject_HEAD + void *pack; + swig_type_info *ty; + size_t size; +} SwigPyPacked; + +SWIGRUNTIME PyObject * +SwigPyPacked_repr(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { + return SWIG_Python_str_FromFormat("", result, v->ty->name); + } else { + return SWIG_Python_str_FromFormat("", v->ty->name); + } +} + +SWIGRUNTIME PyObject * +SwigPyPacked_str(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ + return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name); + } else { + return SWIG_Python_str_FromChar(v->ty->name); + } +} + +SWIGRUNTIME int +SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w) +{ + size_t i = v->size; + size_t j = w->size; + int s = (i < j) ? -1 : ((i > j) ? 1 : 0); + return s ? s : strncmp((const char *)v->pack, (const char *)w->pack, 2*v->size); +} + +SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void); + +SWIGRUNTIME PyTypeObject* +SwigPyPacked_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce(); + return type; +} + +SWIGRUNTIMEINLINE int +SwigPyPacked_Check(PyObject *op) { + return ((op)->ob_type == SwigPyPacked_TypeOnce()) + || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0); +} + +SWIGRUNTIME void +SwigPyPacked_dealloc(PyObject *v) +{ + if (SwigPyPacked_Check(v)) { + SwigPyPacked *sobj = (SwigPyPacked *) v; + free(sobj->pack); + } + PyObject_DEL(v); +} + +SWIGRUNTIME PyTypeObject* +SwigPyPacked_TypeOnce(void) { + static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; + static PyTypeObject swigpypacked_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX>=0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + "SwigPyPacked", /* tp_name */ + sizeof(SwigPyPacked), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX>=0x03000000 + 0, /* tp_reserved in 3.0.1 */ +#else + (cmpfunc)SwigPyPacked_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyPacked_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + (reprfunc)SwigPyPacked_str, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigpacked_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ + 0, /* tp_del */ + 0, /* tp_version_tag */ +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ + 0, /* tp_prev */ + 0 /* tp_next */ +#endif + }; + swigpypacked_type = tmp; + type_init = 1; + if (PyType_Ready(&swigpypacked_type) < 0) + return NULL; + } + return &swigpypacked_type; +} + +SWIGRUNTIME PyObject * +SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty) +{ + SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type()); + if (sobj) { + void *pack = malloc(size); + if (pack) { + memcpy(pack, ptr, size); + sobj->pack = pack; + sobj->ty = ty; + sobj->size = size; + } else { + PyObject_DEL((PyObject *) sobj); + sobj = 0; + } + } + return (PyObject *) sobj; +} + +SWIGRUNTIME swig_type_info * +SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size) +{ + if (SwigPyPacked_Check(obj)) { + SwigPyPacked *sobj = (SwigPyPacked *)obj; + if (sobj->size != size) return 0; + memcpy(ptr, sobj->pack, size); + return sobj->ty; + } else { + return 0; + } +} + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +static PyObject *Swig_This_global = NULL; + +SWIGRUNTIME PyObject * +SWIG_This(void) +{ + if (Swig_This_global == NULL) + Swig_This_global = SWIG_Python_str_FromChar("this"); + return Swig_This_global; +} + +/* #define SWIG_PYTHON_SLOW_GETSET_THIS */ + +/* TODO: I don't know how to implement the fast getset in Python 3 right now */ +#if PY_VERSION_HEX>=0x03000000 +#define SWIG_PYTHON_SLOW_GETSET_THIS +#endif + +SWIGRUNTIME SwigPyObject * +SWIG_Python_GetSwigThis(PyObject *pyobj) +{ + PyObject *obj; + + if (SwigPyObject_Check(pyobj)) + return (SwigPyObject *) pyobj; + +#ifdef SWIGPYTHON_BUILTIN + (void)obj; +# ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + pyobj = PyWeakref_GET_OBJECT(pyobj); + if (pyobj && SwigPyObject_Check(pyobj)) + return (SwigPyObject*) pyobj; + } +# endif + return NULL; +#else + + obj = 0; + +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + if (PyInstance_Check(pyobj)) { + obj = _PyInstance_Lookup(pyobj, SWIG_This()); + } else { + PyObject **dictptr = _PyObject_GetDictPtr(pyobj); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; + } else { +#ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); + return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; + } +#endif + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } + } + } +#else + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } +#endif + if (obj && !SwigPyObject_Check(obj)) { + /* a PyObject is called 'this', try to get the 'real this' + SwigPyObject from it */ + return SWIG_Python_GetSwigThis(obj); + } + return (SwigPyObject *)obj; +#endif +} + +/* Acquire a pointer value */ + +SWIGRUNTIME int +SWIG_Python_AcquirePtr(PyObject *obj, int own) { + if (own == SWIG_POINTER_OWN) { + SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); + if (sobj) { + int oldown = sobj->own; + sobj->own = own; + return oldown; + } + } + return 0; +} + +/* Convert a pointer value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { + int res; + SwigPyObject *sobj; + int implicit_conv = (flags & SWIG_POINTER_IMPLICIT_CONV) != 0; + + if (!obj) + return SWIG_ERROR; + if (obj == Py_None && !implicit_conv) { + if (ptr) + *ptr = 0; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } + + res = SWIG_ERROR; + + sobj = SWIG_Python_GetSwigThis(obj); + if (own) + *own = 0; + while (sobj) { + void *vptr = sobj->ptr; + if (ty) { + swig_type_info *to = sobj->ty; + if (to == ty) { + /* no type cast needed */ + if (ptr) *ptr = vptr; + break; + } else { + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) { + sobj = (SwigPyObject *)sobj->next; + } else { + if (ptr) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + if (newmemory == SWIG_CAST_NEW_MEMORY) { + assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ + if (own) + *own = *own | SWIG_CAST_NEW_MEMORY; + } + } + break; + } + } + } else { + if (ptr) *ptr = vptr; + break; + } + } + if (sobj) { + if (own) + *own = *own | sobj->own; + if (flags & SWIG_POINTER_DISOWN) { + sobj->own = 0; + } + res = SWIG_OK; + } else { + if (implicit_conv) { + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + if (data && !data->implicitconv) { + PyObject *klass = data->klass; + if (klass) { + PyObject *impconv; + data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ + impconv = SWIG_Python_CallFunctor(klass, obj); + data->implicitconv = 0; + if (PyErr_Occurred()) { + PyErr_Clear(); + impconv = 0; + } + if (impconv) { + SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv); + if (iobj) { + void *vptr; + res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); + if (SWIG_IsOK(res)) { + if (ptr) { + *ptr = vptr; + /* transfer the ownership to 'ptr' */ + iobj->own = 0; + res = SWIG_AddCast(res); + res = SWIG_AddNewMask(res); + } else { + res = SWIG_AddCast(res); + } + } + } + Py_DECREF(impconv); + } + } + } + if (!SWIG_IsOK(res) && obj == Py_None) { + if (ptr) + *ptr = 0; + if (PyErr_Occurred()) + PyErr_Clear(); + res = SWIG_OK; + } + } + } + return res; +} + +/* Convert a function ptr value */ + +SWIGRUNTIME int +SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { + if (!PyCFunction_Check(obj)) { + return SWIG_ConvertPtr(obj, ptr, ty, 0); + } else { + void *vptr = 0; + swig_cast_info *tc; + + /* here we get the method pointer for callbacks */ + const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); + const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; + if (desc) + desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; + if (!desc) + return SWIG_ERROR; + tc = SWIG_TypeCheck(desc,ty); + if (tc) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } else { + return SWIG_ERROR; + } + return SWIG_OK; + } +} + +/* Convert a packed pointer value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { + swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz); + if (!to) return SWIG_ERROR; + if (ty) { + if (to != ty) { + /* check type cast? */ + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) return SWIG_ERROR; + } + } + return SWIG_OK; +} + +/* ----------------------------------------------------------------------------- + * Create a new pointer object + * ----------------------------------------------------------------------------- */ + +/* + Create a new instance object, without calling __init__, and set the + 'this' attribute. +*/ + +SWIGRUNTIME PyObject* +SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this) +{ + PyObject *inst = 0; + PyObject *newraw = data->newraw; + if (newraw) { + inst = PyObject_Call(newraw, data->newargs, NULL); + if (inst) { +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + PyDict_SetItem(dict, SWIG_This(), swig_this); + } + } +#else + PyObject *key = SWIG_This(); + PyObject_SetAttr(inst, key, swig_this); +#endif + } + } else { +#if PY_VERSION_HEX >= 0x03000000 + PyObject *empty_args = PyTuple_New(0); + if (empty_args) { + PyObject *empty_kwargs = PyDict_New(); + if (empty_kwargs) { + inst = ((PyTypeObject *)data->newargs)->tp_new((PyTypeObject *)data->newargs, empty_args, empty_kwargs); + Py_DECREF(empty_kwargs); + if (inst) { + PyObject_SetAttr(inst, SWIG_This(), swig_this); + Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG; + } + } + Py_DECREF(empty_args); + } +#else + PyObject *dict = PyDict_New(); + if (dict) { + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); + } +#endif + } + return inst; +} + +SWIGRUNTIME void +SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) +{ + PyObject *dict; +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + } + PyDict_SetItem(dict, SWIG_This(), swig_this); + return; + } +#endif + dict = PyObject_GetAttrString(inst, "__dict__"); + PyDict_SetItem(dict, SWIG_This(), swig_this); + Py_DECREF(dict); +} + + +SWIGINTERN PyObject * +SWIG_Python_InitShadowInstance(PyObject *args) { + PyObject *obj[2]; + if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) { + return NULL; + } else { + SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]); + if (sthis) { + SwigPyObject_append((PyObject*) sthis, obj[1]); + } else { + SWIG_Python_SetSwigThis(obj[0], obj[1]); + } + return SWIG_Py_Void(); + } +} + +/* Create a new pointer object */ + +SWIGRUNTIME PyObject * +SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) { + SwigPyClientData *clientdata; + PyObject * robj; + int own; + + if (!ptr) + return SWIG_Py_Void(); + + clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0; + own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; + if (clientdata && clientdata->pytype) { + SwigPyObject *newobj; + if (flags & SWIG_BUILTIN_TP_INIT) { + newobj = (SwigPyObject*) self; + if (newobj->ptr) { + PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0); + while (newobj->next) + newobj = (SwigPyObject *) newobj->next; + newobj->next = next_self; + newobj = (SwigPyObject *)next_self; +#ifdef SWIGPYTHON_BUILTIN + newobj->dict = 0; +#endif + } + } else { + newobj = PyObject_New(SwigPyObject, clientdata->pytype); +#ifdef SWIGPYTHON_BUILTIN + newobj->dict = 0; +#endif + } + if (newobj) { + newobj->ptr = ptr; + newobj->ty = type; + newobj->own = own; + newobj->next = 0; + return (PyObject*) newobj; + } + return SWIG_Py_Void(); + } + + assert(!(flags & SWIG_BUILTIN_TP_INIT)); + + robj = SwigPyObject_New(ptr, type, own); + if (robj && clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { + PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); + Py_DECREF(robj); + robj = inst; + } + return robj; +} + +/* Create a new packed object */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { + return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); +} + +/* -----------------------------------------------------------------------------* + * Get type list + * -----------------------------------------------------------------------------*/ + +#ifdef SWIG_LINK_RUNTIME +void *SWIG_ReturnGlobalTypeList(void *); +#endif + +SWIGRUNTIME swig_module_info * +SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { + static void *type_pointer = (void *)0; + /* first check if module already created */ + if (!type_pointer) { +#ifdef SWIG_LINK_RUNTIME + type_pointer = SWIG_ReturnGlobalTypeList((void *)0); +#else + type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); + if (PyErr_Occurred()) { + PyErr_Clear(); + type_pointer = (void *)0; + } +#endif + } + return (swig_module_info *) type_pointer; +} + +SWIGRUNTIME void +SWIG_Python_DestroyModule(PyObject *obj) +{ + swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME); + swig_type_info **types = swig_module->types; + size_t i; + for (i =0; i < swig_module->size; ++i) { + swig_type_info *ty = types[i]; + if (ty->owndata) { + SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; + if (data) SwigPyClientData_Del(data); + } + } + Py_DECREF(SWIG_This()); + Swig_This_global = NULL; +} + +SWIGRUNTIME void +SWIG_Python_SetModule(swig_module_info *swig_module) { +#if PY_VERSION_HEX >= 0x03000000 + /* Add a dummy module object into sys.modules */ + PyObject *module = PyImport_AddModule("swig_runtime_data" SWIG_RUNTIME_VERSION); +#else + static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ + PyObject *module = Py_InitModule("swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table); +#endif + PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); + if (pointer && module) { + PyModule_AddObject(module, "type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer); + } else { + Py_XDECREF(pointer); + } +} + +/* The python cached type query */ +SWIGRUNTIME PyObject * +SWIG_Python_TypeCache(void) { + static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); + return cache; +} + +SWIGRUNTIME swig_type_info * +SWIG_Python_TypeQuery(const char *type) +{ + PyObject *cache = SWIG_Python_TypeCache(); + PyObject *key = SWIG_Python_str_FromChar(type); + PyObject *obj = PyDict_GetItem(cache, key); + swig_type_info *descriptor; + if (obj) { + descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL); + } else { + swig_module_info *swig_module = SWIG_GetModule(0); + descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); + if (descriptor) { + obj = PyCapsule_New((void*) descriptor, NULL, NULL); + PyDict_SetItem(cache, key, obj); + Py_DECREF(obj); + } + } + Py_DECREF(key); + return descriptor; +} + +/* + For backward compatibility only +*/ +#define SWIG_POINTER_EXCEPTION 0 +#define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) +#define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) + +SWIGRUNTIME int +SWIG_Python_AddErrMesg(const char* mesg, int infront) +{ + if (PyErr_Occurred()) { + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + PyErr_Fetch(&type, &value, &traceback); + if (value) { + PyObject *old_str = PyObject_Str(value); + const char *tmp = SWIG_Python_str_AsChar(old_str); + const char *errmesg = tmp ? tmp : "Invalid error message"; + Py_XINCREF(type); + PyErr_Clear(); + if (infront) { + PyErr_Format(type, "%s %s", mesg, errmesg); + } else { + PyErr_Format(type, "%s %s", errmesg, mesg); + } + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + } + return 1; + } else { + return 0; + } +} + +SWIGRUNTIME int +SWIG_Python_ArgFail(int argnum) +{ + if (PyErr_Occurred()) { + /* add information about failing argument */ + char mesg[256]; + PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); + return SWIG_Python_AddErrMesg(mesg, 1); + } else { + return 0; + } +} + +SWIGRUNTIMEINLINE const char * +SwigPyObject_GetDesc(PyObject *self) +{ + SwigPyObject *v = (SwigPyObject *)self; + swig_type_info *ty = v ? v->ty : 0; + return ty ? ty->str : ""; +} + +SWIGRUNTIME void +SWIG_Python_TypeError(const char *type, PyObject *obj) +{ + if (type) { +#if defined(SWIG_COBJECT_TYPES) + if (obj && SwigPyObject_Check(obj)) { + const char *otype = (const char *) SwigPyObject_GetDesc(obj); + if (otype) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received", + type, otype); + return; + } + } else +#endif + { + const char *otype = (obj ? obj->ob_type->tp_name : 0); + if (otype) { + PyObject *str = PyObject_Str(obj); + const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0; + if (cstr) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", + type, otype, cstr); + SWIG_Python_str_DelForPy3(cstr); + } else { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", + type, otype); + } + Py_XDECREF(str); + return; + } + } + PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); + } else { + PyErr_Format(PyExc_TypeError, "unexpected type is received"); + } +} + + +/* Convert a pointer value, signal an exception on a type mismatch */ +SWIGRUNTIME void * +SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) { + void *result; + if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { + PyErr_Clear(); +#if SWIG_POINTER_EXCEPTION + if (flags) { + SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); + SWIG_Python_ArgFail(argnum); + } +#endif + } + return result; +} + +#ifdef SWIGPYTHON_BUILTIN +SWIGRUNTIME int +SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) { + PyTypeObject *tp = obj->ob_type; + PyObject *descr; + PyObject *encoded_name; + descrsetfunc f; + int res = -1; + +# ifdef Py_USING_UNICODE + if (PyString_Check(name)) { + name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL); + if (!name) + return -1; + } else if (!PyUnicode_Check(name)) +# else + if (!PyString_Check(name)) +# endif + { + PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name); + return -1; + } else { + Py_INCREF(name); + } + + if (!tp->tp_dict) { + if (PyType_Ready(tp) < 0) + goto done; + } + + descr = _PyType_Lookup(tp, name); + f = NULL; + if (descr != NULL) + f = descr->ob_type->tp_descr_set; + if (!f) { + if (PyString_Check(name)) { + encoded_name = name; + Py_INCREF(name); + } else { + encoded_name = PyUnicode_AsUTF8String(name); + if (!encoded_name) + return -1; + } + PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name)); + Py_DECREF(encoded_name); + } else { + res = f(descr, obj, value); + } + + done: + Py_DECREF(name); + return res; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyruntime.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyruntime.swg new file mode 100644 index 00000000..751bc8d5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyruntime.swg @@ -0,0 +1,27 @@ +%insert(runtime) %{ +#if defined(__GNUC__) && defined(_WIN32) && !defined(SWIG_PYTHON_NO_HYPOT_WORKAROUND) +/* Workaround for '::hypot' has not been declared', see https://bugs.python.org/issue11566 */ +# include +#endif + +#if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) +/* Use debug wrappers with the Python release dll */ +# undef _DEBUG +# include +# define _DEBUG 1 +#else +# include +#endif +%} + +%insert(runtime) "swigrun.swg"; /* SWIG API */ +%insert(runtime) "swigerrors.swg"; /* SWIG errors */ +%insert(runtime) "pyhead.swg"; /* Python includes and fixes */ +%insert(runtime) "pyerrors.swg"; /* Python errors */ +%insert(runtime) "pythreads.swg"; /* Python thread code */ +%insert(runtime) "pyapi.swg"; /* Python API */ +%insert(runtime) "pyrun.swg"; /* Python run-time code */ + +#if defined(SWIGPYTHON_BUILTIN) +%insert(runtime) "builtin.swg"; /* Specialization for classes with single inheritance */ +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pystdcommon.swg b/macx64/bin/swig/share/swig/4.0.0/python/pystdcommon.swg new file mode 100644 index 00000000..0242e4d3 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pystdcommon.swg @@ -0,0 +1,256 @@ +%fragment("StdTraits","header",fragment="StdTraitsCommon") +{ +namespace swig { + /* + Traits that provides the from method + */ + template struct traits_from_ptr { + static PyObject *from(Type *val, int owner = 0) { + return SWIG_InternalNewPointerObj(val, type_info(), owner); + } + }; + + template struct traits_from { + static PyObject *from(const Type& val) { + return traits_from_ptr::from(new Type(val), 1); + } + }; + + template struct traits_from { + static PyObject *from(Type* val) { + return traits_from_ptr::from(val, 0); + } + }; + + template struct traits_from { + static PyObject *from(const Type* val) { + return traits_from_ptr::from(const_cast(val), 0); + } + }; + + + template + inline PyObject *from(const Type& val) { + return traits_from::from(val); + } + + template + inline PyObject *from_ptr(Type* val, int owner) { + return traits_from_ptr::from(val, owner); + } + + /* + Traits that provides the asval/as/check method + */ + template + struct traits_asptr { + static int asptr(PyObject *obj, Type **val) { + Type *p = 0; + swig_type_info *descriptor = type_info(); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template + inline int asptr(PyObject *obj, Type **vptr) { + return traits_asptr::asptr(obj, vptr); + } + + template + struct traits_asval { + static int asval(PyObject *obj, Type *val) { + if (val) { + Type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (!SWIG_IsOK(res)) return res; + if (p) { + typedef typename noconst_traits::noconst_type noconst_type; + *(const_cast(val)) = *p; + if (SWIG_IsNewObj(res)){ + %delete(p); + res = SWIG_DelNewMask(res); + } + return res; + } else { + return SWIG_ERROR; + } + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template struct traits_asval { + static int asval(PyObject *obj, Type **val) { + if (val) { + typedef typename noconst_traits::noconst_type noconst_type; + noconst_type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (SWIG_IsOK(res)) { + *(const_cast(val)) = p; + } + return res; + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template + inline int asval(PyObject *obj, Type *val) { + return traits_asval::asval(obj, val); + } + + template + struct traits_as { + static Type as(PyObject *obj) { + Type v; + int res = asval(obj, &v); + if (!obj || !SWIG_IsOK(res)) { + if (!PyErr_Occurred()) { + ::%type_error(swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + return v; + } + }; + + template + struct traits_as { + static Type as(PyObject *obj) { + Type *v = 0; + int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); + if (SWIG_IsOK(res) && v) { + if (SWIG_IsNewObj(res)) { + Type r(*v); + %delete(v); + return r; + } else { + return *v; + } + } else { + if (!PyErr_Occurred()) { + %type_error(swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + } + }; + + template + struct traits_as { + static Type* as(PyObject *obj) { + Type *v = 0; + int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); + if (SWIG_IsOK(res)) { + return v; + } else { + if (!PyErr_Occurred()) { + %type_error(swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + } + }; + + template + inline Type as(PyObject *obj) { + return traits_as::category>::as(obj); + } + + template + struct traits_check { + static bool check(PyObject *obj) { + int res = obj ? asval(obj, (Type *)(0)) : SWIG_ERROR; + return SWIG_IsOK(res) ? true : false; + } + }; + + template + struct traits_check { + static bool check(PyObject *obj) { + int res = obj ? asptr(obj, (Type **)(0)) : SWIG_ERROR; + return SWIG_IsOK(res) ? true : false; + } + }; + + template + inline bool check(PyObject *obj) { + return traits_check::category>::check(obj); + } +} +} + +// +// Backward compatibility +// + +#ifdef SWIG_PYTHON_BACKWARD_COMP +%fragment(""); +%{ +PyObject* SwigInt_FromBool(bool b) { + return PyInt_FromLong(b ? 1L : 0L); +} +double SwigNumber_Check(PyObject* o) { + return PyFloat_Check(o) || PyInt_Check(o) || PyLong_Check(o); +} +double SwigNumber_AsDouble(PyObject* o) { + return PyFloat_Check(o) ? PyFloat_AsDouble(o) + : (PyInt_Check(o) ? double(PyInt_AsLong(o)) + : double(PyLong_AsLong(o))); +} +PyObject* SwigString_FromString(const std::string& s) { + return PyString_FromStringAndSize(s.data(),s.size()); +} +std::string SwigString_AsString(PyObject* o) { + return std::string(PyString_AsString(o)); +} +%} + +#endif + + +%define %specialize_std_container(Type,Check,As,From) +%{ +namespace swig { + template <> struct traits_asval { + typedef Type value_type; + static int asval(PyObject *obj, value_type *val) { + if (Check(obj)) { + if (val) *val = As(obj); + return SWIG_OK; + } + return SWIG_ERROR; + } + }; + template <> struct traits_from { + typedef Type value_type; + static PyObject *from(const value_type& val) { + return From(val); + } + }; + + template <> + struct traits_check { + static int check(PyObject *obj) { + int res = Check(obj); + return obj && res ? res : 0; + } + }; +} +%} +%enddef + + +#define specialize_std_vector(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_list(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_deque(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_set(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_multiset(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_unordered_set(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_unordered_multiset(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pystrings.swg b/macx64/bin/swig/share/swig/4.0.0/python/pystrings.swg new file mode 100644 index 00000000..93f48acf --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pystrings.swg @@ -0,0 +1,137 @@ +/* ------------------------------------------------------------ + * utility methods for char strings + * ------------------------------------------------------------ */ +%fragment("SWIG_AsCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERN int +SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) +{ +%#if PY_VERSION_HEX>=0x03000000 +%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + if (PyBytes_Check(obj)) +%#else + if (PyUnicode_Check(obj)) +%#endif +%#else + if (PyString_Check(obj)) +%#endif + { + char *cstr; Py_ssize_t len; + int ret = SWIG_OK; +%#if PY_VERSION_HEX>=0x03000000 +%#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + if (!alloc && cptr) { + /* We can't allow converting without allocation, since the internal + representation of string in Python 3 is UCS-2/UCS-4 but we require + a UTF-8 representation. + TODO(bhy) More detailed explanation */ + return SWIG_RuntimeError; + } + obj = PyUnicode_AsUTF8String(obj); + if (!obj) + return SWIG_TypeError; + if (alloc) + *alloc = SWIG_NEWOBJ; +%#endif + PyBytes_AsStringAndSize(obj, &cstr, &len); +%#else + PyString_AsStringAndSize(obj, &cstr, &len); +%#endif + if (cptr) { + if (alloc) { + if (*alloc == SWIG_NEWOBJ) { + *cptr = %new_copy_array(cstr, len + 1, char); + *alloc = SWIG_NEWOBJ; + } else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } else { +%#if PY_VERSION_HEX>=0x03000000 +%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + *cptr = PyBytes_AsString(obj); +%#else + assert(0); /* Should never reach here with Unicode strings in Python 3 */ +%#endif +%#else + *cptr = SWIG_Python_str_AsChar(obj); + if (!*cptr) + ret = SWIG_TypeError; +%#endif + } + } + if (psize) *psize = len + 1; +%#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + Py_XDECREF(obj); +%#endif + return ret; + } else { +%#if defined(SWIG_PYTHON_2_UNICODE) +%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) +%#error "Cannot use both SWIG_PYTHON_2_UNICODE and SWIG_PYTHON_STRICT_BYTE_CHAR at once" +%#endif +%#if PY_VERSION_HEX<0x03000000 + if (PyUnicode_Check(obj)) { + char *cstr; Py_ssize_t len; + if (!alloc && cptr) { + return SWIG_RuntimeError; + } + obj = PyUnicode_AsUTF8String(obj); + if (!obj) + return SWIG_TypeError; + if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) { + if (cptr) { + if (alloc) *alloc = SWIG_NEWOBJ; + *cptr = %new_copy_array(cstr, len + 1, char); + } + if (psize) *psize = len + 1; + + Py_XDECREF(obj); + return SWIG_OK; + } else { + Py_XDECREF(obj); + } + } +%#endif +%#endif + + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + void* vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (char *) vptr; + if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} +} + +%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERNINLINE PyObject * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + return pchar_descriptor ? + SWIG_InternalNewPointerObj(%const_cast(carray,char *), pchar_descriptor, 0) : SWIG_Py_Void(); + } else { +%#if PY_VERSION_HEX >= 0x03000000 +%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + return PyBytes_FromStringAndSize(carray, %numeric_cast(size, Py_ssize_t)); +%#else + return PyUnicode_DecodeUTF8(carray, %numeric_cast(size, Py_ssize_t), "surrogateescape"); +%#endif +%#else + return PyString_FromStringAndSize(carray, %numeric_cast(size, Py_ssize_t)); +%#endif + } + } else { + return SWIG_Py_Void(); + } +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/python.swg b/macx64/bin/swig/share/swig/4.0.0/python/python.swg new file mode 100644 index 00000000..769d9e10 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/python.swg @@ -0,0 +1,59 @@ +/* ------------------------------------------------------------ + * python.swg + * + * Python configuration module. + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + * Inner macros + * ------------------------------------------------------------ */ +%include + + +/* ------------------------------------------------------------ + * The runtime part + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Special user directives + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Typemap specializations + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Overloaded operator support + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Warnings for Python keywords + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * The Python autodoc support + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * The Python classes, for C++ + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * The Python initialization function + * ------------------------------------------------------------ */ +%include + + +/* ------------------------------------------------------------ + * For backward compatibility + * ------------------------------------------------------------ */ +%include + + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pythonkw.swg b/macx64/bin/swig/share/swig/4.0.0/python/pythonkw.swg new file mode 100644 index 00000000..0138e40e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pythonkw.swg @@ -0,0 +1,140 @@ +/* + Warnings for Python keywords, built-in names and bad names. +*/ + +#define PYTHONKW(x) %keywordwarn("'" `x` "' is a python keyword, renaming to '_" `x` "'", rename="_%s") `x` +#define PYTHONBN(x) %builtinwarn("'" `x` "' conflicts with a built-in name in python") `x` + + +/* + Warnings for Python keywords + https://docs.python.org/2/reference/lexical_analysis.html#keywords +*/ + +PYTHONKW(and); +PYTHONKW(as); +PYTHONKW(assert); +PYTHONKW(async); +PYTHONKW(await); +PYTHONKW(break); +PYTHONKW(class); +PYTHONKW(continue); +PYTHONKW(def); +PYTHONKW(del); +PYTHONKW(elif); +PYTHONKW(else); +PYTHONKW(except); +PYTHONKW(exec); +PYTHONKW(finally); +PYTHONKW(for); +PYTHONKW(from); +PYTHONKW(global); +PYTHONKW(if); +PYTHONKW(import); +PYTHONKW(in); +PYTHONKW(is); +PYTHONKW(lambda); +PYTHONKW(not); +PYTHONKW(or); +PYTHONKW(pass); +PYTHONKW(print); +PYTHONKW(raise); +PYTHONKW(return); +PYTHONKW(try); +PYTHONKW(while); +PYTHONKW(with); +PYTHONKW(yield); + +/* + built-in functions + https://docs.python.org/2/library/functions.html + */ + +PYTHONBN(abs); +PYTHONBN(apply); +PYTHONBN(bool); +PYTHONBN(buffer); +PYTHONBN(callable); +PYTHONBN(chr); +PYTHONBN(classmethod); +PYTHONBN(cmp); +PYTHONBN(coerce); +PYTHONBN(compile); +PYTHONBN(complex); +PYTHONBN(delattr); +PYTHONBN(dict); +PYTHONBN(dir); +PYTHONBN(divmod); +PYTHONBN(enumerate); +PYTHONBN(eval); +PYTHONBN(execfile); +PYTHONBN(file); +PYTHONBN(filter); +PYTHONBN(float); +PYTHONBN(frozenset); +PYTHONBN(getattr); +PYTHONBN(globals); +PYTHONBN(hasattr); +PYTHONBN(hash); +PYTHONBN(hex); +PYTHONBN(id); +PYTHONBN(input); +PYTHONBN(int); +PYTHONBN(intern); +PYTHONBN(isinstance); +PYTHONBN(issubclass); +PYTHONBN(iter); +PYTHONBN(len); +PYTHONBN(list); +PYTHONBN(locals); +PYTHONBN(long); +PYTHONBN(map); +PYTHONBN(max); +PYTHONBN(min); +PYTHONBN(object); +PYTHONBN(oct); +PYTHONBN(open); +PYTHONBN(ord); +PYTHONBN(pow); +PYTHONBN(property); +PYTHONBN(range); +PYTHONBN(raw_input); +PYTHONBN(reduce); +PYTHONBN(reload); +PYTHONBN(repr); +PYTHONBN(reversed); +PYTHONBN(round); +PYTHONBN(set); +PYTHONBN(setattr); +PYTHONBN(slice); +PYTHONBN(sorted); +PYTHONBN(staticmethod); +PYTHONBN(str); +PYTHONBN(sum); +PYTHONBN(super); +PYTHONBN(tuple); +PYTHONBN(type); +PYTHONBN(unichr); +PYTHONBN(unicode); +PYTHONBN(vars); +PYTHONBN(xrange); +PYTHONBN(zip); + + +/* + built-in names + boolean type and None +*/ +PYTHONBN(True); +PYTHONBN(False); + +PYTHONKW(None); + + +/* + 'self' is also a bad Name +*/ +PYTHONKW(self); + +#undef PYTHONBN +#undef PYTHONKW diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pythreads.swg b/macx64/bin/swig/share/swig/4.0.0/python/pythreads.swg new file mode 100644 index 00000000..d8797e65 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pythreads.swg @@ -0,0 +1,64 @@ +#if defined(SWIG_PYTHON_NO_THREADS) +# if defined(SWIG_PYTHON_THREADS) +# undef SWIG_PYTHON_THREADS +# endif +#endif +#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ +# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) +# define SWIG_PYTHON_USE_GIL +# endif +# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ +# ifndef SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() +# endif +# ifdef __cplusplus /* C++ code */ + class SWIG_Python_Thread_Block { + bool status; + PyGILState_STATE state; + public: + void end() { if (status) { PyGILState_Release(state); status = false;} } + SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} + ~SWIG_Python_Thread_Block() { end(); } + }; + class SWIG_Python_Thread_Allow { + bool status; + PyThreadState *save; + public: + void end() { if (status) { PyEval_RestoreThread(save); status = false; }} + SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} + ~SWIG_Python_Thread_Allow() { end(); } + }; +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block +# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow +# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() +# else /* C code */ +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() +# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() +# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) +# endif +# else /* Old thread way, not implemented, user must provide it */ +# if !defined(SWIG_PYTHON_INITIALIZE_THREADS) +# define SWIG_PYTHON_INITIALIZE_THREADS +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_END_BLOCK) +# define SWIG_PYTHON_THREAD_END_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# endif +# if !defined(SWIG_PYTHON_THREAD_END_ALLOW) +# define SWIG_PYTHON_THREAD_END_ALLOW +# endif +# endif +#else /* No thread support */ +# define SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# define SWIG_PYTHON_THREAD_END_BLOCK +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# define SWIG_PYTHON_THREAD_END_ALLOW +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pytuplehlp.swg b/macx64/bin/swig/share/swig/4.0.0/python/pytuplehlp.swg new file mode 100644 index 00000000..32e15803 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pytuplehlp.swg @@ -0,0 +1,8 @@ +/* + Helper function to return output types, now we need to use a list + instead of a tuple since all the other types + (std::pair,std::vector,std::list,etc) return tuples. +*/ + +#warning "Deprecated file: Don't use t_output_helper anymore," +#warning "use SWIG_Python_AppendOutput or %append_output instead." diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pytypemaps.swg b/macx64/bin/swig/share/swig/4.0.0/python/pytypemaps.swg new file mode 100644 index 00000000..0eda17cd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pytypemaps.swg @@ -0,0 +1,105 @@ +/* ------------------------------------------------------------ + * Typemap specializations for Python + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + * Fragment section + * ------------------------------------------------------------ */ +#ifdef SWIG_PYTHON_LEGACY_BOOL +// Default prior to SWIG 3.0.0 +#undef SWIG_TYPECHECK_BOOL +%define SWIG_TYPECHECK_BOOL 10000 %enddef +#endif + +/* Include fundamental fragment definitions */ +%include + +/* Look for user fragments file. */ +%include + +/* Python fragments for fundamental types */ +%include + +/* Python fragments for char* strings */ +%include + +/* Backward compatibility output helper */ +%fragment("t_output_helper","header") %{ +#define t_output_helper SWIG_Python_AppendOutput +%} + + +/* ------------------------------------------------------------ + * Unified typemap section + * ------------------------------------------------------------ */ + +/* directors are supported in Python */ +#ifndef SWIG_DIRECTOR_TYPEMAPS +#define SWIG_DIRECTOR_TYPEMAPS +#endif + + +/* Python types */ +#define SWIG_Object PyObject * +#define VOID_Object SWIG_Py_Void() + +/* Python allows implicit conversion */ +#define %implicitconv_flag $implicitconv + + +/* Overload of the output/constant/exception/dirout handling */ + +/* append output */ +#define SWIG_AppendOutput(result, obj) SWIG_Python_AppendOutput(result, obj) + +/* set constant */ +#if defined(SWIGPYTHON_BUILTIN) +#define SWIG_SetConstant(name, obj) SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, name,obj) +#else +#define SWIG_SetConstant(name, obj) SWIG_Python_SetConstant(d, name,obj) +#endif + +/* raise */ +#define SWIG_Raise(obj, type, desc) SWIG_Python_Raise(obj, type, desc) + +/* Include the unified typemap library */ +%include + + +/* ------------------------------------------------------------ + * Python extra typemaps / typemap overrides + * ------------------------------------------------------------ */ + +/* Get the address of the 'python self' object */ + +%typemap(in,numinputs=0,noblock=1) PyObject **PYTHON_SELF { + $1 = &$self; +} + + +/* Consttab, needed for callbacks, it should be removed later */ + +%typemap(consttab) SWIGTYPE ((*)(ANY)) +{ SWIG_PY_POINTER, "$symname", 0, 0, (void *)($value), &$descriptor } +%typemap(consttab) SWIGTYPE ((* const)(ANY)) = SWIGTYPE ((*)(ANY)); + +%typemap(constcode) SWIGTYPE ((*)(ANY)) ""; +%typemap(constcode) SWIGTYPE ((* const)(ANY)) = SWIGTYPE ((*)(ANY)); + + +/* Smart Pointers */ +%typemap(out,noblock=1) const SWIGTYPE & SMARTPOINTER { + $result = SWIG_NewPointerObj(%new_copy(*$1, $*ltype), $descriptor, SWIG_POINTER_OWN | %newpointer_flags); +} + +%typemap(ret,noblock=1) const SWIGTYPE & SMARTPOINTER, SWIGTYPE SMARTPOINTER { + if ($result) { + PyObject *robj = PyObject_CallMethod($result, (char *)"__deref__", NULL); + if (robj && !PyErr_Occurred()) { + SwigPyObject_append((PyObject *) SWIG_Python_GetSwigThis($result), + (PyObject *) SWIG_Python_GetSwigThis(robj)); + Py_DECREF(robj); + } + } +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pyuserdir.swg b/macx64/bin/swig/share/swig/4.0.0/python/pyuserdir.swg new file mode 100644 index 00000000..31107607 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pyuserdir.swg @@ -0,0 +1,242 @@ +/* ------------------------------------------------------------------------- + * Special user directives + * ------------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------------- */ + +/* shadow code */ +#define %shadow %insert("shadow") +#define %pythoncode %insert("python") +#define %pythonbegin %insert("pythonbegin") + + +/* ------------------------------------------------------------------------- */ +/* +Use the "nondynamic" feature to make a wrapped class behave as a "nondynamic" +one, ie, a python class that doesn't dynamically add new attributes. + +For example, for the class + +%pythonnondynamic A; +struct A +{ + int a; + int b; +}; + +you will get: + + aa = A() + aa.a = 1 # Ok + aa.b = 1 # Ok + aa.c = 3 # error + +Since nondynamic is a feature, if you use it like + + %pythonnondynamic; + +it will make all the wrapped classes nondynamic ones. + +The implementation is based on this recipe: + + http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252158 + +*/ + +#define %pythonnondynamic %feature("python:nondynamic", "1") +#define %nopythonnondynamic %feature("python:nondynamic", "0") +#define %clearpythonnondynamic %feature("python:nondynamic", "") +#define %pythondynamic %nopythonnondynamic + + +/* ------------------------------------------------------------------------- */ +/* + +Use %pythonmaybecall to flag a method like __add__ or __radd__. These +don't produce an error when called, they just return NotImplemented. + +These methods "may be called" if needed. + +*/ + +#define %pythonmaybecall %feature("python:maybecall", "1") +#define %nopythonmaybecall %feature("python:maybecall", "0") +#define %clearpythonmaybecall %feature("python:maybecall", "") + +/* ------------------------------------------------------------------------- */ +/* + The %pythoncallback feature produce a more natural callback wrapper + than the %callback mechanism, ie, it uses the original name for + the callback and callable objects. + + Just use it as + + %pythoncallback(1) foo; + int foo(int a); + + %pythoncallback(1) A::foo; + struct A { + static int foo(int a); + }; + + int bar(int, int (*pf)(int)); + + then, you can use it as: + + a = foo(1) + b = bar(2, foo) + + c = A.foo(3) + d = bar(4, A.foo) + + + If you use it with a member method + %pythoncallback(1) A::foom; + struct A { + int foom(int a); + }; + + then you can use it as + + r = a.foom(3) # eval the method + mptr = A.foom_cb_ptr # returns the callback pointer + + where the '_cb_ptr' suffix is added for the callback pointer. + +*/ + +#define %pythoncallback %feature("python:callback") +#define %nopythoncallback %feature("python:callback","0") +#define %clearpythoncallback %feature("python:callback","") + +/* ------------------------------------------------------------------------- */ +/* + Support for the old %callback directive name +*/ +#ifdef %callback +#undef %callback +#endif + +#ifdef %nocallback +#undef %nocallback +#endif + +#ifdef %clearcallback +#undef %clearcallback +#endif + +#define %callback(x) %feature("python:callback",`x`) +#define %nocallback %nopythoncallback +#define %clearcallback %clearpythoncallback + +/* ------------------------------------------------------------------------- */ +/* + Thread support - Advance control + +*/ + +#define %nothread %feature("nothread") +#define %thread %feature("nothread","0") +#define %clearnothread %feature("nothread","") + +#define %nothreadblock %feature("nothreadblock") +#define %threadblock %feature("nothreadblock","0") +#define %clearnothreadblock %feature("nothreadblock","") + +#define %nothreadallow %feature("nothreadallow") +#define %threadallow %feature("nothreadallow","0") +#define %clearnothreadallow %feature("nothreadallow","") + + +/* ------------------------------------------------------------------------- */ +/* + Implicit Conversion using the C++ constructor mechanism +*/ + +#define %implicitconv %feature("implicitconv") +#define %noimplicitconv %feature("implicitconv", "0") +#define %clearimplicitconv %feature("implicitconv", "") + + +/* ------------------------------------------------------------------------- */ +/* + Enable keywords parameters +*/ + +#define %kwargs %feature("kwargs") +#define %nokwargs %feature("kwargs", "0") +#define %clearkwargs %feature("kwargs", "") + +/* ------------------------------------------------------------------------- */ +/* + Add python code to the proxy/shadow code + + %pythonprepend - Add code before the C++ function is called + %pythonappend - Add code after the C++ function is called +*/ + +#define %pythonprepend %feature("pythonprepend") +#define %clearpythonprepend %feature("pythonprepend","") + +#define %pythonappend %feature("pythonappend") +#define %clearpythonappend %feature("pythonappend","") + + +/* ------------------------------------------------------------------------- */ +/* + %extend_smart_pointer extend the smart pointer support. + + For example, if you have a smart pointer as: + + template class RCPtr { + public: + ... + RCPtr(Type *p); + Type * operator->() const; + ... + }; + + you use the %extend_smart_pointer directive as: + + %extend_smart_pointer(RCPtr); + %template(RCPtr_A) RCPtr; + + then, if you have something like: + + RCPtr make_ptr(); + int foo(A *); + + you can do the following: + + a = make_ptr(); + b = foo(a); + + ie, swig will accept a RCPtr object where a 'A *' is + expected. + + Also, when using vectors + + %extend_smart_pointer(RCPtr); + %template(RCPtr_A) RCPtr; + %template(vector_A) std::vector >; + + you can type + + a = A(); + v = vector_A(2) + v[0] = a + + ie, an 'A *' object is accepted, via implicit conversion, + where a RCPtr object is expected. Additionally + + x = v[0] + + returns (and sets 'x' as) a copy of v[0], making reference + counting possible and consistent. +*/ + +%define %extend_smart_pointer(Type...) +%implicitconv Type; +%apply const SWIGTYPE& SMARTPOINTER { const Type& }; +%apply SWIGTYPE SMARTPOINTER { Type }; +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/python/pywstrings.swg b/macx64/bin/swig/share/swig/4.0.0/python/pywstrings.swg new file mode 100644 index 00000000..0e5a78df --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/pywstrings.swg @@ -0,0 +1,85 @@ +/* ------------------------------------------------------------ + * utility methods for wchar_t strings + * ------------------------------------------------------------ */ + +%{ +#if PY_VERSION_HEX >= 0x03020000 +# define SWIGPY_UNICODE_ARG(obj) ((PyObject*) (obj)) +#else +# define SWIGPY_UNICODE_ARG(obj) ((PyUnicodeObject*) (obj)) +#endif +%} + +%fragment("SWIG_AsWCharPtrAndSize","header",fragment="",fragment="SWIG_pwchar_descriptor") { +SWIGINTERN int +SWIG_AsWCharPtrAndSize(PyObject *obj, wchar_t **cptr, size_t *psize, int *alloc) +{ + PyObject *tmp = 0; + int isunicode = PyUnicode_Check(obj); +%#if PY_VERSION_HEX < 0x03000000 && !defined(SWIG_PYTHON_STRICT_UNICODE_WCHAR) + if (!isunicode && PyString_Check(obj)) { + tmp = PyUnicode_FromObject(obj); + if (tmp) { + isunicode = 1; + obj = tmp; + } else { + PyErr_Clear(); + return SWIG_TypeError; + } + } +%#endif + if (isunicode) { +%#if PY_VERSION_HEX >= 0x03030000 + Py_ssize_t len = PyUnicode_GetLength(obj); +%#else + Py_ssize_t len = PyUnicode_GetSize(obj); +%#endif + if (cptr) { + Py_ssize_t length; + *cptr = %new_array(len + 1, wchar_t); + length = PyUnicode_AsWideChar(SWIGPY_UNICODE_ARG(obj), *cptr, len); + if (length == -1) { + PyErr_Clear(); + Py_XDECREF(tmp); + return SWIG_TypeError; + } + (*cptr)[length] = 0; + } + if (psize) *psize = (size_t) len + 1; + if (alloc) *alloc = cptr ? SWIG_NEWOBJ : 0; + Py_XDECREF(tmp); + return SWIG_OK; + } else { + swig_type_info* pwchar_descriptor = SWIG_pwchar_descriptor(); + if (pwchar_descriptor) { + void * vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pwchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (wchar_t *)vptr; + if (psize) *psize = vptr ? (wcslen((wchar_t *)vptr) + 1) : 0; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} +} + +%fragment("SWIG_FromWCharPtrAndSize","header",fragment="",fragment="SWIG_pwchar_descriptor") { +SWIGINTERNINLINE PyObject * +SWIG_FromWCharPtrAndSize(const wchar_t * carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + swig_type_info* pwchar_descriptor = SWIG_pwchar_descriptor(); + return pwchar_descriptor ? + SWIG_InternalNewPointerObj(%const_cast(carray,wchar_t *), pwchar_descriptor, 0) : SWIG_Py_Void(); + } else { + return PyUnicode_FromWideChar(carray, %numeric_cast(size, Py_ssize_t)); + } + } else { + return SWIG_Py_Void(); + } +} +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_alloc.i b/macx64/bin/swig/share/swig/4.0.0/python/std_alloc.i new file mode 100644 index 00000000..35dc051b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_alloc.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_array.i b/macx64/bin/swig/share/swig/4.0.0/python/std_array.i new file mode 100644 index 00000000..a3de3125 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_array.i @@ -0,0 +1,91 @@ +/* + std::array +*/ + +%fragment("StdArrayTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::array **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static PyObject *from(const std::array& vec) { + return traits_from_stdseq >::from(vec); + } + }; + + template + inline void + assign(const SwigPySeq& swigpyseq, std::array* seq) { + if (swigpyseq.size() < seq->size()) + throw std::invalid_argument("std::array cannot be expanded in size"); + else if (swigpyseq.size() > seq->size()) + throw std::invalid_argument("std::array cannot be reduced in size"); + std::copy(swigpyseq.begin(), swigpyseq.end(), seq->begin()); + } + + template + inline void + erase(std::array* SWIGUNUSEDPARM(seq), const typename std::array::iterator& SWIGUNUSEDPARM(position)) { + throw std::invalid_argument("std::array object does not support item deletion"); + } + + // Only limited slicing is supported as std::array is fixed in size + template + inline std::array* + getslice(const std::array* self, Difference i, Difference j, Py_ssize_t step) { + typedef std::array Sequence; + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj); + + if (step == 1 && ii == 0 && static_cast(jj) == size) { + Sequence *sequence = new Sequence(); + std::copy(self->begin(), self->end(), sequence->begin()); + return sequence; + } else if (step == -1 && static_cast(ii) == (size - 1) && jj == -1) { + Sequence *sequence = new Sequence(); + std::copy(self->rbegin(), self->rend(), sequence->begin()); + return sequence; + } else { + throw std::invalid_argument("std::array object only supports getting a slice that is the size of the array"); + } + } + + template + inline void + setslice(std::array* self, Difference i, Difference j, Py_ssize_t step, const InputSeq& is = InputSeq()) { + typedef std::array Sequence; + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj, true); + + if (step == 1 && ii == 0 && static_cast(jj) == size) { + std::copy(is.begin(), is.end(), self->begin()); + } else if (step == -1 && static_cast(ii) == (size - 1) && jj == -1) { + std::copy(is.rbegin(), is.rend(), self->begin()); + } else { + throw std::invalid_argument("std::array object only supports setting a slice that is the size of the array"); + } + } + + template + inline void + delslice(std::array* SWIGUNUSEDPARM(self), Difference SWIGUNUSEDPARM(i), Difference SWIGUNUSEDPARM(j), Py_ssize_t SWIGUNUSEDPARM(step)) { + throw std::invalid_argument("std::array object does not support item deletion"); + } + } +%} + +#define %swig_array_methods(Type...) %swig_sequence_methods_non_resizable(Type) +#define %swig_array_methods_val(Type...) %swig_sequence_methods_non_resizable_val(Type); + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_auto_ptr.i b/macx64/bin/swig/share/swig/4.0.0/python/std_auto_ptr.i new file mode 100644 index 00000000..e310e00c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_auto_ptr.i @@ -0,0 +1,17 @@ +/* + The typemaps here allow to handle functions returning std::auto_ptr<>, + which is the most common use of this type. If you have functions taking it + as parameter, these typemaps can't be used for them and you need to do + something else (e.g. use shared_ptr<> which SWIG supports fully). + */ + +%define %auto_ptr(TYPE) +%typemap (out) std::auto_ptr %{ + %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); +%} +%template() std::auto_ptr; +%enddef + +namespace std { + template class auto_ptr {}; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_basic_string.i b/macx64/bin/swig/share/swig/4.0.0/python/std_basic_string.i new file mode 100644 index 00000000..e3f524db --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_basic_string.i @@ -0,0 +1,89 @@ +#if !defined(SWIG_STD_STRING) +#define SWIG_STD_BASIC_STRING + +%include + +#define %swig_basic_string(Type...) %swig_sequence_methods_val(Type) + + +%fragment(SWIG_AsPtr_frag(std::basic_string),"header", + fragment="SWIG_AsCharPtrAndSize") { +SWIGINTERN int +SWIG_AsPtr(std::basic_string)(PyObject* obj, std::string **val) { + static swig_type_info* string_info = SWIG_TypeQuery("std::basic_string *"); + std::string *vptr; + if (SWIG_IsOK(SWIG_ConvertPtr(obj, (void**)&vptr, string_info, 0))) { + if (val) *val = vptr; + return SWIG_OLDOBJ; + } else { + PyErr_Clear(); + char* buf = 0 ; size_t size = 0; int alloc = 0; + if (SWIG_IsOK(SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc))) { + if (buf) { + if (val) *val = new std::string(buf, size - 1); + if (alloc == SWIG_NEWOBJ) %delete_array(buf); + return SWIG_NEWOBJ; + } else { + if (val) *val = 0; + return SWIG_OLDOBJ; + } + } + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_From_frag(std::basic_string),"header", + fragment="SWIG_FromCharPtrAndSize") { +SWIGINTERNINLINE PyObject* + SWIG_From(std::basic_string)(const std::string& s) { + return SWIG_FromCharPtrAndSize(s.data(), s.size()); + } +} + +%include +%typemaps_asptrfromn(%checkcode(STRING), std::basic_string); + +#endif + + +#if !defined(SWIG_STD_WSTRING) + +%fragment(SWIG_AsPtr_frag(std::basic_string),"header", + fragment="SWIG_AsWCharPtrAndSize") { +SWIGINTERN int +SWIG_AsPtr(std::basic_string)(PyObject* obj, std::wstring **val) { + static swig_type_info* string_info = SWIG_TypeQuery("std::basic_string *"); + std::wstring *vptr; + if (SWIG_IsOK(SWIG_ConvertPtr(obj, (void**)&vptr, string_info, 0))) { + if (val) *val = vptr; + return SWIG_OLDOBJ; + } else { + PyErr_Clear(); + wchar_t *buf = 0 ; size_t size = 0; int alloc = 0; + if (SWIG_IsOK(SWIG_AsWCharPtrAndSize(obj, &buf, &size, &alloc))) { + if (buf) { + if (val) *val = new std::wstring(buf, size - 1); + if (alloc == SWIG_NEWOBJ) %delete_array(buf); + return SWIG_NEWOBJ; + } else { + if (val) *val = 0; + return SWIG_OLDOBJ; + } + } + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_From_frag(std::basic_string),"header", + fragment="SWIG_FromWCharPtrAndSize") { +SWIGINTERNINLINE PyObject* + SWIG_From(std::basic_string)(const std::wstring& s) { + return SWIG_FromWCharPtrAndSize(s.data(), s.size()); + } +} + +%typemaps_asptrfromn(%checkcode(UNISTRING), std::basic_string); + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_carray.i b/macx64/bin/swig/share/swig/4.0.0/python/std_carray.i new file mode 100644 index 00000000..680d6711 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_carray.i @@ -0,0 +1,54 @@ +%include + + +%fragment("StdCarrayTraits","header",fragment="StdSequenceTraits") +{ +namespace swig { + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::carray **array) { + return traits_asptr_stdseq >::asptr(obj, array); + } + }; +} +} + +%warnfilter(SWIGWARN_IGNORE_OPERATOR_INDEX) std::carray::operator[]; + +%extend std::carray { + %fragment(SWIG_Traits_frag(std::carray<_Type, _Size >), "header", + fragment="SwigPyIterator_T", + fragment=SWIG_Traits_frag(_Type), + fragment="StdCarrayTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::carray<" #_Type "," #_Size " >"; + } + }; + } + } + + %typemaps_asptr(SWIG_TYPECHECK_VECTOR, swig::asptr, + SWIG_Traits_frag(std::carray<_Type, _Size >), + std::carray<_Type, _Size >); + + %typemap(out,noblock=1) iterator, const_iterator { + $result = SWIG_NewPointerObj(swig::make_output_iterator((const $type &)$1), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); + } + + inline size_t __len__() const { return self->size(); } + + inline const _Type& __getitem__(size_t i) const { return (*self)[i]; } + + inline void __setitem__(size_t i, const _Type& v) { (*self)[i] = v; } + + + swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF) { + return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } +} + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_char_traits.i b/macx64/bin/swig/share/swig/4.0.0/python/std_char_traits.i new file mode 100644 index 00000000..bf4e6c47 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_char_traits.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_common.i b/macx64/bin/swig/share/swig/4.0.0/python/std_common.i new file mode 100644 index 00000000..60576623 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_common.i @@ -0,0 +1,74 @@ +%include +%include + + +/* + Generate the traits for a 'primitive' type, such as 'double', + for which the SWIG_AsVal and SWIG_From methods are already defined. +*/ + +%define %traits_ptypen(Type...) + %fragment(SWIG_Traits_frag(Type),"header", + fragment=SWIG_AsVal_frag(Type), + fragment=SWIG_From_frag(Type), + fragment="StdTraits") { +namespace swig { + template <> struct traits< Type > { + typedef value_category category; + static const char* type_name() { return #Type; } + }; + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(PyObject *obj, value_type *val) { + return SWIG_AsVal(Type)(obj, val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static PyObject *from(const value_type& val) { + return SWIG_From(Type)(val); + } + }; +} +} +%enddef + +/* Traits for enums. This is bit of a sneaky trick needed because a generic template specialization of enums + is not possible (unless using template meta-programming which SWIG doesn't support because of the explicit + instantiations required using %template). The STL containers define the 'front' method and the typemap + below is used whenever the front method is wrapped returning an enum. This typemap simply picks up the + standard enum typemap, but additionally drags in a fragment containing the traits_asval and traits_from + required in the generated code for enums. */ + +%define %traits_enum(Type...) + %fragment("SWIG_Traits_enum_"{Type},"header", + fragment=SWIG_AsVal_frag(int), + fragment=SWIG_From_frag(int), + fragment="StdTraits") { +namespace swig { + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(PyObject *obj, value_type *val) { + return SWIG_AsVal(int)(obj, (int *)val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static PyObject *from(const value_type& val) { + return SWIG_From(int)((int)val); + } + }; +} +} +%typemap(out, fragment="SWIG_Traits_enum_"{Type}) const enum SWIGTYPE& front %{$typemap(out, const enum SWIGTYPE&)%} +%enddef + + +%include + +// +// Generates the traits for all the known primitive +// C++ types (int, double, ...) +// +%apply_cpptypes(%traits_ptypen); + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_complex.i b/macx64/bin/swig/share/swig/4.0.0/python/std_complex.i new file mode 100644 index 00000000..c9c46c4c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_complex.i @@ -0,0 +1,27 @@ +/* + * STD C++ complex typemaps + */ + +%include + +%{ +#include +%} + +namespace std { + %naturalvar complex; + template class complex; + %template() complex; + %template() complex; +} + +/* defining the complex as/from converters */ + +%swig_cplxdbl_convn(std::complex, std::complex, std::real, std::imag) +%swig_cplxflt_convn(std::complex, std::complex, std::real, std::imag) + +/* defining the typemaps */ + +%typemaps_primitive(%checkcode(CPLXDBL), std::complex); +%typemaps_primitive(%checkcode(CPLXFLT), std::complex); + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_container.i b/macx64/bin/swig/share/swig/4.0.0/python/std_container.i new file mode 100644 index 00000000..d24c1570 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_container.i @@ -0,0 +1,2 @@ +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/python/std_deque.i new file mode 100644 index 00000000..d9a17470 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_deque.i @@ -0,0 +1,27 @@ +/* + Deques +*/ + +%fragment("StdDequeTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::deque **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static PyObject *from(const std::deque& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_deque_methods(Type...) %swig_sequence_methods(Type) +#define %swig_deque_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_except.i b/macx64/bin/swig/share/swig/4.0.0/python/std_except.i new file mode 100644 index 00000000..af98428f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_except.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_ios.i b/macx64/bin/swig/share/swig/4.0.0/python/std_ios.i new file mode 100644 index 00000000..aa6f0994 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_ios.i @@ -0,0 +1,3 @@ +%rename(ios_base_in) std::ios_base::in; + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_iostream.i b/macx64/bin/swig/share/swig/4.0.0/python/std_iostream.i new file mode 100644 index 00000000..43d6b0c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_iostream.i @@ -0,0 +1,8 @@ +namespace std +{ +%callback(1) endl; +%callback(1) ends; +%callback(1) flush; +} + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_list.i b/macx64/bin/swig/share/swig/4.0.0/python/std_list.i new file mode 100644 index 00000000..24d274b4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_list.i @@ -0,0 +1,28 @@ +/* + Lists +*/ + +%fragment("StdListTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::list **lis) { + return traits_asptr_stdseq >::asptr(obj, lis); + } + }; + + template + struct traits_from > { + static PyObject *from(const std::list& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_list_methods(Type...) %swig_sequence_methods(Type) +#define %swig_list_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_map.i b/macx64/bin/swig/share/swig/4.0.0/python/std_map.i new file mode 100644 index 00000000..8ae483ce --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_map.i @@ -0,0 +1,310 @@ +/* + Maps +*/ + +%fragment("StdMapCommonTraits","header",fragment="StdSequenceTraits") +{ + namespace swig { + template + struct from_key_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.first); + } + }; + + template + struct from_value_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.second); + } + }; + + template + struct SwigPyMapIterator_T : SwigPyIteratorClosed_T + { + SwigPyMapIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyIteratorClosed_T(curr, first, last, seq) + { + } + }; + + + template > + struct SwigPyMapKeyIterator_T : SwigPyMapIterator_T + { + SwigPyMapKeyIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapIterator_T(curr, first, last, seq) + { + } + }; + + template + inline SwigPyIterator* + make_output_key_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapKeyIterator_T(current, begin, end, seq); + } + + template > + struct SwigPyMapValueIterator_T : SwigPyMapIterator_T + { + SwigPyMapValueIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapIterator_T(curr, first, last, seq) + { + } + }; + + + template + inline SwigPyIterator* + make_output_value_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapValueIterator_T(current, begin, end, seq); + } + } +} + +%fragment("StdMapTraits","header",fragment="StdMapCommonTraits") +{ + namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, std::map *map) { + typedef typename std::map::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + map->insert(value_type(it->first, it->second)); + } + } + + template + struct traits_asptr > { + typedef std::map map_type; + static int asptr(PyObject *obj, map_type **val) { + int res = SWIG_ERROR; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); +%#if PY_VERSION_HEX >= 0x03000000 + /* In Python 3.x the ".items()" method returns a dict_items object */ + items = PySequence_Fast(items, ".items() didn't return a sequence!"); +%#endif + res = traits_asptr_stdseq >::asptr(items, val); + } else { + map_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + SWIG_PYTHON_THREAD_END_BLOCK; + return res; + } + }; + + template + struct traits_from > { + typedef std::map map_type; + typedef typename map_type::const_iterator const_iterator; + typedef typename map_type::size_type size_type; + + static PyObject *asdict(const map_type& map) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + size_type size = map.size(); + Py_ssize_t pysize = (size <= (size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= map.begin(); i!= map.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return obj; + } + + static PyObject *from(const map_type& map) { + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_InternalNewPointerObj(new map_type(map), desc, SWIG_POINTER_OWN); + } else { + return asdict(map); + } + } + }; + } +} + +%define %swig_map_common(Map...) + %swig_sequence_iterator(Map); + %swig_container_methods(Map) + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "mp_length", functype="lenfunc") __len__; + %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__; + %feature("python:slot", "tp_iter", functype="getiterfunc") key_iterator; + %feature("python:slot", "sq_contains", functype="objobjproc") __contains__; + + %extend { + %newobject iterkeys(PyObject **PYTHON_SELF); + swig::SwigPyIterator* iterkeys(PyObject **PYTHON_SELF) { + return swig::make_output_key_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject itervalues(PyObject **PYTHON_SELF); + swig::SwigPyIterator* itervalues(PyObject **PYTHON_SELF) { + return swig::make_output_value_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject iteritems(PyObject **PYTHON_SELF); + swig::SwigPyIterator* iteritems(PyObject **PYTHON_SELF) { + return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + } + +#else + %extend { + %pythoncode %{def __iter__(self): + return self.key_iterator()%} + %pythoncode %{def iterkeys(self): + return self.key_iterator()%} + %pythoncode %{def itervalues(self): + return self.value_iterator()%} + %pythoncode %{def iteritems(self): + return self.iterator()%} + } +#endif + + %extend { + mapped_type const & __getitem__(const key_type& key) throw (std::out_of_range) { + Map::const_iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + + void __delitem__(const key_type& key) throw (std::out_of_range) { + Map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + + bool has_key(const key_type& key) const { + Map::const_iterator i = self->find(key); + return i != self->end(); + } + + PyObject* keys() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* keyList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(keyList, j, swig::from(i->first)); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return keyList; + } + + PyObject* values() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* valList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(valList, j, swig::from(i->second)); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return valList; + } + + PyObject* items() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* itemList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(itemList, j, swig::from(*i)); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return itemList; + } + + bool __contains__(const key_type& key) { + return self->find(key) != self->end(); + } + + %newobject key_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* key_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_key_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject value_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* value_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_value_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + } + +%enddef + +%define %swig_map_methods(Map...) + %swig_map_common(Map) + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "mp_ass_subscript", functype="objobjargproc") __setitem__; +#endif + + %extend { + // This will be called through the mp_ass_subscript slot to delete an entry. + void __setitem__(const key_type& key) { + self->erase(key); + } + + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + (*self)[key] = x; + } + + PyObject* asdict() { + return swig::traits_from< Map >::asdict(*self); + } + } + + +%enddef + + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_multimap.i b/macx64/bin/swig/share/swig/4.0.0/python/std_multimap.i new file mode 100644 index 00000000..f78a5277 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_multimap.i @@ -0,0 +1,93 @@ +/* + Multimaps +*/ +%include + +%fragment("StdMultimapTraits","header",fragment="StdMapCommonTraits") +{ + namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, std::multimap *multimap) { + typedef typename std::multimap::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + multimap->insert(value_type(it->first, it->second)); + } + } + + template + struct traits_asptr > { + typedef std::multimap multimap_type; + static int asptr(PyObject *obj, std::multimap **val) { + int res = SWIG_ERROR; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); +%#if PY_VERSION_HEX >= 0x03000000 + /* In Python 3.x the ".items()" method returns a dict_items object */ + items = PySequence_Fast(items, ".items() didn't return a sequence!"); +%#endif + res = traits_asptr_stdseq, std::pair >::asptr(items, val); + } else { + multimap_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template + struct traits_from > { + typedef std::multimap multimap_type; + typedef typename multimap_type::const_iterator const_iterator; + typedef typename multimap_type::size_type size_type; + + static PyObject *from(const multimap_type& multimap) { + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_InternalNewPointerObj(new multimap_type(multimap), desc, SWIG_POINTER_OWN); + } else { + size_type size = multimap.size(); + Py_ssize_t pysize = (size <= (size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, "multimap size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= multimap.begin(); i!= multimap.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + return obj; + } + } + }; + } +} + +%define %swig_multimap_methods(Type...) + %swig_map_common(Type); + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "mp_ass_subscript", functype="objobjargproc") __setitem__; +#endif + + %extend { + // This will be called through the mp_ass_subscript slot to delete an entry. + void __setitem__(const key_type& key) { + self->erase(key); + } + + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + self->insert(Type::value_type(key,x)); + } + } +%enddef + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_multiset.i b/macx64/bin/swig/share/swig/4.0.0/python/std_multiset.i new file mode 100644 index 00000000..ac430334 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_multiset.i @@ -0,0 +1,41 @@ +/* + Multisets +*/ + +%include + +%fragment("StdMultisetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, std::multiset* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::multiset **m) { + return traits_asptr_stdseq >::asptr(obj, m); + } + }; + + template + struct traits_from > { + static PyObject *from(const std::multiset& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_multiset_methods(Set...) %swig_set_methods(Set) + + + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/python/std_pair.i new file mode 100644 index 00000000..172572bf --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_pair.i @@ -0,0 +1,206 @@ +/* + Pairs +*/ +%include + +//#define SWIG_STD_PAIR_ASVAL + +%fragment("StdPairTraits","header",fragment="StdTraits") { + namespace swig { +#ifdef SWIG_STD_PAIR_ASVAL + template + struct traits_asval > { + typedef std::pair value_type; + + static int get_pair(PyObject* first, PyObject* second, + std::pair *val) + { + if (val) { + T *pfirst = &(val->first); + int res1 = swig::asval((PyObject*)first, pfirst); + if (!SWIG_IsOK(res1)) return res1; + U *psecond = &(val->second); + int res2 = swig::asval((PyObject*)second, psecond); + if (!SWIG_IsOK(res2)) return res2; + return res1 > res2 ? res1 : res2; + } else { + T *pfirst = 0; + int res1 = swig::asval((PyObject*)first, 0); + if (!SWIG_IsOK(res1)) return res1; + U *psecond = 0; + int res2 = swig::asval((PyObject*)second, psecond); + if (!SWIG_IsOK(res2)) return res2; + return res1 > res2 ? res1 : res2; + } + } + + static int asval(PyObject *obj, std::pair *val) { + int res = SWIG_ERROR; + if (PyTuple_Check(obj)) { + if (PyTuple_GET_SIZE(obj) == 2) { + res = get_pair(PyTuple_GET_ITEM(obj,0),PyTuple_GET_ITEM(obj,1), val); + } + } else if (PySequence_Check(obj)) { + if (PySequence_Size(obj) == 2) { + swig::SwigVar_PyObject first = PySequence_GetItem(obj,0); + swig::SwigVar_PyObject second = PySequence_GetItem(obj,1); + res = get_pair(first, second, val); + } + } else { + value_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = *p; + } + return res; + } + }; + +#else + template + struct traits_asptr > { + typedef std::pair value_type; + + static int get_pair(PyObject* first, PyObject* second, + std::pair **val) + { + if (val) { + value_type *vp = %new_instance(std::pair); + T *pfirst = &(vp->first); + int res1 = swig::asval((PyObject*)first, pfirst); + if (!SWIG_IsOK(res1)) { + %delete(vp); + return res1; + } + U *psecond = &(vp->second); + int res2 = swig::asval((PyObject*)second, psecond); + if (!SWIG_IsOK(res2)) { + %delete(vp); + return res2; + } + *val = vp; + return SWIG_AddNewMask(res1 > res2 ? res1 : res2); + } else { + T *pfirst = 0; + int res1 = swig::asval((PyObject*)first, pfirst); + if (!SWIG_IsOK(res1)) return res1; + U *psecond = 0; + int res2 = swig::asval((PyObject*)second, psecond); + if (!SWIG_IsOK(res2)) return res2; + return res1 > res2 ? res1 : res2; + } + } + + static int asptr(PyObject *obj, std::pair **val) { + int res = SWIG_ERROR; + if (PyTuple_Check(obj)) { + if (PyTuple_GET_SIZE(obj) == 2) { + res = get_pair(PyTuple_GET_ITEM(obj,0),PyTuple_GET_ITEM(obj,1), val); + } + } else if (PySequence_Check(obj)) { + if (PySequence_Size(obj) == 2) { + swig::SwigVar_PyObject first = PySequence_GetItem(obj,0); + swig::SwigVar_PyObject second = PySequence_GetItem(obj,1); + res = get_pair(first, second, val); + } + } else { + value_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + +#endif + template + struct traits_from > { + static PyObject *from(const std::pair& val) { + PyObject* obj = PyTuple_New(2); + PyTuple_SetItem(obj,0,swig::from(val.first)); + PyTuple_SetItem(obj,1,swig::from(val.second)); + return obj; + } + }; + } + +#if defined(SWIGPYTHON_BUILTIN) +SWIGINTERN Py_ssize_t +SwigPython_std_pair_len (PyObject *a) +{ + return 2; +} + +SWIGINTERN PyObject* +SwigPython_std_pair_repr (PyObject *o) +{ + PyObject *tuple = PyTuple_New(2); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, PyObject_GetAttrString(o, (char*) "first")); + PyTuple_SET_ITEM(tuple, 1, PyObject_GetAttrString(o, (char*) "second")); + PyObject *result = PyObject_Repr(tuple); + Py_DECREF(tuple); + return result; +} + +SWIGINTERN PyObject* +SwigPython_std_pair_getitem (PyObject *a, Py_ssize_t b) +{ + PyObject *result = PyObject_GetAttrString(a, b % 2 ? (char*) "second" : (char*) "first"); + return result; +} + +SWIGINTERN int +SwigPython_std_pair_setitem (PyObject *a, Py_ssize_t b, PyObject *c) +{ + int result = PyObject_SetAttrString(a, b % 2 ? (char*) "second" : (char*) "first", c); + return result; +} +#endif + +} + +%feature("python:sq_length") std::pair "SwigPython_std_pair_len"; +%feature("python:sq_length") std::pair "SwigPython_std_pair_len"; +%feature("python:sq_length") std::pair "SwigPython_std_pair_len"; +%feature("python:sq_length") std::pair "SwigPython_std_pair_len"; + +%feature("python:tp_repr") std::pair "SwigPython_std_pair_repr"; +%feature("python:tp_repr") std::pair "SwigPython_std_pair_repr"; +%feature("python:tp_repr") std::pair "SwigPython_std_pair_repr"; +%feature("python:tp_repr") std::pair "SwigPython_std_pair_repr"; + +%feature("python:sq_item") std::pair "SwigPython_std_pair_getitem"; +%feature("python:sq_item") std::pair "SwigPython_std_pair_getitem"; +%feature("python:sq_item") std::pair "SwigPython_std_pair_getitem"; +%feature("python:sq_item") std::pair "SwigPython_std_pair_getitem"; + +%feature("python:sq_ass_item") std::pair "SwigPython_std_pair_setitem"; +%feature("python:sq_ass_item") std::pair "SwigPython_std_pair_setitem"; +%feature("python:sq_ass_item") std::pair "SwigPython_std_pair_setitem"; +%feature("python:sq_ass_item") std::pair "SwigPython_std_pair_setitem"; + +%define %swig_pair_methods(pair...) +#if !defined(SWIGPYTHON_BUILTIN) +%extend { +%pythoncode %{def __len__(self): + return 2 +def __repr__(self): + return str((self.first, self.second)) +def __getitem__(self, index): + if not (index % 2): + return self.first + else: + return self.second +def __setitem__(self, index, val): + if not (index % 2): + self.first = val + else: + self.second = val%} +} +#endif +%enddef + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_set.i b/macx64/bin/swig/share/swig/4.0.0/python/std_set.i new file mode 100644 index 00000000..0ef01199 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_set.i @@ -0,0 +1,67 @@ +/* + Sets +*/ + +%fragment("StdSetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, std::set* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::set **s) { + return traits_asptr_stdseq >::asptr(obj, s); + } + }; + + template + struct traits_from > { + static PyObject *from(const std::set& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +%define %swig_set_methods(set...) + %swig_sequence_iterator(set); + %swig_container_methods(set); + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__; + %feature("python:slot", "sq_contains", functype="objobjproc") __contains__; +#endif + + %extend { + void append(value_type x) { + self->insert(x); + } + + bool __contains__(value_type x) { + return self->find(x) != self->end(); + } + + value_type __getitem__(difference_type i) const throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + void add(value_type x) { + self->insert(x); + } + + void discard(value_type x) { + self->erase(x); + } + } +%enddef + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/python/std_shared_ptr.i new file mode 100644 index 00000000..df873679 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_shared_ptr.i @@ -0,0 +1,2 @@ +#define SWIG_SHARED_PTR_NAMESPACE std +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_sstream.i b/macx64/bin/swig/share/swig/4.0.0/python/std_sstream.i new file mode 100644 index 00000000..6647df8c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_sstream.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_streambuf.i b/macx64/bin/swig/share/swig/4.0.0/python/std_streambuf.i new file mode 100644 index 00000000..44b9bb4d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_streambuf.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_string.i b/macx64/bin/swig/share/swig/4.0.0/python/std_string.i new file mode 100644 index 00000000..dc1378ae --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_string.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_map.i b/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_map.i new file mode 100644 index 00000000..042d5b67 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_map.i @@ -0,0 +1,296 @@ +/* + Unordered Maps +*/ +%include + +%fragment("StdUnorderedMapForwardIteratorTraits","header") +{ + namespace swig { + template + struct SwigPyMapForwardIterator_T : SwigPyForwardIteratorClosed_T + { + SwigPyMapForwardIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyForwardIteratorClosed_T(curr, first, last, seq) + { + } + }; + + + template > + struct SwigPyMapKeyForwardIterator_T : SwigPyMapForwardIterator_T + { + SwigPyMapKeyForwardIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapForwardIterator_T(curr, first, last, seq) + { + } + }; + + template + inline SwigPyIterator* + make_output_key_forward_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapKeyForwardIterator_T(current, begin, end, seq); + } + + template > + struct SwigPyMapValueForwardIterator_T : SwigPyMapForwardIterator_T + { + SwigPyMapValueForwardIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapForwardIterator_T(curr, first, last, seq) + { + } + }; + + + template + inline SwigPyIterator* + make_output_value_forward_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapValueForwardIterator_T(current, begin, end, seq); + } + } +} + +%fragment("StdUnorderedMapTraits","header",fragment="StdMapCommonTraits",fragment="StdUnorderedMapForwardIteratorTraits") +{ + namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_map *unordered_map) { + typedef typename std::unordered_map::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + unordered_map->insert(value_type(it->first, it->second)); + } + } + + template + struct traits_reserve > { + static void reserve(std::unordered_map &seq, typename std::unordered_map::size_type n) { + seq.reserve(n); + } + }; + + template + struct traits_asptr > { + typedef std::unordered_map unordered_map_type; + static int asptr(PyObject *obj, unordered_map_type **val) { + int res = SWIG_ERROR; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); +%#if PY_VERSION_HEX >= 0x03000000 + /* In Python 3.x the ".items()" method returns a dict_items object */ + items = PySequence_Fast(items, ".items() didn't return a sequence!"); +%#endif + res = traits_asptr_stdseq, std::pair >::asptr(items, val); + } else { + unordered_map_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + SWIG_PYTHON_THREAD_END_BLOCK; + return res; + } + }; + + template + struct traits_from > { + typedef std::unordered_map unordered_map_type; + typedef typename unordered_map_type::const_iterator const_iterator; + typedef typename unordered_map_type::size_type size_type; + + static PyObject *asdict(const unordered_map_type& map) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + size_type size = map.size(); + Py_ssize_t pysize = (size <= (size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= map.begin(); i!= map.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return obj; + } + + static PyObject *from(const unordered_map_type& map) { + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_InternalNewPointerObj(new unordered_map_type(map), desc, SWIG_POINTER_OWN); + } else { + return asdict(map); + } + } + }; + } +} + +%define %swig_unordered_map_common(Map...) + %swig_sequence_forward_iterator(Map); + %swig_container_methods(Map) + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "mp_length", functype="lenfunc") __len__; + %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__; + %feature("python:slot", "tp_iter", functype="getiterfunc") key_iterator; + %feature("python:slot", "sq_contains", functype="objobjproc") __contains__; + + %extend { + %newobject iterkeys(PyObject **PYTHON_SELF); + swig::SwigPyIterator* iterkeys(PyObject **PYTHON_SELF) { + return swig::make_output_key_forward_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject itervalues(PyObject **PYTHON_SELF); + swig::SwigPyIterator* itervalues(PyObject **PYTHON_SELF) { + return swig::make_output_value_forward_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject iteritems(PyObject **PYTHON_SELF); + swig::SwigPyIterator* iteritems(PyObject **PYTHON_SELF) { + return swig::make_output_forward_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + } + +#else + %extend { + %pythoncode %{def __iter__(self): + return self.key_iterator()%} + %pythoncode %{def iterkeys(self): + return self.key_iterator()%} + %pythoncode %{def itervalues(self): + return self.value_iterator()%} + %pythoncode %{def iteritems(self): + return self.iterator()%} + } +#endif + + %extend { + mapped_type const & __getitem__(const key_type& key) throw (std::out_of_range) { + Map::const_iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + + void __delitem__(const key_type& key) throw (std::out_of_range) { + Map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + + bool has_key(const key_type& key) const { + Map::const_iterator i = self->find(key); + return i != self->end(); + } + + PyObject* keys() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* keyList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(keyList, j, swig::from(i->first)); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return keyList; + } + + PyObject* values() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* valList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(valList, j, swig::from(i->second)); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return valList; + } + + PyObject* items() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* itemList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(itemList, j, swig::from(*i)); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return itemList; + } + + bool __contains__(const key_type& key) { + return self->find(key) != self->end(); + } + + %newobject key_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* key_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_key_forward_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject value_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* value_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_value_forward_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + } + +%enddef + +%define %swig_unordered_map_methods(Map...) + %swig_unordered_map_common(Map) + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "mp_ass_subscript", functype="objobjargproc") __setitem__; +#endif + + %extend { + // This will be called through the mp_ass_subscript slot to delete an entry. + void __setitem__(const key_type& key) { + self->erase(key); + } + + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + (*self)[key] = x; + } + + PyObject* asdict() { + return swig::traits_from< Map >::asdict(*self); + } + } + + +%enddef + + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_multimap.i b/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_multimap.i new file mode 100644 index 00000000..28114044 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_multimap.i @@ -0,0 +1,100 @@ +/* + Unordered Multimaps +*/ +%include + +%fragment("StdUnorderedMultimapTraits","header",fragment="StdMapCommonTraits",fragment="StdUnorderedMapForwardIteratorTraits") +{ + namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_multimap *unordered_multimap) { + typedef typename std::unordered_multimap::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + unordered_multimap->insert(value_type(it->first, it->second)); + } + } + + template + struct traits_reserve > { + static void reserve(std::unordered_multimap &seq, typename std::unordered_multimap::size_type n) { + seq.reserve(n); + } + }; + + template + struct traits_asptr > { + typedef std::unordered_multimap unordered_multimap_type; + static int asptr(PyObject *obj, std::unordered_multimap **val) { + int res = SWIG_ERROR; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); +%#if PY_VERSION_HEX >= 0x03000000 + /* In Python 3.x the ".items()" method returns a dict_items object */ + items = PySequence_Fast(items, ".items() didn't return a sequence!"); +%#endif + res = traits_asptr_stdseq, std::pair >::asptr(items, val); + } else { + unordered_multimap_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template + struct traits_from > { + typedef std::unordered_multimap unordered_multimap_type; + typedef typename unordered_multimap_type::const_iterator const_iterator; + typedef typename unordered_multimap_type::size_type size_type; + + static PyObject *from(const unordered_multimap_type& unordered_multimap) { + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_InternalNewPointerObj(new unordered_multimap_type(unordered_multimap), desc, SWIG_POINTER_OWN); + } else { + size_type size = unordered_multimap.size(); + Py_ssize_t pysize = (size <= (size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, "unordered_multimap size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= unordered_multimap.begin(); i!= unordered_multimap.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + return obj; + } + } + }; + } +} + +%define %swig_unordered_multimap_methods(Type...) + %swig_unordered_map_common(Type); + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "mp_ass_subscript", functype="objobjargproc") __setitem__; +#endif + + %extend { + // This will be called through the mp_ass_subscript slot to delete an entry. + void __setitem__(const key_type& key) { + self->erase(key); + } + + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + self->insert(Type::value_type(key,x)); + } + } +%enddef + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_multiset.i b/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_multiset.i new file mode 100644 index 00000000..b0f3f096 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_multiset.i @@ -0,0 +1,48 @@ +/* + Unordered Multisets +*/ + +%include + +%fragment("StdUnorderedMultisetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_multiset* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_reserve > { + static void reserve(std::unordered_multiset &seq, typename std::unordered_multiset::size_type n) { + seq.reserve(n); + } + }; + + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::unordered_multiset **m) { + return traits_asptr_stdseq >::asptr(obj, m); + } + }; + + template + struct traits_from > { + static PyObject *from(const std::unordered_multiset& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_unordered_multiset_methods(Set...) %swig_unordered_set_methods(Set) + + + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_set.i b/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_set.i new file mode 100644 index 00000000..79fca6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_unordered_set.i @@ -0,0 +1,67 @@ +/* + Unordered Sets +*/ + +%fragment("StdUnorderedSetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_set* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_reserve > { + static void reserve(std::unordered_set &seq, typename std::unordered_set::size_type n) { + seq.reserve(n); + } + }; + + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::unordered_set **s) { + return traits_asptr_stdseq >::asptr(obj, s); + } + }; + + template + struct traits_from > { + static PyObject *from(const std::unordered_set& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +%define %swig_unordered_set_methods(unordered_set...) + %swig_sequence_forward_iterator(unordered_set); + %swig_container_methods(unordered_set); + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "sq_contains", functype="objobjproc") __contains__; + %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__; +#endif + + + %extend { + void append(value_type x) { + self->insert(x); + } + + bool __contains__(value_type x) { + return self->find(x) != self->end(); + } + + value_type __getitem__(difference_type i) const throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + } +%enddef + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/python/std_vector.i new file mode 100644 index 00000000..2ac41a54 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_vector.i @@ -0,0 +1,34 @@ +/* + Vectors +*/ + +%fragment("StdVectorTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_reserve > { + static void reserve(std::vector &seq, typename std::vector::size_type n) { + seq.reserve(n); + } + }; + + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::vector **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static PyObject *from(const std::vector& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_vector_methods(Type...) %swig_sequence_methods(Type) +#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_vectora.i b/macx64/bin/swig/share/swig/4.0.0/python/std_vectora.i new file mode 100644 index 00000000..3f084bd7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_vectora.i @@ -0,0 +1,31 @@ +/* + Vectors + allocators +*/ + +%fragment("StdVectorATraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + typedef std::vector vector_type; + typedef T value_type; + static int asptr(PyObject *obj, vector_type **vec) { + return traits_asptr_stdseq::asptr(obj, vec); + } + }; + + template + struct traits_from > { + typedef std::vector vector_type; + static PyObject *from(const vector_type& vec) { + return traits_from_stdseq::from(vec); + } + }; + } +%} + + +#define %swig_vector_methods(Type...) %swig_sequence_methods(Type) +#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_wios.i b/macx64/bin/swig/share/swig/4.0.0/python/std_wios.i new file mode 100644 index 00000000..930a57dd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_wios.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_wiostream.i b/macx64/bin/swig/share/swig/4.0.0/python/std_wiostream.i new file mode 100644 index 00000000..d3a5ee78 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_wiostream.i @@ -0,0 +1,10 @@ +namespace std +{ +%callback(1) wendl; +%callback(1) wends; +%callback(1) wflush; +} + +%include +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_wsstream.i b/macx64/bin/swig/share/swig/4.0.0/python/std_wsstream.i new file mode 100644 index 00000000..8843f56d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_wsstream.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_wstreambuf.i b/macx64/bin/swig/share/swig/4.0.0/python/std_wstreambuf.i new file mode 100644 index 00000000..c0f09201 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_wstreambuf.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/std_wstring.i b/macx64/bin/swig/share/swig/4.0.0/python/std_wstring.i new file mode 100644 index 00000000..ef862813 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/std_wstring.i @@ -0,0 +1,3 @@ +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/stl.i b/macx64/bin/swig/share/swig/4.0.0/python/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/python/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/python/typemaps.i new file mode 100644 index 00000000..5d438eca --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/typemaps.i @@ -0,0 +1,148 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Pointer handling + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers. + * ----------------------------------------------------------------------------- */ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + + int *INPUT + short *INPUT + long *INPUT + long long *INPUT + unsigned int *INPUT + unsigned short *INPUT + unsigned long *INPUT + unsigned long long *INPUT + unsigned char *INPUT + bool *INPUT + float *INPUT + double *INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a Python tuple. + + int *OUTPUT + short *OUTPUT + long *OUTPUT + long long *OUTPUT + unsigned int *OUTPUT + unsigned short *OUTPUT + unsigned long *OUTPUT + unsigned long long *OUTPUT + unsigned char *OUTPUT + bool *OUTPUT + float *OUTPUT + double *OUTPUT + +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).K: + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Python output of the function would be a tuple containing both +output values. + +*/ + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a Python tuple. + + int *INOUT + short *INOUT + long *INOUT + long long *INOUT + unsigned int *INOUT + unsigned short *INOUT + unsigned long *INOUT + unsigned long long *INOUT + unsigned char *INOUT + bool *INOUT + float *INOUT + double *INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include + void neg(double *INOUT); + +or you can use the %apply directive : + + %include + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value (since +this makes no sense in Python). Rather, the modified input value shows +up as the return value of the function. Thus, to apply this function +to a Python variable you might do this : + + x = neg(x) + +Note : previous versions of SWIG used the symbol 'BOTH' to mark +input/output arguments. This is still supported, but will be slowly +phased out in future releases. + +*/ + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/python/wchar.i b/macx64/bin/swig/share/swig/4.0.0/python/wchar.i new file mode 100644 index 00000000..308139a3 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/python/wchar.i @@ -0,0 +1,21 @@ +#ifdef __cplusplus + +%{ +#include +%} + +#else + +%{ +#include +%} + +#endif + +%types(wchar_t *); +%include + +/* + Enable swig wchar support. +*/ +#define SWIG_WCHAR diff --git a/macx64/bin/swig/share/swig/4.0.0/r/boost_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/r/boost_shared_ptr.i new file mode 100644 index 00000000..668bf435 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/boost_shared_ptr.i @@ -0,0 +1,401 @@ +%include + +// Set SHARED_PTR_DISOWN to $disown if required, for example +// #define SHARED_PTR_DISOWN $disown +#if !defined(SHARED_PTR_DISOWN) +#define SHARED_PTR_DISOWN 0 +#endif + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_SHARED_PTR_TYPEMAPS(CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor wrapper customisation +%feature("unref") TYPE +//"if (debug_shared) { cout << \"deleting use_count: \" << (*smartarg1).use_count() << \" [\" << (boost::get_deleter(*smartarg1) ? std::string(\"CANNOT BE DETERMINED SAFELY\") : ( (*smartarg1).get() ? (*smartarg1)->getValue() : std::string(\"NULL PTR\") )) << \"]\" << endl << flush; }\n" + "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +// plain value +%typemap(in) CONST TYPE (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(out) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(varout) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) CONST TYPE (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE (void *swig_argp, int swig_res = 0) { + int newmem = 0; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (!swig_argp) { + %dirout_nullref("$type"); + } else { + $result = *(%reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} + +// plain pointer +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) CONST TYPE * (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} + +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), $owner | SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE * { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0; + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE * %{ +#error "directorout typemap for plain pointer not implemented" +%} + +// plain reference +%typemap(in) CONST TYPE & (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + $1 = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE & { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + if (!argp) { + %variable_nullref("$type", "$name"); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = *%const_cast(tempshared.get(), $1_ltype); + } else { + $1 = *%const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE & %{ +#error "directorout typemap for plain reference not implemented" +%} + +// plain pointer by reference +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) TYPE *CONST& (void *argp = 0, int res = 0, $*1_ltype temp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + temp = %const_cast(tempshared.get(), $*1_ltype); + } else { + temp = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $*1_ltype); + } + $1 = &temp; +} +%typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) TYPE *CONST& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) TYPE *CONST& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") TYPE *CONST& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) TYPE *CONST& %{ +#error "directorout typemap for plain pointer by reference not implemented" +%} + +// shared_ptr by value +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) $1 = *(%reinterpret_cast(argp, $<ype)); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + int newmem = 0; + void *argp = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = argp ? *(%reinterpret_cast(argp, $<ype)) : SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE >(); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *swig_argp, int swig_res = 0) { + int newmem = 0; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (swig_argp) { + $result = *(%reinterpret_cast(swig_argp, $<ype)); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, $<ype); + } +} + +// shared_ptr by reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "directorout typemap for shared_ptr ref not implemented" +%} + +// shared_ptr by pointer +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); + if ($owner) delete $1; +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "directorout typemap for pointer to shared_ptr not implemented" +%} + +// shared_ptr by pointer reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (void *argp, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, $*1_ltype temp = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) tempshared = *%reinterpret_cast(argp, $*ltype); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $*ltype); + temp = &tempshared; + $1 = &temp; +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = (*$1 && **$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(**$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "directorout typemap for pointer ref to shared_ptr not implemented" +%} + +// Typecheck typemaps +// Note: SWIG_ConvertPtr with void ** parameter set to 0 instead of using SWIG_ConvertPtrAndOwn, so that the casting +// function is not called thereby avoiding a possible smart pointer copy constructor call when casting up the inheritance chain. +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + int res = SWIG_ConvertPtr($input, 0, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), 0); + $1 = SWIG_CheckState(res); +} + + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + + +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/r/cdata.i b/macx64/bin/swig/share/swig/4.0.0/r/cdata.i new file mode 100644 index 00000000..36796599 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/cdata.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/r/exception.i b/macx64/bin/swig/share/swig/4.0.0/r/exception.i new file mode 100644 index 00000000..39cb0959 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/exception.i @@ -0,0 +1,8 @@ +%include + + +%insert("runtime") { + %define_as(SWIG_exception(code, msg), +%block(switch (code) {case SWIG_IndexError: return Rf_ScalarLogical(NA_LOGICAL); default: %error(code, msg); SWIG_fail;} )) +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/r/r.swg b/macx64/bin/swig/share/swig/4.0.0/r/r.swg new file mode 100644 index 00000000..8cf8cdf5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/r.swg @@ -0,0 +1,277 @@ +/* */ + + +%insert("header") "swiglabels.swg" + +%insert("init") "swiginit.swg" +%insert("runtime") "swigrun.swg" +%insert("runtime") "swigerrors.swg" +%insert("runtime") "rrun.swg" + +%init %{ +SWIGEXPORT void SWIG_init(void) { +%} + +%include + +#define %Rruntime %insert("s") + +#define SWIG_Object SEXP +#define VOID_Object R_NilValue + +#define %append_output(obj) SET_VECTOR_ELT($result, $n, obj) + +%define %set_constant(name, obj) %begin_block + SEXP _obj = obj; + assign(name, _obj); +%end_block %enddef + +%define %raise(obj,type,desc) +return R_NilValue; +%enddef + +%insert("sinit") "srun.swg" + +%insert("sinitroutine") %{ +SWIG_init(); +SWIG_InitializeModule(0); +%} + +%include +%typemap(in) (double *x, int len) %{ + $1 = REAL(x); + $2 = Rf_length(x); +%} + +/* XXX + Need to worry about inheritance, e.g. if B extends A + and we are looking for an A[], then B elements are okay. +*/ +%typemap(scheck) SWIGTYPE[ANY] + %{ +# assert(length($input) > $1_dim0) + assert(all(sapply($input, class) == "$R_class")); + %} + +%typemap(out) void ""; + +%typemap(in) int *, int[ANY], + signed int *, signed int[ANY], + unsigned int *, unsigned int[ANY], + short *, short[ANY], + signed short *, signed short[ANY], + unsigned short *, unsigned short[ANY], + long *, long[ANY], + signed long *, signed long[ANY], + unsigned long *, unsigned long[ANY], + long long *, long long[ANY], + signed long long *, signed long long[ANY], + unsigned long long *, unsigned long long[ANY] + +{ +{ int _rswigi; + int _rswiglen = LENGTH($input); + $1 = %static_cast(calloc(sizeof($1_basetype), _rswiglen), $1_ltype); + for (_rswigi=0; _rswigi< _rswiglen; _rswigi++) { + $1[_rswigi] = INTEGER($input)[_rswigi]; + } +} +} + +%typemap(in) float *, float[ANY], + double *, double[ANY] + +{ +{ int _rswigi; + int _rswiglen = LENGTH($input); + $1 = %static_cast(calloc(sizeof($1_basetype), _rswiglen), $1_ltype); + for (_rswigi=0; _rswigi<_rswiglen; _rswigi++) { + $1[_rswigi] = REAL($input)[_rswigi]; + } +} +} + +%typemap(freearg,noblock=1) int *, int[ANY], + signed int *, signed int[ANY], + unsigned int *, unsigned int[ANY], + short *, short[ANY], + signed short *, signed short[ANY], + unsigned short *, unsigned short[ANY], + long *, long[ANY], + signed long *, signed long[ANY], + unsigned long *, unsigned long[ANY], + long long *, long long[ANY], + signed long long *, signed long long[ANY], + unsigned long long *, unsigned long long[ANY], + float *, float[ANY], + double *, double[ANY] +%{ + free($1); +%} + +%typemap(freearg, noblock=1) int *OUTPUT, +signed int *OUTPUT, +unsigned int *OUTPUT, +short *OUTPUT, +signed short *OUTPUT, +unsigned short *OUTPUT, +long *OUTPUT, +signed long *OUTPUT, +unsigned long *OUTPUT, +long long *OUTPUT, +signed long long *OUTPUT, +unsigned long long *OUTPUT, +float *OUTPUT, +double *OUTPUT, +char *OUTPUT, +signed char *OUTPUT, +unsigned char *OUTPUT +{} + + + +/* Should we recycle to make the length correct. + And warn if length() > the dimension. +*/ +%typemap(scheck) SWIGTYPE [ANY] %{ +# assert(length($input) >= $1_dim0) +%} + +/* Handling vector case to avoid warnings, + although we just use the first one. */ +%typemap(scheck) unsigned int %{ + assert(length($input) == 1 && $input >= 0, "All values must be non-negative"); +%} + + +%typemap(scheck) int, long %{ + if(length($input) > 1) { + warning("using only the first element of $input"); + }; +%} + +%include +%include +%include +%include +%include + +%typemap(in,noblock=1) enum SWIGTYPE[ANY] { + $1 = %reinterpret_cast(INTEGER($input), $1_ltype); +} + +%typemap(in,noblock=1,fragment="SWIG_strdup") char * { + $1 = %reinterpret_cast(SWIG_strdup(CHAR(STRING_ELT($input, 0))), $1_ltype); +} + +%typemap(freearg,noblock=1) char * { + free($1); +} + +%typemap(in,noblock=1,fragment="SWIG_strdup") char *[ANY] { + $1 = %reinterpret_cast(SWIG_strdup(CHAR(STRING_ELT($input, 0))), $1_ltype); +} + +%typemap(freearg,noblock=1) char *[ANY] { + free($1); +} + +%typemap(in,noblock=1,fragment="SWIG_strdup") char[ANY] { + $1 = SWIG_strdup(CHAR(STRING_ELT($input, 0))); +} + +%typemap(freearg,noblock=1) char[ANY] { + free($1); +} + +%typemap(in,noblock=1,fragment="SWIG_strdup") char[] { + $1 = SWIG_strdup(CHAR(STRING_ELT($input, 0))); +} + +%typemap(freearg,noblock=1) char[] { + free($1); +} + +%typemap(in) const enum SWIGTYPE & ($*1_ltype temp) +%{ temp = ($*1_ltype)INTEGER($input)[0]; + $1 = &temp; %} + +%typemap(out) const enum SWIGTYPE & %{ $result = Rf_ScalarInteger((int)*$1); %} + +%typemap(memberin) char[] %{ +if ($input) strcpy($1, $input); +else +strcpy($1, ""); +%} + +%typemap(globalin) char[] %{ +if ($input) strcpy($1, $input); +else +strcpy($1, ""); +%} + +%typemap(out,noblock=1) char * + { $result = $1 ? Rf_mkString(%reinterpret_cast($1,char *)) : R_NilValue; } + +%typemap(in,noblock=1) char { +$1 = %static_cast(CHAR(STRING_ELT($input, 0))[0],$1_ltype); +} + +%typemap(out) char + { + char tmp[2] = "x"; + tmp[0] = $1; + $result = Rf_mkString(tmp); + } + + +%typemap(in,noblock=1) int, long +{ + $1 = %static_cast(INTEGER($input)[0], $1_ltype); +} + +%typemap(out,noblock=1) int, long + "$result = Rf_ScalarInteger($1);"; + + +%typemap(in,noblock=1) bool + "$1 = LOGICAL($input)[0] ? true : false;"; + + +%typemap(out,noblock=1) bool + "$result = Rf_ScalarLogical($1);"; + +%typemap(in,noblock=1) + float, + double +{ + $1 = %static_cast(REAL($input)[0], $1_ltype); +} + +/* Why is this here ? */ +/* %typemap(out,noblock=1) unsigned int * + "$result = ScalarReal(*($1));"; */ + +%Rruntime %{ +setMethod('[', "ExternalReference", +function(x,i,j, ..., drop=TRUE) +if (!is.null(x$"__getitem__")) +sapply(i, function(n) x$"__getitem__"(i=as.integer(n-1)))) + +setMethod('[<-' , "ExternalReference", +function(x,i,j, ..., value) +if (!is.null(x$"__setitem__")) { +sapply(1:length(i), function(n) +x$"__setitem__"(i=as.integer(i[n]-1), x=value[n])) +x +}) + +setAs('ExternalReference', 'character', +function(from) {if (!is.null(from$"__str__")) from$"__str__"()}) + +suppressMessages(suppressWarnings(setMethod('print', 'ExternalReference', +function(x) {print(as(x, "character"))}))) +%} + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/r/rcontainer.swg b/macx64/bin/swig/share/swig/4.0.0/r/rcontainer.swg new file mode 100644 index 00000000..54b31b39 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/rcontainer.swg @@ -0,0 +1,198 @@ + +// +// Common fragments +// + + +/**** The python container methods ****/ + + + +%fragment("StdSequenceTraits","header",fragment="") +{ +%#include +namespace swig { + inline size_t + check_index(ptrdiff_t i, size_t size, bool insert = false) { + if ( i < 0 ) { + if ((size_t) (-i) <= size) + return (size_t) (i + size); + } else if ( (size_t) i < size ) { + return (size_t) i; + } else if (insert && ((size_t) i == size)) { + return size; + } + + throw std::out_of_range("index out of range"); + } + + inline size_t + slice_index(ptrdiff_t i, size_t size) { + if ( i < 0 ) { + if ((size_t) (-i) <= size) { + return (size_t) (i + size); + } else { + throw std::out_of_range("index out of range"); + } + } else { + return ( (size_t) i < size ) ? ((size_t) i) : size; + } + } + + template + inline typename Sequence::iterator + getpos(Sequence* self, Difference i) { + typename Sequence::iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline typename Sequence::const_iterator + cgetpos(const Sequence* self, Difference i) { + typename Sequence::const_iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline Sequence* + getslice(const Sequence* self, Difference i, Difference j) { + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size); + typename Sequence::size_type jj = swig::slice_index(j, size); + + if (jj > ii) { + typename Sequence::const_iterator vb = self->begin(); + typename Sequence::const_iterator ve = self->begin(); + std::advance(vb,ii); + std::advance(ve,jj); + return new Sequence(vb, ve); + } else { + return new Sequence(); + } + } + + template + inline void + setslice(Sequence* self, Difference i, Difference j, const InputSeq& v) { + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size, true); + typename Sequence::size_type jj = swig::slice_index(j, size); + if (jj < ii) jj = ii; + size_t ssize = jj - ii; + if (ssize <= v.size()) { + typename Sequence::iterator sb = self->begin(); + typename InputSeq::const_iterator vmid = v.begin(); + std::advance(sb,ii); + std::advance(vmid, jj - ii); + self->insert(std::copy(v.begin(), vmid, sb), vmid, v.end()); + } else { + typename Sequence::iterator sb = self->begin(); + typename Sequence::iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + self->erase(sb,se); + self->insert(sb, v.begin(), v.end()); + } + } + + template + inline void + delslice(Sequence* self, Difference i, Difference j) { + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size, true); + typename Sequence::size_type jj = swig::slice_index(j, size); + if (jj > ii) { + typename Sequence::iterator sb = self->begin(); + typename Sequence::iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + self->erase(sb,se); + } + } +} +} + +%define %swig_container_methods(Container...) + + %newobject __getslice__; + + %extend { + bool __nonzero__() const { + return !(self->empty()); + } + + size_type __len__() const { + return self->size(); + } + } +%enddef + +%define %swig_sequence_methods_common(Sequence...) +// %swig_sequence_iterator(%arg(Sequence)) + %swig_container_methods(%arg(Sequence)) + + %fragment("StdSequenceTraits"); + + %extend { + value_type pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty container"); + Sequence::value_type x = self->back(); + self->pop_back(); + return x; + } + + Sequence* __getslice__(difference_type i, difference_type j) throw (std::out_of_range) { + return swig::getslice(self, i, j); + } + + void __setslice__(difference_type i, difference_type j, const Sequence& v) + throw (std::out_of_range, std::invalid_argument) { + swig::setslice(self, i, j, v); + } + + void __delslice__(difference_type i, difference_type j) throw (std::out_of_range) { + swig::delslice(self, i, j); + } + + void __delitem__(difference_type i) throw (std::out_of_range) { + self->erase(swig::getpos(self,i)); + } + } +%enddef + +%define %swig_sequence_methods(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) + %extend { + const value_type& __getitem__(difference_type i) const throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + void __setitem__(difference_type i, const value_type& x) throw (std::out_of_range) { + *(swig::getpos(self,i)) = x; + } + + void append(const value_type& x) { + self->push_back(x); + } + } +%enddef + +%define %swig_sequence_methods_val(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) + %extend { + value_type __getitem__(difference_type i) throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + void __setitem__(difference_type i, value_type x) throw (std::out_of_range) { + *(swig::getpos(self,i)) = x; + } + + void append(value_type x) { + self->push_back(x); + } + } +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/r/rfragments.swg b/macx64/bin/swig/share/swig/4.0.0/r/rfragments.swg new file mode 100644 index 00000000..b89212b0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/rfragments.swg @@ -0,0 +1,195 @@ +#define SWIG_Error(code, msg) Rf_warning(msg); return Rf_ScalarLogical(NA_LOGICAL) + +#define SWIG_fail return Rf_ScalarLogical(NA_LOGICAL) + +/* for raw pointers */ +#define SWIG_ConvertPtr(oc, ptr, ty, flags) SWIG_R_ConvertPtr(oc, ptr, ty, flags) +#define SWIG_ConvertFunctionPtr(oc, ptr, ty) SWIG_R_ConvertPtr(oc, ptr, ty, 0) +#define SWIG_NewPointerObj(ptr, ty, flags) SWIG_R_NewPointerObj(ptr, ty, flags) +#define SWIG_NewFunctionPtrObj(ptr, ty) SWIG_R_NewPointerObj(ptr, ty, 0) + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_R_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewPackedObj(ptr, sz, ty) SWIG_R_NewPackedObj(ptr, sz, ty) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, ty, flags) SWIG_ConvertPtr(obj, pptr, ty, flags) +#define SWIG_NewInstanceObj(ptr, ty, flags) SWIG_NewPointerObj(ptr, ty, flags) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_R_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, ty) SWIG_R_NewPackedObj(ptr, sz, ty) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_R_GetModule() +#define SWIG_SetModule(clientdata, pointer) SWIG_R_SetModule(pointer) + +%fragment(SWIG_From_frag(long),"header") { +SWIGINTERNINLINE SEXP +SWIG_From_dec(long)(long value) +{ + return Rf_ScalarInteger((int)value); +} +} + +%fragment(SWIG_AsVal_frag(long),"header") { +SWIGINTERNINLINE int +SWIG_AsVal_dec(long)(SEXP obj, long *val) +{ + if (val) *val = Rf_asInteger(obj); + return SWIG_OK; +} +} + + +%fragment(SWIG_From_frag(long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE SEXP +SWIG_From_dec(long long)(long long value) +{ + return Rf_ScalarInteger((int)value); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE int +SWIG_AsVal_dec(long long)(SEXP obj, long long *val) +{ + if (val) *val = Rf_asInteger(obj); + return SWIG_OK; +} +%#endif +} + +%fragment(SWIG_From_frag(unsigned long),"header") { +SWIGINTERNINLINE SEXP +SWIG_From_dec(unsigned long)(unsigned long value) +{ + return Rf_ScalarInteger((int)value); +} +} + + +%fragment(SWIG_AsVal_frag(unsigned long),"header") { +SWIGINTERNINLINE int +SWIG_AsVal_dec(unsigned long)(SEXP obj, unsigned long *val) +{ + if (val) *val = Rf_asInteger(obj); + return SWIG_OK; +} +} + + +%fragment(SWIG_From_frag(unsigned long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE SEXP +SWIG_From_dec(unsigned long long)(unsigned long long value) +{ + return Rf_ScalarInteger((int)value); +} +%#endif +} + + +%fragment(SWIG_AsVal_frag(unsigned long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE int +SWIG_AsVal_dec(unsigned long long)(SEXP obj, unsigned long long *val) +{ + if (val) *val = Rf_asInteger(obj); + return SWIG_OK; +} +%#endif +} + +%fragment(SWIG_From_frag(double),"header") { +SWIGINTERNINLINE SEXP +SWIG_From_dec(double)(double value) +{ + return Rf_ScalarReal(value); +} +} + + +%fragment(SWIG_AsVal_frag(double),"header") { +SWIGINTERNINLINE int +SWIG_AsVal_dec(double)(SEXP obj, double *val) +{ + if (val) *val = Rf_asReal(obj); + return SWIG_OK; +} +} + +%fragment("SWIG_AsCharPtrAndSize", "header") +{ +SWIGINTERN int +SWIG_AsCharPtrAndSize(SEXP obj, char** cptr, size_t* psize, int *alloc) +{ + if (cptr && Rf_isString(obj)) { + char *cstr = %const_cast(CHAR(STRING_ELT(obj, 0)), char *); + int len = strlen(cstr); + + if (alloc) { + if (*alloc == SWIG_NEWOBJ) { + *cptr = %new_copy_array(cstr, len + 1, char); + *alloc = SWIG_NEWOBJ; + } else { + *cptr = cstr; + } + } else { + *cptr = %reinterpret_cast(malloc(len + 1), char *); + *cptr = strcpy(*cptr, cstr); + } + if (psize) *psize = len + 1; + return SWIG_OK; + } + return SWIG_TypeError; +} +} + +%fragment("SWIG_strdup","header") +{ +SWIGINTERN char * +SWIG_strdup(const char *str) +{ + char *newstr = %reinterpret_cast(malloc(strlen(str) + 1), char *); + return strcpy(newstr, str); +} +} + +//# This is modified from the R header files + +%fragment("SWIG_FromCharPtrAndSize","header") +{ +SWIGINTERN SEXP +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + SEXP t, c; + if (!carray) return R_NilValue; +/* See R internals document 1.10. + MkCharLen was introduced in 2.7.0. Use that instead of hand + creating vector. + + Starting in 2.8.0 creating strings via vectors was deprecated in + order to allow for use of CHARSXP caches. */ + + Rf_protect(t = Rf_allocVector(STRSXP, 1)); +%#if R_VERSION >= R_Version(2,7,0) + c = Rf_mkCharLen(carray, size); +%#else + c = Rf_allocVector(CHARSXP, size); + strncpy((char *)CHAR(c), carray, size); +%#endif + SET_STRING_ELT(t, 0, c); + Rf_unprotect(1); + return t; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/r/rkw.swg b/macx64/bin/swig/share/swig/4.0.0/r/rkw.swg new file mode 100644 index 00000000..074d7dfd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/rkw.swg @@ -0,0 +1,36 @@ +/* + Warnings for R keywords, built-in names and bad names. +*/ + +#define RKW(x) %keywordwarn("'" `x` "' is a R keyword, renaming to '_" `x`"'", rename="_%s") `x` +#define RSWIGKW(x) %keywordwarn("'" `x` "' is a SWIG R reserved parameter name, renaming to '_" `x`"'", rename="_%s") `x` + +/* + Warnings for R reserved words taken from + http://cran.r-project.org/doc/manuals/R-lang.html#Reserved-words +*/ + +RKW(if); +RKW(else); +RKW(repeat); +RKW(while); +RKW(function); +RKW(for); +RKW(in); +RKW(next); +RKW(break); +RKW(TRUE); +RKW(FALSE); +RKW(NULL); +RKW(Inf); +RKW(NaN); +RKW(NA); +RKW(NA_integer_); +RKW(NA_real_); +RKW(NA_complex_); +RKW(NA_character_); + +RSWIGKW(self); + +#undef RKW +#undef RSWIGKW diff --git a/macx64/bin/swig/share/swig/4.0.0/r/ropers.swg b/macx64/bin/swig/share/swig/4.0.0/r/ropers.swg new file mode 100644 index 00000000..acb99798 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/ropers.swg @@ -0,0 +1,32 @@ +#ifdef __cplusplus + +%rename(Equal) operator =; +%rename(PlusEqual) operator +=; +%rename(MinusEqual) operator -=; +%rename(MultiplyEqual) operator *=; +%rename(DivideEqual) operator /=; +%rename(PercentEqual) operator %=; +%rename(Plus) operator +; +%rename(Minus) operator -; +%rename(Multiply) operator *; +%rename(Divide) operator /; +%rename(Percent) operator %; +%rename(Not) operator !; +%rename(IndexIntoConst) operator[](unsigned idx) const; +%rename(IndexInto) operator[](unsigned idx); +%rename(Functor) operator (); +%rename(EqualEqual) operator ==; +%rename(NotEqual) operator !=; +%rename(LessThan) operator <; +%rename(LessThanEqual) operator <=; +%rename(GreaterThan) operator >; +%rename(GreaterThanEqual) operator >=; +%rename(And) operator &&; +%rename(Or) operator ||; +%rename(PlusPlusPrefix) operator++(); +%rename(PlusPlusPostfix) operator++(int); +%rename(MinusMinusPrefix) operator--(); +%rename(MinusMinusPostfix) operator--(int); + + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/r/rrun.swg b/macx64/bin/swig/share/swig/4.0.0/r/rrun.swg new file mode 100644 index 00000000..c341321a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/rrun.swg @@ -0,0 +1,379 @@ + +/* Remove global namespace pollution */ +#if !defined(SWIG_NO_R_NO_REMAP) +# define R_NO_REMAP +#endif +#if !defined(SWIG_NO_STRICT_R_HEADERS) +# define STRICT_R_HEADERS +#endif + +#include +#include + +#ifdef __cplusplus +#include +extern "C" { +#endif + +/* for raw pointer */ +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_R_ConvertPtr(obj, pptr, type, flags) +#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_R_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_R_NewPointerObj(ptr, type, flags) + +#include +#include +#include + +#if R_VERSION >= R_Version(2,6,0) +#define VMAXTYPE void * +#else +#define VMAXTYPE char * +#endif + +/* + This is mainly a way to avoid having lots of local variables that may + conflict with those in the routine. + + Change name to R_SWIG_Callb.... +*/ +typedef struct RCallbackFunctionData { + + SEXP fun; + SEXP userData; + + + SEXP expr; + SEXP retValue; + int errorOccurred; + + SEXP el; /* Temporary pointer used in the construction of the expression to call the R function. */ + + struct RCallbackFunctionData *previous; /* Stack */ + +} RCallbackFunctionData; + +static RCallbackFunctionData *callbackFunctionDataStack; + + +SWIGRUNTIME SEXP +R_SWIG_debug_getCallbackFunctionData() +{ + int n, i; + SEXP ans; + RCallbackFunctionData *p = callbackFunctionDataStack; + + n = 0; + while(p) { + n++; + p = p->previous; + } + + Rf_protect(ans = Rf_allocVector(VECSXP, n)); + for(p = callbackFunctionDataStack, i = 0; i < n; p = p->previous, i++) + SET_VECTOR_ELT(ans, i, p->fun); + + Rf_unprotect(1); + + return(ans); +} + + + +SWIGRUNTIME RCallbackFunctionData * +R_SWIG_pushCallbackFunctionData(SEXP fun, SEXP userData) +{ + RCallbackFunctionData *el; + el = (RCallbackFunctionData *) calloc(1, sizeof(RCallbackFunctionData)); + el->fun = fun; + el->userData = userData; + el->previous = callbackFunctionDataStack; + + callbackFunctionDataStack = el; + + return(el); +} + + +SWIGRUNTIME SEXP +R_SWIG_R_pushCallbackFunctionData(SEXP fun, SEXP userData) +{ + R_SWIG_pushCallbackFunctionData(fun, userData); + return R_NilValue; +} + +SWIGRUNTIME RCallbackFunctionData * +R_SWIG_getCallbackFunctionData() +{ + if(!callbackFunctionDataStack) { + Rf_error("Supposedly impossible error occurred in the SWIG callback mechanism." + " No callback function data set."); + } + + return callbackFunctionDataStack; +} + +SWIGRUNTIME void +R_SWIG_popCallbackFunctionData(int doFree) +{ + RCallbackFunctionData *el = NULL; + if(!callbackFunctionDataStack) + return ; /* Error !!! */ + + el = callbackFunctionDataStack ; + callbackFunctionDataStack = callbackFunctionDataStack->previous; + + if(doFree) + free(el); +} + + +/* + Interface to S function + is(obj, type) + which is to be used to determine if an + external pointer inherits from the right class. + + Ideally, we would like to be able to do this without an explicit call to the is() function. + When the S4 class system uses its own SEXP types, then we will hopefully be able to do this + in the C code. + + Should we make the expression static and preserve it to avoid the overhead of + allocating each time. +*/ +SWIGRUNTIME int +R_SWIG_checkInherits(SEXP obj, SEXP tag, const char *type) +{ + SEXP e, val; + int check_err = 0; + + Rf_protect(e = Rf_allocVector(LANGSXP, 3)); + SETCAR(e, Rf_install("extends")); + + SETCAR(CDR(e), Rf_mkString(CHAR(PRINTNAME(tag)))); + SETCAR(CDR(CDR(e)), Rf_mkString(type)); + + val = R_tryEval(e, R_GlobalEnv, &check_err); + Rf_unprotect(1); + if(check_err) + return(0); + + + return(LOGICAL(val)[0]); +} + + +SWIGRUNTIME void * +R_SWIG_resolveExternalRef(SEXP arg, const char * const type, const char * const argName, Rboolean nullOk) +{ + void *ptr; + SEXP orig = arg; + + if(TYPEOF(arg) != EXTPTRSXP) + arg = GET_SLOT(arg, Rf_mkString("ref")); + + + if(TYPEOF(arg) != EXTPTRSXP) { + Rf_error("argument %s must be an external pointer (from an ExternalReference)", argName); + } + + + ptr = R_ExternalPtrAddr(arg); + + if(ptr == NULL && nullOk == (Rboolean) FALSE) { + Rf_error("the external pointer (of type %s) for argument %s has value NULL", argName, type); + } + + if(type[0] && R_ExternalPtrTag(arg) != Rf_install(type) && strcmp(type, "voidRef") + && !R_SWIG_checkInherits(orig, R_ExternalPtrTag(arg), type)) { + Rf_error("the external pointer for argument %s has tag %s, not the expected value %s", + argName, CHAR(PRINTNAME(R_ExternalPtrTag(arg))), type); + } + + + return(ptr); +} + +SWIGRUNTIME void +R_SWIG_ReferenceFinalizer(SEXP el) +{ + void *ptr = R_SWIG_resolveExternalRef(el, "", "", (Rboolean) 1); + fprintf(stderr, "In R_SWIG_ReferenceFinalizer for %p\n", ptr); + Rf_PrintValue(el); + + if(ptr) { + if(TYPEOF(el) != EXTPTRSXP) + el = GET_SLOT(el, Rf_mkString("ref")); + + if(TYPEOF(el) == EXTPTRSXP) + R_ClearExternalPtr(el); + + free(ptr); + } + + return; +} + +SWIGRUNTIME SEXP +SWIG_MakePtr(void *ptr, const char *typeName, int flags) +{ + SEXP external, r_obj; + + Rf_protect(external = R_MakeExternalPtr(ptr, Rf_install(typeName), R_NilValue)); + Rf_protect(r_obj = NEW_OBJECT(MAKE_CLASS((char *) typeName))); + + if (flags & SWIG_POINTER_OWN) + R_RegisterCFinalizer(external, R_SWIG_ReferenceFinalizer); + + r_obj = SET_SLOT(r_obj, Rf_mkString((char *) "ref"), external); + SET_S4_OBJECT(r_obj); + Rf_unprotect(2); + + return(r_obj); +} + + +SWIGRUNTIME SEXP +R_SWIG_create_SWIG_R_Array(const char *typeName, SEXP ref, int len) +{ + SEXP arr; + +/*XXX remove the char * cast when we can. MAKE_CLASS should be declared appropriately. */ + Rf_protect(arr = NEW_OBJECT(MAKE_CLASS((char *) typeName))); + Rf_protect(arr = R_do_slot_assign(arr, Rf_mkString("ref"), ref)); + Rf_protect(arr = R_do_slot_assign(arr, Rf_mkString("dims"), Rf_ScalarInteger(len))); + + Rf_unprotect(3); + SET_S4_OBJECT(arr); + return arr; +} + +#define ADD_OUTPUT_ARG(result, pos, value, name) r_ans = AddOutputArgToReturn(pos, value, name, OutputValues); + +SWIGRUNTIME SEXP +AddOutputArgToReturn(int pos, SEXP value, const char *name, SEXP output) +{ + SET_VECTOR_ELT(output, pos, value); + + return(output); +} + +/* Create a new pointer object */ +SWIGRUNTIMEINLINE SEXP +SWIG_R_NewPointerObj(void *ptr, swig_type_info *type, int flags) { + SEXP rptr; + if (!ptr) { + return R_NilValue; + } + rptr = R_MakeExternalPtr(ptr, + R_MakeExternalPtr(type, R_NilValue, R_NilValue), R_NilValue); + SET_S4_OBJECT(rptr); + return rptr; +} + + +/* Convert a pointer value */ +SWIGRUNTIMEINLINE int +SWIG_R_ConvertPtr(SEXP obj, void **ptr, swig_type_info *ty, int flags) { + void *vptr; + if (!obj) return SWIG_ERROR; + if (obj == R_NilValue) { + if (ptr) *ptr = NULL; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } + + vptr = R_ExternalPtrAddr(obj); + if (ty) { + swig_type_info *to = (swig_type_info*) + R_ExternalPtrAddr(R_ExternalPtrTag(obj)); + if (to == ty) { + if (ptr) *ptr = vptr; + } else { + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + int newmemory = 0; + if (ptr) *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } + } else { + if (ptr) *ptr = vptr; + } + return SWIG_OK; +} + +SWIGRUNTIME swig_module_info * +SWIG_GetModule(void *SWIGUNUSEDPARM(clientdata)) { + static void *type_pointer = (void *)0; + return (swig_module_info *) type_pointer; +} + +SWIGRUNTIME void +SWIG_SetModule(void *v, swig_module_info *swig_module) { +} + +typedef struct { + void *pack; + swig_type_info *ty; + size_t size; +} RSwigPacked; + +/* Create a new packed object */ + +SWIGRUNTIMEINLINE SEXP RSwigPacked_New(void *ptr, size_t sz, + swig_type_info *ty) { + SEXP rptr; + RSwigPacked *sobj = + (RSwigPacked*) malloc(sizeof(RSwigPacked)); + if (sobj) { + void *pack = malloc(sz); + if (pack) { + memcpy(pack, ptr, sz); + sobj->pack = pack; + sobj->ty = ty; + sobj->size = sz; + } else { + sobj = 0; + } + } + rptr = R_MakeExternalPtr(sobj, R_NilValue, R_NilValue); + return rptr; +} + +SWIGRUNTIME swig_type_info * +RSwigPacked_UnpackData(SEXP obj, void *ptr, size_t size) +{ + RSwigPacked *sobj = + (RSwigPacked *)R_ExternalPtrAddr(obj); + if (sobj->size != size) return 0; + memcpy(ptr, sobj->pack, size); + return sobj->ty; +} + +SWIGRUNTIMEINLINE SEXP +SWIG_R_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { + return ptr ? RSwigPacked_New((void *) ptr, sz, type) : R_NilValue; +} + +/* Convert a packed pointer value */ + +SWIGRUNTIME int +SWIG_R_ConvertPacked(SEXP obj, void *ptr, size_t sz, swig_type_info *ty) { + swig_type_info *to = RSwigPacked_UnpackData(obj, ptr, sz); + if (!to) return SWIG_ERROR; + if (ty) { + if (to != ty) { + /* check type cast? */ + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) return SWIG_ERROR; + } + } + return SWIG_OK; +} + +#ifdef __cplusplus +#define SWIG_exception_noreturn(code, msg) do { throw std::runtime_error(msg); } while(0) +#else +#define SWIG_exception_noreturn(code, msg) do { return result; } while(0) +#endif + +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/r/rstdcommon.swg b/macx64/bin/swig/share/swig/4.0.0/r/rstdcommon.swg new file mode 100644 index 00000000..5f41fd14 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/rstdcommon.swg @@ -0,0 +1,205 @@ +%fragment("StdTraits","header",fragment="StdTraitsCommon") +{ +namespace swig { + /* + Traits that provides the from method + */ + + template struct traits_from_ptr { + static SWIG_Object from(Type *val, int owner = 0) { + return SWIG_NewPointerObj(val, type_info(), owner); + } + }; + + template struct traits_from { + static SWIG_Object from(const Type& val) { + return traits_from_ptr::from(new Type(val), 1); + } + }; + + template struct traits_from { + static SWIG_Object from(Type* val) { + return traits_from_ptr::from(val, 0); + } + }; + + template + inline SWIG_Object from(const Type& val) { + return traits_from::from(val); + } + + template + inline SWIG_Object from_ptr(Type* val, int owner) { + return traits_from_ptr::from(val, owner); + } + + /* + Traits that provides the asval/as/check method + */ + template + struct traits_asptr { + static int asptr(SWIG_Object obj, Type **val) { + Type *p = 0; + swig_type_info *descriptor = type_info(); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template + inline int asptr(SWIG_Object obj, Type **vptr) { + return traits_asptr::asptr(obj, vptr); + } + + template + struct traits_asval { + static int asval(SWIG_Object obj, Type *val) { + if (val) { + Type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (!SWIG_IsOK(res)) return res; + if (p) { + typedef typename noconst_traits::noconst_type noconst_type; + *(const_cast(val)) = *p; + if (SWIG_IsNewObj(res)){ + %delete(p); + res = SWIG_DelNewMask(res); + } + return res; + } else { + return SWIG_ERROR; + } + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template struct traits_asval { + static int asval(SWIG_Object obj, Type **val) { + if (val) { + typedef typename noconst_traits::noconst_type noconst_type; + noconst_type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (SWIG_IsOK(res)) { + *(const_cast(val)) = p; + } + return res; + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template + inline int asval(SWIG_Object obj, Type *val) { + return traits_asval::asval(obj, val); + } + + template + struct traits_as { + static Type as(SWIG_Object obj) { + Type v; + int res = asval(obj, &v); + if (!obj || !SWIG_IsOK(res)) { + throw std::invalid_argument("bad type"); + } + return v; + } + }; + + template + struct traits_as { + static Type as(SWIG_Object obj) { + Type *v = 0; + int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); + if (SWIG_IsOK(res) && v) { + if (SWIG_IsNewObj(res)) { + Type r(*v); + %delete(v); + return r; + } else { + return *v; + } + } else { + throw std::invalid_argument("bad type"); + } + } + }; + + template + struct traits_as { + static Type* as(SWIG_Object obj, bool throw_error) { + Type *v = 0; + int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); + if (SWIG_IsOK(res)) { + return v; + } else { + if (throw_error) + throw std::invalid_argument("bad type"); + return 0; + } + } + }; + + template + inline Type as(SWIG_Object obj) { + return traits_as::category>::as(obj); + } + + template + struct traits_check { + static bool check(SWIG_Object obj) { + int res = obj ? asval(obj, (Type *)(0)) : SWIG_ERROR; + return SWIG_IsOK(res) ? true : false; + } + }; + + template + struct traits_check { + static bool check(SWIG_Object obj) { + int res = obj ? asptr(obj, (Type **)(0)) : SWIG_ERROR; + return SWIG_IsOK(res) ? true : false; + } + }; + + template + inline bool check(SWIG_Object obj) { + return traits_check::category>::check(obj); + } +} +} + +%define %specialize_std_container(Type,Check,As,From) +%{ +namespace swig { + template <> struct traits_asval { + typedef Type value_type; + static int asval(SWIG_Object obj, value_type *val) { + if (Check(obj)) { + if (val) *val = As(obj); + return SWIG_OK; + } + return SWIG_ERROR; + } + }; + template <> struct traits_from { + typedef Type value_type; + static SWIG_Object from(const value_type& val) { + return From(val); + } + }; + + template <> + struct traits_check { + static int check(SWIG_Object obj) { + int res = Check(obj); + return obj && res ? res : 0; + } + }; +} +%} +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/r/rtype.swg b/macx64/bin/swig/share/swig/4.0.0/r/rtype.swg new file mode 100644 index 00000000..bdc48c24 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/rtype.swg @@ -0,0 +1,323 @@ + +/* These map the primitive C types to the appropriate R type + for use in class representations. + */ + +%typemap("rtype") int, int *, int & "integer"; +%typemap("rtype") long, long *, long & "integer"; +%typemap("rtype") float, float*, float & "numeric"; +%typemap("rtype") double, double*, double & "numeric"; +%typemap("rtype") char *, char ** "character"; +%typemap("rtype") char "character"; +%typemap("rtype") string, string *, string & "character"; +%typemap("rtype") std::string, std::string *, std::string & "character"; +%typemap("rtype") bool, bool * "logical"; +%typemap("rtype") enum SWIGTYPE "character"; +%typemap("rtype") enum SWIGTYPE * "character"; +%typemap("rtype") enum SWIGTYPE *const "character"; +%typemap("rtype") enum SWIGTYPE & "character"; +%typemap("rtype") const enum SWIGTYPE & "character"; +%typemap("rtype") enum SWIGTYPE && "character"; +%typemap("rtype") SWIGTYPE * "$R_class"; +%typemap("rtype") SWIGTYPE *const "$R_class"; +%typemap("rtype") SWIGTYPE & "$R_class"; +%typemap("rtype") SWIGTYPE && "$R_class"; +%typemap("rtype") SWIGTYPE "$&R_class"; + +%typemap("rtypecheck") int, int &, long, long & + %{ (is.integer($arg) || is.numeric($arg)) && length($arg) == 1 %} +%typemap("rtypecheck") int *, long * + %{ is.integer($arg) || is.numeric($arg) %} + + +%typemap("rtypecheck") float, double + %{ is.numeric($arg) && length($arg) == 1 %} +%typemap("rtypecheck") float *, double * + %{ is.numeric($arg) %} + +%typemap("rtypecheck") bool, bool & + %{ is.logical($arg) && length($arg) == 1 %} +%typemap("rtypecheck") bool * + %{ is.logical($arg) %} + +/* + Set up type checks to insure overloading precedence. + We would like non pointer items to shadow pointer items, so that + they get called if length = 1 +*/ + +%typecheck(SWIG_TYPECHECK_BOOL) bool {} +%typecheck(SWIG_TYPECHECK_UINT32) unsigned int {} +%typecheck(SWIG_TYPECHECK_INTEGER) int {} +%typecheck(SWIG_TYPECHECK_FLOAT) float {} +%typecheck(SWIG_TYPECHECK_DOUBLE) double {} + +%typecheck(SWIG_TYPECHECK_BOOL_PTR) bool * {} +%typecheck(SWIG_TYPECHECK_INT32_PTR) int * {} +%typecheck(SWIG_TYPECHECK_FLOAT_PTR) float * {} +%typecheck(SWIG_TYPECHECK_DOUBLE_PTR) double * {} +%typecheck(SWIG_TYPECHECK_CHAR_PTR) char * {} + +%typecheck(SWIG_TYPECHECK_INT32_ARRAY) int[ANY] {} +%typecheck(SWIG_TYPECHECK_FLOAT_ARRAY) float[ANY] {} +%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY) double [ANY] {} + +/* Have to be careful that as(x, "numeric") is different from as.numeric(x). + The latter makes a REALSXP, whereas the former leaves an INTSXP as an + INTSXP. +*/ + +/* Force coercion of integer, since by default R sets all constants to + numeric, which means that you can't directly call a function with an + integer using an R numercal literal */ + +%typemap(scoercein) int, int *, int & + %{ $input = as.integer($input); %} +%typemap(scoercein) long, long *, long & + %{ $input = as.integer($input); %} +%typemap(scoercein) float, float*, float &, + double, double *, double & + %{ %} +%typemap(scoercein) char, char *, char & + %{ $input = as($input, "character"); %} +%typemap(scoercein) string, string *, string & + %{ $input = as($input, "character"); %} +%typemap(scoercein) std::string, std::string *, std::string & + %{ $input = as($input, "character"); %} +%typemap(scoercein) enum SWIGTYPE + %{ $input = enumToInteger($input, "$R_class"); %} +%typemap(scoercein) enum SWIGTYPE & + %{ $input = enumToInteger($input, "$*R_class"); %} +%typemap(scoercein) enum SWIGTYPE * + %{ $input = enumToInteger($input, "$R_class"); %} +%typemap(scoercein) enum SWIGTYPE *const + %{ $input = enumToInteger($input, "$R_class"); %} + +%typemap(scoercein) SWIGTYPE, SWIGTYPE *, SWIGTYPE *const, SWIGTYPE &, SWIGTYPE && + %{ if (inherits($input, "ExternalReference")) $input = slot($input,"ref") %} + +/* +%typemap(scoercein) SWIGTYPE *, SWIGTYPE *const + %{ $input = coerceIfNotSubclass($input, "$R_class") %} + +%typemap(scoercein) SWIGTYPE & + %{ $input = coerceIfNotSubclass($input, "$R_class") %} + +%typemap(scoercein) SWIGTYPE && + %{ $input = coerceIfNotSubclass($input, "$R_class") %} + +%typemap(scoercein) SWIGTYPE + %{ $input = coerceIfNotSubclass($input, "$&R_class") %} +*/ + +%typemap(scoercein) SWIGTYPE[ANY] + %{ + if(is.list($input)) + assert(all(sapply($input, class) == "$R_class")); + %} + + +/* **************************************************************** */ + +%typemap(scoercein) bool, bool *, bool & + "$input = as.logical($input);"; +%typemap(scoercein) int, + int *, + int &, + long, + long *, + long & + "$input = as.integer($input);"; + +%typemap(scoercein) char *, string, std::string, +string &, std::string & +%{ $input = as($input, "character"); %} + +%typemap(scoerceout) enum SWIGTYPE + %{ $result = enumFromInteger($result, "$R_class"); %} + +%typemap(scoerceout) enum SWIGTYPE & + %{ $result = enumFromInteger($result, "$*R_class"); %} + +%typemap(scoerceout) enum SWIGTYPE && + %{ $result = enumFromInteger($result, "$R_class"); %} + +%typemap(scoerceout) enum SWIGTYPE * + %{ $result = enumToInteger($result, "$R_class"); %} + +%typemap(scoerceout) enum SWIGTYPE *const + %{ $result = enumToInteger($result, "$R_class"); %} + +%typemap(scoerceout) SEXP %{ %} + +%typemap(scoerceout) SWIGTYPE + %{ $result <- if (is.null($result)) $result + else new("$&R_class", ref=$result); %} + +%typemap(scoerceout) SWIGTYPE & + %{ $result <- if (is.null($result)) $result + else new("$R_class", ref=$result); %} + + +%typemap(scoerceout) SWIGTYPE && + %{ $result <- if (is.null($result)) $result + else new("$R_class", ref=$result); %} + +%typemap(scoerceout) SWIGTYPE * + %{ $result <- if (is.null($result)) $result + else new("$R_class", ref=$result); %} + + +%typemap(scoerceout) SWIGTYPE *const + %{ $result <- if (is.null($result)) $result + else new("$R_class", ref=$result); %} + + +/* Override the SWIGTYPE * above. */ +%typemap(scoerceout) char, + char *, + char &, + float, + double, + float*, + double*, + float &, + double &, + int, + int &, + long, + long &, + bool, + bool &, + string, + std::string, + string &, + std::string &, + void, + signed int, + signed int &, + unsigned int, + unsigned int &, + short, + short &, + unsigned short, + unsigned short &, + long long, + signed long long, + signed long long &, + unsigned long long, + unsigned long long &, + signed long, + signed long &, + unsigned long, + unsigned long &, + signed char, + signed char &, + unsigned char, + unsigned char & + %{ %} + +%apply int {size_t, +std::size_t, +ptrdiff_t, +std::ptrdiff_t, +signed int, +unsigned int, +short, +unsigned short, +signed char, +unsigned char} + +%apply int* {size_t[], +std::size_t[], +ptrdiff_t[], +std::ptrdiff_t[], +signed int[], +unsigned int[], +short[], +unsigned short[], +signed char[], +unsigned char[]} + +%apply int* {size_t[ANY], +std::size_t[ANY], +ptrdiff_t[ANY], +std::ptrdiff_t[ANY], +signed int[ANY], +unsigned int[ANY], +short[ANY], +unsigned short[ANY], +signed char[ANY], +unsigned char[ANY]} + +%apply int* {size_t*, +std::size_t*, +ptrdiff_t*, +std::ptrdiff_t*, +signed int*, +unsigned int*, +short*, +unsigned short*, +signed char*, +unsigned char*} + +%apply long { + long long, + signed long long, + unsigned long long, + signed long, + unsigned long} + +%apply long* { + long long*, + signed long long*, + unsigned long long*, + signed long*, + unsigned long*, + long long[], + signed long long[], + unsigned long long[], + signed long[], + unsigned long[], + long long[ANY], + signed long long[ANY], + unsigned long long[ANY], + signed long[ANY], + unsigned long[ANY]} + +%apply float* { + float[], + float[ANY] +} +%apply double * { + double[], + double[ANY] +} + +%apply bool* { + bool[], + bool[ANY] +} + +#if 0 + Just examining the values for a SWIGTYPE. + +%typemap(scoerceout) SWIGTYPE %{ + + name = $1_name + type = $1_type + ltype = $1_ltype + + mangle = $1_mangle + descriptor = $1_descriptor + + pointer type = $*1_type + pointer ltype = $*1_ltype + + pointer descriptor = $*1_descriptor + basetype = $*_basetype + +%} +#endif + + diff --git a/macx64/bin/swig/share/swig/4.0.0/r/srun.swg b/macx64/bin/swig/share/swig/4.0.0/r/srun.swg new file mode 100644 index 00000000..2e8eda11 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/srun.swg @@ -0,0 +1,150 @@ +# srun.swg # +# +# This is the basic code that is needed at run time within R to +# provide and define the relevant classes. It is included +# automatically in the generated code by copying the contents of +# srun.swg into the newly created binding code. + + +# This could be provided as a separate run-time library but this +# approach allows the code to be included directly into the +# generated bindings and so removes the need to have and install an +# additional library. We may however end up with multiple copies of +# this and some confusion at run-time as to which class to use. This +# is an issue when we use NAMESPACES as we may need to export certain +# classes. + +###################################################################### + +if(length(getClassDef("RSWIGStruct")) == 0) + setClass("RSWIGStruct", representation("VIRTUAL")) + + + +if(length(getClassDef("ExternalReference")) == 0) +# Should be virtual but this means it loses its slots currently +#representation("VIRTUAL") + setClass("ExternalReference", representation( ref = "externalptr")) + + + +if(length(getClassDef("NativeRoutinePointer")) == 0) + setClass("NativeRoutinePointer", + representation(parameterTypes = "character", + returnType = "character", + "VIRTUAL"), + contains = "ExternalReference") + +if(length(getClassDef("CRoutinePointer")) == 0) + setClass("CRoutinePointer", contains = "NativeRoutinePointer") + + +if(length(getClassDef("EnumerationValue")) == 0) + setClass("EnumerationValue", contains = "integer") + + +if(!isGeneric("copyToR")) + setGeneric("copyToR", + function(value, obj = new(gsub("Ref$", "", class(value)))) + standardGeneric("copyToR" + )) + +setGeneric("delete", function(obj) standardGeneric("delete")) + + +SWIG_createNewRef = +function(className, ..., append = TRUE) +{ + f = get(paste("new", className, sep = "_"), mode = "function") + + f(...) +} + +if(!isGeneric("copyToC")) + setGeneric("copyToC", + function(value, obj = SWIG_createNewRef(class(value))) + standardGeneric("copyToC" + )) + + +# +defineEnumeration = +function(name, .values, where = topenv(parent.frame()), suffix = "Value") +{ + # Mirror the class definitions via the E analogous to .__C__ + defName = paste(".__E__", name, sep = "") + delayedAssign(defName, .values, assign.env = where) + + if(nchar(suffix)) + name = paste(name, suffix, sep = "") + + setClass(name, contains = "EnumerationValue", where = where) +} + +enumToInteger <- function(name,type) +{ + if (is.character(name)) { + ans <- as.integer(get(paste(".__E__", type, sep = ""))[name]) + if (is.na(ans)) {warning("enum not found ", name, " ", type)} + ans + } +} + +enumFromInteger = +function(i,type) +{ + itemlist <- get(paste(".__E__", type, sep="")) + names(itemlist)[match(i, itemlist)] +} + +coerceIfNotSubclass = +function(obj, type) +{ + if(!is(obj, type)) {as(obj, type)} else obj +} + + +setClass("SWIGArray", representation(dims = "integer"), contains = "ExternalReference") + +setMethod("length", "SWIGArray", function(x) x@dims[1]) + + +defineEnumeration("SCopyReferences", + .values = c( "FALSE" = 0, "TRUE" = 1, "DEEP" = 2)) + +assert = +function(condition, message = "") +{ + if(!condition) + stop(message) + + TRUE +} + + +if(FALSE) { +print.SWIGFunction = +function(x, ...) + { + } +} + + +####################################################################### + +R_SWIG_getCallbackFunctionStack = +function() +{ + # No PACKAGE argument as we don't know what the DLL is. + .Call("R_SWIG_debug_getCallbackFunctionData") +} + +R_SWIG_addCallbackFunctionStack = +function(fun, userData = NULL) +{ + # No PACKAGE argument as we don't know what the DLL is. + .Call("R_SWIG_R_pushCallbackFunctionData", fun, userData) +} + + +####################################################################### diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_alloc.i b/macx64/bin/swig/share/swig/4.0.0/r/std_alloc.i new file mode 100644 index 00000000..87fa8d4a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_alloc.i @@ -0,0 +1 @@ +%include \ No newline at end of file diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_common.i b/macx64/bin/swig/share/swig/4.0.0/r/std_common.i new file mode 100644 index 00000000..cda26231 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_common.i @@ -0,0 +1,73 @@ +%include + + +/* + Generate the traits for a 'primitive' type, such as 'double', + for which the SWIG_AsVal and SWIG_From methods are already defined. +*/ + +%define %traits_ptypen(Type...) + %fragment(SWIG_Traits_frag(Type),"header", + fragment=SWIG_AsVal_frag(Type), + fragment=SWIG_From_frag(Type), + fragment="StdTraits") { +namespace swig { + template <> struct traits< Type > { + typedef value_category category; + static const char* type_name() { return #Type; } + }; + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(SEXP obj, value_type *val) { + return SWIG_AsVal(Type)(obj, val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static SEXP from(const value_type& val) { + return SWIG_From(Type)(val); + } + }; +} +} +%enddef + +/* Traits for enums. This is bit of a sneaky trick needed because a generic template specialization of enums + is not possible (unless using template meta-programming which SWIG doesn't support because of the explicit + instantiations required using %template). The STL containers define the 'front' method and the typemap + below is used whenever the front method is wrapped returning an enum. This typemap simply picks up the + standard enum typemap, but additionally drags in a fragment containing the traits_asval and traits_from + required in the generated code for enums. */ + +%define %traits_enum(Type...) + %fragment("SWIG_Traits_enum_"{Type},"header", + fragment=SWIG_AsVal_frag(int), + fragment=SWIG_From_frag(int), + fragment="StdTraits") { +namespace swig { + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(SEXP obj, value_type *val) { + return SWIG_AsVal(int)(obj, (int *)val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static SEXP from(const value_type& val) { + return SWIG_From(int)((int)val); + } + }; +} +} +%typemap(out, fragment="SWIG_Traits_enum_"{Type}) const enum SWIGTYPE& front %{$typemap(out, const enum SWIGTYPE&)%} +%enddef + + +%include + +// +// Generates the traits for all the known primitive +// C++ types (int, double, ...) +// +%apply_cpptypes(%traits_ptypen); + diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_container.i b/macx64/bin/swig/share/swig/4.0.0/r/std_container.i new file mode 100644 index 00000000..076c1c6a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_container.i @@ -0,0 +1,2 @@ +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/r/std_deque.i new file mode 100644 index 00000000..0c757ab0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_deque.i @@ -0,0 +1 @@ +%include \ No newline at end of file diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_except.i b/macx64/bin/swig/share/swig/4.0.0/r/std_except.i new file mode 100644 index 00000000..af98428f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_except.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_list.i b/macx64/bin/swig/share/swig/4.0.0/r/std_list.i new file mode 100644 index 00000000..d67ec021 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_list.i @@ -0,0 +1,5 @@ +#define %swig_list_methods(Type...) %swig_sequence_methods(Type) +#define %swig_list_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_map.i b/macx64/bin/swig/share/swig/4.0.0/r/std_map.i new file mode 100644 index 00000000..56057514 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_map.i @@ -0,0 +1,5 @@ +%fragment("StdMapTraits","header") +%{ +%} + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/r/std_pair.i new file mode 100644 index 00000000..e9803449 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_pair.i @@ -0,0 +1,5 @@ +%fragment("StdPairTraits","header") +%{ +%} + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/r/std_shared_ptr.i new file mode 100644 index 00000000..df873679 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_shared_ptr.i @@ -0,0 +1,2 @@ +#define SWIG_SHARED_PTR_NAMESPACE std +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_string.i b/macx64/bin/swig/share/swig/4.0.0/r/std_string.i new file mode 100644 index 00000000..dc1378ae --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_string.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/r/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/r/std_vector.i new file mode 100644 index 00000000..4ec51dc9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/std_vector.i @@ -0,0 +1,1073 @@ +// R specific swig components +/* + Vectors +*/ + +%fragment("StdVectorTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + // vectors of doubles + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(REALSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + NUMERIC_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + // vectors of floats + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(REALSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + NUMERIC_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + // vectors of unsigned 8bit int + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + // vectors of 8bit int + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + + // vectors of unsigned 16bit int + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + // vectors of 16bit int + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + + // vectors of 32 bit unsigned int + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + + // vectors of 32bit int + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + + // vectors of 64 bit unsigned int +#if defined(SWIGWORDSIZE64) + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + // vectors of 64 bit int + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; +#else + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + // vectors of 64 bit int + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(INTSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + INTEGER_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; +#endif + // vectors of bool + template <> + struct traits_from_ptr > { + static SEXP from (std::vector *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(LGLSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + LOGICAL_POINTER(result)[pos] = ((*val)[pos]); + } + UNPROTECT(1); + return(result); + } + }; + + // vectors of strings + template <> + struct traits_from_ptr > > { + static SEXP from (std::vector > *val, int owner = 0) { + SEXP result; + PROTECT(result = Rf_allocVector(STRSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + CHARACTER_POINTER(result)[pos] = Rf_mkChar(((*val)[pos]).c_str()); + } + UNPROTECT(1); + return(result); + } + }; + + // catch all that does everything with vectors + template + struct traits_from_ptr< std::vector< T > > { + static SEXP from (std::vector< T > *val, int owner = 0) { + return SWIG_R_NewPointerObj(val, type_info< std::vector< T > >(), owner); + } + }; + ///////////////////////////////////////////////// + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + // not sure how to check the size of the SEXP obj is correct + unsigned int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + double *S = NUMERIC_POINTER(obj); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + // not sure how to check the size of the SEXP obj is correct + unsigned int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + double *S = NUMERIC_POINTER(obj); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + // 8 bit integer types + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + unsigned int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + // not sure how to check the size of the SEXP obj is correct + int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + + // 16 bit integer types + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + unsigned int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + // not sure how to check the size of the SEXP obj is correct + int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + // 32 bit integer types + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + unsigned int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + // not sure how to check the size of the SEXP obj is correct + int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + +#if defined(SWIGWORDSIZE64) + // 64 bit integer types + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + unsigned int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + // not sure how to check the size of the SEXP obj is correct + int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + +#else + // 64 bit integer types + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + unsigned int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + // not sure how to check the size of the SEXP obj is correct + int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); + int *S = INTEGER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + +#endif + + template <> + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + // not sure how to check the size of the SEXP obj is correct + int sexpsz = Rf_length(obj); + p = new std::vector(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, LGLSXP)); + int *S = LOGICAL_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + (*p)[pos] = static_cast(S[pos]); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + + template <> + struct traits_asptr < std::vector > > { + static int asptr(SEXP obj, std::vector > **val) { + std::vector > *p; + // R character vectors are STRSXP containing CHARSXP + // access a CHARSXP using STRING_ELT + int sexpsz = Rf_length(obj); + p = new std::vector >(sexpsz); + SEXP coerced; + PROTECT(coerced = Rf_coerceVector(obj, STRSXP)); + //SEXP *S = CHARACTER_POINTER(coerced); + for (unsigned pos = 0; pos < p->size(); pos++) + { + const char * thecstring = CHAR(STRING_ELT(coerced, pos)); + (*p)[pos] = std::basic_string(thecstring); + } + int res = SWIG_OK; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + UNPROTECT(1); + return res; + } + }; + + // catchall for R to vector conversion + template + struct traits_asptr < std::vector > { + static int asptr(SEXP obj, std::vector **val) { + std::vector *p; + int res = SWIG_R_ConvertPtr(obj, (void**)&p, type_info< std::vector >(), 0); + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + // now for vectors of vectors. These will be represented as lists of vectors on the + // catch all that does everything with vectors + template <> + struct traits_from_ptr > > { + static SEXP from (std::vector< std::vector > *val, int owner = 0) { + SEXP result; + // allocate the R list + PROTECT(result = Rf_allocVector(VECSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + // allocate the R vector + SET_VECTOR_ELT(result, pos, Rf_allocVector(INTSXP, val->at(pos).size())); + // Fill the R vector + for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) + { + INTEGER_POINTER(VECTOR_ELT(result, pos))[vpos] = static_cast(val->at(pos).at(vpos)); + } + } + UNPROTECT(1); + return(result); + } + }; + + + template <> + struct traits_from_ptr > > { + static SEXP from (std::vector< std::vector > *val, int owner = 0) { + SEXP result; + // allocate the R list + PROTECT(result = Rf_allocVector(VECSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + // allocate the R vector + SET_VECTOR_ELT(result, pos, Rf_allocVector(INTSXP, val->at(pos).size())); + // Fill the R vector + for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) + { + INTEGER_POINTER(VECTOR_ELT(result, pos))[vpos] = static_cast(val->at(pos).at(vpos)); + } + } + UNPROTECT(1); + return(result); + } + }; + + template <> + struct traits_from_ptr > > { + static SEXP from (std::vector< std::vector > *val, int owner = 0) { + SEXP result; + // allocate the R list + PROTECT(result = Rf_allocVector(VECSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + // allocate the R vector + SET_VECTOR_ELT(result, pos, Rf_allocVector(REALSXP, val->at(pos).size())); + // Fill the R vector + for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) + { + NUMERIC_POINTER(VECTOR_ELT(result, pos))[vpos] = static_cast(val->at(pos).at(vpos)); + } + } + UNPROTECT(1); + return(result); + } + }; + + template <> + struct traits_from_ptr > > { + static SEXP from (std::vector< std::vector > *val, int owner = 0) { + SEXP result; + // allocate the R list + PROTECT(result = Rf_allocVector(VECSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + // allocate the R vector + SET_VECTOR_ELT(result, pos, Rf_allocVector(REALSXP, val->at(pos).size())); + // Fill the R vector + for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) + { + NUMERIC_POINTER(VECTOR_ELT(result, pos))[vpos] = static_cast(val->at(pos).at(vpos)); + } + } + UNPROTECT(1); + return(result); + } + }; + + template <> + struct traits_from_ptr > > { + static SEXP from (std::vector< std::vector > *val, int owner = 0) { + SEXP result; + // allocate the R list + PROTECT(result = Rf_allocVector(VECSXP, val->size())); + for (unsigned pos = 0; pos < val->size(); pos++) + { + // allocate the R vector + SET_VECTOR_ELT(result, pos, Rf_allocVector(LGLSXP, val->at(pos).size())); + // Fill the R vector + for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) + { + LOGICAL_POINTER(VECTOR_ELT(result, pos))[vpos] = (val->at(pos).at(vpos)); + } + } + UNPROTECT(1); + return(result); + } + }; + + template + struct traits_from_ptr< std::vector < std::vector< T > > > { + static SEXP from (std::vector < std::vector< T > > *val, int owner = 0) { + return SWIG_R_NewPointerObj(val, type_info< std::vector < std::vector< T > > >(), owner); + } + }; + + ///////////////////////////////////////////////////////////////// + + // R side + template <> + struct traits_asptr < std::vector< std::vector > > { + static int asptr(SEXP obj, std::vector< std::vector > **val) { + std::vector > *p; + // this is the length of the list + unsigned int sexpsz = Rf_length(obj); + p = new std::vector< std::vector > (sexpsz); + + for (unsigned listpos = 0; listpos < sexpsz; ++listpos) + { + unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); + for (unsigned vpos = 0; vpos < vecsize; ++vpos) + { + (*p)[listpos].push_back(static_cast(INTEGER_POINTER(VECTOR_ELT(obj, listpos))[vpos])); + } + } + + int res = SWIG_OK; + + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template <> + struct traits_asptr < std::vector< std::vector< int> > > { + static int asptr(SEXP obj, std::vector< std::vector< int> > **val) { + std::vector > *p; + // this is the length of the list + unsigned int sexpsz = Rf_length(obj); + p = new std::vector< std::vector< int> > (sexpsz); + + for (unsigned listpos = 0; listpos < sexpsz; ++listpos) + { + unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); + for (unsigned vpos = 0; vpos < vecsize; ++vpos) + { + (*p)[listpos].push_back(static_cast(INTEGER_POINTER(VECTOR_ELT(obj, listpos))[vpos])); + } + } + + int res = SWIG_OK; + + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template <> + struct traits_asptr < std::vector< std::vector< float> > > { + static int asptr(SEXP obj, std::vector< std::vector< float> > **val) { + std::vector > *p; + // this is the length of the list + unsigned int sexpsz = Rf_length(obj); + p = new std::vector< std::vector< float> > (sexpsz); + + for (unsigned listpos = 0; listpos < sexpsz; ++listpos) + { + unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); + for (unsigned vpos = 0; vpos < vecsize; ++vpos) + { + (*p)[listpos].push_back(static_cast(NUMERIC_POINTER(VECTOR_ELT(obj, listpos))[vpos])); + } + } + + int res = SWIG_OK; + + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template <> + struct traits_asptr < std::vector< std::vector< double> > > { + static int asptr(SEXP obj, std::vector< std::vector< double> > **val) { + std::vector > *p; + // this is the length of the list + unsigned int sexpsz = Rf_length(obj); + p = new std::vector< std::vector< double> > (sexpsz); + + for (unsigned listpos = 0; listpos < sexpsz; ++listpos) + { + unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); + for (unsigned vpos = 0; vpos < vecsize; ++vpos) + { + (*p)[listpos].push_back(static_cast(NUMERIC_POINTER(VECTOR_ELT(obj, listpos))[vpos])); + } + } + + int res = SWIG_OK; + + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template <> + struct traits_asptr < std::vector< std::vector< bool > > > { + static int asptr(SEXP obj, std::vector< std::vector< bool> > **val) { + std::vector > *p; + // this is the length of the list + unsigned int sexpsz = Rf_length(obj); + p = new std::vector< std::vector< bool > > (sexpsz); + + for (unsigned listpos = 0; listpos < sexpsz; ++listpos) + { + unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); + for (unsigned vpos = 0; vpos < vecsize; ++vpos) + { + (*p)[listpos].push_back(static_cast(LOGICAL_POINTER(VECTOR_ELT(obj, listpos))[vpos])); + } + } + + int res = SWIG_OK; + + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + // catchall + template + struct traits_asptr < std::vector< std::vector > > { + static int asptr(SEXP obj, std::vector< std::vector > **val) { + std::vector< std::vector > *p; + Rprintf("vector of vectors - unsupported content\n"); + int res = SWIG_R_ConvertPtr(obj, (void**)&p, type_info< std::vector< std::vector > > (), 0); + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + } +%} + +#define %swig_vector_methods(Type...) %swig_sequence_methods(Type) +#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type); + +%define %traits_type_name(Type...) +%fragment(SWIG_Traits_frag(Type), "header", + fragment="StdTraits",fragment="StdVectorTraits") { + namespace swig { + template <> struct traits< Type > { + typedef pointer_category category; + static const char* type_name() { + return #Type; + } + }; + } + } +%enddef + +%include + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector) +%traits_type_name(std::vector) +%typemap("rtypecheck") std::vector, std::vector *, std::vector & + %{ is.numeric($arg) %} +%typemap("rtype") std::vector "numeric" +%typemap("scoercein") std::vector, std::vector *, std::vector & "$input = as.numeric($input);"; + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector) +%traits_type_name(std::vector) + +// reuse these for float +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; + + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); +%typemap("rtypecheck") std::vector, std::vector *, std::vector & + %{ is.logical($arg) %} +%typemap("rtype") std::vector "logical" +%typemap("scoercein") std::vector , std::vector & "$input = as.logical($input);"; + + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); +%typemap("rtypecheck") std::vector, std::vector *, std::vector & + %{ is.integer($arg) || is.numeric($arg) %} + +%typemap("rtype") std::vector "integer" +%typemap("scoercein") std::vector , std::vector *, std::vector & "$input = as.integer($input);"; + +// strings +%typemap("rtype") std::vector< std::basic_string >, +std::vector< std::basic_string > *, + std::vector< std::basic_string > & "character" + +%typemap("rtypecheck") std::vector< std::basic_string >, +std::vector< std::basic_string > *, + std::vector< std::basic_string > & + %{ is.character($arg) %} + +%typemap("scoercein") std::vector< std::basic_string >, +std::vector< std::basic_string > *, + std::vector< std::basic_string > & "$input = as.character($input);"; + +%typemap("scoerceout") std::vector< std::basic_string >, +std::vector< std::basic_string > *, + std::vector< std::basic_string > & +%{ %} + +%apply std::vector< std::basic_string > { std::vector< std::string> }; + +// all the related integer vectors +// signed +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); + +#if defined(SWIGWORDSIZE64) +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); +#else +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); +#endif + +// unsigned +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); + +#if defined(SWIGWORDSIZE64) +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); +#else +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); +%traits_type_name(std::vector); +#endif + +// These R side typemaps are common for integer types +// but we can't use %apply as it will copy the C side ones too +// Also note that we don't seem to be able to use types like +// int_least8_t here. +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; + +#if defined(SWIGWORDSIZE64) +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +#else +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +#endif + + +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; + +#if defined(SWIGWORDSIZE64) +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +#else +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +#endif + +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; + +#if defined(SWIGWORDSIZE64) +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +#else +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +#endif + +/////////////////////////////////////////////////////////////// + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); +%traits_type_name(std::vector< std::vector >); +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & + %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} +%typemap("rtype") std::vector >, std::vector > *, std::vector > & "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & "$input = lapply($input, as.integer);"; + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); +%traits_type_name(std::vector< std::vector >); +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & + %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} +%typemap("rtype") std::vector >, std::vector > *, std::vector > & "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & "$input = lapply($input, as.integer);"; + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); +%traits_type_name(std::vector< std::vector >); +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & + %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} +%typemap("rtype") std::vector >, std::vector > *, std::vector > "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & "$input = lapply($input, as.numeric);"; + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); +%traits_type_name(std::vector< std::vector >); +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & + %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} +%typemap("rtype") std::vector >, std::vector > *, std::vector > & "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & + "$input = lapply($input, as.numeric);"; + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); +%traits_type_name(std::vector< std::vector >); +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & + %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} +%typemap("rtype") std::vector >, std::vector > *, std::vector > & "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & "$input = lapply($input, as.logical);"; + +// we don't want these to be given R classes as they +// have already been turned into R vectors. +%typemap(scoerceout) std::vector, + std::vector*, + std::vector&, + std::vector , + std::vector*, + std::vector , + std::vector, + std::vector*, + std::vector&, + std::vector, + std::vector*, + std::vector&, + std::vector, + std::vector*, + std::vector&, + std::vector, + std::vector*, + std::vector&, + std::vector, + std::vector*, + std::vector&, + std::vector, + std::vector*, + std::vector&, + std::vector, + std::vector*, + std::vector&, + // vectors of vectors + std::vector< std::vector >, + std::vector< std::vector >*, + std::vector< std::vector >&, + std::vector< std::vector >, + std::vector< std::vector >*, + std::vector< std::vector >&, + std::vector< std::vector >, + std::vector< std::vector >*, + std::vector< std::vector >&, + std::vector< std::vector >, + std::vector< std::vector >*, + std::vector< std::vector >&, + std::vector< std::vector >, + std::vector< std::vector >*, + std::vector< std::vector >& + %{ %} + +#if defined(SWIGWORDSIZE64) +%typemap(scoerceout) std::vector, + std::vector*, + std::vector&, + std::vector, + std::vector*, + std::vector& + %{ %} +#else + +%typemap(scoerceout) std::vector, + std::vector*, + std::vector&, + std::vector, + std::vector*, + std::vector& + %{ %} + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/r/stl.i b/macx64/bin/swig/share/swig/4.0.0/r/stl.i new file mode 100644 index 00000000..91da6a2b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/stl.i @@ -0,0 +1,9 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/r/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/r/typemaps.i new file mode 100644 index 00000000..1f9b9c43 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/r/typemaps.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/Makefile.swig b/macx64/bin/swig/share/swig/4.0.0/ruby/Makefile.swig new file mode 100644 index 00000000..648b3213 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/Makefile.swig @@ -0,0 +1,42 @@ +# File : Makefile.swig +# Makefile for a SWIG module. Use this file if you are +# producing a Ruby extension for general use or distribution. +# +# 1. Prepare extconf.rb. +# 2. Modify this file as appropriate. +# 3. Type 'make -f Makefile.swig' to generate wrapper code and Makefile. +# 4. Type 'make' to build your extension. +# 5. Type 'make install' to install your extension. +# + +MODULE = yourmodule +FEATURE = $(MODULE) +INTERFACE = $(MODULE).i +RUBY = ruby +SWIG = swig + +# for C extension +SWIGOPT = -ruby +WRAPPER = $(MODULE)_wrap.c + +## for C++ extension +#SWIGOPT = -ruby -c++ +#WRAPPER = $(MODULE)_wrap.cc + + +swigall: $(WRAPPER) Makefile + +$(WRAPPER): $(INTERFACE) + $(SWIG) $(SWIGOPT) -o $@ $(INTERFACE) + +Makefile: extconf.rb + $(RUBY) extconf.rb + @if [ -f Makefile ] ; then\ + echo "include Makefile.swig" >> Makefile;\ + fi + +swigclean: + @if [ -f Makefile ] ; then\ + make -f Makefile clean;\ + fi + rm -f Makefile $(WRAPPER) diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/argcargv.i b/macx64/bin/swig/share/swig/4.0.0/ruby/argcargv.i new file mode 100644 index 00000000..fc0bc406 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/argcargv.i @@ -0,0 +1,48 @@ +/* ------------------------------------------------------------ + * --- Argc & Argv --- + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + + Use it as follow: + + %apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) } + + %inline %{ + + int mainApp(size_t argc, const char **argv) + { + return argc; + } + + then in the ruby side: + + args = ["asdf", "asdf2"] + mainApp(args); + + * ------------------------------------------------------------ */ + +%typemap(in) (int ARGC, char **ARGV) { + if (rb_obj_is_kind_of($input,rb_cArray)) { + int i; + int size = RARRAY_LEN($input); + $1 = ($1_ltype) size; + $2 = (char **) malloc((size+1)*sizeof(char *)); + VALUE *ptr = RARRAY_PTR($input); + for (i=0; i < size; i++, ptr++) { + $2[i]= StringValuePtr(*ptr); + } + $2[i]=NULL; + } else { + $1 = 0; $2 = 0; + %argument_fail(SWIG_TypeError, "int ARGC, char **ARGV", $symname, $argnum); + } +} + +%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { + $1 = rb_obj_is_kind_of($input,rb_cArray); +} + +%typemap(freearg) (int ARGC, char **ARGV) { + free((char *) $2); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/attribute.i b/macx64/bin/swig/share/swig/4.0.0/ruby/attribute.i new file mode 100644 index 00000000..779716cd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/attribute.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/boost_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/ruby/boost_shared_ptr.i new file mode 100644 index 00000000..9676bf9d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/boost_shared_ptr.i @@ -0,0 +1,401 @@ +%include + +// Set SHARED_PTR_DISOWN to $disown if required, for example +// #define SHARED_PTR_DISOWN $disown +#if !defined(SHARED_PTR_DISOWN) +#define SHARED_PTR_DISOWN 0 +#endif + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_SHARED_PTR_TYPEMAPS(CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor wrapper customisation +%feature("unref") TYPE + %{(void)arg1; + delete reinterpret_cast< SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > * >(self);%} + +// Typemap customisations... + +// plain value +%typemap(in) CONST TYPE (void *argp, int res = 0) { + swig_ruby_owntype newmem = {0, 0}; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(out) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE { + void *argp = 0; + swig_ruby_owntype newmem = {0, 0}; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(varout) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) CONST TYPE (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE (void *swig_argp, int swig_res = 0) { + swig_ruby_owntype newmem = {0, 0}; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (!swig_argp) { + %dirout_nullref("$type"); + } else { + $result = *(%reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} + +// plain pointer +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) CONST TYPE * (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) { + swig_ruby_owntype newmem = {0, 0}; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem.own & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} + +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), $owner | SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE * { + void *argp = 0; + swig_ruby_owntype newmem = {0, 0}; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0; + if (newmem.own & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE * %{ +#error "directorout typemap for plain pointer not implemented" +%} + +// plain reference +%typemap(in) CONST TYPE & (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + swig_ruby_owntype newmem = {0, 0}; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + if (newmem.own & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + $1 = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE & { + void *argp = 0; + swig_ruby_owntype newmem = {0, 0}; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + if (!argp) { + %variable_nullref("$type", "$name"); + } + if (newmem.own & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = *%const_cast(tempshared.get(), $1_ltype); + } else { + $1 = *%const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE & %{ +#error "directorout typemap for plain reference not implemented" +%} + +// plain pointer by reference +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) TYPE *CONST& (void *argp = 0, int res = 0, $*1_ltype temp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + swig_ruby_owntype newmem = {0, 0}; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem.own & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + temp = %const_cast(tempshared.get(), $*1_ltype); + } else { + temp = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $*1_ltype); + } + $1 = &temp; +} +%typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) TYPE *CONST& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) TYPE *CONST& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") TYPE *CONST& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) TYPE *CONST& %{ +#error "directorout typemap for plain pointer by reference not implemented" +%} + +// shared_ptr by value +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *argp, int res = 0) { + swig_ruby_owntype newmem = {0, 0}; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) $1 = *(%reinterpret_cast(argp, $<ype)); + if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + swig_ruby_owntype newmem = {0, 0}; + void *argp = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = argp ? *(%reinterpret_cast(argp, $<ype)) : SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE >(); + if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *swig_argp, int swig_res = 0) { + swig_ruby_owntype newmem = {0, 0}; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (swig_argp) { + $result = *(%reinterpret_cast(swig_argp, $<ype)); + if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, $<ype); + } +} + +// shared_ptr by reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (void *argp, int res = 0, $*1_ltype tempshared) { + swig_ruby_owntype newmem = {0, 0}; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem.own & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "directorout typemap for shared_ptr ref not implemented" +%} + +// shared_ptr by pointer +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (void *argp, int res = 0, $*1_ltype tempshared) { + swig_ruby_owntype newmem = {0, 0}; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem.own & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); + if ($owner) delete $1; +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "directorout typemap for pointer to shared_ptr not implemented" +%} + +// shared_ptr by pointer reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (void *argp, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, $*1_ltype temp = 0) { + swig_ruby_owntype newmem = {0, 0}; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) tempshared = *%reinterpret_cast(argp, $*ltype); + if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $*ltype); + temp = &tempshared; + $1 = &temp; +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = (*$1 && **$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(**$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "directorout typemap for pointer ref to shared_ptr not implemented" +%} + +// Typecheck typemaps +// Note: SWIG_ConvertPtr with void ** parameter set to 0 instead of using SWIG_ConvertPtrAndOwn, so that the casting +// function is not called thereby avoiding a possible smart pointer copy constructor call when casting up the inheritance chain. +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + int res = SWIG_ConvertPtr($input, 0, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), 0); + $1 = SWIG_CheckState(res); +} + + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + + +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/carrays.i b/macx64/bin/swig/share/swig/4.0.0/ruby/carrays.i new file mode 100644 index 00000000..8f74cd9b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/carrays.i @@ -0,0 +1,6 @@ +%define %array_class(TYPE,NAME) + %array_class_wrap(TYPE,NAME,__getitem__,__setitem__) +%enddef + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/cdata.i b/macx64/bin/swig/share/swig/4.0.0/ruby/cdata.i new file mode 100644 index 00000000..36796599 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/cdata.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/cmalloc.i b/macx64/bin/swig/share/swig/4.0.0/ruby/cmalloc.i new file mode 100644 index 00000000..248f06b9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/cmalloc.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/cpointer.i b/macx64/bin/swig/share/swig/4.0.0/ruby/cpointer.i new file mode 100644 index 00000000..d824792f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/cpointer.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/cstring.i b/macx64/bin/swig/share/swig/4.0.0/ruby/cstring.i new file mode 100644 index 00000000..ede9c596 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/cstring.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/director.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/director.swg new file mode 100644 index 00000000..c6c53a34 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/director.swg @@ -0,0 +1,348 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that Ruby proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +/* + Use -DSWIG_DIRECTOR_NOUEH if you prefer to avoid the use of the + Undefined Exception Handler provided by swig. +*/ +#ifndef SWIG_DIRECTOR_NOUEH +#ifndef SWIG_DIRECTOR_UEH +#define SWIG_DIRECTOR_UEH +#endif +#endif + +#include +#include +#include +#include + +# define SWIG_DIRECTOR_CAST(ARG) dynamic_cast(ARG) + +namespace Swig { + + /* memory handler */ + struct GCItem { + virtual ~GCItem() { + } + + virtual swig_ruby_owntype get_own() const { + swig_ruby_owntype own = {0, 0}; + return own; + } + }; + + struct GCItem_var { + GCItem_var(GCItem *item = 0) : _item(item) { + } + + GCItem_var& operator=(GCItem *item) { + GCItem *tmp = _item; + _item = item; + delete tmp; + return *this; + } + + ~GCItem_var() { + delete _item; + } + + GCItem *operator->() const { + return _item; + } + + private: + GCItem *_item; + }; + + + template + struct GCItem_T : GCItem { + GCItem_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCItem_T() { + delete _ptr; + } + + private: + Type *_ptr; + }; + + struct GCItem_Object : GCItem { + GCItem_Object(swig_ruby_owntype own) : _own(own) { + } + + virtual ~GCItem_Object() { + } + + swig_ruby_owntype get_own() const { + return _own; + } + + private: + swig_ruby_owntype _own; + }; + + template + struct GCArray_T : GCItem { + GCArray_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCArray_T() { + delete[] _ptr; + } + + private: + Type *_ptr; + }; + + + /* body args */ + struct body_args { + VALUE recv; + ID id; + int argc; + VALUE *argv; + }; + + /* Base class for director exceptions */ + class DirectorException : public std::exception { + protected: + VALUE swig_error; + std::string swig_msg; + protected: + DirectorException(VALUE error) : swig_error(error) { + } + + DirectorException(VALUE error, const char *hdr, const char *msg ="") : swig_error(error), swig_msg(hdr) { + if (msg[0]) { + swig_msg += " "; + swig_msg += msg; + } + if (swig_msg.size()) { + VALUE str = rb_str_new(swig_msg.data(), swig_msg.size()); + swig_error = rb_exc_new3(error, str); + } else { + swig_error = error; + } + } + + public: + virtual ~DirectorException() throw() { + } + + VALUE getType() const { + return CLASS_OF(swig_error); + } + + VALUE getError() const { + return swig_error; + } + + /* Deprecated, use what() instead */ + const std::string& getMessage() const { + return swig_msg; + } + + const char *what() const throw() { + return swig_msg.c_str(); + } + }; + + /* unknown exception handler */ + class UnknownExceptionHandler { +#ifdef SWIG_DIRECTOR_UEH + static void handler() { + try { + throw; + } catch (DirectorException& e) { + std::cerr << "SWIG Director exception caught:" << std::endl + << e.what() << std::endl; + } catch (std::exception& e) { + std::cerr << "std::exception caught: "<< e.what() << std::endl; + } catch (...) { + std::cerr << "Unknown exception caught." << std::endl; + } + std::cerr << std::endl + << "Ruby interpreter traceback:" << std::endl; + std::cerr << std::endl; + std::cerr << "This exception was caught by the SWIG unexpected exception handler." << std::endl + << "Try using %feature(\"director:except\") to avoid reaching this point." << std::endl + << std::endl + << "Exception is being re-thrown, program will like abort/terminate." << std::endl; + throw; + } + + public: + std::unexpected_handler old; + UnknownExceptionHandler(std::unexpected_handler nh = handler) { + old = std::set_unexpected(nh); + } + + ~UnknownExceptionHandler() { + std::set_unexpected(old); + } +#endif + }; + + + /* Type mismatch in the return value from a Ruby method call */ + class DirectorTypeMismatchException : public DirectorException { + public: + DirectorTypeMismatchException(VALUE error, const char *msg="") + : DirectorException(error, "SWIG director type mismatch", msg) { + } + + DirectorTypeMismatchException(const char *msg="") + : DirectorException(rb_eTypeError, "SWIG director type mismatch", msg) { + } + + static void raise(VALUE error, const char *msg) { + throw DirectorTypeMismatchException(error, msg); + } + + static void raise(const char *msg) { + throw DirectorTypeMismatchException(msg); + } + }; + + /* Any Ruby exception that occurs during a director method call */ + class DirectorMethodException : public DirectorException { + public: + DirectorMethodException(VALUE error) + : DirectorException(error) { + } + + DirectorMethodException(const char *msg = "") + : DirectorException(rb_eRuntimeError, "SWIG director method error.", msg) { + } + + static void raise(VALUE error) { + throw DirectorMethodException(error); + } + }; + + /* Attempted to call a pure virtual method via a director method */ + class DirectorPureVirtualException : public DirectorException + { + public: + DirectorPureVirtualException(const char *msg = "") + : DirectorException(rb_eRuntimeError, "SWIG director pure virtual method called", msg) { + } + + static void raise(const char *msg) { + throw DirectorPureVirtualException(msg); + } + }; + + /* Simple thread abstraction for pthreads on win32 */ +#ifdef __THREAD__ +# define __PTHREAD__ +# if defined(_WIN32) || defined(__WIN32__) +# define pthread_mutex_lock EnterCriticalSection +# define pthread_mutex_unlock LeaveCriticalSection +# define pthread_mutex_t CRITICAL_SECTION +# define SWIG_MUTEX_INIT(var) var +# else +# include +# define SWIG_MUTEX_INIT(var) var = PTHREAD_MUTEX_INITIALIZER +# endif +#endif + +#ifdef __PTHREAD__ + struct Guard { + pthread_mutex_t *_mutex; + + Guard(pthread_mutex_t &mutex) : _mutex(&mutex) { + pthread_mutex_lock(_mutex); + } + + ~Guard() { + pthread_mutex_unlock(_mutex); + } + }; +# define SWIG_GUARD(mutex) Guard _guard(mutex) +#else +# define SWIG_GUARD(mutex) +#endif + + /* director base class */ + class Director { + private: + /* pointer to the wrapped Ruby object */ + VALUE swig_self; + /* flag indicating whether the object is owned by Ruby or c++ */ + mutable bool swig_disown_flag; + + public: + /* wrap a Ruby object. */ + Director(VALUE self) : swig_self(self), swig_disown_flag(false) { + } + + /* discard our reference at destruction */ + virtual ~Director() { + } + + /* return a pointer to the wrapped Ruby object */ + VALUE swig_get_self() const { + return swig_self; + } + + /* acquire ownership of the wrapped Ruby object (the sense of "disown" is from Ruby) */ + void swig_disown() const { + if (!swig_disown_flag) { + swig_disown_flag = true; + } + } + + /* ownership management */ + private: + typedef std::map swig_ownership_map; + mutable swig_ownership_map swig_owner; +#ifdef __PTHREAD__ + static pthread_mutex_t swig_mutex_own; +#endif + + public: + template + void swig_acquire_ownership_array(Type *vptr) const { + if (vptr) { + SWIG_GUARD(swig_mutex_own); + swig_owner[vptr] = new GCArray_T(vptr); + } + } + + template + void swig_acquire_ownership(Type *vptr) const { + if (vptr) { + SWIG_GUARD(swig_mutex_own); + swig_owner[vptr] = new GCItem_T(vptr); + } + } + + void swig_acquire_ownership_obj(void *vptr, swig_ruby_owntype own) const { + if (vptr && own.datafree) { + SWIG_GUARD(swig_mutex_own); + swig_owner[vptr] = new GCItem_Object(own); + } + } + + swig_ruby_owntype swig_release_ownership(void *vptr) const { + swig_ruby_owntype own = {0, 0}; + if (vptr) { + SWIG_GUARD(swig_mutex_own); + swig_ownership_map::iterator iter = swig_owner.find(vptr); + if (iter != swig_owner.end()) { + own.datafree = iter->second->get_own().datafree; + swig_owner.erase(iter); + } + } + return own; + } + }; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/embed.i b/macx64/bin/swig/share/swig/4.0.0/ruby/embed.i new file mode 100644 index 00000000..9226ef45 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/embed.i @@ -0,0 +1,16 @@ +%wrapper %{ + +#include + +int +main(argc, argv) + int argc; + char **argv; +{ + ruby_init(); + ruby_options(argc, argv); + ruby_run(); + return 0; +} + +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/exception.i b/macx64/bin/swig/share/swig/4.0.0/ruby/exception.i new file mode 100644 index 00000000..1e80d96d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/exception.i @@ -0,0 +1,5 @@ +%include + +%insert("runtime") { + %define_as(SWIG_exception(code, msg), %block(%error(code, msg);)) +} diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/extconf.rb b/macx64/bin/swig/share/swig/4.0.0/ruby/extconf.rb new file mode 100644 index 00000000..3bac8ccc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/extconf.rb @@ -0,0 +1,9 @@ +require 'mkmf' + +dir_config('yourlib') + +if have_header('yourlib.h') and have_library('yourlib', 'yourlib_init') + # If you use swig -c option, you may have to link libswigrb. + # have_library('swigrb') + create_makefile('yourlib') +end diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/factory.i b/macx64/bin/swig/share/swig/4.0.0/ruby/factory.i new file mode 100644 index 00000000..46a0a873 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/factory.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/file.i b/macx64/bin/swig/share/swig/4.0.0/ruby/file.i new file mode 100644 index 00000000..f9aaa275 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/file.i @@ -0,0 +1,39 @@ +// FILE * +%{ +#ifdef __cplusplus +extern "C" { +#endif + +/* Ruby 1.9 changed the file name of this header */ +#ifdef HAVE_RUBY_IO_H +#include "ruby/io.h" +#else +#include "rubyio.h" +#endif + +#ifdef __cplusplus +} +#endif +%} + +%typemap(in) FILE *READ { + OpenFile *of; + GetOpenFile($input, of); + rb_io_check_readable(of); + $1 = GetReadFile(of); + rb_read_check($1); +} + +%typemap(in) FILE *READ_NOCHECK { + OpenFile *of; + GetOpenFile($input, of); + rb_io_check_readable(of); + $1 = GetReadFile(of); +} + +%typemap(in) FILE *WRITE { + OpenFile *of; + GetOpenFile($input, of); + rb_io_check_writable(of); + $1 = GetWriteFile(of); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/progargcargv.i b/macx64/bin/swig/share/swig/4.0.0/ruby/progargcargv.i new file mode 100644 index 00000000..a2843c34 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/progargcargv.i @@ -0,0 +1,34 @@ +/* +int PROG_ARGC +char **PROG_ARGV + + Some C function receive argc and argv from C main function. + This typemap provides ignore typemap which pass Ruby ARGV contents + as argc and argv to C function. +*/ + + + +// argc and argv +%typemap(in,numinputs=0) int PROG_ARGC { + $1 = RARRAY_LEN(rb_argv) + 1; +} + +%typemap(in,numinputs=0) char **PROG_ARGV { + int i, n; + VALUE ary = rb_eval_string("[$0] + ARGV"); + n = RARRAY_LEN(ary); + $1 = (char **)malloc(n + 1); + for (i = 0; i < n; i++) { + VALUE v = rb_obj_as_string(RARRAY_PTR(ary)[i]); + $1[i] = (char *)malloc(RSTRING_LEN(v) + 1); + strcpy($1[i], RSTRING_PTR(v)); + } +} + +%typemap(freearg) char **PROG_ARGV { + int i, n = RARRAY_LEN(rb_argv) + 1; + for (i = 0; i < n; i++) free($1[i]); + free($1); +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/ruby.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/ruby.swg new file mode 100644 index 00000000..d1335974 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/ruby.swg @@ -0,0 +1,72 @@ +/* ------------------------------------------------------------ + * ruby.swg + * + * Ruby configuration module. + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + * The Ruby auto rename rules + * ------------------------------------------------------------ */ +#if defined(SWIG_RUBY_AUTORENAME) +/* Class names are CamelCase */ +%rename("%(camelcase)s", %$isclass) ""; + +/* Constants created by %constant or #define are UPPER_CASE */ +%rename("%(uppercase)s", %$isconstant) ""; + +/* SWIG only considers static class members with inline initializers + to be constants. For examples of what is and isn't considered + a constant by SWIG see naming.i in the Ruby test suite. */ +%rename("%(uppercase)s", %$ismember, %$isvariable,%$isimmutable,%$isstatic,%$hasvalue,%$hasconsttype) ""; + +/* Enums are mapped to constants but all we do is make sure the + first letter is uppercase */ +%rename("%(firstuppercase)s", %$isenumitem) ""; + +/* Method names should be lower_case_with_underscores */ +%rename("%(undercase)s", %$isfunction, %$not %$ismemberget, %$not %$ismemberset) ""; +#endif + +/* ------------------------------------------------------------ + * Inner macros + * ------------------------------------------------------------ */ +%include + + +/* ------------------------------------------------------------ + * The runtime part + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Special user directives + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Typemap specializations + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Overloaded operator support + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Warnings for Ruby keywords + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Documentation for common Ruby methods + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * The Ruby initialization function + * ------------------------------------------------------------ */ +%include + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyapi.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyapi.swg new file mode 100644 index 00000000..e0077572 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyapi.swg @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * Ruby API portion that goes into the runtime + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif + +SWIGINTERN VALUE +SWIG_Ruby_AppendOutput(VALUE target, VALUE o) { + if (NIL_P(target)) { + target = o; + } else { + if (TYPE(target) != T_ARRAY) { + VALUE o2 = target; + target = rb_ary_new(); + rb_ary_push(target, o2); + } + rb_ary_push(target, o); + } + return target; +} + +/* For ruby1.8.4 and earlier. */ +#ifndef RUBY_INIT_STACK + RUBY_EXTERN void Init_stack(VALUE* addr); +# define RUBY_INIT_STACK \ + VALUE variable_in_this_stack_frame; \ + Init_stack(&variable_in_this_stack_frame); +#endif + + +#ifdef __cplusplus +} +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyautodoc.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyautodoc.swg new file mode 100644 index 00000000..1e6b0d9d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyautodoc.swg @@ -0,0 +1,105 @@ +/* ----------------------------------------------------------------------------- + * rubyautodoc.swg + * + * This file implements autodoc typemaps for some common ruby methods. + * ----------------------------------------------------------------------------- */ + +%define AUTODOC(func, str) + %feature("autodoc", str) func; +%enddef + + +AUTODOC(to_i, "Convert $class to an Integer"); +AUTODOC(to_f, "Convert $class to a Float"); +AUTODOC(coerce, "Coerce class to a number"); +AUTODOC(to_a, "Convert $class to an Array"); +AUTODOC(to_s, "Convert class to a String representation"); +AUTODOC(inspect, "Inspect class and its contents"); + +AUTODOC(at, "Return element at a certain index"); +AUTODOC(__getitem__, "Element accessor/slicing"); +AUTODOC(__setitem__, "Element setter/slicing"); +AUTODOC(slice, "Return a slice (portion of) the $class"); + +AUTODOC(push, "Add an element at the end of the $class"); +AUTODOC(pop, "Remove and return element at the end of the $class"); +AUTODOC(shift, "Remove and return element at the beginning of the $class"); +AUTODOC(unshift, "Add one or more elements at the beginning of the $class"); +AUTODOC(first, "Return the first element in $class"); +AUTODOC(last, "Return the last element in $class"); + + +// +// Common Object methods +// +AUTODOC(hash, "Hashing function for class"); +AUTODOC(dup, "Create a duplicate of the class and unfreeze it if needed"); +AUTODOC(clone, "Create a duplicate of the class"); + +// +// Container methods +// +AUTODOC(empty, "Check if $class is empty"); +AUTODOC(size, "Size or Length of the $class"); +AUTODOC(insert, "Insert one or more new elements in the $class"); + +// +// Iterator methods (block) +// +AUTODOC(each, "Iterate thru each element in the $class. A block must be provided"); +AUTODOC(find, "Find an element in the class"); +AUTODOC(each_key, "Iterate thru each key element in the $class. A block must be provided"); +AUTODOC(each_value, "Iterate thru each key element in the $class. A block must be provided"); +AUTODOC(reject, "Iterate thru each element in the $class and reject those that fail a condition returning a new $class. A block must be provided"); +AUTODOC(reject_bang, "Iterate thru each element in the $class and reject those that fail a condition. A block must be provided. $class is modified in place"); +AUTODOC(select, "Iterate thru each element in the $class and select those that match a condition. A block must be provided"); +AUTODOC(delete_at, "Delete an element at a certain index"); +AUTODOC(__delete__, "Delete a matching element"); + + +// +// Hash methods +// +AUTODOC(keys, "Return an Array of key elements"); +AUTODOC(values, "Return an Array of value elements"); +AUTODOC(values_at, "Return an Array of value elements matching the conditions"); + + +// +// Operators +// +#ifdef __cplusplus +AUTODOC(operator==, "Equality comparison operator"); +AUTODOC(operator<=, "Lower or equal comparison operator"); +AUTODOC(operator>=, "Higher or equal comparison operator"); +AUTODOC(operator<, "Lower than comparison operator"); +AUTODOC(operator>, "Higher than comparison operator"); +AUTODOC(operator<<, "Left shifting or appending operator"); +AUTODOC(operator>>, "Right shifting operator or extracting operator"); +AUTODOC(operator+, "Add operator"); +AUTODOC(operator-, "Substraction operator"); +AUTODOC(operator+(), "Positive operator"); +AUTODOC(operator-(), "Negation operator"); +AUTODOC(operator&, "AND operator"); +AUTODOC(operator|, "OR operator"); +AUTODOC(operator^, "XOR operator"); +AUTODOC(operator~, "Invert operator"); +#endif +AUTODOC(__eq__, "Equality comparison operator"); +AUTODOC(__le__, "Lower or equal comparison operator"); +AUTODOC(__ge__, "Higher or equal comparison operator"); +AUTODOC(__lt__, "Lower than comparison operator"); +AUTODOC(__gt__, "Higher than comparison operator"); +AUTODOC(__lshift__, "Left shifting or appending operator"); +AUTODOC(__rshift__, "Right shifting operator or extracting operator"); +AUTODOC(__add___, "Add operator"); +AUTODOC(__sub__, "Substraction operator"); +AUTODOC(__pos__, "Positive operator"); +AUTODOC(__neg__, "Negation operator"); +AUTODOC(__and__, "AND operator"); +AUTODOC(__or__, "OR operator"); +AUTODOC(__xor__, "XOR operator"); +AUTODOC(__negate__, "Invert operator"); +AUTODOC(__pow__, "Exponential operator"); +AUTODOC(__divmod__, "Modulo of division"); +AUTODOC(__cmp__, "Comparison operator. Returns < 0 for less than, 0 for equal or > 1 for higher than."); diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyclasses.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyclasses.swg new file mode 100644 index 00000000..f7b51bdc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyclasses.swg @@ -0,0 +1,404 @@ +#ifdef __cplusplus + +/* + GC_VALUE is used as a replacement of Ruby's VALUE. + GC_VALUE automatically handles registering and unregistering + of the underlying Ruby object with the GC. + + It can be used if you want to create STL containers of VALUEs, such as: + + std::vector< GC_VALUE >; + + or as a member variable: + + struct A { + GC_VALUE _obj; + A(VALUE o) : _obj(o) { + } + }; + + or as a input/output value (not much use for this, as VALUE works just as + well here, thou): + + GC_VALUE func(GC_VALUE obj) { + GC_VALUE out = rb_obj_classname(obj); + return out; + } + + + GC_VALUE is 'visible' at the wrapped side, so you can do: + + %template(RubyVector) std::vector; + + and all the proper typemaps will be used. + +*/ + +%fragment("GC_VALUE_definition","header") { +namespace swig { + class SwigGCReferences { + VALUE _hash; + + SwigGCReferences() : _hash(Qnil) { + } + ~SwigGCReferences() { + if (_hash != Qnil) + rb_gc_unregister_address(&_hash); + } + static void EndProcHandler(VALUE) { + // Ruby interpreter ending - _hash can no longer be accessed. + SwigGCReferences &s_references = instance(); + s_references._hash = Qnil; + } + public: + static SwigGCReferences& instance() { + // Hash of all GC_VALUE's currently in use + static SwigGCReferences s_references; + + return s_references; + } + static void initialize() { + SwigGCReferences &s_references = instance(); + if (s_references._hash == Qnil) { + rb_set_end_proc(&EndProcHandler, Qnil); + s_references._hash = rb_hash_new(); + rb_gc_register_address(&s_references._hash); + } + } + void GC_register(VALUE& obj) { + if (FIXNUM_P(obj) || SPECIAL_CONST_P(obj) || SYMBOL_P(obj)) + return; + if (_hash != Qnil) { + VALUE val = rb_hash_aref(_hash, obj); + unsigned n = FIXNUM_P(val) ? NUM2UINT(val) : 0; + ++n; + rb_hash_aset(_hash, obj, INT2NUM(n)); + } + } + void GC_unregister(const VALUE& obj) { + if (FIXNUM_P(obj) || SPECIAL_CONST_P(obj) || SYMBOL_P(obj)) + return; + // this test should not be needed but I've noticed some very erratic + // behavior of none being unregistered in some very rare situations. + if (BUILTIN_TYPE(obj) == T_NONE) + return; + if (_hash != Qnil) { + VALUE val = rb_hash_aref(_hash, obj); + unsigned n = FIXNUM_P(val) ? NUM2UINT(val) : 1; + --n; + if (n) + rb_hash_aset(_hash, obj, INT2NUM(n)); + else + rb_hash_delete(_hash, obj); + } + } + }; + + class GC_VALUE { + protected: + VALUE _obj; + + static ID hash_id; + static ID lt_id; + static ID gt_id; + static ID eq_id; + static ID le_id; + static ID ge_id; + + static ID pos_id; + static ID neg_id; + static ID inv_id; + + static ID add_id; + static ID sub_id; + static ID mul_id; + static ID div_id; + static ID mod_id; + + static ID and_id; + static ID or_id; + static ID xor_id; + + static ID lshift_id; + static ID rshift_id; + + struct OpArgs + { + VALUE src; + ID id; + int nargs; + VALUE target; + }; + + + public: + GC_VALUE() : _obj(Qnil) + { + } + + GC_VALUE(const GC_VALUE& item) : _obj(item._obj) + { + SwigGCReferences::instance().GC_register(_obj); + } + + GC_VALUE(VALUE obj) :_obj(obj) + { + SwigGCReferences::instance().GC_register(_obj); + } + + ~GC_VALUE() + { + SwigGCReferences::instance().GC_unregister(_obj); + } + + GC_VALUE & operator=(const GC_VALUE& item) + { + SwigGCReferences::instance().GC_unregister(_obj); + _obj = item._obj; + SwigGCReferences::instance().GC_register(_obj); + return *this; + } + + operator VALUE() const + { + return _obj; + } + + VALUE inspect() const + { + return rb_inspect(_obj); + } + + VALUE to_s() const + { + return rb_inspect(_obj); + } + + static VALUE swig_rescue_swallow(VALUE) + { + /* + VALUE errstr = rb_obj_as_string(rb_errinfo()); + printf("Swallowing error: '%s'\n", RSTRING_PTR(StringValue(errstr))); + */ + return Qnil; /* Swallow Ruby exception */ + } + + static VALUE swig_rescue_funcall(VALUE p) + { + OpArgs* args = (OpArgs*) p; + return rb_funcall(args->src, args->id, args->nargs, args->target); + } + + bool relational_equal_op(const GC_VALUE& other, const ID& op_id, bool (*op_func)(const VALUE& a, const VALUE& b)) const + { + if (FIXNUM_P(_obj) && FIXNUM_P(other._obj)) { + return op_func(_obj, other._obj); + } + bool res = false; + VALUE ret = Qnil; + SWIG_RUBY_THREAD_BEGIN_BLOCK; + if (rb_respond_to(_obj, op_id)) { + OpArgs args; + args.src = _obj; + args.id = op_id; + args.nargs = 1; + args.target = VALUE(other); + ret = rb_rescue(RUBY_METHOD_FUNC(swig_rescue_funcall), VALUE(&args), + (RUBY_METHOD_FUNC(swig_rescue_swallow)), Qnil); + } + if (ret == Qnil) { + VALUE a = rb_funcall( _obj, hash_id, 0 ); + VALUE b = rb_funcall( VALUE(other), hash_id, 0 ); + res = op_func(a, b); + } else { + res = RTEST(ret); + } + SWIG_RUBY_THREAD_END_BLOCK; + return res; + } + + static bool operator_eq(const VALUE& a, const VALUE& b) { return a == b; } + static bool operator_lt(const VALUE& a, const VALUE& b) { return a < b; } + static bool operator_le(const VALUE& a, const VALUE& b) { return a <= b; } + static bool operator_gt(const VALUE& a, const VALUE& b) { return a > b; } + static bool operator_ge(const VALUE& a, const VALUE& b) { return a >= b; } + + bool operator==(const GC_VALUE& other) const { return relational_equal_op(other, eq_id, operator_eq); } + bool operator<(const GC_VALUE& other) const { return relational_equal_op(other, lt_id, operator_lt); } + bool operator<=(const GC_VALUE& other) const { return relational_equal_op(other, le_id, operator_le); } + bool operator>(const GC_VALUE& other) const { return relational_equal_op(other, gt_id, operator_gt); } + bool operator>=(const GC_VALUE& other) const { return relational_equal_op(other, ge_id, operator_ge); } + + bool operator!=(const GC_VALUE& other) const + { + return !(this->operator==(other)); + } + + GC_VALUE unary_op(const ID& op_id) const + { + VALUE ret = Qnil; + SWIG_RUBY_THREAD_BEGIN_BLOCK; + OpArgs args; + args.src = _obj; + args.id = op_id; + args.nargs = 0; + args.target = Qnil; + ret = rb_rescue(RUBY_METHOD_FUNC(swig_rescue_funcall), VALUE(&args), + (RUBY_METHOD_FUNC(swig_rescue_swallow)), Qnil); + SWIG_RUBY_THREAD_END_BLOCK; + return ret; + } + + GC_VALUE operator+() const { return unary_op(pos_id); } + GC_VALUE operator-() const { return unary_op(neg_id); } + GC_VALUE operator~() const { return unary_op(inv_id); } + + GC_VALUE binary_op(const GC_VALUE& other, const ID& op_id) const + { + VALUE ret = Qnil; + SWIG_RUBY_THREAD_BEGIN_BLOCK; + OpArgs args; + args.src = _obj; + args.id = op_id; + args.nargs = 1; + args.target = VALUE(other); + ret = rb_rescue(RUBY_METHOD_FUNC(swig_rescue_funcall), VALUE(&args), + (RUBY_METHOD_FUNC(swig_rescue_swallow)), Qnil); + SWIG_RUBY_THREAD_END_BLOCK; + return GC_VALUE(ret); + } + + GC_VALUE operator+(const GC_VALUE& other) const { return binary_op(other, add_id); } + GC_VALUE operator-(const GC_VALUE& other) const { return binary_op(other, sub_id); } + GC_VALUE operator*(const GC_VALUE& other) const { return binary_op(other, mul_id); } + GC_VALUE operator/(const GC_VALUE& other) const { return binary_op(other, div_id); } + GC_VALUE operator%(const GC_VALUE& other) const { return binary_op(other, mod_id); } + GC_VALUE operator&(const GC_VALUE& other) const { return binary_op(other, and_id); } + GC_VALUE operator^(const GC_VALUE& other) const { return binary_op(other, xor_id); } + GC_VALUE operator|(const GC_VALUE& other) const { return binary_op(other, or_id); } + GC_VALUE operator<<(const GC_VALUE& other) const { return binary_op(other, lshift_id); } + GC_VALUE operator>>(const GC_VALUE& other) const { return binary_op(other, rshift_id); } + }; + + ID GC_VALUE::hash_id = rb_intern("hash"); + ID GC_VALUE::lt_id = rb_intern("<"); + ID GC_VALUE::gt_id = rb_intern(">"); + ID GC_VALUE::eq_id = rb_intern("=="); + ID GC_VALUE::le_id = rb_intern("<="); + ID GC_VALUE::ge_id = rb_intern(">="); + + ID GC_VALUE::pos_id = rb_intern("+@"); + ID GC_VALUE::neg_id = rb_intern("-@"); + ID GC_VALUE::inv_id = rb_intern("~"); + + ID GC_VALUE::add_id = rb_intern("+"); + ID GC_VALUE::sub_id = rb_intern("-"); + ID GC_VALUE::mul_id = rb_intern("*"); + ID GC_VALUE::div_id = rb_intern("/"); + ID GC_VALUE::mod_id = rb_intern("%"); + + ID GC_VALUE::and_id = rb_intern("&"); + ID GC_VALUE::or_id = rb_intern("|"); + ID GC_VALUE::xor_id = rb_intern("^"); + + ID GC_VALUE::lshift_id = rb_intern("<<"); + ID GC_VALUE::rshift_id = rb_intern(">>"); + + typedef GC_VALUE LANGUAGE_OBJ; + +} // namespace swig + +} // %fragment(GC_VALUE_definition) + + + +namespace swig { + + %apply VALUE {GC_VALUE}; + + // Make sure this is the last typecheck done + %typecheck(999999,fragment="GC_VALUE_definition",noblock=1) GC_VALUE, GC_VALUE&, + const GC_VALUE& { $1 = 1; }; + + /* For input */ + %typemap(in,fragment="GC_VALUE_definition",noblock=1) GC_VALUE* (GC_VALUE r), GC_VALUE& (GC_VALUE r) { + r = $input; $1 = &r; + } + + /* For output */ + %typemap(out,fragment="GC_VALUE_definition",noblock=1) GC_VALUE { + $result = (VALUE)$1; + } + + %typemap(out,fragment="GC_VALUE_definition",noblock=1) GC_VALUE*, GC_VALUE const & { + $result = (VALUE)*$1; + } + + %nodirector GC_VALUE; + + // We ignore the constructor so that user can never create a GC_VALUE + // manually + %ignore GC_VALUE::GC_VALUE; + + struct GC_VALUE { + VALUE inspect() const; + VALUE to_s() const; + GC_VALUE(); + protected: + GC_VALUE(const GC_VALUE&); + ~GC_VALUE(); + }; + + %exception GC_VALUE {}; + + + %ignore LANGUAGE_OBJ; + typedef GC_VALUE LANGUAGE_OBJ; +} + + +%init { + swig::SwigGCReferences::initialize(); +} + + + +// +// Fragment that contains traits to properly deal with GC_VALUE. +// These functions may be invoked as a need of the from(), asval(), +// asptr() and as() template functors, usually used in %typemaps. +// +%fragment(SWIG_Traits_frag(swig::GC_VALUE),"header",fragment="StdTraits",fragment="GC_VALUE_definition") { +namespace swig { + template <> struct traits { + typedef value_category category; + static const char* type_name() { return "GC_VALUE"; } + }; + + template <> struct traits_from { + typedef GC_VALUE value_type; + static VALUE from(const value_type& val) { + return static_cast(val); + } + }; + + template <> + struct traits_check { + static bool check(GC_VALUE) { + return true; + } + }; + + template <> struct traits_asval { + typedef GC_VALUE value_type; + static int asval(VALUE obj, value_type *val) { + if (val) *val = obj; + return SWIG_OK; + } + }; +} // swig +} // %fragment(traits for swig::GC_VALUE) + + +#endif // __cplusplus + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubycomplex.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubycomplex.swg new file mode 100644 index 00000000..4e249c71 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubycomplex.swg @@ -0,0 +1,148 @@ +/* + Defines the As/From conversors for double/float complex, you need to + provide complex Type, the Name you want to use in the converters, + the complex Constructor method, and the Real and Imag complex + accessor methods. + + See the std_complex.i and ccomplex.i for concrete examples. +*/ + +%fragment("rb_complex_new","header") +{ +%#if !defined(T_COMPLEX) +/* Ruby versions prior to 1.9 did not have native complex numbers. They were an extension in the STD library. */ +SWIGINTERN VALUE rb_complex_new(VALUE x, VALUE y) { + static ID new_id = rb_intern("new"); + static VALUE cComplex = rb_const_get(rb_cObject, rb_intern("Complex")); + return rb_funcall(cComplex, new_id, 2, x, y); +} +%#endif +} + +%fragment("SWIG_Complex_Numbers","header") +{ +%#if !defined(T_COMPLEX) +SWIGINTERN int SWIG_Is_Complex( VALUE obj ) { + static ID real_id = rb_intern("real"); + static ID imag_id = rb_intern("imag"); + return ( (rb_respond_to( obj, real_id ) ) && + (rb_respond_to( obj, imag_id ) ) ); +} +%#else +SWIGINTERN int SWIG_Is_Complex( VALUE obj ) { + return TYPE(obj) == T_COMPLEX; +} +%#endif + +SWIGINTERN VALUE SWIG_Complex_Real(VALUE obj) { + static ID real_id = rb_intern("real"); + return rb_funcall(obj, real_id, 0); +} + +SWIGINTERN VALUE SWIG_Complex_Imaginary(VALUE obj) { + static ID imag_id = rb_intern("imag"); + return rb_funcall(obj, imag_id, 0); +} +} + +%init { +%#if !defined(T_COMPLEX) + rb_require("complex"); +%#endif +} + +/* the common from converter */ +%define %swig_fromcplx_conv(Type, Real, Imag) +%fragment(SWIG_From_frag(Type),"header",fragment="rb_complex_new") +{ +SWIGINTERNINLINE VALUE +SWIG_From(Type)(%ifcplusplus(const Type&, Type) c) +{ + VALUE re = rb_float_new(Real(c)); + VALUE im = rb_float_new(Imag(c)); + return rb_complex_new(re, im); +} +} +%enddef + +/* the double case */ +%define %swig_cplxdbl_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(double), + fragment="SWIG_Complex_Numbers") +{ +SWIGINTERN int +SWIG_AsVal(Type) (VALUE o, Type* val) +{ + if ( SWIG_Is_Complex( o ) ) { + if (val) { + VALUE real = SWIG_Complex_Real(o); + VALUE imag = SWIG_Complex_Imaginary(o); + double re = 0; + SWIG_AsVal_double( real, &re ); + double im = 0; + SWIG_AsVal_double( imag, &im ); + *val = Constructor(re, im); + } + return SWIG_OK; + } else { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(o, &d)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(d, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +/* the float case */ +%define %swig_cplxflt_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(float), + fragment=SWIG_AsVal_frag(double), + fragment="SWIG_Complex_Numbers") { +SWIGINTERN int +SWIG_AsVal(Type)(VALUE o, Type *val) +{ + if ( SWIG_Is_Complex( o ) ) { + VALUE real = SWIG_Complex_Real(o); + VALUE imag = SWIG_Complex_Imaginary(o); + double re = 0; + SWIG_AsVal_double( real, &re ); + double im = 0; + SWIG_AsVal_double( imag, &im ); + if ((-FLT_MAX <= re && re <= FLT_MAX) && + (-FLT_MAX <= im && im <= FLT_MAX)) { + if (val) *val = Constructor(%numeric_cast(re, float), + %numeric_cast(im, float)); + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else { + float re; + int res = SWIG_AddCast(SWIG_AsVal(float)(o, &re)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(re, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} + +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +#define %swig_cplxflt_convn(Type, Constructor, Real, Imag) \ +%swig_cplxflt_conv(Type, Constructor, Real, Imag) + + +#define %swig_cplxdbl_convn(Type, Constructor, Real, Imag) \ +%swig_cplxdbl_conv(Type, Constructor, Real, Imag) + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubycontainer.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubycontainer.swg new file mode 100644 index 00000000..e8830a71 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubycontainer.swg @@ -0,0 +1,1121 @@ +/* ----------------------------------------------------------------------------- + * rubycontainer.swg + * + * Ruby sequence <-> C++ container wrapper + * + * This wrapper, and its iterator, allows a general use (and reuse) of + * the mapping between C++ and Ruby, thanks to the C++ templates. + * + * Of course, it needs the C++ compiler to support templates, but + * since we will use this wrapper with the STL containers, that should + * be the case. + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + + +#if !defined(SWIG_NO_EXPORT_ITERATOR_METHODS) +# if !defined(SWIG_EXPORT_ITERATOR_METHODS) +# define SWIG_EXPORT_ITERATOR_METHODS SWIG_EXPORT_ITERATOR_METHODS +# endif +#endif + +%include + +/**** The RubySequence C++ Wrap ***/ + +%fragment(""); + +%include + + +%fragment("RubySequence_Base","header") +{ +%#include + + +namespace swig { + template < class T > + struct yield + { + bool + operator()( const T& v ) const + { + return RTEST( rb_yield( swig::from< T >(v) ) ); + } + }; + + + inline size_t + check_index(ptrdiff_t i, size_t size, bool insert = false) { + if ( i < 0 ) { + if ((size_t) (-i) <= size) + return (size_t) (i + size); + } else if ( (size_t) i < size ) { + return (size_t) i; + } else if (insert && ((size_t) i == size)) { + return size; + } + + throw std::out_of_range("index out of range"); + } + + inline size_t + slice_index(ptrdiff_t i, size_t size) { + if ( i < 0 ) { + if ((size_t) (-i) <= size) { + return (size_t) (i + size); + } else { + throw std::out_of_range("index out of range"); + } + } else { + return ( (size_t) i < size ) ? ((size_t) i) : size; + } + } + + template + inline typename Sequence::iterator + getpos(Sequence* self, Difference i) { + typename Sequence::iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline typename Sequence::const_iterator + cgetpos(const Sequence* self, Difference i) { + typename Sequence::const_iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline void + resize(Sequence *seq, typename Sequence::size_type n, typename Sequence::value_type x) { + seq->resize(n, x); + } + + template + inline Sequence* + getslice(const Sequence* self, Difference i, Difference j) { + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size, (i == size && j == size)); + typename Sequence::size_type jj = swig::slice_index(j, size); + + if (jj > ii) { + typename Sequence::const_iterator vb = self->begin(); + typename Sequence::const_iterator ve = self->begin(); + std::advance(vb,ii); + std::advance(ve,jj); + return new Sequence(vb, ve); + } else { + return new Sequence(); + } + } + + template + inline void + setslice(Sequence* self, Difference i, Difference j, const InputSeq& v) { + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size, true); + typename Sequence::size_type jj = swig::slice_index(j, size); + if (jj < ii) jj = ii; + size_t ssize = jj - ii; + if (ssize <= v.size()) { + typename Sequence::iterator sb = self->begin(); + typename InputSeq::const_iterator vmid = v.begin(); + std::advance(sb,ii); + std::advance(vmid, jj - ii); + self->insert(std::copy(v.begin(), vmid, sb), vmid, v.end()); + } else { + typename Sequence::iterator sb = self->begin(); + typename Sequence::iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + self->erase(sb,se); + self->insert(sb, v.begin(), v.end()); + } + } + + template + inline void + delslice(Sequence* self, Difference i, Difference j) { + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size, true); + typename Sequence::size_type jj = swig::slice_index(j, size); + if (jj > ii) { + typename Sequence::iterator sb = self->begin(); + typename Sequence::iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + self->erase(sb,se); + } + } +} +} + +%fragment("RubySequence_Cont","header", + fragment="", + fragment="StdTraits", + fragment="RubySequence_Base", + fragment="ConstIterator_T") +{ +namespace swig +{ + + /** + * This class is a proxy class for references, used to return and set values + * of an element of a Ruby Array of stuff. + * It can be used by RubySequence_InputIterator to make it work with STL + * algorithms. + */ + template + struct RubySequence_Ref + { + RubySequence_Ref(VALUE seq, int index) + : _seq(seq), _index(index) + { + } + + operator T () const + { + VALUE item = rb_ary_entry(_seq, _index ); + try { + return swig::as(item); + } catch (const std::invalid_argument& e) { + char msg[1024]; + sprintf(msg, "in sequence element %d ", _index); + VALUE lastErr = rb_gv_get("$!"); + if ( lastErr == Qnil ) { + %type_error(swig::type_name()); + } + VALUE str = rb_str_new2(msg); + str = rb_str_cat2( str, e.what() ); + SWIG_Ruby_ExceptionType( NULL, str ); + throw; + } + } + + RubySequence_Ref& operator=(const T& v) + { + rb_ary_set(_seq, _index, swig::from< T >(v)); + return *this; + } + + private: + VALUE _seq; + int _index; + }; + + + /** + * This class is a proxy to return a pointer to a class, usually + * RubySequence_Ref. + * It can be used by RubySequence_InputIterator to make it work with STL + * algorithms. + */ + template + struct RubySequence_ArrowProxy + { + RubySequence_ArrowProxy(const T& x): m_value(x) {} + const T* operator->() const { return &m_value; } + operator const T*() const { return &m_value; } + T m_value; + }; + + + /** + * Input Iterator. This adapator class is a random access iterator that + * allows you to use STL algorithms with a Ruby class (a Ruby Array by default). + */ + template > + struct RubySequence_InputIterator + { + typedef RubySequence_InputIterator self; + + typedef std::random_access_iterator_tag iterator_category; + typedef Reference reference; + typedef T value_type; + typedef T* pointer; + typedef ptrdiff_t difference_type; + + RubySequence_InputIterator() + { + } + + RubySequence_InputIterator(VALUE seq, int index) + : _seq(seq), _index(index) + { + } + + reference operator*() const + { + return reference(_seq, _index); + } + + RubySequence_ArrowProxy + operator->() const { + return RubySequence_ArrowProxy(operator*()); + } + + bool operator==(const self& ri) const + { + return (_index == ri._index) && (_seq == ri._seq); + } + + bool operator!=(const self& ri) const + { + return !(operator==(ri)); + } + + self& operator ++ () + { + ++_index; + return *this; + } + + self& operator -- () + { + --_index; + return *this; + } + + self& operator += (difference_type n) + { + _index += n; + return *this; + } + + self operator +(difference_type n) const + { + return self(_seq, _index + n); + } + + self& operator -= (difference_type n) + { + _index -= n; + return *this; + } + + self operator -(difference_type n) const + { + return self(_seq, _index - n); + } + + difference_type operator - (const self& ri) const + { + return _index - ri._index; + } + + bool operator < (const self& ri) const + { + return _index < ri._index; + } + + reference + operator[](difference_type n) const + { + return reference(_seq, _index + n); + } + + private: + VALUE _seq; + difference_type _index; + }; + + + /** + * This adaptor class allows you to use a Ruby Array as if it was an STL + * container, giving it begin(), end(), and iterators. + */ + template + struct RubySequence_Cont + { + typedef RubySequence_Ref reference; + typedef const RubySequence_Ref const_reference; + typedef T value_type; + typedef T* pointer; + typedef int difference_type; + typedef int size_type; + typedef const pointer const_pointer; + typedef RubySequence_InputIterator iterator; + typedef RubySequence_InputIterator const_iterator; + + RubySequence_Cont(VALUE seq) : _seq(0) + { + if (!rb_obj_is_kind_of(seq, rb_cArray)) { + throw std::invalid_argument("an Array is expected"); + } + _seq = seq; + } + + ~RubySequence_Cont() + { + } + + size_type size() const + { + return RARRAY_LEN(_seq); + } + + bool empty() const + { + return size() == 0; + } + + iterator begin() + { + return iterator(_seq, 0); + } + + const_iterator begin() const + { + return const_iterator(_seq, 0); + } + + iterator end() + { + return iterator(_seq, size()); + } + + const_iterator end() const + { + return const_iterator(_seq, size()); + } + + reference operator[](difference_type n) + { + return reference(_seq, n); + } + + const_reference operator[](difference_type n) const + { + return const_reference(_seq, n); + } + + bool check(bool set_err = false) const + { + int s = (int) size(); + for (int i = 0; i < s; ++i) { + VALUE item = rb_ary_entry(_seq, i ); + if (!swig::check(item)) { + if (set_err) { + char msg[1024]; + sprintf(msg, "in sequence element %d", i); + SWIG_Error(SWIG_RuntimeError, msg); + } + return false; + } + } + return true; + } + + private: + VALUE _seq; + }; + +} +} + +/** + * Macros used to typemap an STL iterator -> SWIGIterator conversion. + */ +%define %swig_sequence_iterator(Sequence...) +#if defined(SWIG_EXPORT_ITERATOR_METHODS) + + %typemap(out,noblock=1,fragment="RubySequence_Cont") + const_iterator, const_reverse_iterator { + $result = SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &), + self), + swig::ConstIterator::descriptor(),SWIG_POINTER_OWN); + } + + %typemap(out,noblock=1,fragment="RubySequence_Cont") + iterator, reverse_iterator { + $result = SWIG_NewPointerObj(swig::make_nonconst_iterator(%static_cast($1,const $type &), + self), + swig::Iterator::descriptor(),SWIG_POINTER_OWN); + } + + %typemap(out,noblock=1,fragment="RubySequence_Cont") + std::pair { + $result = rb_ary_new2(2); + rb_ary_push($result, SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).first), + swig::ConstIterator::descriptor(),SWIG_POINTER_OWN)); + rb_ary_push($result, SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).second), + swig::ConstIterator::descriptor(),SWIG_POINTER_OWN)); + } + + // std::map/multimap/set allow returning std::pair< iterator, iterator > from + // equal_range, but we cannot still modify the key, so the iterator is + // const. + %typemap(out,noblock=1,fragment="RubySequence_Cont") + std::pair { + $result = rb_ary_new2(2); + rb_ary_push($result, SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).first), + swig::ConstIterator::descriptor(),SWIG_POINTER_OWN)); + rb_ary_push($result, SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).second), + swig::ConstIterator::descriptor(),SWIG_POINTER_OWN)); + } + + + %typemap(in,noblock=1,fragment="RubySequence_Cont") + const_iterator(swig::ConstIterator *iter = 0, int res), + const_reverse_iterator(swig::ConstIterator *iter = 0, int res) { + res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::ConstIterator::descriptor(), 0); + if (!SWIG_IsOK(res) || !iter) { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } else { + swig::ConstIterator_T<$type > *iter_t = dynamic_cast *>(iter); + if (iter_t) { + $1 = iter_t->get_current(); + } else { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } + } + } + + %typemap(in,noblock=1,fragment="RubySequence_Cont") + iterator(swig::Iterator *iter = 0, int res), + reverse_iterator(swig::Iterator *iter = 0, int res) { + res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::Iterator::descriptor(), 0); + if (!SWIG_IsOK(res) || !iter) { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } else { + swig::Iterator_T<$type > *iter_t = dynamic_cast *>(iter); + if (iter_t) { + $1 = iter_t->get_current(); + } else { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } + } + } + + %typecheck(%checkcode(ITERATOR),noblock=1,fragment="RubySequence_Cont") + const_iterator, const_reverse_iterator { + swig::ConstIterator *iter = 0; + int res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::ConstIterator::descriptor(), 0); + $1 = (SWIG_IsOK(res) && iter && (dynamic_cast *>(iter) != 0)); + } + + %typecheck(%checkcode(ITERATOR),noblock=1,fragment="RubySequence_Cont") + iterator, reverse_iterator { + swig::ConstIterator *iter = 0; + int res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::Iterator::descriptor(), 0); + $1 = (SWIG_IsOK(res) && iter && (dynamic_cast *>(iter) != 0)); + } + + %fragment("RubySequence_Cont"); + +// %newobject iterator; +// %newobject const_iterator; +// %extend { +// swig::Iterator* iterator(VALUE* RUBY_SELF) { +// return swig::make_nonconst_iterator($self->begin(), $self->begin(), +// $self->end(), *RUBY_SELF); +// } + +// swig::ConstIterator* const_iterator(VALUE* RUBY_SELF) { +// return swig::make_const_iterator($self->begin(), $self->begin(), +// $self->end(), *RUBY_SELF); +// } +// } +#endif //SWIG_EXPORT_ITERATOR_METHODS +%enddef + + +/**** The Ruby container methods ****/ + + + +%define %swig_container_methods(Container...) + + %extend { + + %newobject dup; + Container* dup() + { + return new Container(*$self); + } + + } + +%enddef + + +/** + * Macro used to define common Ruby printing methods for STL container + */ +%define %swig_sequence_printing_methods(Sequence...) + + %extend { + + VALUE inspect() + { + Sequence::const_iterator i = $self->begin(); + Sequence::const_iterator e = $self->end(); + const char *type_name = swig::type_name< Sequence >(); + VALUE str = rb_str_new2(type_name); + str = rb_str_cat2( str, " [" ); + bool comma = false; + VALUE tmp; + for ( ; i != e; ++i, comma = true ) + { + if (comma) str = rb_str_cat2( str, "," ); + tmp = swig::from< Sequence::value_type >( *i ); + tmp = rb_inspect( tmp ); + str = rb_str_buf_append( str, tmp ); + } + str = rb_str_cat2( str, "]" ); + return str; + } + + VALUE to_a() + { + Sequence::const_iterator i = $self->begin(); + Sequence::const_iterator e = $self->end(); + VALUE ary = rb_ary_new2( std::distance( i, e ) ); + VALUE tmp; + for ( ; i != e; ++i ) + { + tmp = swig::from< Sequence::value_type >( *i ); + rb_ary_push( ary, tmp ); + } + return ary; + } + + VALUE to_s() + { + Sequence::iterator i = $self->begin(); + Sequence::iterator e = $self->end(); + VALUE str = rb_str_new2( "" ); + VALUE tmp; + for ( ; i != e; ++i ) + { + tmp = swig::from< Sequence::value_type >( *i ); + tmp = rb_obj_as_string( tmp ); + str = rb_str_buf_append( str, tmp ); + } + return str; + } +} +%enddef + + +/** + * Macro used to add common methods to all STL sequence-type containers + */ +%define %swig_sequence_methods_non_resizable_common(Sequence...) + %swig_container_methods(%arg(Sequence)) + %swig_sequence_iterator(%arg(Sequence)) + %swig_sequence_printing_methods(%arg(Sequence)) + + %fragment("RubySequence_Base"); + + %extend { + + VALUE slice( difference_type i, difference_type length ) throw (std::invalid_argument) { + if ( length < 0 ) + return Qnil; + std::size_t len = $self->size(); + if ( i < 0 ) { + if ( i + static_cast(len) < 0 ) + return Qnil; + else + i = len + i; + } + Sequence::difference_type j = length + i; + if ( j > static_cast(len) ) + j = len; + + VALUE r = Qnil; + try { + r = swig::from< const Sequence* >( swig::getslice(self, i, j) ); + } + catch( std::out_of_range ) { + } + return r; + } + + + Sequence* each() + { + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "no block given"); + + VALUE r; + Sequence::const_iterator i = self->begin(); + Sequence::const_iterator e = self->end(); + for ( ; i != e; ++i ) + { + r = swig::from< Sequence::value_type >(*i); + rb_yield(r); + } + + return self; + } + + VALUE __delete2__(const value_type& i) { + VALUE r = Qnil; + return r; + } + + } +%enddef + +%define %swig_sequence_methods_resizable_common(Sequence...) + %extend { + + %newobject select; + Sequence* select() { + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "no block given" ); + + Sequence* r = new Sequence(); + Sequence::const_iterator i = $self->begin(); + Sequence::const_iterator e = $self->end(); + for ( ; i != e; ++i ) + { + VALUE v = swig::from< Sequence::value_type >(*i); + if ( RTEST( rb_yield(v) ) ) + $self->insert( r->end(), *i); + } + + return r; + } + + VALUE delete_at(difference_type i) { + VALUE r = Qnil; + try { + Sequence::iterator at = swig::getpos(self, i); + r = swig::from< Sequence::value_type >( *(at) ); + $self->erase(at); + } + catch (std::out_of_range) + { + } + return r; + } + } +%enddef + +%define %swig_sequence_methods_common(Sequence...) + %swig_sequence_methods_non_resizable_common(%arg(Sequence)) + %swig_sequence_methods_resizable_common(%arg(Sequence)) +%enddef + +/** + * Macro used to add functions for back insertion of values in + * STL sequence containers + */ +%define %swig_sequence_back_inserters( Sequence... ) + %extend { + + VALUE pop() { + if ($self->empty()) return Qnil; + Sequence::value_type x = self->back(); + $self->pop_back(); + return swig::from< Sequence::value_type >( x ); + } + + %alias push "<<"; + const value_type push( const value_type& e ) { + $self->push_back( e ); + return e; + } + + %newobject reject; + Sequence* reject() { + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "no block given" ); + + Sequence* r = new Sequence(); + std::remove_copy_if( $self->begin(), $self->end(), + std::back_inserter(*r), + swig::yield< Sequence::value_type >() ); + return r; + } + + } +%enddef + +%define %swig_sequence_methods_extra(Sequence...) + %extend { + %alias reject_bang "delete_if"; + Sequence* reject_bang() { + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "no block given" ); + + $self->erase( std::remove_if( $self->begin(), $self->end(), + swig::yield< Sequence::value_type >() ), $self->end() ); + return $self; + } + } +%enddef + +%define %swig_sequence_methods_non_resizable_accessors(Sequence...) + %extend { + + VALUE at(difference_type i) const { + VALUE r = Qnil; + try { + r = swig::from< Sequence::value_type >( *(swig::cgetpos(self, i)) ); + } + catch( std::out_of_range ) { + } + return r; + } + + VALUE __getitem__(difference_type i, difference_type length) const throw (std::invalid_argument) { + if ( length < 0 ) + return Qnil; + std::size_t len = $self->size(); + if ( i < 0 ) { + if ( i + static_cast(len) < 0 ) + return Qnil; + else + i = len + i; + } + Sequence::difference_type j = length + i; + if ( j > static_cast(len) ) + j = len; + + VALUE r = Qnil; + try { + r = swig::from< const Sequence* >( swig::getslice(self, i, j) ); + } + catch( std::out_of_range ) { + } + return r; + } + + VALUE __getitem__(difference_type i) const { + VALUE r = Qnil; + try { + r = swig::from< Sequence::value_type >( *(swig::cgetpos(self, i)) ); + } + catch( std::out_of_range ) { + } + return r; + } + + VALUE __getitem__(VALUE i) const throw (std::invalid_argument) { + if ( rb_obj_is_kind_of( i, rb_cRange ) == Qfalse ) { + rb_raise( rb_eTypeError, "not a valid index or range" ); + } + + static ID id_end = rb_intern("end"); + static ID id_start = rb_intern("begin"); + static ID id_noend = rb_intern("exclude_end?"); + + VALUE start = rb_funcall( i, id_start, 0 ); + VALUE end = rb_funcall( i, id_end, 0 ); + bool noend = ( rb_funcall( i, id_noend, 0 ) == Qtrue ); + + int len = $self->size(); + + int s = NUM2INT( start ); + if ( s < 0 ) { + s = len + s; + if ( s < 0 ) + return Qnil; + } else if ( s > len ) + return Qnil; + + int e = NUM2INT( end ); + if ( e < 0 ) e = len + e; + if ( noend ) e -= 1; + if ( e < 0 ) e = -1; + if ( e >= len ) e = len - 1; + if ( s == len ) e = len - 1; + + return swig::from< Sequence* >( swig::getslice(self, s, e+1) ); + } + + VALUE __setitem__(difference_type i, const value_type& x) throw (std::invalid_argument, std::out_of_range) + { + if ( i >= static_cast( $self->size()) ) + swig::resize( $self, i+1, x ); + else + *(swig::getpos($self, i)) = x; + + return swig::from< Sequence::value_type >( x ); + } + + VALUE __setitem__(difference_type i, difference_type length, const Sequence& v) throw (std::invalid_argument) { + + if ( length < 0 ) + return Qnil; + std::size_t len = $self->size(); + if ( i < 0 ) { + if ( i + static_cast(len) < 0 ) + return Qnil; + else + i = len + i; + } + Sequence::difference_type j = length + i; + if ( j > static_cast(len) ) { + swig::resize( $self, j, *(v.begin()) ); + } + + VALUE r = Qnil; + swig::setslice($self, i, j, v); + r = swig::from< const Sequence* >( &v ); + return r; + } + } +%enddef + +/** + * Macro used to add functions for non resizable sequences + */ +%define %swig_sequence_methods_non_resizable(Sequence...) + %swig_sequence_methods_non_resizable_common(%arg(Sequence)) + %swig_sequence_methods_non_resizable_accessors(%arg(Sequence)) +%enddef + + +/** + * Macro used to add functions for sequences + */ +%define %swig_sequence_methods(Sequence...) + %swig_sequence_methods_non_resizable_common(%arg(Sequence)) + %swig_sequence_methods_resizable_common(%arg(Sequence)) + %swig_sequence_methods_non_resizable_accessors(%arg(Sequence)) + %swig_sequence_methods_extra(%arg(Sequence)); + %swig_sequence_back_inserters(%arg(Sequence)); +%enddef + +%define %swig_sequence_methods_non_resizable_val(Sequence...) + %swig_sequence_methods_non_resizable(%arg(Sequence)) +%enddef + +%define %swig_sequence_methods_val(Sequence...) + %swig_sequence_methods(%arg(Sequence)) +%enddef + + +/** + * Macro used to add functions for front insertion of + * elements in STL sequence containers that support it. + */ +%define %swig_sequence_front_inserters( Sequence... ) +%extend { + + VALUE shift() + { + if ($self->empty()) return Qnil; + Sequence::value_type x = self->front(); + $self->erase( $self->begin() ); + return swig::from< Sequence::value_type >( x ); + } + + %typemap(in) (int argc, VALUE* argv) { + $1 = argc - 1; + $2 = argv + 1; + } + + Sequence* insert( difference_type pos, int argc, VALUE* argv, ... ) + { + std::size_t len = $self->size(); + std::size_t i = swig::check_index( pos, len, true ); + Sequence::iterator start; + + VALUE elem = argv[0]; + int idx = 0; + try { + Sequence::value_type val = swig::as( elem ); + if ( i >= len ) { + $self->resize(i-1, val); + return $self; + } + start = $self->begin(); + std::advance( start, i ); + $self->insert( start++, val ); + + for ( ++idx; idx < argc; ++idx ) + { + elem = argv[idx]; + val = swig::as( elem ); + $self->insert( start++, val ); + } + + } + catch(const std::invalid_argument &) + { + rb_raise( rb_eArgError, "%s", + Ruby_Format_TypeError( "", + swig::type_name(), + __FUNCTION__, idx+2, elem )); + } + + + return $self; + } + + %typemap(in) (int argc, VALUE* argv) { + $1 = argc; + $2 = argv; + } + + Sequence* unshift( int argc, VALUE* argv, ... ) + { + for ( int idx = argc-1; idx >= 0; --idx ) + { + Sequence::iterator start = $self->begin(); + VALUE elem = argv[idx]; + try { + Sequence::value_type val = swig::as( elem ); + $self->insert( start, val ); + } + catch(const std::invalid_argument &) + { + rb_raise( rb_eArgError, "%s", + Ruby_Format_TypeError( "", + swig::type_name(), + __FUNCTION__, idx+2, elem )); + } + } + + return $self; + } +} +%enddef + + +// +// Common fragments +// + +%fragment("StdSequenceTraits","header", + fragment="StdTraits", + fragment="RubySequence_Cont", + fragment="GC_VALUE_definition") +{ +namespace swig { + template + inline void + assign(const RubySeq& rubyseq, Seq* seq) { + // seq->assign(rubyseq.begin(), rubyseq.end()); // not used as not always implemented + typedef typename RubySeq::value_type value_type; + typename RubySeq::const_iterator it = rubyseq.begin(); + for (;it != rubyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_asptr_stdseq { + typedef Seq sequence; + typedef T value_type; + + static int asptr(VALUE obj, sequence **seq) { + if (rb_obj_is_kind_of(obj, rb_cArray) == Qtrue) { + try { + RubySequence_Cont rubyseq(obj); + if (seq) { + sequence *pseq = new sequence(); + assign(rubyseq, pseq); + *seq = pseq; + return SWIG_NEWOBJ; + } else { + return rubyseq.check() ? SWIG_OK : SWIG_ERROR; + } + } catch (std::exception& e) { + if (seq) { + VALUE lastErr = rb_gv_get("$!"); + if (lastErr == Qnil) { + rb_raise(rb_eTypeError, "%s", e.what()); + } + } + return SWIG_ERROR; + } + } else { + sequence *p; + swig_type_info *descriptor = swig::type_info(); + if (descriptor && SWIG_IsOK(SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0))) { + if (seq) *seq = p; + return SWIG_OLDOBJ; + } + } + return SWIG_ERROR; + } + }; + + // Partial specialization for GC_VALUE's. No need to typecheck each + // element. + template< class Seq > + struct traits_asptr_stdseq< Seq, swig::GC_VALUE > { + typedef Seq sequence; + typedef swig::GC_VALUE value_type; + + static int asptr(VALUE obj, sequence **seq) { + if (rb_obj_is_kind_of(obj, rb_cArray) == Qtrue) { + try { + if (seq) { + RubySequence_Cont rubyseq(obj); + sequence *pseq = new sequence(); + assign(rubyseq, pseq); + *seq = pseq; + return SWIG_NEWOBJ; + } else { + return true; + } + } catch (std::exception& e) { + if (seq) { + VALUE lastErr = rb_gv_get("$!"); + if (lastErr == Qnil) { + rb_raise(rb_eTypeError, "%s", e.what()); + } + } + return SWIG_ERROR; + } + } else { + sequence *p; + swig_type_info *descriptor = swig::type_info(); + if (descriptor && SWIG_IsOK(SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0))) { + if (seq) *seq = p; + return SWIG_OLDOBJ; + } + } + return SWIG_ERROR; + } + }; + + template + struct traits_from_stdseq { + typedef Seq sequence; + typedef T value_type; + typedef typename Seq::size_type size_type; + typedef typename sequence::const_iterator const_iterator; + + static VALUE from(const sequence& seq) { +#ifdef SWIG_RUBY_EXTRA_NATIVE_CONTAINERS + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN); + } +#endif + size_type size = seq.size(); + if (size <= (size_type)INT_MAX) { + VALUE obj = rb_ary_new2((int)size); + int i = 0; + for (const_iterator it = seq.begin(); + it != seq.end(); ++it, ++i) { + rb_ary_push(obj, swig::from< value_type >(*it)); + } + rb_obj_freeze(obj); // treat as immutable result + return obj; + } else { + rb_raise(rb_eRangeError,"sequence size not valid in ruby"); + return Qnil; + } + } + }; +} +} + + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubycontainer_extended.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubycontainer_extended.swg new file mode 100644 index 00000000..663dddb8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubycontainer_extended.swg @@ -0,0 +1,134 @@ +/* ----------------------------------------------------------------------------- + * rubycontainer_extended.swg + * + * This file contains additional functions that make containers + * behave closer to ruby primitive types. + * However, some of these functions place some restrictions on + * the underlying object inside of the container and the iterator + * (that it has to have an == comparison function, that it has to have + * an = assignment operator, etc). + * ----------------------------------------------------------------------------- */ + +/** + * Macro used to add extend functions that require operator== in object. + * + * @param Container STL container + * @param Type class inside container + * + */ +%define %swig_container_with_equal_operator( Container, Type ) + + VALUE __delete__( const Type& val ) { + VALUE r = Qnil; + Container::iterator e = $self->end(); + Container::iterator i = std::remove( $self->begin(), e, val ); + // remove dangling elements now + $self->erase( i, e ); + + if ( i != e ) + r = swig::from< Type >( val ); + else if ( rb_block_given_p() ) + r = rb_yield(Qnil); + return r; + } + +%enddef // end of %swig_container_with_equal_operator + + + + +/** + * Macro used to add extend functions that require the assignment + * operator (ie. = ) of contained class + * + * @param Container STL container + * @param Type class inside container + * + */ + +%define %swig_container_with_assignment( Container, Type ) + + + // + // map! -- the equivalent of std::transform + // + Container< Type >* map_bang() { + + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "No block given" ); + + VALUE r = Qnil; + Container< Type >::iterator i = $self->begin(); + Container< Type >::iterator e = $self->end(); + + try { + for ( ; i != e; ++i ) + { + r = swig::from< Type >( *i ); + r = rb_yield( r ); + *i = swig::as< Type >( r ); + } + } + catch (const std::invalid_argument&) + { + rb_raise(rb_eTypeError, + "Yield block did not return a valid element for " "Container"); + } + + return $self; + } + + +%enddef // end of %swig_container_with_assignment + + + + + +/** + * Macro used to add all extended functions to a container + * + * @param Container STL container + * @param Type class inside container + * + */ +%define %swig_container_extend( Container, Type ) + +%extend Container< Type > { + + %swig_container_with_assignment( %arg(Container), Type ); + %swig_container_with_equal_operator( %arg(Container), Type ); + +} + +%enddef + + +/** + * Private macro used to add all extended functions to C/C++ + * primitive types + * + * @param Container an STL container, like std::vector (with no class template) + * + */ +%define %__swig_container_extend_primtypes( Container ) + +%swig_container_extend( %arg( Container ), bool ); +%swig_container_extend( %arg( Container ), char ); +%swig_container_extend( %arg( Container ), short ); +%swig_container_extend( %arg( Container ), int ); +%swig_container_extend( %arg( Container ), unsigned short ); +%swig_container_extend( %arg( Container ), unsigned int ); +%swig_container_extend( %arg( Container ), float ); +%swig_container_extend( %arg( Container ), double ); +%swig_container_extend( %arg( Container ), std::complex ); +%swig_container_extend( %arg( Container ), std::string ); +%swig_container_extend( %arg( Container ), swig::GC_VALUE ); + +%enddef + + +%__swig_container_extend_primtypes( std::vector ); +%__swig_container_extend_primtypes( std::deque ); +%__swig_container_extend_primtypes( std::list ); + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubydef.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubydef.swg new file mode 100644 index 00000000..956aaee0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubydef.swg @@ -0,0 +1 @@ +/* empty file added for backward comp. */ diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyerrors.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyerrors.swg new file mode 100644 index 00000000..434544bc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyerrors.swg @@ -0,0 +1,154 @@ +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + + +/* Define some additional error types */ +#define SWIG_ObjectPreviouslyDeletedError -100 + + +/* Define custom exceptions for errors that do not map to existing Ruby + exceptions. Note this only works for C++ since a global cannot be + initialized by a function in C. For C, fallback to rb_eRuntimeError.*/ + +SWIGINTERN VALUE +getNullReferenceError(void) { + static int init = 0; + static VALUE rb_eNullReferenceError ; + if (!init) { + init = 1; + rb_eNullReferenceError = rb_define_class("NullReferenceError", rb_eRuntimeError); + } + return rb_eNullReferenceError; +} + +SWIGINTERN VALUE +getObjectPreviouslyDeletedError(void) { + static int init = 0; + static VALUE rb_eObjectPreviouslyDeleted ; + if (!init) { + init = 1; + rb_eObjectPreviouslyDeleted = rb_define_class("ObjectPreviouslyDeleted", rb_eRuntimeError); + } + return rb_eObjectPreviouslyDeleted; +} + + +SWIGINTERN VALUE +SWIG_Ruby_ErrorType(int SWIG_code) { + VALUE type; + switch (SWIG_code) { + case SWIG_MemoryError: + type = rb_eNoMemError; + break; + case SWIG_IOError: + type = rb_eIOError; + break; + case SWIG_RuntimeError: + type = rb_eRuntimeError; + break; + case SWIG_IndexError: + type = rb_eIndexError; + break; + case SWIG_TypeError: + type = rb_eTypeError; + break; + case SWIG_DivisionByZero: + type = rb_eZeroDivError; + break; + case SWIG_OverflowError: + type = rb_eRangeError; + break; + case SWIG_SyntaxError: + type = rb_eSyntaxError; + break; + case SWIG_ValueError: + type = rb_eArgError; + break; + case SWIG_SystemError: + type = rb_eFatal; + break; + case SWIG_AttributeError: + type = rb_eRuntimeError; + break; + case SWIG_NullReferenceError: + type = getNullReferenceError(); + break; + case SWIG_ObjectPreviouslyDeletedError: + type = getObjectPreviouslyDeletedError(); + break; + case SWIG_UnknownError: + type = rb_eRuntimeError; + break; + default: + type = rb_eRuntimeError; + } + return type; +} + + +/* This function is called when a user inputs a wrong argument to + a method. + */ +SWIGINTERN +const char* Ruby_Format_TypeError( const char* msg, + const char* type, + const char* name, + const int argn, + VALUE input ) +{ + char buf[128]; + VALUE str; + VALUE asStr; + if ( msg && *msg ) + { + str = rb_str_new2(msg); + } + else + { + str = rb_str_new(NULL, 0); + } + + str = rb_str_cat2( str, "Expected argument " ); + sprintf( buf, "%d of type ", argn-1 ); + str = rb_str_cat2( str, buf ); + str = rb_str_cat2( str, type ); + str = rb_str_cat2( str, ", but got " ); + str = rb_str_cat2( str, rb_obj_classname(input) ); + str = rb_str_cat2( str, " " ); + asStr = rb_inspect(input); + if ( RSTRING_LEN(asStr) > 30 ) + { + str = rb_str_cat( str, StringValuePtr(asStr), 30 ); + str = rb_str_cat2( str, "..." ); + } + else + { + str = rb_str_append( str, asStr ); + } + + if ( name ) + { + str = rb_str_cat2( str, "\n\tin SWIG method '" ); + str = rb_str_cat2( str, name ); + str = rb_str_cat2( str, "'" ); + } + + return StringValuePtr( str ); +} + +/* This function is called when an overloaded method fails */ +SWIGINTERN +void Ruby_Format_OverloadedError( + const int argc, + const int maxargs, + const char* method, + const char* prototypes + ) +{ + const char* msg = "Wrong # of arguments"; + if ( argc <= maxargs ) msg = "Wrong arguments"; + rb_raise(rb_eArgError,"%s for overloaded method '%s'.\n" + "Possible C/C++ prototypes are:\n%s", + msg, method, prototypes); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyfragments.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyfragments.swg new file mode 100644 index 00000000..3c3b6581 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyfragments.swg @@ -0,0 +1,23 @@ +/* + + Create a file with this name, 'rubyfragments.swg', in your working + directory and add all the %fragments you want to take precedence + over the ones defined by default by swig. + + For example, if you add: + + %fragment(SWIG_AsVal_frag(int),"header") { + SWIGINTERNINLINE int + SWIG_AsVal(int)(VALUE obj, int *val) + { + ; + } + } + + this will replace the code used to retrieve an integer value for all + the typemaps that need it, including: + + int, std::vector, std::list >, etc. + + +*/ diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyhead.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyhead.swg new file mode 100644 index 00000000..90f07cf6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyhead.swg @@ -0,0 +1,160 @@ +#include + +/* Ruby 1.9.1 has a "memoisation optimisation" when compiling with GCC which + * breaks using rb_intern as an lvalue, as SWIG does. We work around this + * issue for now by disabling this. + * https://sourceforge.net/tracker/?func=detail&aid=2859614&group_id=1645&atid=101645 + */ +#ifdef rb_intern +# undef rb_intern +#endif + +/* Remove global macros defined in Ruby's win32.h */ +#ifdef write +# undef write +#endif +#ifdef read +# undef read +#endif +#ifdef bind +# undef bind +#endif +#ifdef close +# undef close +#endif +#ifdef connect +# undef connect +#endif + + +/* Ruby 1.7 defines NUM2LL(), LL2NUM() and ULL2NUM() macros */ +#ifndef NUM2LL +#define NUM2LL(x) NUM2LONG((x)) +#endif +#ifndef LL2NUM +#define LL2NUM(x) INT2NUM((long) (x)) +#endif +#ifndef ULL2NUM +#define ULL2NUM(x) UINT2NUM((unsigned long) (x)) +#endif + +/* Ruby 1.7 doesn't (yet) define NUM2ULL() */ +#ifndef NUM2ULL +#ifdef HAVE_LONG_LONG +#define NUM2ULL(x) rb_num2ull((x)) +#else +#define NUM2ULL(x) NUM2ULONG(x) +#endif +#endif + +/* RSTRING_LEN, etc are new in Ruby 1.9, but ->ptr and ->len no longer work */ +/* Define these for older versions so we can just write code the new way */ +#ifndef RSTRING_LEN +# define RSTRING_LEN(x) RSTRING(x)->len +#endif +#ifndef RSTRING_PTR +# define RSTRING_PTR(x) RSTRING(x)->ptr +#endif +#ifndef RSTRING_END +# define RSTRING_END(x) (RSTRING_PTR(x) + RSTRING_LEN(x)) +#endif +#ifndef RARRAY_LEN +# define RARRAY_LEN(x) RARRAY(x)->len +#endif +#ifndef RARRAY_PTR +# define RARRAY_PTR(x) RARRAY(x)->ptr +#endif +#ifndef RFLOAT_VALUE +# define RFLOAT_VALUE(x) RFLOAT(x)->value +#endif +#ifndef DOUBLE2NUM +# define DOUBLE2NUM(x) rb_float_new(x) +#endif +#ifndef RHASH_TBL +# define RHASH_TBL(x) (RHASH(x)->tbl) +#endif +#ifndef RHASH_ITER_LEV +# define RHASH_ITER_LEV(x) (RHASH(x)->iter_lev) +#endif +#ifndef RHASH_IFNONE +# define RHASH_IFNONE(x) (RHASH(x)->ifnone) +#endif +#ifndef RHASH_SIZE +# define RHASH_SIZE(x) (RHASH(x)->tbl->num_entries) +#endif +#ifndef RHASH_EMPTY_P +# define RHASH_EMPTY_P(x) (RHASH_SIZE(x) == 0) +#endif +#ifndef RSTRUCT_LEN +# define RSTRUCT_LEN(x) RSTRUCT(x)->len +#endif +#ifndef RSTRUCT_PTR +# define RSTRUCT_PTR(x) RSTRUCT(x)->ptr +#endif +#ifndef RTYPEDDATA_P +# define RTYPEDDATA_P(x) (TYPE(x) != T_DATA) +#endif + + + +/* + * Need to be very careful about how these macros are defined, especially + * when compiling C++ code or C code with an ANSI C compiler. + * + * VALUEFUNC(f) is a macro used to typecast a C function that implements + * a Ruby method so that it can be passed as an argument to API functions + * like rb_define_method() and rb_define_singleton_method(). + * + * VOIDFUNC(f) is a macro used to typecast a C function that implements + * either the "mark" or "free" stuff for a Ruby Data object, so that it + * can be passed as an argument to API functions like Data_Wrap_Struct() + * and Data_Make_Struct(). + */ + +#ifdef __cplusplus +# ifndef RUBY_METHOD_FUNC /* These definitions should work for Ruby 1.4.6 */ +# define PROTECTFUNC(f) ((VALUE (*)()) f) +# define VALUEFUNC(f) ((VALUE (*)()) f) +# define VOIDFUNC(f) ((void (*)()) f) +# else +# ifndef ANYARGS /* These definitions should work for Ruby 1.6 */ +# define PROTECTFUNC(f) ((VALUE (*)()) f) +# define VALUEFUNC(f) ((VALUE (*)()) f) +# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) +# else /* These definitions should work for Ruby 1.7+ */ +# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f) +# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f) +# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) +# endif +# endif +#else +# define VALUEFUNC(f) (f) +# define VOIDFUNC(f) (f) +#endif + +/* Don't use for expressions have side effect */ +#ifndef RB_STRING_VALUE +#define RB_STRING_VALUE(s) (TYPE(s) == T_STRING ? (s) : (*(volatile VALUE *)&(s) = rb_str_to_str(s))) +#endif +#ifndef StringValue +#define StringValue(s) RB_STRING_VALUE(s) +#endif +#ifndef StringValuePtr +#define StringValuePtr(s) RSTRING_PTR(RB_STRING_VALUE(s)) +#endif +#ifndef StringValueLen +#define StringValueLen(s) RSTRING_LEN(RB_STRING_VALUE(s)) +#endif +#ifndef SafeStringValue +#define SafeStringValue(v) do {\ + StringValue(v);\ + rb_check_safe_str(v);\ +} while (0) +#endif + +#ifndef HAVE_RB_DEFINE_ALLOC_FUNC +#define rb_define_alloc_func(klass, func) rb_define_singleton_method((klass), "new", VALUEFUNC((func)), -1) +#define rb_undef_alloc_func(klass) rb_undef_method(CLASS_OF((klass)), "new") +#endif + +static VALUE _mSWIG = Qnil; diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyinit.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyinit.swg new file mode 100644 index 00000000..fc6e039b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyinit.swg @@ -0,0 +1 @@ +%insert(initbeforefunc) "swiginit.swg" diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyiterators.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyiterators.swg new file mode 100644 index 00000000..89fea452 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyiterators.swg @@ -0,0 +1,932 @@ +/* ----------------------------------------------------------------------------- + * rubyiterators.swg + * + * Implement a C++ 'output' iterator for Ruby. + * + * Users can derive form the Iterator to implement their + * own iterators. As an example (real one since we use it for STL/STD + * containers), the template Iterator_T does the + * implementation for generic C++ iterators. + * ----------------------------------------------------------------------------- */ + +%include + + +%fragment("ConstIterator","header",fragment="",fragment="GC_VALUE_definition") { +namespace swig { + struct stop_iteration { + }; + + /** + * Abstract base class used to represent all iterators of STL containers. + */ + struct ConstIterator { + public: + typedef ConstIterator self_type; + + protected: + GC_VALUE _seq; + + protected: + ConstIterator(VALUE seq) : _seq(seq) + { + } + + // Random access iterator methods, but not required in Ruby + virtual ptrdiff_t distance(const ConstIterator &x) const + { + throw std::invalid_argument("distance not supported"); + } + + virtual bool equal (const ConstIterator &x) const + { + throw std::invalid_argument("equal not supported"); + } + + virtual self_type* advance(ptrdiff_t n) + { + throw std::invalid_argument("advance not supported"); + } + + public: + virtual ~ConstIterator() {} + + // Access iterator method, required by Ruby + virtual VALUE value() const { + throw std::invalid_argument("value not supported"); + return Qnil; + }; + + virtual VALUE setValue( const VALUE& v ) { + throw std::invalid_argument("value= not supported"); + return Qnil; + } + + virtual self_type* next( size_t n = 1 ) + { + return this->advance( n ); + } + + virtual self_type* previous( size_t n = 1 ) + { + ptrdiff_t nn = n; + return this->advance( -nn ); + } + + virtual VALUE to_s() const { + throw std::invalid_argument("to_s not supported"); + return Qnil; + } + + virtual VALUE inspect() const { + throw std::invalid_argument("inspect not supported"); + return Qnil; + } + + virtual ConstIterator *dup() const + { + throw std::invalid_argument("dup not supported"); + return NULL; + } + + // + // C++ common/needed methods. We emulate a bidirectional + // operator, to be compatible with all the STL. + // The iterator traits will then tell the STL what type of + // iterator we really are. + // + ConstIterator() : _seq( Qnil ) + { + } + + ConstIterator( const self_type& b ) : _seq( b._seq ) + { + } + + self_type& operator=( const self_type& b ) + { + _seq = b._seq; + return *this; + } + + bool operator == (const ConstIterator& x) const + { + return equal(x); + } + + bool operator != (const ConstIterator& x) const + { + return ! operator==(x); + } + + // Pre-decrement operator + self_type& operator--() + { + return *previous(); + } + + // Pre-increment operator + self_type& operator++() + { + return *next(); + } + + // Post-decrement operator + self_type operator--(int) + { + self_type r = *this; + previous(); + return r; + } + + // Post-increment operator + self_type operator++(int) + { + self_type r = *this; + next(); + return r; + } + + ConstIterator& operator += (ptrdiff_t n) + { + return *advance(n); + } + + ConstIterator& operator -= (ptrdiff_t n) + { + return *advance(-n); + } + + ConstIterator* operator + (ptrdiff_t n) const + { + return dup()->advance(n); + } + + ConstIterator* operator - (ptrdiff_t n) const + { + return dup()->advance(-n); + } + + ptrdiff_t operator - (const ConstIterator& x) const + { + return x.distance(*this); + } + + static swig_type_info* descriptor() { + static int init = 0; + static swig_type_info* desc = 0; + if (!init) { + desc = SWIG_TypeQuery("swig::ConstIterator *"); + init = 1; + } + return desc; + } + }; + + + /** + * Abstract base class used to represent all non-const iterators of STL containers. + * + */ + struct Iterator : public ConstIterator { + public: + typedef Iterator self_type; + + protected: + Iterator(VALUE seq) : ConstIterator(seq) + { + } + + virtual self_type* advance(ptrdiff_t n) + { + throw std::invalid_argument("operation not supported"); + } + + public: + static swig_type_info* descriptor() { + static int init = 0; + static swig_type_info* desc = 0; + if (!init) { + desc = SWIG_TypeQuery("swig::Iterator *"); + init = 1; + } + return desc; + } + + virtual Iterator *dup() const + { + throw std::invalid_argument("dup not supported"); + return NULL; + } + + virtual self_type* next( size_t n = 1 ) + { + return this->advance( n ); + } + + virtual self_type* previous( size_t n = 1 ) + { + ptrdiff_t nn = n; + return this->advance( -nn ); + } + + bool operator == (const ConstIterator& x) const + { + return equal(x); + } + + bool operator != (const Iterator& x) const + { + return ! operator==(x); + } + + Iterator& operator += (ptrdiff_t n) + { + return *advance(n); + } + + Iterator& operator -= (ptrdiff_t n) + { + return *advance(-n); + } + + Iterator* operator + (ptrdiff_t n) const + { + return dup()->advance(n); + } + + Iterator* operator - (ptrdiff_t n) const + { + return dup()->advance(-n); + } + + ptrdiff_t operator - (const Iterator& x) const + { + return x.distance(*this); + } + }; + +} +} + + +%fragment("ConstIterator_T","header",fragment="",fragment="ConstIterator",fragment="StdTraits",fragment="StdIteratorTraits") { +namespace swig { + + /** + * Templated base classes for all custom const_iterators. + * + */ + template + class ConstIterator_T : public ConstIterator + { + public: + typedef OutConstIterator const_iter; + typedef typename std::iterator_traits::value_type value_type; + typedef ConstIterator_T self_type; + + protected: + + + virtual bool equal (const ConstIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return (current == iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + virtual ptrdiff_t distance(const ConstIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return std::distance(current, iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + virtual ConstIterator* advance(ptrdiff_t n) + { + std::advance( current, n ); + return this; + } + + public: + ConstIterator_T() : ConstIterator(Qnil) + { + } + + ConstIterator_T(const_iter curr, VALUE seq = Qnil) + : ConstIterator(seq), current(curr) + { + } + + const const_iter& get_current() const + { + return current; + } + + const value_type& operator*() const + { + return *current; + } + + virtual VALUE inspect() const + { + VALUE ret = rb_str_new2("#<"); + ret = rb_str_cat2( ret, rb_obj_classname(_seq) ); + ret = rb_str_cat2( ret, "::const_iterator " ); + VALUE cur = value(); + ret = rb_str_concat( ret, rb_inspect(cur) ); + ret = rb_str_cat2( ret, ">" ); + return ret; + } + + virtual VALUE to_s() const + { + VALUE ret = rb_str_new2( rb_obj_classname(_seq) ); + ret = rb_str_cat2( ret, "::const_iterator " ); + VALUE cur = value(); + ret = rb_str_concat( ret, rb_obj_as_string(cur) ); + return ret; + } + + protected: + const_iter current; + }; + + + /** + * Templated base classes for all custom non-const iterators. + * + */ + template + class Iterator_T : public Iterator + { + public: + typedef InOutIterator nonconst_iter; + + // Make this class iterator STL compatible, by using iterator_traits + typedef typename std::iterator_traits::iterator_category iterator_category; + typedef typename std::iterator_traits::value_type value_type; + typedef typename std::iterator_traits::difference_type difference_type; + typedef typename std::iterator_traits::pointer pointer; + typedef typename std::iterator_traits::reference reference; + + typedef Iterator base; + typedef Iterator_T< nonconst_iter > self_type; + + protected: + + virtual bool equal (const ConstIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return (current == iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + virtual ptrdiff_t distance(const ConstIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return std::distance(current, iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + virtual Iterator* advance(ptrdiff_t n) + { + std::advance( current, n ); + return this; + } + + public: + + Iterator_T(nonconst_iter curr, VALUE seq = Qnil) + : Iterator(seq), current(curr) + { + } + + const nonconst_iter& get_current() const + { + return current; + } + + self_type& operator=( const self_type& b ) + { + base::operator=( b ); + return *this; + } + + self_type& operator=( const value_type& b ) + { + *current = b; + return *this; + } + + const value_type& operator*() const + { + return *current; + } + + value_type& operator*() + { + return *current; + } + + virtual VALUE inspect() const + { + VALUE ret = rb_str_new2("#<"); + ret = rb_str_cat2( ret, rb_obj_classname(_seq) ); + ret = rb_str_cat2( ret, "::iterator " ); + VALUE cur = value(); + ret = rb_str_concat( ret, rb_inspect(cur) ); + ret = rb_str_cat2( ret, ">" ); + return ret; + } + + virtual VALUE to_s() const + { + VALUE ret = rb_str_new2( rb_obj_classname(_seq) ); + ret = rb_str_cat2( ret, "::iterator " ); + VALUE cur = value(); + ret = rb_str_concat( ret, rb_obj_as_string(cur) ); + return ret; + } + + protected: + nonconst_iter current; + }; + + + /** + * Auxiliary functor to store the value of a ruby object inside + * a reference of a compatible C++ type. ie: Ruby -> C++ + * + */ + template + struct asval_oper + { + typedef ValueType value_type; + typedef bool result_type; + bool operator()(VALUE obj, value_type& v) const + { + return ( swig::asval< value_type >(obj, &v) == SWIG_OK ); + } + }; + + /** + * Auxiliary functor to return a ruby object from a C++ type. + * ie: C++ -> Ruby + * + */ + template + struct from_oper + { + typedef const ValueType& argument_type; + typedef VALUE result_type; + result_type operator()(argument_type v) const + { + return swig::from(v); + } + }; + + + /** + * ConstIterator class for a const_iterator with no end() boundaries. + * + */ + template::value_type, + typename FromOper = from_oper > + class ConstIteratorOpen_T : public ConstIterator_T + { + public: + FromOper from; + typedef OutConstIterator const_iter; + typedef ValueType value_type; + typedef ConstIterator_T base; + typedef ConstIteratorOpen_T self_type; + + ConstIteratorOpen_T(const_iter curr, VALUE seq = Qnil) + : ConstIterator_T(curr, seq) + { + } + + virtual VALUE value() const { + return from(static_cast(*(base::current))); + } + + ConstIterator *dup() const + { + return new self_type(*this); + } + }; + + /** + * Iterator class for an iterator with no end() boundaries. + * + */ + template::value_type, + typename FromOper = from_oper, + typename AsvalOper = asval_oper > + class IteratorOpen_T : public Iterator_T + { + public: + FromOper from; + AsvalOper asval; + typedef InOutIterator nonconst_iter; + typedef ValueType value_type; + typedef Iterator_T base; + typedef IteratorOpen_T self_type; + + public: + IteratorOpen_T(nonconst_iter curr, VALUE seq = Qnil) + : Iterator_T(curr, seq) + { + } + + virtual VALUE value() const { + return from(static_cast(*(base::current))); + } + + virtual VALUE setValue( const VALUE& v ) + { + value_type& dst = *base::current; + if ( asval(v, dst) ) return v; + return Qnil; + } + + Iterator *dup() const + { + return new self_type(*this); + } + }; + + /** + * ConstIterator class for a const_iterator where begin() and end() boundaries are known. + * + */ + template::value_type, + typename FromOper = from_oper > + class ConstIteratorClosed_T : public ConstIterator_T + { + public: + FromOper from; + typedef OutConstIterator const_iter; + typedef ValueType value_type; + typedef ConstIterator_T base; + typedef ConstIteratorClosed_T self_type; + + protected: + virtual ConstIterator* advance(ptrdiff_t n) + { + std::advance( base::current, n ); + if ( base::current == end ) + throw stop_iteration(); + return this; + } + + public: + ConstIteratorClosed_T(const_iter curr, const_iter first, + const_iter last, VALUE seq = Qnil) + : ConstIterator_T(curr, seq), begin(first), end(last) + { + } + + virtual VALUE value() const { + if (base::current == end) { + throw stop_iteration(); + } else { + return from(static_cast(*(base::current))); + } + } + + ConstIterator *dup() const + { + return new self_type(*this); + } + + + private: + const_iter begin; + const_iter end; + }; + + /** + * Iterator class for a iterator where begin() and end() boundaries are known. + * + */ + template::value_type, + typename FromOper = from_oper, + typename AsvalOper = asval_oper > + class IteratorClosed_T : public Iterator_T + { + public: + FromOper from; + AsvalOper asval; + typedef InOutIterator nonconst_iter; + typedef ValueType value_type; + typedef Iterator_T base; + typedef IteratorClosed_T self_type; + + protected: + virtual Iterator* advance(ptrdiff_t n) + { + std::advance( base::current, n ); + if ( base::current == end ) + throw stop_iteration(); + return this; + } + + public: + IteratorClosed_T(nonconst_iter curr, nonconst_iter first, + nonconst_iter last, VALUE seq = Qnil) + : Iterator_T(curr, seq), begin(first), end(last) + { + } + + virtual VALUE value() const { + if (base::current == end) { + throw stop_iteration(); + } else { + return from(static_cast(*(base::current))); + } + } + + // Iterator setter method, required by Ruby + virtual VALUE setValue( const VALUE& v ) + { + if (base::current == end) + throw stop_iteration(); + + value_type& dst = *base::current; + if ( asval( v, dst ) ) return v; + return Qnil; + } + + Iterator *dup() const + { + return new self_type(*this); + } + + private: + nonconst_iter begin; + nonconst_iter end; + }; + + /* Partial specialization for bools which don't allow de-referencing */ + template< typename InOutIterator, typename FromOper, typename AsvalOper > + class IteratorOpen_T< InOutIterator, bool, FromOper, AsvalOper > : + public Iterator_T + { + public: + FromOper from; + AsvalOper asval; + typedef InOutIterator nonconst_iter; + typedef bool value_type; + typedef Iterator_T base; + typedef IteratorOpen_T self_type; + + IteratorOpen_T(nonconst_iter curr, VALUE seq = Qnil) + : Iterator_T(curr, seq) + { + } + + virtual VALUE value() const { + return from(static_cast(*(base::current))); + } + + virtual VALUE setValue( const VALUE& v ) + { + bool tmp = *base::current; + if ( asval( v, tmp ) ) + { + *base::current = tmp; + return v; + } + return Qnil; + } + + Iterator *dup() const + { + return new self_type(*this); + } + + }; + + /* Partial specialization for bools which don't allow de-referencing */ + template< typename InOutIterator, typename FromOper, typename AsvalOper > + class IteratorClosed_T< InOutIterator, bool, FromOper, AsvalOper > : + public Iterator_T + { + public: + FromOper from; + AsvalOper asval; + typedef InOutIterator nonconst_iter; + typedef bool value_type; + typedef Iterator_T base; + typedef IteratorClosed_T self_type; + + protected: + virtual Iterator* advance(ptrdiff_t n) + { + std::advance( base::current, n ); + if ( base::current == end ) + throw stop_iteration(); + return this; + } + + public: + IteratorClosed_T(nonconst_iter curr, nonconst_iter first, + nonconst_iter last, VALUE seq = Qnil) + : Iterator_T(curr, seq), begin(first), end(last) + { + } + + virtual VALUE value() const { + if (base::current == end) { + throw stop_iteration(); + } else { + return from(static_cast(*(base::current))); + } + } + + virtual VALUE setValue( const VALUE& v ) + { + if (base::current == end) + throw stop_iteration(); + + bool tmp = *base::current; + if ( asval( v, tmp ) ) + { + *base::current = tmp; + return v; + } + return Qnil; + } + + Iterator *dup() const + { + return new self_type(*this); + } + + private: + nonconst_iter begin; + nonconst_iter end; + }; + + + /** + * Helper function used to wrap a bounded const_iterator. This is to be used in + * a %typemap(out), for example. + * + */ + template + inline Iterator* + make_nonconst_iterator(const InOutIter& current, const InOutIter& begin, + const InOutIter& end, VALUE seq = Qnil) + { + return new IteratorClosed_T(current, begin, end, seq); + } + + /** + * Helper function used to wrap an unbounded const_iterator. This is to be used in + * a %typemap(out), for example. + * + */ + template + inline Iterator* + make_nonconst_iterator(const InOutIter& current, VALUE seq = Qnil) + { + return new IteratorOpen_T(current, seq); + } + + /** + * Helper function used to wrap a bounded const_iterator. This is to be used in + * a %typemap(out), for example. + * + */ + template + inline ConstIterator* + make_const_iterator(const OutIter& current, const OutIter& begin, + const OutIter& end, VALUE seq = Qnil) + { + return new ConstIteratorClosed_T(current, begin, end, seq); + } + + /** + * Helper function used to wrap an unbounded const_iterator. This is to be used in + * a %typemap(out), for example. + * + */ + template + inline ConstIterator* + make_const_iterator(const OutIter& current, VALUE seq = Qnil) + { + return new ConstIteratorOpen_T(current, seq); + } +} +} + + +%fragment("ConstIterator"); + + +// +// This part is just so SWIG is aware of the base abstract iterator class. +// +namespace swig +{ + /* + Throw a StopIteration exception + */ + %ignore stop_iteration; + struct stop_iteration {}; + + %typemap(throws) stop_iteration { + (void)$1; + SWIG_Ruby_ExceptionType(NULL, Qnil); + SWIG_fail; + } + + /* + Mark methods that return new objects + */ + %newobject ConstIterator::dup; + %newobject ConstIterator::operator + (ptrdiff_t n) const; + %newobject ConstIterator::operator - (ptrdiff_t n) const; + + %nodirector ConstIterator; + + %catches(swig::stop_iteration) ConstIterator::value() const; + %catches(swig::stop_iteration) ConstIterator::incr(size_t n = 1); + %catches(swig::stop_iteration) ConstIterator::decr(size_t n = 1); + %catches(std::invalid_argument) ConstIterator::distance(const ConstIterator &x) const; + %catches(std::invalid_argument) ConstIterator::equal (const ConstIterator &x) const; + %catches(swig::stop_iteration) ConstIterator::next(); + %catches(swig::stop_iteration) ConstIterator::previous(); + %catches(swig::stop_iteration) ConstIterator::advance(ptrdiff_t n); + %catches(swig::stop_iteration) ConstIterator::operator += (ptrdiff_t n); + %catches(swig::stop_iteration) ConstIterator::operator -= (ptrdiff_t n); + %catches(swig::stop_iteration) ConstIterator::operator + (ptrdiff_t n) const; + %catches(swig::stop_iteration) ConstIterator::operator - (ptrdiff_t n) const; + + + struct ConstIterator + { + protected: + ConstIterator(VALUE seq); + + public: + virtual ~ConstIterator(); + + // Access iterator method, required by Ruby + virtual VALUE value() const; + + // C++ common/needed methods + virtual ConstIterator *dup() const; + + virtual VALUE inspect() const; + virtual VALUE to_s() const; + + virtual ConstIterator* next(size_t n = 1); + virtual ConstIterator* previous(size_t n = 1); + + bool operator == (const ConstIterator& x) const; + ConstIterator* operator + (ptrdiff_t n) const; + ConstIterator* operator - (ptrdiff_t n) const; + ptrdiff_t operator - (const ConstIterator& x) const; + }; + + struct Iterator : public ConstIterator + { + %rename("value=") setValue( const VALUE& v ); + virtual VALUE setValue( const VALUE& v ); + + virtual Iterator *dup() const; + + virtual Iterator* next(size_t n = 1); + virtual Iterator* previous(size_t n = 1); + + virtual VALUE inspect() const; + virtual VALUE to_s() const; + + bool operator == (const Iterator& x) const; + Iterator* operator + (ptrdiff_t n) const; + Iterator* operator - (ptrdiff_t n) const; + ptrdiff_t operator - (const Iterator& x) const; + }; + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubykw.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubykw.swg new file mode 100644 index 00000000..194687b9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubykw.swg @@ -0,0 +1,72 @@ +#ifndef RUBY_RUBYKW_SWG_ +#define RUBY_RUBYKW_SWG_ + +/* Warnings for Ruby keywords */ +#define RUBYKW(x) %keywordwarn("'" `x` "' is a ruby keyword, renaming to 'C_" `x` "'",rename="C_%s",fullname=1) `x` + +/* + + from http://www.rubycentral.com/book/language.html + +*/ + +RUBYKW(BEGIN); +RUBYKW(END); +RUBYKW(alias); +RUBYKW(and); +RUBYKW(begin); +RUBYKW(break); +RUBYKW(case); +RUBYKW(class); +RUBYKW(def); +RUBYKW("defined"); +RUBYKW(do); +RUBYKW(else); +RUBYKW(elsif); +RUBYKW(end); +RUBYKW(ensure); +RUBYKW(false); +RUBYKW(fatal); +RUBYKW(for); +RUBYKW(if); +RUBYKW(in); +RUBYKW(module); +RUBYKW(next); +RUBYKW(nil); +RUBYKW(not); +RUBYKW(or); +RUBYKW(redo); +RUBYKW(rescue); +RUBYKW(retry); +RUBYKW(return); +RUBYKW(self); +RUBYKW(super); +RUBYKW(then); +RUBYKW(true); +RUBYKW(undef); +RUBYKW(unless); +RUBYKW(until); +RUBYKW(when); +RUBYKW(while); +RUBYKW(yield); + +// RUBYKW(FalseClass); +// RUBYKW(TrueClass); +// RUBYKW(Numeric); +// RUBYKW(Integer); +// RUBYKW(Fixnum); +// RUBYKW(Float); +// RUBYKW(Range); +// RUBYKW(Array); +// RUBYKW(String); +// RUBYKW(IO); +// RUBYKW(File); +// RUBYKW(FileUtils); +// RUBYKW(Find); +// RUBYKW(Struct); +// RUBYKW(OpenStruct); +// RUBYKW(Regexp); + +#undef RUBYKW + +#endif //RUBY_RUBYKW_SWG_ diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubymacros.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubymacros.swg new file mode 100644 index 00000000..de2a52ba --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubymacros.swg @@ -0,0 +1,13 @@ + +// Redefine these macros so argument index for ruby is done properly, +// ignoring self and we get some more info about the input. +#define %argfail_fmt(_type,_name,_argn) Ruby_Format_TypeError( "", _type, #_name, _argn, $input ) + +#define %argnullref_fmt(_type,_name,_argn) Ruby_Format_TypeError(%nullref_fmt(), _type, #_name, _argn, $input) + +%{ +#define SWIG_RUBY_THREAD_BEGIN_BLOCK +#define SWIG_RUBY_THREAD_END_BLOCK +%} + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyopers.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyopers.swg new file mode 100644 index 00000000..d1ac8bf0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyopers.swg @@ -0,0 +1,55 @@ +/* ------------------------------------------------------------ + * Overloaded operator support + * ------------------------------------------------------------ */ + +#ifdef __cplusplus + +%rename(__add__) *::operator+; +%rename(__pos__) *::operator+(); +%rename(__pos__) *::operator+() const; +%rename(__sub__) *::operator-; +%rename(__neg__) *::operator-(); +%rename(__neg__) *::operator-() const; +%rename(__mul__) *::operator*; +%rename(__div__) *::operator/; +%rename(__mod__) *::operator%; +%rename(__lshift__) *::operator<<; +%rename(__rshift__) *::operator>>; +%rename(__and__) *::operator&; +%rename(__or__) *::operator|; +%rename(__xor__) *::operator^; +%rename(__invert__) *::operator~; +%rename(__lt__) *::operator<; +%rename(__le__) *::operator<=; +%rename(__gt__) *::operator>; +%rename(__ge__) *::operator>=; +%rename(__eq__) *::operator==; + +/* Special cases */ +%rename(__call__) *::operator(); + +/* Ignored inplace operators */ +%ignoreoperator(NOTEQUAL) operator!=; +%ignoreoperator(PLUSEQ) operator+=; +%ignoreoperator(MINUSEQ) operator-=; +%ignoreoperator(MULEQ) operator*=; +%ignoreoperator(DIVEQ) operator/=; +%ignoreoperator(MODEQ) operator%=; +%ignoreoperator(LSHIFTEQ) operator<<=; +%ignoreoperator(RSHIFTEQ) operator>>=; +%ignoreoperator(ANDEQ) operator&=; +%ignoreoperator(OREQ) operator|=; +%ignoreoperator(XOREQ) operator^=; + +/* Ignored operators */ +%ignoreoperator(LNOT) operator!; +%ignoreoperator(LAND) operator&&; +%ignoreoperator(LOR) operator||; +%ignoreoperator(EQ) operator=; +%ignoreoperator(PLUSPLUS) operator++; +%ignoreoperator(MINUSMINUS) operator--; +%ignoreoperator(ARROWSTAR) operator->*; +%ignoreoperator(INDEX) operator[]; + + +#endif /* __cplusplus */ diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyprimtypes.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyprimtypes.swg new file mode 100644 index 00000000..3a848191 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyprimtypes.swg @@ -0,0 +1,227 @@ +/* ----------------------------------------------------------------------------- + * rubyprimtypes.swg + * ----------------------------------------------------------------------------- */ +/* ------------------------------------------------------------ + * Primitive Types + * ------------------------------------------------------------ */ + +/* auxiliary ruby fail method */ + +%fragment("SWIG_ruby_failed","header") +{ +SWIGINTERN VALUE +SWIG_ruby_failed(void) +{ + return Qnil; +} +} + +%define %ruby_aux_method(Type, Method, Action) +SWIGINTERN VALUE SWIG_AUX_##Method##(VALUE *args) +{ + VALUE obj = args[0]; + VALUE type = TYPE(obj); + Type *res = (Type *)(args[1]); + *res = Action; + return obj; +} +%enddef + + +/* boolean */ + +%fragment(SWIG_From_frag(bool),"header") { +SWIGINTERNINLINE VALUE +SWIG_From_dec(bool)(bool value) +{ + return value ? Qtrue : Qfalse; +} +} + +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(int)) { +SWIGINTERN int +SWIG_AsVal_dec(bool)(VALUE obj, bool *val) +{ + if (obj == Qtrue) { + if (val) *val = true; + return SWIG_OK; + } else if (obj == Qfalse) { + if (val) *val = false; + return SWIG_OK; + } else { + int res = 0; + if (SWIG_AsVal(int)(obj, &res) == SWIG_OK) { + if (val) *val = res ? true : false; + return SWIG_OK; + } + } + return SWIG_TypeError; +} +} + +/* long */ + +%fragment(SWIG_From_frag(long),"header", + fragment="") { + %define_as(SWIG_From_dec(long), LONG2NUM) +} + +%fragment(SWIG_AsVal_frag(long),"header",fragment="SWIG_ruby_failed") { +%ruby_aux_method(long, NUM2LONG, type == T_FIXNUM ? NUM2LONG(obj) : rb_big2long(obj)) + +SWIGINTERN int +SWIG_AsVal_dec(long)(VALUE obj, long* val) +{ + VALUE type = TYPE(obj); + if ((type == T_FIXNUM) || (type == T_BIGNUM)) { + long v; + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); + if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2LONG), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } + } + return SWIG_TypeError; +} +} + +/* unsigned long */ + +%fragment(SWIG_From_frag(unsigned long),"header", + fragment=SWIG_From_frag(long)) { +SWIGINTERNINLINE VALUE +SWIG_From_dec(unsigned long)(unsigned long value) +{ + return ULONG2NUM(value); +} +} + +%fragment(SWIG_AsVal_frag(unsigned long),"header",fragment="SWIG_ruby_failed") { +%ruby_aux_method(unsigned long, NUM2ULONG, type == T_FIXNUM ? NUM2ULONG(obj) : rb_big2ulong(obj)) + +SWIGINTERN int +SWIG_AsVal_dec(unsigned long)(VALUE obj, unsigned long *val) +{ + VALUE type = TYPE(obj); + if ((type == T_FIXNUM) || (type == T_BIGNUM)) { + unsigned long v; + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); + if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } + } + return SWIG_TypeError; +} +} + +/* long long */ + +%fragment(SWIG_From_frag(long long),"header", + fragment=SWIG_From_frag(long), + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE VALUE +SWIG_From_dec(long long)(long long value) +{ + return LL2NUM(value); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(long long),"header", + fragment="SWIG_ruby_failed", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +%ruby_aux_method(long long, NUM2LL, type == T_FIXNUM ? NUM2LL(obj) : rb_big2ll(obj)) + +SWIGINTERN int +SWIG_AsVal_dec(long long)(VALUE obj, long long *val) +{ + VALUE type = TYPE(obj); + if ((type == T_FIXNUM) || (type == T_BIGNUM)) { + long long v; + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); + if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2LL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } + } + return SWIG_TypeError; +} +%#endif +} + +/* unsigned long long */ + +%fragment(SWIG_From_frag(unsigned long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE VALUE +SWIG_From_dec(unsigned long long)(unsigned long long value) +{ + return ULL2NUM(value); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(unsigned long long),"header", + fragment="SWIG_ruby_failed", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +%ruby_aux_method(long long, NUM2ULL, type == T_FIXNUM ? NUM2ULL(obj) : rb_big2ull(obj)) + +SWIGINTERN int +SWIG_AsVal_dec(unsigned long long)(VALUE obj, unsigned long long *val) +{ + VALUE type = TYPE(obj); + if ((type == T_FIXNUM) || (type == T_BIGNUM)) { + unsigned long long v; + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); + if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2ULL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } + } + return SWIG_TypeError; +} +%#endif +} + +/* double */ + +%fragment(SWIG_From_frag(double),"header") { + %define_as(SWIG_From_dec(double), rb_float_new) +} + +%fragment(SWIG_AsVal_frag(double),"header",fragment="SWIG_ruby_failed") { +%ruby_aux_method(double, NUM2DBL, NUM2DBL(obj); (void)type) + +SWIGINTERN int +SWIG_AsVal_dec(double)(VALUE obj, double *val) +{ + VALUE type = TYPE(obj); + if ((type == T_FLOAT) || (type == T_FIXNUM) || (type == T_BIGNUM)) { + double v; + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); + if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2DBL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } + } + return SWIG_TypeError; +} +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyrun.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyrun.swg new file mode 100644 index 00000000..4b2ffe4b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyrun.swg @@ -0,0 +1,456 @@ +/* ----------------------------------------------------------------------------- + * rubyrun.swg + * + * This file contains the runtime support for Ruby modules + * and includes code for managing global variables and pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +/* For backward compatibility only */ +#define SWIG_POINTER_EXCEPTION 0 + +/* for raw pointers */ +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Ruby_ConvertPtrAndOwn(obj, pptr, type, flags, 0) +#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Ruby_ConvertPtrAndOwn(obj, pptr, type, flags, own) +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Ruby_NewPointerObj(ptr, type, flags) +#define SWIG_AcquirePtr(ptr, own) SWIG_Ruby_AcquirePtr(ptr, own) +#define swig_owntype swig_ruby_owntype + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Ruby_ConvertPacked(obj, ptr, sz, ty, flags) +#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Ruby_NewPackedObj(ptr, sz, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_ConvertPtr(obj, pptr, type, 0) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_NewPointerObj(ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Ruby_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Ruby_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Ruby_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_Ruby_SetModule(pointer) + + +/* Error manipulation */ + +#define SWIG_ErrorType(code) SWIG_Ruby_ErrorType(code) +#define SWIG_Error(code, msg) rb_raise(SWIG_Ruby_ErrorType(code), "%s", msg) +#define SWIG_fail goto fail + + +/* Ruby-specific SWIG API */ + +#define SWIG_InitRuntime() SWIG_Ruby_InitRuntime() +#define SWIG_define_class(ty) SWIG_Ruby_define_class(ty) +#define SWIG_NewClassInstance(value, ty) SWIG_Ruby_NewClassInstance(value, ty) +#define SWIG_MangleStr(value) SWIG_Ruby_MangleStr(value) +#define SWIG_CheckConvert(value, ty) SWIG_Ruby_CheckConvert(value, ty) + +#include "assert.h" + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + VALUE klass; + VALUE mImpl; + void (*mark)(void *); + void (*destroy)(void *); + int trackObjects; +} swig_class; + + +/* Global pointer used to keep some internal SWIG stuff */ +static VALUE _cSWIG_Pointer = Qnil; +static VALUE swig_runtime_data_type_pointer = Qnil; + +/* Global IDs used to keep some internal SWIG stuff */ +static ID swig_arity_id = 0; +static ID swig_call_id = 0; + +/* + If your swig extension is to be run within an embedded ruby and has + director callbacks, you should set -DRUBY_EMBEDDED during compilation. + This will reset ruby's stack frame on each entry point from the main + program the first time a virtual director function is invoked (in a + non-recursive way). + If this is not done, you run the risk of Ruby trashing the stack. +*/ + +#ifdef RUBY_EMBEDDED + +# define SWIG_INIT_STACK \ + if ( !swig_virtual_calls ) { RUBY_INIT_STACK } \ + ++swig_virtual_calls; +# define SWIG_RELEASE_STACK --swig_virtual_calls; +# define Ruby_DirectorTypeMismatchException(x) \ + rb_raise( rb_eTypeError, "%s", x ); return c_result; + + static unsigned int swig_virtual_calls = 0; + +#else /* normal non-embedded extension */ + +# define SWIG_INIT_STACK +# define SWIG_RELEASE_STACK +# define Ruby_DirectorTypeMismatchException(x) \ + throw Swig::DirectorTypeMismatchException( x ); + +#endif /* RUBY_EMBEDDED */ + + +SWIGRUNTIME VALUE +getExceptionClass(void) { + static int init = 0; + static VALUE rubyExceptionClass ; + if (!init) { + init = 1; + rubyExceptionClass = rb_const_get(_mSWIG, rb_intern("Exception")); + } + return rubyExceptionClass; +} + +/* This code checks to see if the Ruby object being raised as part + of an exception inherits from the Ruby class Exception. If so, + the object is simply returned. If not, then a new Ruby exception + object is created and that will be returned to Ruby.*/ +SWIGRUNTIME VALUE +SWIG_Ruby_ExceptionType(swig_type_info *desc, VALUE obj) { + VALUE exceptionClass = getExceptionClass(); + if (rb_obj_is_kind_of(obj, exceptionClass)) { + return obj; + } else { + return rb_exc_new3(rb_eRuntimeError, rb_obj_as_string(obj)); + } +} + +/* Initialize Ruby runtime support */ +SWIGRUNTIME void +SWIG_Ruby_InitRuntime(void) +{ + if (_mSWIG == Qnil) { + _mSWIG = rb_define_module("SWIG"); + swig_call_id = rb_intern("call"); + swig_arity_id = rb_intern("arity"); + } +} + +/* Define Ruby class for C type */ +SWIGRUNTIME void +SWIG_Ruby_define_class(swig_type_info *type) +{ + char *klass_name = (char *) malloc(4 + strlen(type->name) + 1); + sprintf(klass_name, "TYPE%s", type->name); + if (NIL_P(_cSWIG_Pointer)) { + _cSWIG_Pointer = rb_define_class_under(_mSWIG, "Pointer", rb_cObject); + rb_undef_method(CLASS_OF(_cSWIG_Pointer), "new"); + } + rb_define_class_under(_mSWIG, klass_name, _cSWIG_Pointer); + free((void *) klass_name); +} + +/* Create a new pointer object */ +SWIGRUNTIME VALUE +SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags) +{ + int own = flags & SWIG_POINTER_OWN; + int track; + char *klass_name; + swig_class *sklass; + VALUE klass; + VALUE obj; + + if (!ptr) + return Qnil; + + assert(type); + if (type->clientdata) { + sklass = (swig_class *) type->clientdata; + + /* Are we tracking this class and have we already returned this Ruby object? */ + track = sklass->trackObjects; + if (track) { + obj = SWIG_RubyInstanceFor(ptr); + + /* Check the object's type and make sure it has the correct type. + It might not in cases where methods do things like + downcast methods. */ + if (obj != Qnil) { + VALUE value = rb_iv_get(obj, "@__swigtype__"); + const char* type_name = RSTRING_PTR(value); + + if (strcmp(type->name, type_name) == 0) { + return obj; + } + } + } + + /* Create a new Ruby object */ + obj = Data_Wrap_Struct(sklass->klass, VOIDFUNC(sklass->mark), + ( own ? VOIDFUNC(sklass->destroy) : + (track ? VOIDFUNC(SWIG_RubyRemoveTracking) : 0 ) + ), ptr); + + /* If tracking is on for this class then track this object. */ + if (track) { + SWIG_RubyAddTracking(ptr, obj); + } + } else { + klass_name = (char *) malloc(4 + strlen(type->name) + 1); + sprintf(klass_name, "TYPE%s", type->name); + klass = rb_const_get(_mSWIG, rb_intern(klass_name)); + free((void *) klass_name); + obj = Data_Wrap_Struct(klass, 0, 0, ptr); + } + rb_iv_set(obj, "@__swigtype__", rb_str_new2(type->name)); + + return obj; +} + +/* Create a new class instance (always owned) */ +SWIGRUNTIME VALUE +SWIG_Ruby_NewClassInstance(VALUE klass, swig_type_info *type) +{ + VALUE obj; + swig_class *sklass = (swig_class *) type->clientdata; + obj = Data_Wrap_Struct(klass, VOIDFUNC(sklass->mark), VOIDFUNC(sklass->destroy), 0); + rb_iv_set(obj, "@__swigtype__", rb_str_new2(type->name)); + return obj; +} + +/* Get type mangle from class name */ +SWIGRUNTIMEINLINE char * +SWIG_Ruby_MangleStr(VALUE obj) +{ + VALUE stype = rb_iv_get(obj, "@__swigtype__"); + return StringValuePtr(stype); +} + +/* Acquire a pointer value */ +typedef struct { + void (*datafree)(void *); + int own; +} swig_ruby_owntype; + +SWIGRUNTIME swig_ruby_owntype +SWIG_Ruby_AcquirePtr(VALUE obj, swig_ruby_owntype own) { + swig_ruby_owntype oldown = {0, 0}; + if (TYPE(obj) == T_DATA && !RTYPEDDATA_P(obj)) { + oldown.datafree = RDATA(obj)->dfree; + RDATA(obj)->dfree = own.datafree; + } + return oldown; +} + +/* Convert a pointer value */ +SWIGRUNTIME int +SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags, swig_ruby_owntype *own) +{ + char *c; + swig_cast_info *tc; + void *vptr = 0; + + /* Grab the pointer */ + if (NIL_P(obj)) { + if (ptr) + *ptr = 0; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } else { + if (TYPE(obj) != T_DATA || (TYPE(obj) == T_DATA && RTYPEDDATA_P(obj))) { + return SWIG_ERROR; + } + Data_Get_Struct(obj, void, vptr); + } + + if (own) { + own->datafree = RDATA(obj)->dfree; + own->own = 0; + } + + /* Check to see if the input object is giving up ownership + of the underlying C struct or C++ object. If so then we + need to reset the destructor since the Ruby object no + longer owns the underlying C++ object.*/ + if (flags & SWIG_POINTER_DISOWN) { + /* Is tracking on for this class? */ + int track = 0; + if (ty && ty->clientdata) { + swig_class *sklass = (swig_class *) ty->clientdata; + track = sklass->trackObjects; + } + + if (track) { + /* We are tracking objects for this class. Thus we change the destructor + * to SWIG_RubyRemoveTracking. This allows us to + * remove the mapping from the C++ to Ruby object + * when the Ruby object is garbage collected. If we don't + * do this, then it is possible we will return a reference + * to a Ruby object that no longer exists thereby crashing Ruby. */ + RDATA(obj)->dfree = SWIG_RubyRemoveTracking; + } else { + RDATA(obj)->dfree = 0; + } + } + + /* Do type-checking if type info was provided */ + if (ty) { + if (ty->clientdata) { + if (rb_obj_is_kind_of(obj, ((swig_class *) (ty->clientdata))->klass)) { + if (vptr == 0) { + /* The object has already been deleted */ + return SWIG_ObjectPreviouslyDeletedError; + } + } + } + if ((c = SWIG_MangleStr(obj)) == NULL) { + return SWIG_ERROR; + } + tc = SWIG_TypeCheck(c, ty); + if (!tc) { + return SWIG_ERROR; + } else { + if (ptr) { + if (tc->type == ty) { + *ptr = vptr; + } else { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc, vptr, &newmemory); + if (newmemory == SWIG_CAST_NEW_MEMORY) { + assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ + if (own) + own->own = own->own | SWIG_CAST_NEW_MEMORY; + } + } + } + } + } else { + if (ptr) + *ptr = vptr; + } + + return SWIG_OK; +} + +/* Check convert */ +SWIGRUNTIMEINLINE int +SWIG_Ruby_CheckConvert(VALUE obj, swig_type_info *ty) +{ + char *c = SWIG_MangleStr(obj); + if (!c) return 0; + return SWIG_TypeCheck(c,ty) != 0; +} + +SWIGRUNTIME VALUE +SWIG_Ruby_NewPackedObj(void *ptr, int sz, swig_type_info *type) { + char result[1024]; + char *r = result; + if ((2*sz + 1 + strlen(type->name)) > 1000) return 0; + *(r++) = '_'; + r = SWIG_PackData(r, ptr, sz); + strcpy(r, type->name); + return rb_str_new2(result); +} + +/* Convert a packed pointer value */ +SWIGRUNTIME int +SWIG_Ruby_ConvertPacked(VALUE obj, void *ptr, int sz, swig_type_info *ty) { + swig_cast_info *tc; + const char *c; + + if (TYPE(obj) != T_STRING) goto type_error; + c = StringValuePtr(obj); + /* Pointer values must start with leading underscore */ + if (*c != '_') goto type_error; + c++; + c = SWIG_UnpackData(c, ptr, sz); + if (ty) { + tc = SWIG_TypeCheck(c, ty); + if (!tc) goto type_error; + } + return SWIG_OK; + + type_error: + return SWIG_ERROR; +} + +SWIGRUNTIME swig_module_info * +SWIG_Ruby_GetModule(void *SWIGUNUSEDPARM(clientdata)) +{ + VALUE pointer; + swig_module_info *ret = 0; + VALUE verbose = rb_gv_get("VERBOSE"); + + /* temporarily disable warnings, since the pointer check causes warnings with 'ruby -w' */ + rb_gv_set("VERBOSE", Qfalse); + + /* first check if pointer already created */ + pointer = rb_gv_get("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME); + if (pointer != Qnil) { + Data_Get_Struct(pointer, swig_module_info, ret); + } + + /* reinstate warnings */ + rb_gv_set("VERBOSE", verbose); + return ret; +} + +SWIGRUNTIME void +SWIG_Ruby_SetModule(swig_module_info *pointer) +{ + /* register a new class */ + VALUE cl = rb_define_class("swig_runtime_data", rb_cObject); + /* create and store the structure pointer to a global variable */ + swig_runtime_data_type_pointer = Data_Wrap_Struct(cl, 0, 0, pointer); + rb_define_readonly_variable("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, &swig_runtime_data_type_pointer); +} + +/* This function can be used to check whether a proc or method or similarly + callable function has been passed. Usually used in a %typecheck, like: + + %typecheck(c_callback_t, precedence=SWIG_TYPECHECK_POINTER) { + $result = SWIG_Ruby_isCallable( $input ); + } + */ +SWIGINTERN +int SWIG_Ruby_isCallable( VALUE proc ) +{ + if ( rb_respond_to( proc, swig_call_id ) ) + return 1; + return 0; +} + +/* This function can be used to check the arity (number of arguments) + a proc or method can take. Usually used in a %typecheck. + Valid arities will be that equal to minimal or those < 0 + which indicate a variable number of parameters at the end. + */ +SWIGINTERN +int SWIG_Ruby_arity( VALUE proc, int minimal ) +{ + if ( rb_respond_to( proc, swig_arity_id ) ) + { + VALUE num = rb_funcall( proc, swig_arity_id, 0 ); + int arity = NUM2INT(num); + if ( arity < 0 && (arity+1) < -minimal ) return 1; + if ( arity == minimal ) return 1; + return 1; + } + return 0; +} + + +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyruntime.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyruntime.swg new file mode 100644 index 00000000..41215614 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyruntime.swg @@ -0,0 +1,9 @@ + +%runtime "swiglabels.swg" /* Common C API type-checking code */ +%runtime "swigrun.swg" /* Common C API type-checking code */ +%runtime "swigerrors.swg" /* SWIG errors */ +%runtime "rubyhead.swg" /* Ruby includes and fixes */ +%runtime "rubyerrors.swg" /* Ruby errors */ +%runtime "rubytracking.swg" /* API for tracking C++ classes to Ruby objects */ +%runtime "rubyapi.swg" +%runtime "rubyrun.swg" diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdautodoc.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdautodoc.swg new file mode 100644 index 00000000..e14f6590 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdautodoc.swg @@ -0,0 +1,33 @@ +/* ----------------------------------------------------------------------------- + * rubystdautodoc.swg + * + * This file contains autodocs for standard STL functions. + * ----------------------------------------------------------------------------- */ + +// +// For STL autodocumentation +// +AUTODOC(c_str, "Convert class to a String representation"); +AUTODOC(begin, "Return an iterator to the beginning of the $class"); +AUTODOC(end, "Return an iterator to past the end of the $class"); +AUTODOC(rbegin, "Return a reverse iterator to the beginning (the end) of the $class"); +AUTODOC(rend, "Return a reverse iterator to past the end (past the beginning) of the $class"); +AUTODOC(length, "Size or Length of the $class"); +AUTODOC(replace, "Replace all or a portion of the $class"); +AUTODOC(resize, "Resize the size of the $class"); +AUTODOC(capacity, "Reserved capacity of the $class"); +AUTODOC(reserve, "Reserve memory in the $class for a number of elements"); +AUTODOC(erase, "Delete a portion of the $class"); +AUTODOC(max_size, "Maximum size of elements allowed in the $class"); +AUTODOC(iterator, "Return an iterator to the $class"); +AUTODOC(empty, "Check if the $class is empty or not"); +AUTODOC(rfind, "Find an element in reverse usually starting from the end of the $class"); +AUTODOC(assign, "Assign a new $class or portion of it"); +AUTODOC(front, "Return the first element in $class"); +AUTODOC(back, "Return the last element in $class"); +AUTODOC(second, "Return the second element in $class"); +AUTODOC(push_front, "Add an element at the beginning of the $class"); +AUTODOC(push_back, "Add an element at the end of the $class"); +AUTODOC(pop_front, "Remove and return element at the beginning of the $class"); +AUTODOC(pop_back, "Remove and return an element at the end of the $class"); +AUTODOC(clear, "Clear $class contents"); diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdcommon.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdcommon.swg new file mode 100644 index 00000000..99dd7f81 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdcommon.swg @@ -0,0 +1,199 @@ + +/* ------------------------------------------------------------ + * The Ruby classes, for C++ + * ------------------------------------------------------------ */ +%include +%include + +%fragment("StdTraits","header",fragment="StdTraitsCommon",fragment="StdTraitsForwardDeclaration") +{ + +namespace swig { + /* + Traits that provides the from method + */ + template struct traits_from_ptr { + static VALUE from(Type *val, int owner = 0) { + return SWIG_NewPointerObj(val, type_info(), owner); + } + }; + + template struct traits_from { + static VALUE from(const Type& val) { + return traits_from_ptr::from(new Type(val), 1); + } + }; + + template struct traits_from { + static VALUE from(Type* val) { + return traits_from_ptr::from(val, 0); + } + }; + + template struct traits_from { + static VALUE from(const Type* val) { + return traits_from_ptr::from(const_cast(val), 0); + } + }; + + + template + inline VALUE from(const Type& val) { + return traits_from::from(val); + } + + template + inline VALUE from_ptr(Type* val, int owner) { + return traits_from_ptr::from(val, owner); + } + + /* + Traits that provides the asval/as/check method + */ + template + struct traits_asptr { + static int asptr(VALUE obj, Type **val) { + Type *p = 0; + swig_type_info *descriptor = type_info(); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template + inline int asptr(VALUE obj, Type **vptr) { + return traits_asptr::asptr(obj, vptr); + } + + template + struct traits_asval { + static int asval(VALUE obj, Type *val) { + if (val) { + Type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (!SWIG_IsOK(res)) return res; + if (p) { + typedef typename noconst_traits::noconst_type noconst_type; + *(const_cast(val)) = *p; + if (SWIG_IsNewObj(res)){ + %delete(p); + res = SWIG_DelNewMask(res); + } + return res; + } else { + return SWIG_ERROR; + } + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template struct traits_asval { + static int asval(VALUE obj, Type **val) { + if (val) { + typedef typename noconst_traits::noconst_type noconst_type; + noconst_type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (SWIG_IsOK(res)) { + *(const_cast(val)) = p; + } + return res; + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template + inline int asval(VALUE obj, Type *val) { + return traits_asval::asval(obj, val); + } + + template + struct traits_as { + static Type as(VALUE obj) { + Type v; + int res = asval(obj, &v); + if (!SWIG_IsOK(res)) { + VALUE lastErr = rb_gv_get("$!"); + if (lastErr == Qnil) { + %type_error(swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + return v; + } + }; + + template + struct traits_as { + static Type as(VALUE obj) { + Type *v = 0; + int res = traits_asptr::asptr(obj, &v); + if (SWIG_IsOK(res) && v) { + if (SWIG_IsNewObj(res)) { + Type r(*v); + %delete(v); + return r; + } else { + return *v; + } + } else { + VALUE lastErr = rb_gv_get("$!"); + if (lastErr == Qnil) { + %type_error(swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + } + }; + + template + struct traits_as { + static Type* as(VALUE obj) { + Type *v = 0; + int res = traits_asptr::asptr(obj, &v); + if (SWIG_IsOK(res)) { + return v; + } else { + VALUE lastErr = rb_gv_get("$!"); + if (lastErr == Qnil) { + %type_error(swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + } + }; + + template + inline Type as(VALUE obj) { + return traits_as< Type, typename traits< Type >::category >::as(obj); + } + + template + struct traits_check { + static bool check(VALUE obj) { + int res = asval(obj, (Type *)(0)); + return SWIG_IsOK(res) ? true : false; + } + }; + + template + struct traits_check { + static bool check(VALUE obj) { + int res = asptr(obj, (Type **)(0)); + return SWIG_IsOK(res) ? true : false; + } + }; + + template + inline bool check(VALUE obj) { + return traits_check::category>::check(obj); + } +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdcommon_forward.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdcommon_forward.swg new file mode 100644 index 00000000..4120b38e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdcommon_forward.swg @@ -0,0 +1,15 @@ +%fragment("StdTraitsForwardDeclaration","header") +{ +namespace swig { + template struct traits_asptr; + template struct traits_asval; + struct pointer_category; + template struct traits_as; + template struct traits_from; + template struct traits_from_ptr; + template struct noconst_traits; + template swig_type_info* type_info(); + template const char* type_name(); + template VALUE from(const Type& val); +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdfunctors.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdfunctors.swg new file mode 100644 index 00000000..5150333c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystdfunctors.swg @@ -0,0 +1,162 @@ +/** + * @file rubystdfunctors.swg + * @date Sun May 6 00:44:33 2007 + * + * @brief This file provides unary and binary functors for STL + * containers, that will invoke a Ruby proc or method to do + * their operation. + * + * You can use them in a swig file like: + * + * %include + * %include + * + * %template< IntSet > std::set< int, swig::BinaryPredicate<> >; + * + * + * which will then allow calling them from Ruby either like: + * + * # order of set is defined by C++ default + * a = IntSet.new + * + * # sort order defined by Ruby proc + * b = IntSet.new( proc { |a,b| a > b } ) + * + */ + +%include rubyclasses.swg + + +namespace swig { + + %apply GC_VALUE { UnaryPredicate, BinaryPredicate, UnaryFunction, + BinaryFunction }; + + %typecheck(SWIG_TYPECHECK_POINTER,noblock=1) + UnaryPredicate, UnaryPredicate&, UnaryFunction, UnaryFunction& + { + $1 = SWIG_Ruby_isCallable($input) && SWIG_Ruby_arity($input, 1); + } + + %typecheck(SWIG_TYPECHECK_POINTER,noblock=1) + BinaryPredicate, BinaryPredicate&, BinaryFunction, BinaryFunction& { + $1 = SWIG_Ruby_isCallable($input) && SWIG_Ruby_arity($input, 2); + } + + %typemap(in,noblock=1) BinaryFunction&, BinaryFunction { + $1 = new swig::BinaryFunction< >($input); + } + %typemap(in,noblock=1) UnaryFunction&, UnaryFunction { + $1 = new swig::UnaryFunction< >($input); + } + + %typemap(in,noblock=1) BinaryPredicate&, BinaryPredicate { + $1 = new swig::BinaryPredicate<>($input); + } + + %typemap(in,noblock=1) UnaryPredicate&, UnaryPredicate { + $1 = new swig::UnaryPredicate< >($input); + } + + + %ignore BinaryFunction; + template< class _T = GC_VALUE > + struct BinaryFunction { + }; + + %ignore UnaryFunction; + template< class _T = GC_VALUE > + struct UnaryFunction { + }; + + %ignore BinaryPredicate; + template< class _T = GC_VALUE > + struct BinaryPredicate { + }; + + %ignore UnaryPredicate; + template< class _T = GC_VALUE > + struct UnaryPredicate { + + }; + +} + + +%fragment("StdFunctors","header",fragment="StdTraits",fragment="GC_VALUE_definition") +{ +namespace swig { + + static ID call_id = rb_intern("call"); + + template > + struct BinaryPredicate : GC_VALUE + { + BinaryPredicate(VALUE obj = Qnil) : GC_VALUE(obj) { } + bool operator()(_T a, _T b) const + { + if (_obj != Qnil) { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + VALUE arg1 = swig::from(a); + VALUE arg2 = swig::from(b); + VALUE res = rb_funcall( _obj, swig::call_id, 2, arg1, arg2); + SWIG_RUBY_THREAD_END_BLOCK; + return RTEST(res); + } else { + return _DefaultFunc()(a, b); + } + } + }; + + template > + struct BinaryFunction : GC_VALUE + { + BinaryFunction(VALUE obj = Qnil) : GC_VALUE(obj) { } + _T operator()(_T a, _T b) const + { + if (_obj != Qnil) { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + VALUE arg1 = swig::from(a); + VALUE arg2 = swig::from(b); + VALUE res = rb_funcall( _obj, swig::call_id, 2, arg1, arg2); + SWIG_RUBY_THREAD_END_BLOCK; + return swig::as<_T >(res); + } else { + return _DefaultFunc()(a, b); + } + } + }; + + template< class _T = GC_VALUE > + struct UnaryPredicate : GC_VALUE + { + UnaryPredicate(VALUE obj = Qnil) : GC_VALUE(obj) { } + bool operator()(_T a) const + { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + VALUE arg1 = swig::from<_T >(a); + VALUE res = rb_funcall( _obj, swig::call_id, 1, arg1); + SWIG_RUBY_THREAD_END_BLOCK; + return RTEST(res); + } + }; + + template< class _T = GC_VALUE > + struct UnaryFunction : GC_VALUE + { + UnaryFunction(VALUE obj = Qnil) : GC_VALUE(obj) { } + _T operator()(_T a) const + { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + VALUE arg1 = swig::from(a); + VALUE res = rb_funcall( _obj, swig::call_id, 1, VALUE(arg1)); + SWIG_RUBY_THREAD_END_BLOCK; + return swig::as< _T >(res); + } + }; + +} // namespace swig + +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubystrings.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystrings.swg new file mode 100644 index 00000000..3adf0008 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubystrings.swg @@ -0,0 +1,57 @@ +/* ------------------------------------------------------------ + * utility methods for char strings + * ------------------------------------------------------------ */ + +%fragment("SWIG_AsCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERN int +SWIG_AsCharPtrAndSize(VALUE obj, char** cptr, size_t* psize, int *alloc) +{ + if (TYPE(obj) == T_STRING) { + char *cstr = StringValuePtr(obj); + size_t size = RSTRING_LEN(obj) + 1; + if (cptr) { + if (alloc) { + if (*alloc == SWIG_NEWOBJ) { + *cptr = %new_copy_array(cstr, size, char); + } else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } + } + if (psize) *psize = size; + return SWIG_OK; + } else { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + void* vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (char *)vptr; + if (psize) *psize = vptr ? (strlen((char*)vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} +} + +%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERNINLINE VALUE +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + if (carray) { + if (size > LONG_MAX) { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + return pchar_descriptor ? + SWIG_NewPointerObj(%const_cast(carray,char *), pchar_descriptor, 0) : Qnil; + } else { + return rb_str_new(carray, %numeric_cast(size,long)); + } + } else { + return Qnil; + } +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubytracking.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubytracking.swg new file mode 100644 index 00000000..b9fb249d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubytracking.swg @@ -0,0 +1,132 @@ +/* ----------------------------------------------------------------------------- + * rubytracking.swg + * + * This file contains support for tracking mappings from + * Ruby objects to C++ objects. This functionality is needed + * to implement mark functions for Ruby's mark and sweep + * garbage collector. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(ST_DATA_T_DEFINED) +/* Needs to be explicitly included for Ruby 1.8 and earlier */ +#include +#endif + +/* Ruby 1.8 actually assumes the first case. */ +#if SIZEOF_VOIDP == SIZEOF_LONG +# define SWIG2NUM(v) LONG2NUM((unsigned long)v) +# define NUM2SWIG(x) (unsigned long)NUM2LONG(x) +#elif SIZEOF_VOIDP == SIZEOF_LONG_LONG +# define SWIG2NUM(v) LL2NUM((unsigned long long)v) +# define NUM2SWIG(x) (unsigned long long)NUM2LL(x) +#else +# error sizeof(void*) is not the same as long or long long +#endif + +/* Global hash table to store Trackings from C/C++ + structs to Ruby Objects. +*/ +static st_table* swig_ruby_trackings = NULL; + +static VALUE swig_ruby_trackings_count(ANYARGS) { + return SWIG2NUM(swig_ruby_trackings->num_entries); +} + + +/* Setup a hash table to store Trackings */ +SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) { + /* Create a hash table to store Trackings from C++ + objects to Ruby objects. */ + + /* Try to see if some other .so has already created a + tracking hash table, which we keep hidden in an instance var + in the SWIG module. + This is done to allow multiple DSOs to share the same + tracking table. + */ + VALUE trackings_value = Qnil; + /* change the variable name so that we can mix modules + compiled with older SWIG's - this used to be called "@__trackings__" */ + ID trackings_id = rb_intern( "@__safetrackings__" ); + VALUE verbose = rb_gv_get("VERBOSE"); + rb_gv_set("VERBOSE", Qfalse); + trackings_value = rb_ivar_get( _mSWIG, trackings_id ); + rb_gv_set("VERBOSE", verbose); + + /* The trick here is that we have to store the hash table + pointer in a Ruby variable. We do not want Ruby's GC to + treat this pointer as a Ruby object, so we convert it to + a Ruby numeric value. */ + if (trackings_value == Qnil) { + /* No, it hasn't. Create one ourselves */ + swig_ruby_trackings = st_init_numtable(); + rb_ivar_set( _mSWIG, trackings_id, SWIG2NUM(swig_ruby_trackings) ); + } else { + swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value); + } + + rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", swig_ruby_trackings_count, NULL); +} + +/* Add a Tracking from a C/C++ struct to a Ruby object */ +SWIGRUNTIME void SWIG_RubyAddTracking(void* ptr, VALUE object) { + /* Store the mapping to the global hash table. */ + st_insert(swig_ruby_trackings, (st_data_t)ptr, object); +} + +/* Get the Ruby object that owns the specified C/C++ struct */ +SWIGRUNTIME VALUE SWIG_RubyInstanceFor(void* ptr) { + /* Now lookup the value stored in the global hash table */ + VALUE value; + + if (st_lookup(swig_ruby_trackings, (st_data_t)ptr, &value)) { + return value; + } else { + return Qnil; + } +} + +/* Remove a Tracking from a C/C++ struct to a Ruby object. It + is very important to remove objects once they are destroyed + since the same memory address may be reused later to create + a new object. */ +SWIGRUNTIME void SWIG_RubyRemoveTracking(void* ptr) { + /* Delete the object from the hash table */ + st_delete(swig_ruby_trackings, (st_data_t *)&ptr, NULL); +} + +/* This is a helper method that unlinks a Ruby object from its + underlying C++ object. This is needed if the lifetime of the + Ruby object is longer than the C++ object. */ +SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) { + VALUE object = SWIG_RubyInstanceFor(ptr); + + if (object != Qnil) { + // object might have the T_ZOMBIE type, but that's just + // because the GC has flagged it as such for a deferred + // destruction. Until then, it's still a T_DATA object. + DATA_PTR(object) = 0; + } +} + +/* This is a helper method that iterates over all the trackings + passing the C++ object pointer and its related Ruby object + to the passed callback function. */ + +/* Proxy method to abstract the internal trackings datatype */ +static int swig_ruby_internal_iterate_callback(void* ptr, VALUE obj, void(*meth)(void* ptr, VALUE obj)) { + (*meth)(ptr, obj); + return ST_CONTINUE; +} + +SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) { + st_foreach(swig_ruby_trackings, (int (*)(ANYARGS))&swig_ruby_internal_iterate_callback, (st_data_t)meth); +} + +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubytypemaps.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubytypemaps.swg new file mode 100644 index 00000000..3837df07 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubytypemaps.swg @@ -0,0 +1,62 @@ +/* ------------------------------------------------------------ + * Typemap specializations for Ruby + * ------------------------------------------------------------ */ +/* ------------------------------------------------------------ + * Fragment section + * ------------------------------------------------------------ */ +/* bool is dangerous in Ruby, change precedence */ +#undef SWIG_TYPECHECK_BOOL +%define SWIG_TYPECHECK_BOOL 10000 %enddef + +/* Include fundamental fragment definitions */ +%include + +/* Look for user fragments file. */ +%include + +/* Ruby fragments for primitive types */ +%include + +/* Ruby fragments for char* strings */ +%include + +/* Backward compatibility output helper */ +%fragment("output_helper","header") %{ +#define output_helper SWIG_Ruby_AppendOutput +%} + +/* ------------------------------------------------------------ + * Unified typemap section + * ------------------------------------------------------------ */ + +/* Directors are supported in Ruby */ +#ifndef SWIG_DIRECTOR_TYPEMAPS +#define SWIG_DIRECTOR_TYPEMAPS +#endif + + +/* Ruby types */ +#define SWIG_Object VALUE +#define VOID_Object Qnil + +/* Overload of the output/constant/exception handling */ + +/* append output */ +#define SWIG_AppendOutput(result,obj) SWIG_Ruby_AppendOutput(result, obj) + +/* set constant */ +#define SWIG_SetConstant(name, obj) rb_define_const($module, name, obj) + +/* raise */ +#define SWIG_Raise(obj, type, desc) rb_exc_raise(SWIG_Ruby_ExceptionType(desc, obj)) + +/* Get the address of the 'Ruby self' object */ + +%typemap(in,numinputs=0,noblock=1) VALUE* RUBY_SELF { + $1 = &self; +} + +/* Include the unified typemap library */ +%include + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubyuserdir.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyuserdir.swg new file mode 100644 index 00000000..1689c7f0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubyuserdir.swg @@ -0,0 +1,20 @@ +#define %alias %feature("alias") +#define %freefunc %feature("freefunc") +#define %markfunc %feature("markfunc") +#define %mixin %feature("mixin") +#define %predicate %feature("predicate", "1") +#define %bang %feature("bang", "1") +#define %trackobjects %feature("trackobjects") +#define %nooutput %feature("outputs","0") +#define %initstack %feature("initstack", "1") +#define %ignorestack %feature("initstack", "0") + +/* ------------------------------------------------------------------------- */ +/* + Enable keywords parameters +*/ + +#define %kwargs %feature("kwargs") +#define %nokwargs %feature("kwargs", "0") +#define %clearkwargs %feature("kwargs", "") + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/rubywstrings.swg b/macx64/bin/swig/share/swig/4.0.0/ruby/rubywstrings.swg new file mode 100644 index 00000000..7da6f4bf --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/rubywstrings.swg @@ -0,0 +1,58 @@ +/* ----------------------------------------------------------------------------- + * rubywstrings.swg + * + * utility methods for wchar_t strings + * ------------------------------------------------------------ */ + +%fragment("SWIG_AsWCharPtrAndSize","header",fragment="",fragment="SWIG_pwchar_descriptor",fragment="SWIG_AsCharPtrAndSize",fragment="SWIG_ruby_wstring_encoding_init") { +SWIGINTERN int +SWIG_AsWCharPtrAndSize(VALUE obj, wchar_t **cptr, size_t *psize, int *alloc) +{ + rb_encoding* wstr_enc = swig_ruby_wstring_encoding; + + if (TYPE(obj) == T_STRING) { + VALUE rstr = rb_str_conv_enc(obj, rb_enc_get(obj), wstr_enc); + wchar_t* cstr = (wchar_t*) StringValuePtr(rstr); + size_t size = RSTRING_LEN(rstr) / sizeof(wchar_t) + 1; + + if ( RSTRING_LEN(rstr) % sizeof(wchar_t) != 0 ) { + rb_raise(rb_eRuntimeError, + "The length of the byte sequence of converted string is not a multiplier of sizeof(wchar_t). Invalid byte sequence is given. Or invalid SWIG_RUBY_WSTRING_ENCODING is given when compiling this binding."); + } + if (cptr && alloc) { + *alloc = SWIG_NEWOBJ; + *cptr = %new_array(size, wchar_t); + memmove(*cptr, cstr, RSTRING_LEN(rstr)); + } + if (psize) *psize = size; + + return SWIG_OK; + } else { + return SWIG_TypeError; + } +} +} + +%fragment("SWIG_FromWCharPtrAndSize","header",fragment="",fragment="SWIG_pwchar_descriptor",fragment="SWIG_FromCharPtrAndSize",fragment="SWIG_ruby_wstring_encoding_init") { +SWIGINTERNINLINE VALUE +SWIG_FromWCharPtrAndSize(const wchar_t * carray, size_t size) +{ + rb_encoding* wstr_enc = swig_ruby_wstring_encoding; + rb_encoding* rb_enc = swig_ruby_internal_encoding; + + if (carray && size <= LONG_MAX/sizeof(wchar_t)) { + VALUE rstr = rb_str_new( (const char*)carray, %numeric_cast(size*sizeof(wchar_t),long) ); + rb_encoding* new_enc = rb_default_internal_encoding(); + + rb_enc_associate(rstr, wstr_enc); + if ( !new_enc ) { + new_enc = rb_enc; + } + return rb_str_conv_enc(rstr, wstr_enc, new_enc); + } else { + return Qnil; + } +} +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_alloc.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_alloc.i new file mode 100644 index 00000000..35dc051b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_alloc.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_array.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_array.i new file mode 100644 index 00000000..a4d3ef54 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_array.i @@ -0,0 +1,102 @@ +/* + std::array +*/ + +%fragment("StdArrayTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(VALUE obj, std::array **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static VALUE from(const std::array& vec) { + return traits_from_stdseq >::from(vec); + } + }; + + template + inline void + assign(const RubySeq& rubyseq, std::array* seq) { + if (rubyseq.size() < seq->size()) + throw std::invalid_argument("std::array cannot be expanded in size"); + else if (rubyseq.size() > seq->size()) + throw std::invalid_argument("std::array cannot be reduced in size"); + std::copy(rubyseq.begin(), rubyseq.end(), seq->begin()); + } + + template + inline void + resize(std::array *seq, typename std::array::size_type n, typename std::array::value_type x) { + throw std::invalid_argument("std::array is a fixed size container and does not support resizing"); + } + + // Only limited slicing is supported as std::array is fixed in size + template + inline std::array* + getslice(const std::array* self, Difference i, Difference j) { + typedef std::array Sequence; + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size, (i == size && j == size)); + typename Sequence::size_type jj = swig::slice_index(j, size); + + if (ii == 0 && jj == size) { + Sequence *sequence = new Sequence(); + std::copy(self->begin(), self->end(), sequence->begin()); + return sequence; + } else { + throw std::invalid_argument("std::array object only supports getting a slice that is the size of the array"); + } + } + + template + inline void + setslice(std::array* self, Difference i, Difference j, const InputSeq& v) { + typedef std::array Sequence; + typename Sequence::size_type size = self->size(); + typename Sequence::size_type ii = swig::check_index(i, size, true); + typename Sequence::size_type jj = swig::slice_index(j, size); + + if (ii == 0 && jj == size) { + std::copy(v.begin(), v.end(), self->begin()); + } else { + throw std::invalid_argument("std::array object only supports setting a slice that is the size of the array"); + } + } + + template + inline void + delslice(std::array* self, Difference i, Difference j) { + throw std::invalid_argument("std::array object does not support item deletion"); + } + } +%} + + +%define %swig_array_methods(Type...) + %swig_sequence_methods_non_resizable(Type) +%enddef + +%define %swig_array_methods_val(Type...) + %swig_sequence_methods_non_resizable_val(Type); +%enddef + + +%mixin std::array "Enumerable"; +%ignore std::array::push_back; +%ignore std::array::pop_back; + + +%rename("delete") std::array::__delete__; +%rename("reject!") std::array::reject_bang; +%rename("map!") std::array::map_bang; +%rename("empty?") std::array::empty; +%rename("include?" ) std::array::__contains__ const; +%rename("has_key?" ) std::array::has_key const; + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_basic_string.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_basic_string.i new file mode 100644 index 00000000..ba13ba76 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_basic_string.i @@ -0,0 +1,92 @@ +#if !defined(SWIG_STD_STRING) +#define SWIG_STD_BASIC_STRING + +%include + +#define %swig_basic_string(Type...) %swig_sequence_methods_val(Type) + + +%traits_swigtype(std::basic_string); +%fragment(SWIG_Traits_frag(std::basic_string)); + + +%fragment(SWIG_AsPtr_frag(std::basic_string),"header", + fragment="SWIG_AsCharPtrAndSize") { +SWIGINTERN int +SWIG_AsPtr(std::basic_string)(VALUE obj, std::string **val) { + static swig_type_info* string_info = SWIG_TypeQuery("std::basic_string *"); + std::string *vptr; + if (SWIG_IsOK(SWIG_ConvertPtr(obj, (void**)&vptr, string_info, 0))) { + if (val) *val = vptr; + return SWIG_OLDOBJ; + } else { + char* buf = 0 ; size_t size = 0; int alloc = 0; + if (SWIG_IsOK(SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc))) { + if (buf) { + if (val) *val = new std::string(buf, size - 1); + if (alloc == SWIG_NEWOBJ) %delete_array(buf); + return SWIG_NEWOBJ; + } + } + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_From_frag(std::basic_string),"header", + fragment="SWIG_FromCharPtrAndSize") { +SWIGINTERNINLINE VALUE + SWIG_From(std::basic_string)(const std::string& s) { + return SWIG_FromCharPtrAndSize(s.data(), s.size()); + } +} + +%ignore std::basic_string::operator!=; +%ignore std::basic_string::operator+=; + +%include +%typemaps_asptrfromn(%checkcode(STRING), std::basic_string); + +#endif + + +#if !defined(SWIG_STD_WSTRING) + +%traits_swigtype(std::basic_string); +%fragment(SWIG_Traits_frag(std::basic_string)); + + +%fragment(SWIG_AsPtr_frag(std::basic_string),"header", + fragment="SWIG_AsWCharPtrAndSize") { +SWIGINTERN int +SWIG_AsPtr(std::basic_string)(VALUE obj, std::wstring **val) { + static swig_type_info* string_info = SWIG_TypeQuery("std::basic_string *"); + std::wstring *vptr; + if (SWIG_IsOK(SWIG_ConvertPtr(obj, (void**)&vptr, string_info, 0))) { + if (val) *val = vptr; + return SWIG_OLDOBJ; + } else { + wchar_t *buf = 0 ; size_t size = 0; int alloc = 0; + if (SWIG_IsOK(SWIG_AsWCharPtrAndSize(obj, &buf, &size, &alloc))) { + if (buf) { + if (val) *val = new std::wstring(buf, size - 1); + if (alloc == SWIG_NEWOBJ) %delete_array(buf); + return SWIG_NEWOBJ; + } + } + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_From_frag(std::basic_string),"header", + fragment="SWIG_FromWCharPtrAndSize") { +SWIGINTERNINLINE VALUE + SWIG_From(std::basic_string)(const std::wstring& s) { + return SWIG_FromWCharPtrAndSize(s.data(), s.size()); + } +} + +%typemaps_asptrfromn(%checkcode(UNISTRING), std::basic_string); + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_char_traits.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_char_traits.i new file mode 100644 index 00000000..bf4e6c47 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_char_traits.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_common.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_common.i new file mode 100644 index 00000000..0cf9ce10 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_common.i @@ -0,0 +1,74 @@ +%include +%include +%include + + +/* + Generate the traits for a 'primitive' type, such as 'double', + for which the SWIG_AsVal and SWIG_From methods are already defined. +*/ + +%define %traits_ptypen(Type...) + %fragment(SWIG_Traits_frag(Type),"header", + fragment=SWIG_AsVal_frag(Type), + fragment=SWIG_From_frag(Type), + fragment="StdTraits") { +namespace swig { + template <> struct traits< Type > { + typedef value_category category; + static const char* type_name() { return #Type; } + }; + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(VALUE obj, value_type *val) { + return SWIG_AsVal(Type)(obj, val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static VALUE from(const value_type& val) { + return SWIG_From(Type)(val); + } + }; +} +} +%enddef + +/* Traits for enums. This is bit of a sneaky trick needed because a generic template specialization of enums + is not possible (unless using template meta-programming which SWIG doesn't support because of the explicit + instantiations required using %template). The STL containers define the 'front' method and the typemap + below is used whenever the front method is wrapped returning an enum. This typemap simply picks up the + standard enum typemap, but additionally drags in a fragment containing the traits_asval and traits_from + required in the generated code for enums. */ + +%define %traits_enum(Type...) + %fragment("SWIG_Traits_enum_"{Type},"header", + fragment=SWIG_AsVal_frag(int), + fragment=SWIG_From_frag(int), + fragment="StdTraits") { +namespace swig { + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(VALUE obj, value_type *val) { + return SWIG_AsVal(int)(obj, (int *)val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static VALUE from(const value_type& val) { + return SWIG_From(int)((int)val); + } + }; +} +} +%typemap(out, fragment="SWIG_Traits_enum_"{Type}) const enum SWIGTYPE& front %{$typemap(out, const enum SWIGTYPE&)%} +%enddef + + +%include + +// +// Generates the traits for all the known primitive +// C++ types (int, double, ...) +// +%apply_cpptypes(%traits_ptypen); diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_complex.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_complex.i new file mode 100644 index 00000000..ef4e8a10 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_complex.i @@ -0,0 +1,29 @@ +/* + * STD C++ complex typemaps + */ + +%include + +%{ +#include +%} + +namespace std { + %naturalvar complex; + template class complex; + %template() complex; + %template() complex; +} + +/* defining the complex as/from converters */ + +%swig_cplxdbl_convn(std::complex, std::complex, std::real, std::imag) +%swig_cplxflt_convn(std::complex, std::complex, std::real, std::imag) + +/* defining the typemaps */ + +%typemaps_primitive(%checkcode(CPLXDBL), std::complex); +%typemaps_primitive(%checkcode(CPLXFLT), std::complex); + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_container.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_container.i new file mode 100644 index 00000000..85379505 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_container.i @@ -0,0 +1,2 @@ +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_deque.i new file mode 100644 index 00000000..b70f34ee --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_deque.i @@ -0,0 +1,30 @@ +/* + Deques +*/ + +%fragment("StdDequeTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(VALUE obj, std::deque **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static VALUE from(const std::deque& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +%ignore std::deque::push_back; +%ignore std::deque::pop_back; + +#define %swig_deque_methods(Type...) %swig_sequence_methods(Type) +#define %swig_deque_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_except.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_except.i new file mode 100644 index 00000000..af98428f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_except.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_functors.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_functors.i new file mode 100644 index 00000000..54ee97b5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_functors.i @@ -0,0 +1,29 @@ +/** + * @file std_functors.i + * @date Sun May 6 00:44:33 2007 + * + * @brief This file provides unary and binary functors for STL + * containers, that will invoke a Ruby proc or method to do + * their operation. + * + * You can use them in a swig file like: + * + * %include + * %include + * + * %template< IntSet > std::set< int, swig::BinaryPredicate >; + * + * + * which will then allow calling them from Ruby either like: + * + * # order of set is defined by C++ default + * a = IntSet.new + * + * # sort order defined by Ruby proc + * b = IntSet.new( proc { |a,b| a > b } ) + * + */ + +%include + +%fragment("StdFunctors"); diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_ios.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_ios.i new file mode 100644 index 00000000..7aafae28 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_ios.i @@ -0,0 +1,14 @@ + +#pragma SWIG nowarn=801 + +%rename(ios_base_in) std::ios_base::in; + +AUTODOC(cerr, "Standard C++ error stream"); +AUTODOC(cout, "Standard C++ output stream"); +AUTODOC(cin, "Standard C++ input stream"); +AUTODOC(clog, "Standard C++ logging stream"); +AUTODOC(endl, "Add an end line to stream"); +AUTODOC(ends, "Ends stream"); +AUTODOC(flush, "Flush stream"); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_iostream.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_iostream.i new file mode 100644 index 00000000..ee36bec4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_iostream.i @@ -0,0 +1,12 @@ +namespace std +{ +%callback("%s") endl; +%callback("%s") ends; +%callback("%s") flush; +} + +%warnfilter(365) operator+=; +%warnfilter(802) std::basic_iostream; // turn off multiple inheritance warning + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_list.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_list.i new file mode 100644 index 00000000..b0b4928e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_list.i @@ -0,0 +1,42 @@ +/* + Lists +*/ + +%fragment("StdListTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(VALUE obj, std::list **lis) { + return traits_asptr_stdseq >::asptr(obj, lis); + } + }; + + template + struct traits_from > { + static VALUE from(const std::list& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +%ignore std::list::push_back; +%ignore std::list::pop_back; + +#define %swig_list_methods(Type...) %swig_sequence_methods(Type) +#define %swig_list_methods_val(Type...) %swig_sequence_methods_val(Type); + +%mixin std::list "Enumerable"; + +%rename("delete") std::list::__delete__; +%rename("reject!") std::list::reject_bang; +%rename("map!") std::list::map_bang; +%rename("empty?") std::list::empty; +%rename("include?" ) std::list::__contains__ const; +%rename("has_key?" ) std::list::has_key const; + +%alias std::list::push "<<"; + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_map.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_map.i new file mode 100644 index 00000000..7077fa10 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_map.i @@ -0,0 +1,424 @@ +// +// Maps +// +%fragment("StdMapCommonTraits","header",fragment="StdSequenceTraits") +{ + namespace swig { + template + struct from_key_oper + { + typedef const ValueType& argument_type; + typedef VALUE result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.first); + } + }; + + template + struct from_value_oper + { + typedef const ValueType& argument_type; + typedef VALUE result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.second); + } + }; + + template + struct MapIterator_T : ConstIteratorClosed_T + { + MapIterator_T(OutIterator curr, OutIterator first, OutIterator last, VALUE seq) + : ConstIteratorClosed_T(curr, first, last, seq) + { + } + }; + + + template > + struct MapKeyIterator_T : MapIterator_T + { + MapKeyIterator_T(OutIterator curr, OutIterator first, OutIterator last, VALUE seq) + : MapIterator_T(curr, first, last, seq) + { + } + }; + + template + inline ConstIterator* + make_output_key_iterator(const OutIter& current, const OutIter& begin, + const OutIter& end, VALUE seq = 0) + { + return new MapKeyIterator_T(current, begin, end, seq); + } + + template > + struct MapValueIterator_T : MapIterator_T + { + MapValueIterator_T(OutIterator curr, OutIterator first, OutIterator last, VALUE seq) + : MapIterator_T(curr, first, last, seq) + { + } + }; + + + template + inline ConstIterator* + make_output_value_iterator(const OutIter& current, const OutIter& begin, + const OutIter& end, VALUE seq = 0) + { + return new MapValueIterator_T(current, begin, end, seq); + } + } +} + +%fragment("StdMapTraits","header",fragment="StdMapCommonTraits") +{ + namespace swig { + template + inline void + assign(const RubySeq& rubyseq, std::map *map) { + typedef typename std::map::value_type value_type; + typename RubySeq::const_iterator it = rubyseq.begin(); + for (;it != rubyseq.end(); ++it) { + map->insert(value_type(it->first, it->second)); + } + } + + template + struct traits_asptr > { + typedef std::map map_type; + static int asptr(VALUE obj, map_type **val) { + int res = SWIG_ERROR; + if ( TYPE(obj) == T_HASH ) { + static ID id_to_a = rb_intern("to_a"); + VALUE items = rb_funcall(obj, id_to_a, 0); + res = traits_asptr_stdseq, std::pair >::asptr(items, val); + } else { + map_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template + struct traits_from > { + typedef std::map map_type; + typedef typename map_type::const_iterator const_iterator; + typedef typename map_type::size_type size_type; + + static VALUE from(const map_type& map) { + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new map_type(map), desc, SWIG_POINTER_OWN); + } else { + size_type size = map.size(); + int rubysize = (size <= (size_type) INT_MAX) ? (int) size : -1; + if (rubysize < 0) { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + rb_raise( rb_eRuntimeError, "map size not valid in Ruby"); + SWIG_RUBY_THREAD_END_BLOCK; + return Qnil; + } + VALUE obj = rb_hash_new(); + for (const_iterator i= map.begin(); i!= map.end(); ++i) { + VALUE key = swig::from(i->first); + VALUE val = swig::from(i->second); + rb_hash_aset(obj, key, val); + } + return obj; + } + } + }; + } +} + +%define %swig_map_common(Map...) + %swig_container_methods(%arg(Map)); + // %swig_sequence_iterator(%arg(Map)); + + %extend { + + VALUE __delete__(const key_type& key) { + Map::iterator i = self->find(key); + if (i != self->end()) { + self->erase(i); + return swig::from( key ); + } + else { + return Qnil; + } + } + + bool has_key(const key_type& key) const { + Map::const_iterator i = self->find(key); + return i != self->end(); + } + + VALUE keys() { + Map::size_type size = self->size(); + int rubysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1; + if (rubysize < 0) { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + rb_raise(rb_eRuntimeError, "map size not valid in Ruby"); + SWIG_RUBY_THREAD_END_BLOCK; + return Qnil; + } + VALUE ary = rb_ary_new2(rubysize); + Map::const_iterator i = self->begin(); + Map::const_iterator e = self->end(); + for ( ; i != e; ++i ) { + rb_ary_push( ary, swig::from(i->first) ); + } + return ary; + } + + Map* each() + { + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "no block given"); + + VALUE k, v; + Map::iterator i = self->begin(); + Map::iterator e = self->end(); + for ( ; i != e; ++i ) + { + const Map::key_type& key = i->first; + const Map::mapped_type& val = i->second; + + k = swig::from(key); + v = swig::from(val); + rb_yield_values(2, k, v); + } + + return self; + } + + %newobject select; + Map* select() { + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "no block given" ); + + Map* r = new Map; + Map::iterator i = $self->begin(); + Map::iterator e = $self->end(); + for ( ; i != e; ++i ) + { + VALUE k = swig::from(i->first); + VALUE v = swig::from(i->second); + if ( RTEST( rb_yield_values(2, k, v) ) ) + $self->insert(r->end(), *i); + } + + return r; + } + + %typemap(in) (int argc, VALUE* argv) { + $1 = argc; + $2 = argv; + } + + VALUE values_at(int argc, VALUE* argv, ...) { + + VALUE r = rb_ary_new(); + ID id = rb_intern("[]"); + swig_type_info* type = swig::type_info< Map >(); + VALUE me = SWIG_NewPointerObj( $self, type, 0 ); + for ( int i = 0; i < argc; ++i ) + { + VALUE key = argv[i]; + VALUE tmp = rb_funcall( me, id, 1, key ); + rb_ary_push( r, tmp ); + } + + return r; + } + + + Map* each_key() + { + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "no block given"); + + VALUE r; + Map::iterator i = self->begin(); + Map::iterator e = self->end(); + for ( ; i != e; ++i ) + { + r = swig::from( i->first ); + rb_yield(r); + } + + return self; + } + + VALUE values() { + Map::size_type size = self->size(); + int rubysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1; + if (rubysize < 0) { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + rb_raise(rb_eRuntimeError, "map size not valid in Ruby"); + SWIG_RUBY_THREAD_END_BLOCK; + return Qnil; + } + VALUE ary = rb_ary_new2(rubysize); + Map::const_iterator i = self->begin(); + Map::const_iterator e = self->end(); + for ( ; i != e; ++i ) { + rb_ary_push( ary, swig::from(i->second) ); + } + return ary; + } + + Map* each_value() + { + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "no block given"); + + VALUE r; + Map::iterator i = self->begin(); + Map::iterator e = self->end(); + for ( ; i != e; ++i ) + { + r = swig::from( i->second ); + rb_yield(r); + } + + return self; + } + + VALUE entries() { + Map::size_type size = self->size(); + int rubysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1; + if (rubysize < 0) { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + rb_raise(rb_eRuntimeError, "map size not valid in Ruby"); + SWIG_RUBY_THREAD_END_BLOCK; + return Qnil; + } + VALUE ary = rb_ary_new2(rubysize); + Map::const_iterator i = self->begin(); + Map::const_iterator e = self->end(); + for ( ; i != e; ++i ) { + rb_ary_push( ary, swig::from >(*i) ); + } + return ary; + } + + bool __contains__(const key_type& key) { + return self->find(key) != self->end(); + } + + %newobject key_iterator(VALUE *RUBY_SELF); + swig::ConstIterator* key_iterator(VALUE *RUBY_SELF) { + return swig::make_output_key_iterator($self->begin(), $self->begin(), + $self->end(), *RUBY_SELF); + } + + %newobject value_iterator(VALUE *RUBY_SELF); + swig::ConstIterator* value_iterator(VALUE *RUBY_SELF) { + return swig::make_output_value_iterator($self->begin(), $self->begin(), + $self->end(), *RUBY_SELF); + } + + } +%enddef + +%define %swig_map_methods(Map...) + %swig_map_common(Map) + %extend { + VALUE __getitem__(const key_type& key) const { + Map::const_iterator i = self->find(key); + if ( i != self->end() ) + return swig::from( i->second ); + else + return Qnil; + } + + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + (*self)[key] = x; + } + + VALUE inspect() + { + Map::const_iterator i = $self->begin(); + Map::const_iterator e = $self->end(); + const char *type_name = swig::type_name< Map >(); + VALUE str = rb_str_new2( type_name ); + str = rb_str_cat2( str, " {" ); + bool comma = false; + VALUE tmp; + for ( ; i != e; ++i, comma = true ) + { + if (comma) str = rb_str_cat2( str, "," ); + tmp = swig::from< Map::key_type >( i->first ); + tmp = rb_inspect( tmp ); + str = rb_str_buf_append( str, tmp ); + str = rb_str_cat2( str, "=>" ); + tmp = swig::from< Map::mapped_type >( i->second ); + tmp = rb_inspect( tmp ); + str = rb_str_buf_append( str, tmp ); + } + str = rb_str_cat2( str, "}" ); + return str; + } + + VALUE to_a() + { + Map::const_iterator i = $self->begin(); + Map::const_iterator e = $self->end(); + VALUE ary = rb_ary_new2( std::distance( i, e ) ); + VALUE tmp; + for ( ; i != e; ++i ) + { + // @todo: improve -- this should just be swig::from(*i) + tmp = swig::from< std::pair >( *i ); + rb_ary_push( ary, tmp ); + } + return ary; + } + + VALUE to_s() + { + Map::iterator i = $self->begin(); + Map::iterator e = $self->end(); + VALUE str = rb_str_new2( "" ); + VALUE tmp; + for ( ; i != e; ++i ) + { + // @todo: improve -- this should just be swig::from(*i) + tmp = swig::from< std::pair >( *i ); + tmp = rb_obj_as_string( tmp ); + str = rb_str_buf_append( str, tmp ); + } + return str; + } + + } +%enddef + + +%mixin std::map "Enumerable"; + + +%rename("delete") std::map::__delete__; +%rename("reject!") std::map::reject_bang; +%rename("map!") std::map::map_bang; +%rename("empty?") std::map::empty; +%rename("include?" ) std::map::__contains__ const; +%rename("has_key?" ) std::map::has_key const; + +%alias std::map::push "<<"; + + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_multimap.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_multimap.i new file mode 100644 index 00000000..762a8765 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_multimap.i @@ -0,0 +1,226 @@ +/* + Multimaps +*/ +%include + +%fragment("StdMultimapTraits","header",fragment="StdMapCommonTraits") +{ + namespace swig { + template + inline void + assign(const RubySeq& rubyseq, std::multimap *multimap) { + typedef typename std::multimap::value_type value_type; + typename RubySeq::const_iterator it = rubyseq.begin(); + for (;it != rubyseq.end(); ++it) { + multimap->insert(value_type(it->first, it->second)); + } + } + + template + struct traits_asptr > { + typedef std::multimap multimap_type; + static int asptr(VALUE obj, std::multimap **val) { + int res = SWIG_ERROR; + if ( TYPE(obj) == T_HASH ) { + static ID id_to_a = rb_intern("to_a"); + VALUE items = rb_funcall(obj, id_to_a, 0); + return traits_asptr_stdseq, std::pair >::asptr(items, val); + } else { + multimap_type *p; + res = SWIG_ConvertPtr(obj,(void**)&p,swig::type_info(),0); + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template + struct traits_from > { + typedef std::multimap multimap_type; + typedef typename multimap_type::const_iterator const_iterator; + typedef typename multimap_type::size_type size_type; + + static VALUE from(const multimap_type& multimap) { + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new multimap_type(multimap), desc, SWIG_POINTER_OWN); + } else { + size_type size = multimap.size(); + int rubysize = (size <= (size_type) INT_MAX) ? (int) size : -1; + if (rubysize < 0) { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + rb_raise(rb_eRuntimeError, + "multimap size not valid in Ruby"); + SWIG_RUBY_THREAD_END_BLOCK; + return Qnil; + } + VALUE obj = rb_hash_new(); + for (const_iterator i= multimap.begin(); i!= multimap.end(); ++i) { + VALUE key = swig::from(i->first); + VALUE val = swig::from(i->second); + + VALUE oldval = rb_hash_aref( obj, key ); + if ( oldval == Qnil ) + rb_hash_aset(obj, key, val); + else { + // Multiple values for this key, create array if needed + // and add a new element to it. + VALUE ary; + if ( TYPE(oldval) == T_ARRAY ) + ary = oldval; + else + { + ary = rb_ary_new2(2); + rb_ary_push( ary, oldval ); + rb_hash_aset( obj, key, ary ); + } + rb_ary_push( ary, val ); + } + + } + return obj; + } + } + }; + } +} + +%define %swig_multimap_methods(MultiMap...) + %swig_map_common(%arg(MultiMap)); + + %extend { + VALUE __getitem__(const key_type& key) const { + std::pair r = $self->equal_range(key); + if ( r.first != r.second ) + { + VALUE ary = rb_ary_new(); + for (MultiMap::const_iterator i = r.first ; i != r.second; ++i ) + { + rb_ary_push( ary, swig::from( i->second ) ); + } + if ( RARRAY_LEN(ary) == 1 ) + return RARRAY_PTR(ary)[0]; + return ary; + } + else + return Qnil; + } + + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + self->insert(MultiMap::value_type(key,x)); + } + + VALUE inspect() + { + MultiMap::iterator i = $self->begin(); + MultiMap::iterator e = $self->end(); + const char *type_name = swig::type_name< MultiMap >(); + VALUE str = rb_str_new2( type_name ); + str = rb_str_cat2( str, " {" ); + VALUE tmp; + while ( i != e ) + { + const MultiMap::key_type& key = i->first; + const MultiMap::key_type& oldkey = key; + tmp = swig::from( key ); + str = rb_str_buf_append( str, rb_inspect(tmp) ); + str = rb_str_cat2( str, "=>" ); + + VALUE vals = rb_ary_new(); + for ( ; i != e && key == oldkey; ++i ) + { + const MultiMap::mapped_type& val = i->second; + tmp = swig::from( val ); + rb_ary_push( vals, tmp ); + } + + if ( RARRAY_LEN(vals) == 1 ) + { + str = rb_str_buf_append( str, rb_inspect(tmp) ); + } + else + { + str = rb_str_buf_append( str, rb_inspect(vals) ); + } + } + str = rb_str_cat2( str, "}" ); + return str; + } + + VALUE to_a() + { + MultiMap::const_iterator i = $self->begin(); + MultiMap::const_iterator e = $self->end(); + VALUE ary = rb_ary_new2( std::distance( i, e ) ); + VALUE tmp; + while ( i != e ) + { + const MultiMap::key_type& key = i->first; + const MultiMap::key_type& oldkey = key; + tmp = swig::from( key ); + rb_ary_push( ary, tmp ); + + VALUE vals = rb_ary_new(); + for ( ; i != e && key == oldkey; ++i ) + { + const MultiMap::mapped_type& val = i->second; + tmp = swig::from( val ); + rb_ary_push( vals, tmp ); + } + + if ( RARRAY_LEN(vals) == 1 ) + { + rb_ary_push( ary, tmp ); + } + else + { + rb_ary_push( ary, vals ); + } + } + return ary; + } + + VALUE to_s() + { + MultiMap::iterator i = $self->begin(); + MultiMap::iterator e = $self->end(); + VALUE str = rb_str_new2( "" ); + VALUE tmp; + while ( i != e ) + { + const MultiMap::key_type& key = i->first; + const MultiMap::key_type& oldkey = key; + tmp = swig::from( key ); + tmp = rb_obj_as_string( tmp ); + str = rb_str_buf_append( str, tmp ); + + VALUE vals = rb_ary_new(); + for ( ; i != e && key == oldkey; ++i ) + { + const MultiMap::mapped_type& val = i->second; + tmp = swig::from( val ); + rb_ary_push( vals, tmp ); + } + + tmp = rb_obj_as_string( vals ); + str = rb_str_buf_append( str, tmp ); + } + return str; + } + } +%enddef + + +%mixin std::multimap "Enumerable"; + +%rename("delete") std::multimap::__delete__; +%rename("reject!") std::multimap::reject_bang; +%rename("map!") std::multimap::map_bang; +%rename("empty?") std::multimap::empty; +%rename("include?" ) std::multimap::__contains__ const; +%rename("has_key?" ) std::multimap::has_key const; + +%alias std::multimap::push "<<"; + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_multiset.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_multiset.i new file mode 100644 index 00000000..252ae10d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_multiset.i @@ -0,0 +1,50 @@ +/* + Multisets +*/ + +%include + +%fragment("StdMultisetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + inline void + assign(const RubySeq& rubyseq, std::multiset* seq) { + // seq->insert(rubyseq.begin(), rubyseq.end()); // not used as not always implemented + typedef typename RubySeq::value_type value_type; + typename RubySeq::const_iterator it = rubyseq.begin(); + for (;it != rubyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_asptr > { + static int asptr(VALUE obj, std::multiset **m) { + return traits_asptr_stdseq >::asptr(obj, m); + } + }; + + template + struct traits_from > { + static VALUE from(const std::multiset& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_multiset_methods(Set...) %swig_set_methods(Set) + +%mixin std::multiset "Enumerable"; + +%rename("delete") std::multiset::__delete__; +%rename("reject!") std::multiset::reject_bang; +%rename("map!") std::multiset::map_bang; +%rename("empty?") std::multiset::empty; +%rename("include?" ) std::multiset::__contains__ const; +%rename("has_key?" ) std::multiset::has_key const; + +%alias std::multiset::push "<<"; + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_pair.i new file mode 100644 index 00000000..38a4ffb9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_pair.i @@ -0,0 +1,212 @@ +/* + Pairs +*/ +%include + +//#define SWIG_STD_PAIR_ASVAL + +%fragment("StdPairTraits","header",fragment="StdTraits") { + namespace swig { + + template + struct traits_asval > { + typedef std::pair value_type; + + static int get_pair(VALUE first, VALUE second, + std::pair *val) + { + if (val) { + T *pfirst = &(val->first); + int res1 = swig::asval((VALUE)first, pfirst); + if (!SWIG_IsOK(res1)) return res1; + U *psecond = &(val->second); + int res2 = swig::asval((VALUE)second, psecond); + if (!SWIG_IsOK(res2)) return res2; + return res1 > res2 ? res1 : res2; + } else { + T *pfirst = 0; + int res1 = swig::asval((VALUE)first, pfirst); + if (!SWIG_IsOK(res1)) return res1; + U *psecond = 0; + int res2 = swig::asval((VALUE)second, psecond); + if (!SWIG_IsOK(res2)) return res2; + return res1 > res2 ? res1 : res2; + } + } + + static int asval(VALUE obj, std::pair *val) { + int res = SWIG_ERROR; + if ( TYPE(obj) == T_ARRAY ) { + if (RARRAY_LEN(obj) == 2) { + VALUE first = rb_ary_entry(obj,0); + VALUE second = rb_ary_entry(obj,1); + res = get_pair(first, second, val); + } + } else { + value_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = *p; + } + return res; + } + }; + + template + struct traits_asptr > { + typedef std::pair value_type; + + static int get_pair(VALUE first, VALUE second, + std::pair **val) + { + if (val) { + value_type *vp = %new_instance(std::pair); + T *pfirst = &(vp->first); + int res1 = swig::asval((VALUE)first, pfirst); + if (!SWIG_IsOK(res1)) { + %delete(vp); + return res1; + } + U *psecond = &(vp->second); + int res2 = swig::asval((VALUE)second, psecond); + if (!SWIG_IsOK(res2)) { + %delete(vp); + return res2; + } + *val = vp; + return SWIG_AddNewMask(res1 > res2 ? res1 : res2); + } else { + T *pfirst = 0; + int res1 = swig::asval((VALUE)first, pfirst); + if (!SWIG_IsOK(res1)) return res1; + U *psecond = 0; + int res2 = swig::asval((VALUE)second, psecond); + if (!SWIG_IsOK(res2)) return res2; + return res1 > res2 ? res1 : res2; + } + } + + static int asptr(VALUE obj, std::pair **val) { + int res = SWIG_ERROR; + if ( TYPE(obj) == T_ARRAY ) { + if ( RARRAY_LEN(obj) == 2) { + VALUE first = rb_ary_entry(obj,0); + VALUE second = rb_ary_entry(obj,1); + res = get_pair(first, second, val); + } + } else { + value_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + + + template + struct traits_from > { + static VALUE _wrap_pair_second( VALUE self ) + { + std::pair< typename swig::noconst_traits::noconst_type,U>* p = NULL; + swig::asptr( self, &p ); + return swig::from( p->second ); + } + + static VALUE _wrap_pair_second_eq( VALUE self, VALUE arg ) + { + std::pair< typename swig::noconst_traits::noconst_type,U>* p = NULL; + swig::asptr( self, &p ); + return swig::from( p->second ); + } + + static VALUE from(const std::pair& val) { + VALUE obj = rb_ary_new2(2); + rb_ary_push(obj, swig::from::noconst_type>(val.first)); + rb_ary_push(obj, swig::from(val.second)); + rb_define_singleton_method(obj, "second", + VALUEFUNC(_wrap_pair_second), 0 ); + rb_define_singleton_method(obj, "second=", + VALUEFUNC(_wrap_pair_second_eq), 1 ); + rb_obj_freeze(obj); // treat as immutable tuple + return obj; + } + }; + + } +} + +// Missing typemap +%typemap(in) std::pair* (int res) { + res = swig::asptr( $input, &$1 ); + if (!SWIG_IsOK(res)) + %argument_fail(res, "$1_type", $symname, $argnum); +} + + +%define %swig_pair_methods(pair...) + +%extend { + VALUE inspect() const + { + VALUE tmp; + const char *type_name = swig::type_name< pair >(); + VALUE str = rb_str_new2( type_name ); + str = rb_str_cat2( str, " (" ); + tmp = swig::from( $self->first ); + tmp = rb_obj_as_string( tmp ); + str = rb_str_buf_append( str, tmp ); + str = rb_str_cat2( str, "," ); + tmp = swig::from( $self->second ); + tmp = rb_obj_as_string( tmp ); + str = rb_str_buf_append( str, tmp ); + str = rb_str_cat2( str, ")" ); + return str; + } + + VALUE to_s() const + { + VALUE tmp; + VALUE str = rb_str_new2( "(" ); + tmp = swig::from( $self->first ); + tmp = rb_obj_as_string( tmp ); + str = rb_str_buf_append( str, tmp ); + str = rb_str_cat2( str, "," ); + tmp = swig::from( $self->second ); + tmp = rb_obj_as_string( tmp ); + str = rb_str_buf_append( str, tmp ); + str = rb_str_cat2( str, ")" ); + return str; + } + + VALUE __getitem__( int index ) + { + if (( index % 2 ) == 0 ) + return swig::from( $self->first ); + else + return swig::from( $self->second ); + } + + VALUE __setitem__( int index, VALUE obj ) + { + int res; + if (( index % 2 ) == 0 ) + { + res = swig::asval( obj, &($self->first) ); + } + else + { + res = swig::asval(obj, &($self->second) ); + } + if (!SWIG_IsOK(res)) + rb_raise( rb_eArgError, "invalid item for " #pair ); + return obj; + } + + } // extend + +%enddef + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_queue.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_queue.i new file mode 100644 index 00000000..2a16d9cf --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_queue.i @@ -0,0 +1,33 @@ +/* + Queues +*/ + +%fragment("StdQueueTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(VALUE obj, std::queue **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static VALUE from(const std::queue& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +%rename("delete") std::queue::__delete__; +%rename("reject!") std::queue::reject_bang; +%rename("map!") std::queue::map_bang; +%rename("empty?") std::queue::empty; +%rename("include?" ) std::queue::__contains__ const; +%rename("has_key?" ) std::queue::has_key const; + +%alias std::queue::push "<<"; + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_set.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_set.i new file mode 100644 index 00000000..e38702ef --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_set.i @@ -0,0 +1,231 @@ +/* + Sets +*/ + +%fragment("StdSetTraits","header",fragment="",fragment="StdSequenceTraits") +%{ + namespace swig { + template + inline void + assign(const RubySeq& rubyseq, std::set* seq) { + // seq->insert(rubyseq.begin(), rubyseq.end()); // not used as not always implemented + typedef typename RubySeq::value_type value_type; + typename RubySeq::const_iterator it = rubyseq.begin(); + for (;it != rubyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_asptr > { + static int asptr(VALUE obj, std::set **s) { + return traits_asptr_stdseq >::asptr(obj, s); + } + }; + + template + struct traits_from > { + static VALUE from(const std::set& vec) { + return traits_from_stdseq >::from(vec); + } + }; + + + /** + * Set Iterator class for an iterator with no end() boundaries. + * + */ + template::value_type, + typename FromOper = from_oper, + typename AsvalOper = asval_oper > + class SetIteratorOpen_T : public Iterator_T + { + public: + FromOper from; + AsvalOper asval; + typedef InOutIterator nonconst_iter; + typedef ValueType value_type; + typedef Iterator_T base; + typedef SetIteratorOpen_T self_type; + + public: + SetIteratorOpen_T(nonconst_iter curr, VALUE seq = Qnil) + : Iterator_T(curr, seq) + { + } + + virtual VALUE value() const { + return from(static_cast(*(base::current))); + } + + // no setValue allowed + + Iterator *dup() const + { + return new self_type(*this); + } + }; + + + /** + * Set Iterator class for a iterator where begin() and end() boundaries + are known. + * + */ + template::value_type, + typename FromOper = from_oper, + typename AsvalOper = asval_oper > + class SetIteratorClosed_T : public Iterator_T + { + public: + FromOper from; + AsvalOper asval; + typedef InOutIterator nonconst_iter; + typedef ValueType value_type; + typedef Iterator_T base; + typedef SetIteratorClosed_T self_type; + + protected: + virtual Iterator* advance(ptrdiff_t n) + { + std::advance( base::current, n ); + if ( base::current == end ) + throw stop_iteration(); + return this; + } + + public: + SetIteratorClosed_T(nonconst_iter curr, nonconst_iter first, + nonconst_iter last, VALUE seq = Qnil) + : Iterator_T(curr, seq), begin(first), end(last) + { + } + + virtual VALUE value() const { + if (base::current == end) { + throw stop_iteration(); + } else { + return from(static_cast(*(base::current))); + } + } + + // no setValue allowed + + + Iterator *dup() const + { + return new self_type(*this); + } + + private: + nonconst_iter begin; + nonconst_iter end; + }; + + // Template specialization to construct a closed iterator for sets + // this turns a nonconst iterator into a const one for ruby to avoid + // allowing the user to change the value + template< typename InOutIter > + inline Iterator* + make_set_nonconst_iterator(const InOutIter& current, + const InOutIter& begin, + const InOutIter& end, + VALUE seq = Qnil) + { + return new SetIteratorClosed_T< InOutIter >(current, + begin, end, seq); + } + + // Template specialization to construct an open iterator for sets + // this turns a nonconst iterator into a const one for ruby to avoid + // allowing the user to change the value + template< typename InOutIter > + inline Iterator* + make_set_nonconst_iterator(const InOutIter& current, + VALUE seq = Qnil) + { + return new SetIteratorOpen_T< InOutIter >(current, seq); + } + + } +%} + +%define %swig_sequence_methods_extra_set(Sequence...) + %extend { + %alias reject_bang "delete_if"; + Sequence* reject_bang() { + if ( !rb_block_given_p() ) + rb_raise( rb_eArgError, "no block given" ); + + for ( Sequence::iterator i = $self->begin(); i != $self->end(); ) { + VALUE r = swig::from< Sequence::value_type >(*i); + Sequence::iterator current = i++; + if ( RTEST( rb_yield(r) ) ) + $self->erase(current); + } + + return self; + } + } +%enddef + +%define %swig_set_methods(set...) + + %swig_sequence_methods_common(%arg(set)); + %swig_sequence_methods_extra_set(%arg(set)); + + %fragment("RubyPairBoolOutputIterator","header",fragment=SWIG_From_frag(bool),fragment="RubySequence_Cont") {} + +// Redefine std::set iterator/reverse_iterator typemap +%typemap(out,noblock=1) iterator, reverse_iterator { + $result = SWIG_NewPointerObj(swig::make_set_nonconst_iterator(%static_cast($1,const $type &), + self), + swig::Iterator::descriptor(),SWIG_POINTER_OWN); + } + +// Redefine std::set std::pair typemap + %typemap(out,noblock=1,fragment="RubyPairBoolOutputIterator") + std::pair { + $result = rb_ary_new2(2); + rb_ary_push($result, SWIG_NewPointerObj(swig::make_set_nonconst_iterator(%static_cast($1,$type &).first), + swig::Iterator::descriptor(),SWIG_POINTER_OWN)); + rb_ary_push($result, SWIG_From(bool)(%static_cast($1,const $type &).second)); + } + + %extend { + %alias push "<<"; + value_type push(const value_type& x) { + self->insert(x); + return x; + } + + bool __contains__(const value_type& x) { + return self->find(x) != self->end(); + } + + value_type __getitem__(difference_type i) const throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + }; +%enddef + + +%mixin std::set "Enumerable"; + + + +%rename("delete") std::set::__delete__; +%rename("reject!") std::set::reject_bang; +%rename("map!") std::set::map_bang; +%rename("empty?") std::set::empty; +%rename("include?" ) std::set::__contains__ const; +%rename("has_key?" ) std::set::has_key const; + +%alias std::set::push "<<"; + + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_shared_ptr.i new file mode 100644 index 00000000..dee35ec0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_shared_ptr.i @@ -0,0 +1,141 @@ +#define SWIG_SHARED_PTR_NAMESPACE std +%include +%include + + +%fragment("StdSharedPtrTraits","header",fragment="StdTraitsForwardDeclaration",fragment="") +{ +namespace swig { + /* + Template specialization for functions defined in rubystdcommon.swg. Special handling for shared_ptr + is required as, shared_ptr * is used rather than the usual T *, see shared_ptr.i. + */ + template + struct traits_asptr > { + static int asptr(VALUE obj, std::shared_ptr **val) { + std::shared_ptr *p = 0; + swig_type_info *descriptor = type_info >(); + swig_ruby_owntype newmem = {0, 0}; + int res = descriptor ? SWIG_ConvertPtrAndOwn(obj, (void **)&p, descriptor, 0, &newmem) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) { + if (*val) { + **val = p ? *p : std::shared_ptr(); + } else { + *val = p; + if (newmem.own & SWIG_CAST_NEW_MEMORY) { + // Upcast for pointers to shared_ptr in this generic framework has not been implemented + res = SWIG_ERROR; + } + } + } + if (newmem.own & SWIG_CAST_NEW_MEMORY) + delete p; + } + return res; + } + }; + + template + struct traits_asval > { + static int asval(VALUE obj, std::shared_ptr *val) { + if (val) { + std::shared_ptr ret; + std::shared_ptr *p = &ret; + int res = traits_asptr >::asptr(obj, &p); + if (!SWIG_IsOK(res)) + return res; + *val = ret; + return SWIG_OK; + } else { + return traits_asptr >::asptr(obj, (std::shared_ptr **)(0)); + } + } + }; + + template + struct traits_asval *> { + static int asval(VALUE obj, std::shared_ptr **val) { + if (val) { + typedef typename noconst_traits >::noconst_type noconst_type; + if (*val) { + noconst_type ret; + noconst_type *p = &ret; + int res = traits_asptr::asptr(obj, &p); + if (SWIG_IsOK(res)) + **(const_cast(val)) = ret; + return res; + } else { + noconst_type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (SWIG_IsOK(res)) + *val = p; + return res; + } + } else { + return traits_asptr >::asptr(obj, (std::shared_ptr **)(0)); + } + } + }; + + template + struct traits_as, pointer_category> { + static std::shared_ptr as(VALUE obj) { + std::shared_ptr ret; + std::shared_ptr *v = &ret; + int res = traits_asptr >::asptr(obj, &v); + if (SWIG_IsOK(res)) { + return ret; + } else { + + VALUE lastErr = rb_gv_get("$!"); + if (lastErr == Qnil) + SWIG_Error(SWIG_TypeError, swig::type_name >()); + throw std::invalid_argument("bad type"); + } + } + }; + + template + struct traits_as *, pointer_category> { + static std::shared_ptr * as(VALUE obj) { + std::shared_ptr *p = 0; + int res = traits_asptr >::asptr(obj, &p); + if (SWIG_IsOK(res)) { + return p; + } else { + + VALUE lastErr = rb_gv_get("$!"); + if (lastErr == Qnil) + SWIG_Error(SWIG_TypeError, swig::type_name *>()); + throw std::invalid_argument("bad type"); + } + } + }; + + template + struct traits_from_ptr > { + static VALUE from(std::shared_ptr *val, int owner = 0) { + if (val && *val) { + return SWIG_NewPointerObj(val, type_info >(), owner); + } else { + return Qnil; + } + } + }; + + /* + The descriptors in the shared_ptr typemaps remove the const qualifier for the SWIG type system. + Remove const likewise here, otherwise SWIG_TypeQuery("std::shared_ptr") will return NULL. + */ + template + struct traits_from > { + static VALUE from(const std::shared_ptr& val) { + std::shared_ptr p = std::const_pointer_cast(val); + return swig::from(p); + } + }; +} +} + +%fragment("StdSharedPtrTraits"); diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_sstream.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_sstream.i new file mode 100644 index 00000000..537a3ae5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_sstream.i @@ -0,0 +1,2 @@ + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_stack.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_stack.i new file mode 100644 index 00000000..7df48ef1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_stack.i @@ -0,0 +1,35 @@ +/* + Stacks +*/ + +%fragment("StdStackTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(VALUE obj, std::stack **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static VALUE from(const std::stack& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + + +%rename("delete") std::stack::__delete__; +%rename("reject!") std::stack::reject_bang; +%rename("map!") std::stack::map_bang; +%rename("empty?") std::stack::empty; +%rename("include?" ) std::stack::__contains__ const; +%rename("has_key?" ) std::stack::has_key const; + +%alias std::stack::push "<<"; + + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_streambuf.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_streambuf.i new file mode 100644 index 00000000..44b9bb4d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_streambuf.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_string.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_string.i new file mode 100644 index 00000000..f9ecd8e8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_string.i @@ -0,0 +1,7 @@ + +%warnfilter(SWIGWARN_RUBY_WRONG_NAME) std::basic_string; + +AUTODOC(substr, "Return a portion of the String"); + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_map.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_map.i new file mode 100644 index 00000000..48c87521 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_map.i @@ -0,0 +1,83 @@ +// +// Maps +// +%include + +%fragment("StdUnorderedMapTraits","header",fragment="StdMapCommonTraits") +{ + namespace swig { + template + inline void + assign(const RubySeq& rubyseq, std::unordered_map *map) { + typedef typename std::unordered_map::value_type value_type; + typename RubySeq::const_iterator it = rubyseq.begin(); + for (;it != rubyseq.end(); ++it) { + map->insert(value_type(it->first, it->second)); + } + } + + template + struct traits_asptr > { + typedef std::unordered_map map_type; + static int asptr(VALUE obj, map_type **val) { + int res = SWIG_ERROR; + if (TYPE(obj) == T_HASH) { + static ID id_to_a = rb_intern("to_a"); + VALUE items = rb_funcall(obj, id_to_a, 0); + res = traits_asptr_stdseq, std::pair >::asptr(items, val); + } else { + map_type *p; + swig_type_info *descriptor = swig::type_info(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template + struct traits_from > { + typedef std::unordered_map map_type; + typedef typename map_type::const_iterator const_iterator; + typedef typename map_type::size_type size_type; + + static VALUE from(const map_type& map) { + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new map_type(map), desc, SWIG_POINTER_OWN); + } else { + size_type size = map.size(); + int rubysize = (size <= (size_type) INT_MAX) ? (int) size : -1; + if (rubysize < 0) { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + rb_raise(rb_eRuntimeError, "map size not valid in Ruby"); + SWIG_RUBY_THREAD_END_BLOCK; + return Qnil; + } + VALUE obj = rb_hash_new(); + for (const_iterator i= map.begin(); i!= map.end(); ++i) { + VALUE key = swig::from(i->first); + VALUE val = swig::from(i->second); + rb_hash_aset(obj, key, val); + } + return obj; + } + } + }; + } +} + +#define %swig_unordered_map_common(Map...) %swig_map_common(Map) +#define %swig_unordered_map_methods(Map...) %swig_map_methods(Map) + +%rename("delete") std::unordered_map::__delete__; +%rename("reject!") std::unordered_map::reject_bang; +%rename("map!") std::unordered_map::map_bang; +%rename("empty?") std::unordered_map::empty; +%rename("include?") std::unordered_map::__contains__ const; +%rename("has_key?") std::unordered_map::has_key const; + +%mixin std::unordered_map "Enumerable"; +%alias std::unordered_map::push "<<"; + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_multimap.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_multimap.i new file mode 100644 index 00000000..ebc53b59 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_multimap.i @@ -0,0 +1,100 @@ +/* + Multimaps +*/ +%include + +%fragment("StdUnorderedMultimapTraits","header",fragment="StdMapCommonTraits") +{ + namespace swig { + template + inline void + assign(const RubySeq& rubyseq, std::unordered_multimap *multimap) { + typedef typename std::unordered_multimap::value_type value_type; + typename RubySeq::const_iterator it = rubyseq.begin(); + for (;it != rubyseq.end(); ++it) { + multimap->insert(value_type(it->first, it->second)); + } + } + + template + struct traits_asptr > { + typedef std::unordered_multimap multimap_type; + static int asptr(VALUE obj, std::unordered_multimap **val) { + int res = SWIG_ERROR; + if ( TYPE(obj) == T_HASH ) { + static ID id_to_a = rb_intern("to_a"); + VALUE items = rb_funcall(obj, id_to_a, 0); + return traits_asptr_stdseq, std::pair >::asptr(items, val); + } else { + multimap_type *p; + res = SWIG_ConvertPtr(obj,(void**)&p,swig::type_info(),0); + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template + struct traits_from > { + typedef std::unordered_multimap multimap_type; + typedef typename multimap_type::const_iterator const_iterator; + typedef typename multimap_type::size_type size_type; + + static VALUE from(const multimap_type& multimap) { + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new multimap_type(multimap), desc, SWIG_POINTER_OWN); + } else { + size_type size = multimap.size(); + int rubysize = (size <= (size_type) INT_MAX) ? (int) size : -1; + if (rubysize < 0) { + SWIG_RUBY_THREAD_BEGIN_BLOCK; + rb_raise(rb_eRuntimeError, + "multimap_ size not valid in Ruby"); + SWIG_RUBY_THREAD_END_BLOCK; + return Qnil; + } + VALUE obj = rb_hash_new(); + for (const_iterator i= multimap.begin(); i!= multimap.end(); ++i) { + VALUE key = swig::from(i->first); + VALUE val = swig::from(i->second); + + VALUE oldval = rb_hash_aref(obj, key); + if (oldval == Qnil) { + rb_hash_aset(obj, key, val); + } else { + // Multiple values for this key, create array if needed + // and add a new element to it. + VALUE ary; + if (TYPE(oldval) == T_ARRAY) { + ary = oldval; + } else { + ary = rb_ary_new2(2); + rb_ary_push(ary, oldval); + rb_hash_aset(obj, key, ary); + } + rb_ary_push(ary, val); + } + } + return obj; + } + } + }; + } +} + +#define %swig_unordered_multimap_methods(MultiMap...) %swig_multimap_methods(MultiMap) + +%mixin std::unordered_multimap "Enumerable"; + +%rename("delete") std::unordered_multimap::__delete__; +%rename("reject!") std::unordered_multimap::reject_bang; +%rename("map!") std::unordered_multimap::map_bang; +%rename("empty?") std::unordered_multimap::empty; +%rename("include?" ) std::unordered_multimap::__contains__ const; +%rename("has_key?" ) std::unordered_multimap::has_key const; + +%alias std::unordered_multimap::push "<<"; + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_multiset.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_multiset.i new file mode 100644 index 00000000..dae13eef --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_multiset.i @@ -0,0 +1,50 @@ +/* + Multisets +*/ + +%include + +%fragment("StdUnorderedMultisetTraits","header",fragment="StdUnorderedSetTraits") +%{ + namespace swig { + template + inline void + assign(const RubySeq& rubyseq, std::unordered_multiset* seq) { + // seq->insert(rubyseq.begin(), rubyseq.end()); // not used as not always implemented + typedef typename RubySeq::value_type value_type; + typename RubySeq::const_iterator it = rubyseq.begin(); + for (;it != rubyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_asptr > { + static int asptr(VALUE obj, std::unordered_multiset **m) { + return traits_asptr_stdseq >::asptr(obj, m); + } + }; + + template + struct traits_from > { + static VALUE from(const std::unordered_multiset& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_unordered_multiset_methods(Set...) %swig_unordered_set_methods(Set) + +%mixin std::unordered_multiset "Enumerable"; + +%rename("delete") std::unordered_multiset::__delete__; +%rename("reject!") std::unordered_multiset::reject_bang; +%rename("map!") std::unordered_multiset::map_bang; +%rename("empty?") std::unordered_multiset::empty; +%rename("include?") std::unordered_multiset::__contains__ const; +%rename("has_key?") std::unordered_multiset::has_key const; + +%alias std::unordered_multiset::push "<<"; + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_set.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_set.i new file mode 100644 index 00000000..e8e1b087 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_unordered_set.i @@ -0,0 +1,50 @@ +/* + Sets +*/ + +%include + +%fragment("StdUnorderedSetTraits","header",fragment="",fragment="StdSetTraits") +%{ + namespace swig { + template + inline void + assign(const RubySeq& rubyseq, std::unordered_set* seq) { + // seq->insert(rubyseq.begin(), rubyseq.end()); // not used as not always implemented + typedef typename RubySeq::value_type value_type; + typename RubySeq::const_iterator it = rubyseq.begin(); + for (;it != rubyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_asptr > { + static int asptr(VALUE obj, std::unordered_set **s) { + return traits_asptr_stdseq >::asptr(obj, s); + } + }; + + template + struct traits_from > { + static VALUE from(const std::unordered_set& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + +#define %swig_unordered_set_methods(set...) %swig_set_methods(set) + +%mixin std::unordered_set "Enumerable"; + +%rename("delete") std::unordered_set::__delete__; +%rename("reject!") std::unordered_set::reject_bang; +%rename("map!") std::unordered_set::map_bang; +%rename("empty?") std::unordered_set::empty; +%rename("include?" ) std::unordered_set::__contains__ const; +%rename("has_key?" ) std::unordered_set::has_key const; + +%alias std::unordered_set::push "<<"; + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_vector.i new file mode 100644 index 00000000..67fdcd1f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_vector.i @@ -0,0 +1,52 @@ +/* + Vectors +*/ + +%fragment("StdVectorTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(VALUE obj, std::vector **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static VALUE from(const std::vector& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + + + +%define %swig_vector_methods(Type...) + %swig_sequence_methods(Type) + %swig_sequence_front_inserters(Type); +%enddef + +%define %swig_vector_methods_val(Type...) + %swig_sequence_methods_val(Type); + %swig_sequence_front_inserters(Type); +%enddef + + +%mixin std::vector "Enumerable"; +%ignore std::vector::push_back; +%ignore std::vector::pop_back; + + +%rename("delete") std::vector::__delete__; +%rename("reject!") std::vector::reject_bang; +%rename("map!") std::vector::map_bang; +%rename("empty?") std::vector::empty; +%rename("include?" ) std::vector::__contains__ const; +%rename("has_key?" ) std::vector::has_key const; + +%alias std::vector::push "<<"; + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_vectora.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_vectora.i new file mode 100644 index 00000000..1708361e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_vectora.i @@ -0,0 +1,36 @@ +/* + Vectors + allocators +*/ + +%fragment("StdVectorATraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + typedef std::vector vector_type; + typedef T value_type; + static int asptr(VALUE obj, vector_type **vec) { + return traits_asptr_stdseq::asptr(obj, vec); + } + }; + + template + struct traits_from > { + typedef std::vector vector_type; + static VALUE from(const vector_type& vec) { + return traits_from_stdseq::from(vec); + } + }; + } +%} + + +#define %swig_vector_methods(Type...) %swig_sequence_methods(Type) +#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type); + +%mixin std::vector "Enumerable"; +%ignore std::vector::push_back; +%ignore std::vector::pop_back; +%alias std::vector::push "<<"; + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/std_wstring.i b/macx64/bin/swig/share/swig/4.0.0/ruby/std_wstring.i new file mode 100644 index 00000000..2b633438 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/std_wstring.i @@ -0,0 +1,52 @@ +%{ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_RUBY_ENCODING_H +#include "ruby/encoding.h" +#endif + +/** + * The internal encoding of std::wstring is defined based on + * the size of wchar_t. If it is not appropriate for your library, + * SWIG_RUBY_WSTRING_ENCODING must be given when compiling. + */ +#ifndef SWIG_RUBY_WSTRING_ENCODING + +#if WCHAR_MAX == 0x7fff || WCHAR_MAX == 0xffff +#define SWIG_RUBY_WSTRING_ENCODING "UTF-16LE" +#elif WCHAR_MAX == 0x7fffffff || WCHAR_MAX == 0xffffffff +#define SWIG_RUBY_WSTRING_ENCODING "UTF-32LE" +#else +#error unsupported wchar_t size. SWIG_RUBY_WSTRING_ENCODING must be given. +#endif + +#endif + +/** + * If Encoding.default_internal is nil, this encoding will be used + * when converting from std::wstring to String object in Ruby. + */ +#ifndef SWIG_RUBY_INTERNAL_ENCODING +#define SWIG_RUBY_INTERNAL_ENCODING "UTF-8" +#endif + +static rb_encoding *swig_ruby_wstring_encoding; +static rb_encoding *swig_ruby_internal_encoding; + +#ifdef __cplusplus +} +#endif +%} + +%fragment("SWIG_ruby_wstring_encoding_init", "init") { + swig_ruby_wstring_encoding = rb_enc_find( SWIG_RUBY_WSTRING_ENCODING ); + swig_ruby_internal_encoding = rb_enc_find( SWIG_RUBY_INTERNAL_ENCODING ); +} + +%warnfilter(SWIGWARN_RUBY_WRONG_NAME) std::basic_string; + +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/stl.i b/macx64/bin/swig/share/swig/4.0.0/ruby/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/timeval.i b/macx64/bin/swig/share/swig/4.0.0/ruby/timeval.i new file mode 100644 index 00000000..e7bc2d32 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/timeval.i @@ -0,0 +1,69 @@ +/* + struct timeval * + time_t + + Ruby has builtin class Time. INPUT/OUTPUT typemap for timeval and + time_t is provided. + +*/ +%{ +#ifdef __cplusplus +extern "C" { +#endif +#ifdef HAVE_SYS_TIME_H +# include +struct timeval rb_time_timeval(VALUE); +#endif +#ifdef __cplusplus +} +#endif +%} + +%typemap(in) struct timeval *INPUT (struct timeval temp) +{ + if (NIL_P($input)) + $1 = NULL; + else { + temp = rb_time_timeval($input); + $1 = &temp; + } +} + +%typemap(in,numinputs=0) struct timeval *OUTPUT(struct timeval temp) +{ + $1 = &temp; +} + +%typemap(argout) struct timeval *OUTPUT +{ + $result = rb_time_new($1->tv_sec, $1->tv_usec); +} + +%typemap(out) struct timeval * +{ + $result = rb_time_new($1->tv_sec, $1->tv_usec); +} + +%typemap(out) struct timespec * +{ + $result = rb_time_new($1->tv_sec, $1->tv_nsec / 1000); +} + +// time_t +%typemap(in) time_t +{ + if (NIL_P($input)) + $1 = (time_t)-1; + else + $1 = NUM2LONG(rb_funcall($input, rb_intern("tv_sec"), 0)); +} + +%typemap(typecheck) time_t +{ + $1 = (NIL_P($input) || TYPE(rb_funcall($input, rb_intern("respond_to?"), 1, ID2SYM(rb_intern("tv_sec")))) == T_TRUE); +} + +%typemap(out) time_t +{ + $result = rb_time_new($1, 0); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/ruby/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/ruby/typemaps.i new file mode 100644 index 00000000..c4db8216 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/ruby/typemaps.i @@ -0,0 +1,314 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Pointer handling + * + * These mappings provide support for input/output arguments and + * common uses for C/C++ pointers. INOUT mappings allow for C/C++ + * pointer variables in addition to input/output arguments. + * ----------------------------------------------------------------------------- */ + +#if !defined(SWIG_USE_OLD_TYPEMAPS) +%include +#else + +/* +The SWIG typemap library provides a language independent mechanism for +supporting output arguments, input values, and other C function +calling mechanisms. The primary use of the library is to provide a +better interface to certain C function--especially those involving +pointers. +*/ + +// ------------------------------------------------------------------------ +// Pointer handling +// +// These mappings provide support for input/output arguments and common +// uses for C/C++ pointers. +// ------------------------------------------------------------------------ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + + int *INPUT + short *INPUT + long *INPUT + long long *INPUT + unsigned int *INPUT + unsigned short *INPUT + unsigned long *INPUT + unsigned long long *INPUT + unsigned char *INPUT + bool *INPUT + float *INPUT + double *INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include typemaps.i + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include typemaps.i + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ + +%define INPUT_TYPEMAP(type, converter) +%typemap(in) type *INPUT($*1_ltype temp), type &INPUT($*1_ltype temp) +{ + temp = ($*1_ltype) converter($input); + $1 = &temp; +} +%typemap(typecheck) type *INPUT = type; +%typemap(typecheck) type &INPUT = type; +%enddef + +INPUT_TYPEMAP(float, NUM2DBL); +INPUT_TYPEMAP(double, NUM2DBL); +INPUT_TYPEMAP(int, NUM2INT); +INPUT_TYPEMAP(short, NUM2SHRT); +INPUT_TYPEMAP(long, NUM2LONG); +INPUT_TYPEMAP(long long, NUM2LL); +INPUT_TYPEMAP(unsigned int, NUM2UINT); +INPUT_TYPEMAP(unsigned short, NUM2USHRT); +INPUT_TYPEMAP(unsigned long, NUM2ULONG); +INPUT_TYPEMAP(unsigned long long, NUM2ULL); +INPUT_TYPEMAP(unsigned char, NUM2UINT); +INPUT_TYPEMAP(signed char, NUM2INT); +INPUT_TYPEMAP(bool, RTEST); + +#undef INPUT_TYPEMAP + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a array element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a Ruby Array. + + int *OUTPUT + short *OUTPUT + long *OUTPUT + long long *OUTPUT + unsigned int *OUTPUT + unsigned short *OUTPUT + unsigned long *OUTPUT + unsigned long long *OUTPUT + unsigned char *OUTPUT + bool *OUTPUT + float *OUTPUT + double *OUTPUT + +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).K: + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include typemaps.i + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include typemaps.i + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Ruby output of the function would be a Array containing both +output values. +*/ + +%define OUTPUT_TYPEMAP(type, converter, convtype) +%typemap(in,numinputs=0) type *OUTPUT($*1_ltype temp), type &OUTPUT($*1_ltype temp) "$1 = &temp;"; +%typemap(argout, fragment="output_helper") type *OUTPUT, type &OUTPUT { + VALUE o = converter(convtype (*$1)); + $result = output_helper($result, o); +} +%enddef + +OUTPUT_TYPEMAP(int, INT2NUM, (int)); +OUTPUT_TYPEMAP(short, INT2NUM, (int)); +OUTPUT_TYPEMAP(long, INT2NUM, (long)); +OUTPUT_TYPEMAP(long long, LL2NUM, (long long)); +OUTPUT_TYPEMAP(unsigned int, UINT2NUM, (unsigned int)); +OUTPUT_TYPEMAP(unsigned short, UINT2NUM, (unsigned int)); +OUTPUT_TYPEMAP(unsigned long, UINT2NUM, (unsigned long)); +OUTPUT_TYPEMAP(unsigned long long, ULL2NUM, (unsigned long long)); +OUTPUT_TYPEMAP(unsigned char, UINT2NUM, (unsigned int)); +OUTPUT_TYPEMAP(signed char, INT2NUM, (int)); +OUTPUT_TYPEMAP(float, rb_float_new, (double)); +OUTPUT_TYPEMAP(double, rb_float_new, (double)); + +#undef OUTPUT_TYPEMAP + +%typemap(in,numinputs=0) bool *OUTPUT(bool temp), bool &OUTPUT(bool temp) "$1 = &temp;"; +%typemap(argout, fragment="output_helper") bool *OUTPUT, bool &OUTPUT { + VALUE o = (*$1) ? Qtrue : Qfalse; + $result = output_helper($result, o); +} + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a Ruby array. + + int *INOUT + short *INOUT + long *INOUT + long long *INOUT + unsigned int *INOUT + unsigned short *INOUT + unsigned long *INOUT + unsigned long long *INOUT + unsigned char *INOUT + bool *INOUT + float *INOUT + double *INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include typemaps.i + void neg(double *INOUT); + +or you can use the %apply directive : + + %include typemaps.i + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value (since +this makes no sense in Ruby). Rather, the modified input value shows +up as the return value of the function. Thus, to apply this function +to a Ruby variable you might do this : + + x = neg(x) + +Note : previous versions of SWIG used the symbol 'BOTH' to mark +input/output arguments. This is still supported, but will be slowly +phased out in future releases. + +*/ + +%typemap(in) int *INOUT = int *INPUT; +%typemap(in) short *INOUT = short *INPUT; +%typemap(in) long *INOUT = long *INPUT; +%typemap(in) long long *INOUT = long long *INPUT; +%typemap(in) unsigned *INOUT = unsigned *INPUT; +%typemap(in) unsigned short *INOUT = unsigned short *INPUT; +%typemap(in) unsigned long *INOUT = unsigned long *INPUT; +%typemap(in) unsigned long long *INOUT = unsigned long long *INPUT; +%typemap(in) unsigned char *INOUT = unsigned char *INPUT; +%typemap(in) signed char *INOUT = signed char *INPUT; +%typemap(in) bool *INOUT = bool *INPUT; +%typemap(in) float *INOUT = float *INPUT; +%typemap(in) double *INOUT = double *INPUT; + +%typemap(in) int &INOUT = int &INPUT; +%typemap(in) short &INOUT = short &INPUT; +%typemap(in) long &INOUT = long &INPUT; +%typemap(in) long long &INOUT = long long &INPUT; +%typemap(in) unsigned &INOUT = unsigned &INPUT; +%typemap(in) unsigned short &INOUT = unsigned short &INPUT; +%typemap(in) unsigned long &INOUT = unsigned long &INPUT; +%typemap(in) unsigned long long &INOUT = unsigned long long &INPUT; +%typemap(in) unsigned char &INOUT = unsigned char &INPUT; +%typemap(in) signed char &INOUT = signed char &INPUT; +%typemap(in) bool &INOUT = bool &INPUT; +%typemap(in) float &INOUT = float &INPUT; +%typemap(in) double &INOUT = double &INPUT; + +%typemap(argout) int *INOUT = int *OUTPUT; +%typemap(argout) short *INOUT = short *OUTPUT; +%typemap(argout) long *INOUT = long *OUTPUT; +%typemap(argout) long long *INOUT = long long *OUTPUT; +%typemap(argout) unsigned *INOUT = unsigned *OUTPUT; +%typemap(argout) unsigned short *INOUT = unsigned short *OUTPUT; +%typemap(argout) unsigned long *INOUT = unsigned long *OUTPUT; +%typemap(argout) unsigned long long *INOUT = unsigned long long *OUTPUT; +%typemap(argout) unsigned char *INOUT = unsigned char *OUTPUT; +%typemap(argout) signed char *INOUT = signed char *OUTPUT; +%typemap(argout) bool *INOUT = bool *OUTPUT; +%typemap(argout) float *INOUT = float *OUTPUT; +%typemap(argout) double *INOUT = double *OUTPUT; + +%typemap(argout) int &INOUT = int &OUTPUT; +%typemap(argout) short &INOUT = short &OUTPUT; +%typemap(argout) long &INOUT = long &OUTPUT; +%typemap(argout) long long &INOUT = long long &OUTPUT; +%typemap(argout) unsigned &INOUT = unsigned &OUTPUT; +%typemap(argout) unsigned short &INOUT = unsigned short &OUTPUT; +%typemap(argout) unsigned long &INOUT = unsigned long &OUTPUT; +%typemap(argout) unsigned long long &INOUT = unsigned long long &OUTPUT; +%typemap(argout) unsigned char &INOUT = unsigned char &OUTPUT; +%typemap(argout) signed char &INOUT = signed char &OUTPUT; +%typemap(argout) bool &INOUT = bool &OUTPUT; +%typemap(argout) float &INOUT = float &OUTPUT; +%typemap(argout) double &INOUT = double &OUTPUT; + +/* Overloading information */ + +%typemap(typecheck) double *INOUT = double; +%typemap(typecheck) signed char *INOUT = signed char; +%typemap(typecheck) unsigned char *INOUT = unsigned char; +%typemap(typecheck) unsigned long *INOUT = unsigned long; +%typemap(typecheck) unsigned long long *INOUT = unsigned long long; +%typemap(typecheck) unsigned short *INOUT = unsigned short; +%typemap(typecheck) unsigned int *INOUT = unsigned int; +%typemap(typecheck) long *INOUT = long; +%typemap(typecheck) long long *INOUT = long long; +%typemap(typecheck) short *INOUT = short; +%typemap(typecheck) int *INOUT = int; +%typemap(typecheck) float *INOUT = float; + +%typemap(typecheck) double &INOUT = double; +%typemap(typecheck) signed char &INOUT = signed char; +%typemap(typecheck) unsigned char &INOUT = unsigned char; +%typemap(typecheck) unsigned long &INOUT = unsigned long; +%typemap(typecheck) unsigned long long &INOUT = unsigned long long; +%typemap(typecheck) unsigned short &INOUT = unsigned short; +%typemap(typecheck) unsigned int &INOUT = unsigned int; +%typemap(typecheck) long &INOUT = long; +%typemap(typecheck) long long &INOUT = long long; +%typemap(typecheck) short &INOUT = short; +%typemap(typecheck) int &INOUT = int; +%typemap(typecheck) float &INOUT = float; + +#endif + +// -------------------------------------------------------------------- +// Special types +// -------------------------------------------------------------------- +%include +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/runtime.swg b/macx64/bin/swig/share/swig/4.0.0/runtime.swg new file mode 100644 index 00000000..1528a522 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/runtime.swg @@ -0,0 +1,38 @@ +/* -----------------------------------------------------------------------------* + Standard SWIG API for use inside user code. + + Don't include this file directly, run the command + swig -python -external-runtime + Also, read the Modules chapter of the SWIG Manual. + + * -----------------------------------------------------------------------------*/ + +#ifdef SWIG_MODULE_CLIENTDATA_TYPE + +SWIGRUNTIMEINLINE swig_type_info * +SWIG_TypeQuery(SWIG_MODULE_CLIENTDATA_TYPE clientdata, const char *name) { + swig_module_info *module = SWIG_GetModule(clientdata); + return SWIG_TypeQueryModule(module, module, name); +} + +SWIGRUNTIMEINLINE swig_type_info * +SWIG_MangledTypeQuery(SWIG_MODULE_CLIENTDATA_TYPE clientdata, const char *name) { + swig_module_info *module = SWIG_GetModule(clientdata); + return SWIG_MangledTypeQueryModule(module, module, name); +} + +#else + +SWIGRUNTIMEINLINE swig_type_info * +SWIG_TypeQuery(const char *name) { + swig_module_info *module = SWIG_GetModule(NULL); + return SWIG_TypeQueryModule(module, module, name); +} + +SWIGRUNTIMEINLINE swig_type_info * +SWIG_MangledTypeQuery(const char *name) { + swig_module_info *module = SWIG_GetModule(NULL); + return SWIG_MangledTypeQueryModule(module, module, name); +} + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/boost_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/scilab/boost_shared_ptr.i new file mode 100644 index 00000000..668bf435 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/boost_shared_ptr.i @@ -0,0 +1,401 @@ +%include + +// Set SHARED_PTR_DISOWN to $disown if required, for example +// #define SHARED_PTR_DISOWN $disown +#if !defined(SHARED_PTR_DISOWN) +#define SHARED_PTR_DISOWN 0 +#endif + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_SHARED_PTR_TYPEMAPS(CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor wrapper customisation +%feature("unref") TYPE +//"if (debug_shared) { cout << \"deleting use_count: \" << (*smartarg1).use_count() << \" [\" << (boost::get_deleter(*smartarg1) ? std::string(\"CANNOT BE DETERMINED SAFELY\") : ( (*smartarg1).get() ? (*smartarg1)->getValue() : std::string(\"NULL PTR\") )) << \"]\" << endl << flush; }\n" + "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +// plain value +%typemap(in) CONST TYPE (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(out) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(varout) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) CONST TYPE (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE (void *swig_argp, int swig_res = 0) { + int newmem = 0; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (!swig_argp) { + %dirout_nullref("$type"); + } else { + $result = *(%reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} + +// plain pointer +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) CONST TYPE * (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} + +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), $owner | SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE * { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0; + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE * %{ +#error "directorout typemap for plain pointer not implemented" +%} + +// plain reference +%typemap(in) CONST TYPE & (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + $1 = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(out, fragment="SWIG_null_deleter") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE & { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + if (!argp) { + %variable_nullref("$type", "$name"); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = *%const_cast(tempshared.get(), $1_ltype); + } else { + $1 = *%const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) CONST TYPE & %{ +#error "directorout typemap for plain reference not implemented" +%} + +// plain pointer by reference +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) TYPE *CONST& (void *argp = 0, int res = 0, $*1_ltype temp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + temp = %const_cast(tempshared.get(), $*1_ltype); + } else { + temp = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $*1_ltype); + } + $1 = &temp; +} +%typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) TYPE *CONST& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) TYPE *CONST& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1, fragment="SWIG_null_deleter") TYPE *CONST& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) TYPE *CONST& %{ +#error "directorout typemap for plain pointer by reference not implemented" +%} + +// shared_ptr by value +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) $1 = *(%reinterpret_cast(argp, $<ype)); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + int newmem = 0; + void *argp = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = argp ? *(%reinterpret_cast(argp, $<ype)) : SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE >(); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *swig_argp, int swig_res = 0) { + int newmem = 0; + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + if (swig_argp) { + $result = *(%reinterpret_cast(swig_argp, $<ype)); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, $<ype); + } +} + +// shared_ptr by reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "directorout typemap for shared_ptr ref not implemented" +%} + +// shared_ptr by pointer +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); + if ($owner) delete $1; +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "directorout typemap for pointer to shared_ptr not implemented" +%} + +// shared_ptr by pointer reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (void *argp, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, $*1_ltype temp = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) tempshared = *%reinterpret_cast(argp, $*ltype); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $*ltype); + temp = &tempshared; + $1 = &temp; +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = (*$1 && **$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(**$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varout typemap not implemented" +%} + +%typemap(directorin,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{ + smartarg = ($1 && *$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN | %newpointer_flags); +%} +%typemap(directorout,noblock=1) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "directorout typemap for pointer ref to shared_ptr not implemented" +%} + +// Typecheck typemaps +// Note: SWIG_ConvertPtr with void ** parameter set to 0 instead of using SWIG_ConvertPtrAndOwn, so that the casting +// function is not called thereby avoiding a possible smart pointer copy constructor call when casting up the inheritance chain. +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + int res = SWIG_ConvertPtr($input, 0, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), 0); + $1 = SWIG_CheckState(res); +} + + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + + +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/carrays.i b/macx64/bin/swig/share/swig/4.0.0/scilab/carrays.i new file mode 100644 index 00000000..014de37f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/carrays.i @@ -0,0 +1,5 @@ +%define %array_class(TYPE,NAME) + %array_class_wrap(TYPE,NAME,__paren__,__paren_asgn__) +%enddef + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/cmalloc.i b/macx64/bin/swig/share/swig/4.0.0/scilab/cmalloc.i new file mode 100644 index 00000000..248f06b9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/cmalloc.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/cpointer.i b/macx64/bin/swig/share/swig/4.0.0/scilab/cpointer.i new file mode 100644 index 00000000..d824792f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/cpointer.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/exception.i b/macx64/bin/swig/share/swig/4.0.0/scilab/exception.i new file mode 100644 index 00000000..17f4175c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/exception.i @@ -0,0 +1,6 @@ +%include + + +%insert("runtime") { + %define_as(SWIG_exception(code, msg), SWIG_Scilab_Error(code, msg);) +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/matrix.i b/macx64/bin/swig/share/swig/4.0.0/scilab/matrix.i new file mode 100644 index 00000000..0936d936 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/matrix.i @@ -0,0 +1,11 @@ +/* + * Matrix typemaps + * + */ + +%include +%include +%include +%include + + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/sciarray.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/sciarray.swg new file mode 100644 index 00000000..c00e3837 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/sciarray.swg @@ -0,0 +1,115 @@ +/* -------------------------------------------------------------------------- + * + * Arrays typemaps + * + * --------------------------------------------------------------------------*/ + +%{ +#include +%} + +%define %scilab_asarray_withallocatecopy(TYPEMAPTYPE, FRAGMENTNAME, CTYPE, TEMPDATATYPE) +%typemap(TYPEMAPTYPE, fragment="FRAGMENTNAME") CTYPE { + size_t i = 0; + int iRows = 0; + int iCols = 0; + TEMPDATATYPE *pTempData = NULL; + if (FRAGMENTNAME(pvApiCtx, $input, &iRows, &iCols, &pTempData, fname)) { + return SWIG_ERROR; + } + $1 = ($1_ltype)MALLOC(sizeof($*1_ltype) * iRows * iCols); + for (i = 0; i < iRows * iCols; i++) { + $1[i] = ($*1_ltype) pTempData[i]; + } +} +%enddef + +%define %scilab_asarrayandsize_withcopy(TYPEMAPTYPE, FRAGMENTNAME, CTYPE, TEMPDATATYPE) +%typemap(TYPEMAPTYPE, fragment="FRAGMENTNAME") CTYPE { + int iRows = 0; + int iCols = 0; + TEMPDATATYPE *pTempData = NULL; + if (FRAGMENTNAME(pvApiCtx, $input, &iRows, &iCols, &pTempData, fname)) { + return SWIG_ERROR; + } + if (iRows*iCols <= $1_dim0) { + size_t i; + for (i = 0; i < $1_dim0; i++) { + $1[i] = ($*1_ltype) pTempData[i]; + } + } + else { + char errmsg[100]; + sprintf(errmsg, "Size of input data (%d) is too big (maximum is %d)", + iRows*iCols, $1_dim0); + SWIG_exception_fail(SWIG_OverflowError, errmsg); + } +} +%enddef + +%define %scilab_fromarrayandsize(TYPEMAPTYPE, FRAGMENTNAME, CTYPE) +%typemap(TYPEMAPTYPE, noblock=1, fragment="FRAGMENTNAME") CTYPE { + %set_output(FRAGMENTNAME(pvApiCtx, $result, 1, $1_dim0, $1)); +} +%enddef + +%define %scilab_array_typemaps(CTYPE, ASARRAY_FRAGMENT, FROMARRAY_FRAGMENT, TEMPDATATYPE) + %scilab_asarrayandsize_withcopy(varin, ASARRAY_FRAGMENT, CTYPE[ANY], TEMPDATATYPE); + %scilab_asarray_withallocatecopy(in, ASARRAY_FRAGMENT, CTYPE[ANY], TEMPDATATYPE); + %scilab_fromarrayandsize(varout, FROMARRAY_FRAGMENT, CTYPE[ANY]); + %scilab_fromarrayandsize(out, FROMARRAY_FRAGMENT, CTYPE[ANY]); + + %apply SWIGTYPE[] { CTYPE[] }; + %scilab_asarray_withallocatecopy(in, ASARRAY_FRAGMENT, CTYPE[], TEMPDATATYPE); +%enddef + + +// Double +%scilab_array_typemaps(double, SWIG_SciDouble_AsDoubleArrayAndSize, + SWIG_SciDouble_FromDoubleArrayAndSize, double); + +// Signed char + +%scilab_array_typemaps(signed char, SWIG_SciDoubleOrInt8_AsSignedCharArrayAndSize, + SWIG_SciDouble_FromSignedCharArrayAndSize, signed char); + +// Unsigned char +%scilab_array_typemaps(unsigned char, SWIG_SciDoubleOrUint8_AsUnsignedCharArrayAndSize, + SWIG_SciDouble_FromUnsignedCharArrayAndSize, unsigned char); + +// Short +%scilab_array_typemaps(short, SWIG_SciDoubleOrInt16_AsShortArrayAndSize, + SWIG_SciDouble_FromShortArrayAndSize, short); + +// Unsigned short +%scilab_array_typemaps(unsigned short, SWIG_SciDoubleOrUint16_AsUnsignedShortArrayAndSize, + SWIG_SciDouble_FromUnsignedShortArrayAndSize, unsigned short); + +// Int +%scilab_array_typemaps(int, SWIG_SciDoubleOrInt32_AsIntArrayAndSize, + SWIG_SciDouble_FromIntArrayAndSize, int); + +// Unsigned int +%scilab_array_typemaps(unsigned int, SWIG_SciDoubleOrUint32_AsUnsignedIntArrayAndSize, + SWIG_SciDouble_FromUnsignedIntArrayAndSize, unsigned int); + +// Long +%scilab_array_typemaps(long, SWIG_SciDoubleOrInt32_AsIntArrayAndSize, + SWIG_SciDouble_FromLongArrayAndSize, int); + +// Unsigned long +%scilab_array_typemaps(unsigned long, SWIG_SciDoubleOrUint32_AsUnsignedIntArrayAndSize, + SWIG_SciDouble_FromUnsignedLongArrayAndSize, unsigned int); + +// Float +%scilab_array_typemaps(float, SWIG_SciDouble_AsFloatArrayAndSize, + SWIG_SciDouble_FromFloatArrayAndSize, float); + +// Bool +%scilab_array_typemaps(bool, SWIG_SciBoolean_AsIntArrayAndSize, + SWIG_SciBoolean_FromBoolArrayAndSize, int); + +// Char * +%scilab_array_typemaps(char *, SWIG_SciString_AsCharPtrArrayAndSize, + SWIG_SciString_FromCharPtrArrayAndSize, char *); + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scibool.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scibool.swg new file mode 100644 index 00000000..9aed88ec --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scibool.swg @@ -0,0 +1,156 @@ +/* + * C-type: bool + * Scilab type: boolean scalar + */ +%fragment(SWIG_AsVal_frag(bool), "header") { +SWIGINTERN int +SWIG_AsVal_dec(bool)(SwigSciObject iVar, bool *pbValue) { + SciErr sciErr; + int iRet = 0; + int *piAddrVar = NULL; + int iTempValue = 0; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (!isBooleanType(pvApiCtx, piAddrVar)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), SWIG_Scilab_GetFuncName(), iVar); + return SWIG_ERROR; + } + + if (!isScalar(pvApiCtx, piAddrVar)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A boolean expected.\n"), SWIG_Scilab_GetFuncName(), iVar); + return SWIG_ERROR; + } + + iRet = getScalarBoolean(pvApiCtx, piAddrVar, &iTempValue); + if (iRet) { + return SWIG_ERROR; + } + + *pbValue = iTempValue; + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(bool), "header") { +SWIGINTERN int +SWIG_From_dec(bool)(bool bValue) { + if (createScalarBoolean(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + + SWIG_Scilab_GetOutputPosition(), bValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + +/* + * C-type: bool[] + * Scilab type: boolean matrix + */ +%fragment("SWIG_SciBoolean_AsBoolArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciBoolean_AsBoolArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, bool **pbValue, char *fname) { + SciErr sciErr; + int *piAddrVar = NULL; + int *piValue = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isBooleanType(pvApiCtx, piAddrVar)) { + int i; + sciErr = getMatrixOfBoolean(pvApiCtx, piAddrVar, iRows, iCols, &piValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + *pbValue = (bool*) malloc((*iRows) * (*iCols) * sizeof(bool)); + for (i = 0; i < (*iRows) * (*iCols); i++) + (*pbValue)[i] = piValue[i] != 0; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A boolean matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment("SWIG_SciBoolean_FromBoolArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciBoolean_FromBoolArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, bool *pbValue) { + SciErr sciErr; + int *piValue = NULL; + int i; + + piValue = (int*) malloc(iRows * iCols * sizeof(int)); + for (i = 0; i < iRows * iCols; i++) + piValue[i] = pbValue[i]; + + sciErr = createMatrixOfBoolean(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, iRows, iCols, piValue); + if(sciErr.iErr) { + printError(&sciErr, 0); + free(piValue); + return SWIG_ERROR; + } + + free(piValue); + return SWIG_OK; +} +} + +/* + * C-type: int[] + * Scilab type: boolean matrix + */ +%fragment("SWIG_SciBoolean_AsIntArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciBoolean_AsIntArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, int **piValue, char *fname) { + SciErr sciErr; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isBooleanType(pvApiCtx, piAddrVar)) { + sciErr = getMatrixOfBoolean(pvApiCtx, piAddrVar, iRows, iCols, piValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A boolean matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment("SWIG_SciBoolean_FromIntArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciBoolean_FromIntArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, int *piValue) { + SciErr sciErr; + + sciErr = createMatrixOfBoolean(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, iRows, iCols, piValue); + if(sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scichar.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scichar.swg new file mode 100644 index 00000000..5edbf5b7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scichar.swg @@ -0,0 +1,292 @@ +/* + * C-type: char or char* + * Scilab type: string + */ + +/* + * CHAR + */ + +%fragment(SWIG_AsVal_frag(char), "header", fragment="SWIG_SciString_AsChar") { +#define SWIG_AsVal_char(scilabValue, valuePointer) SWIG_SciString_AsChar(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciString_AsChar", "header") { +SWIGINTERN int +SWIG_SciString_AsChar(void *pvApiCtx, int iVar, char *pcValue, char *fname) { + SciErr sciErr; + int *piAddrVar = NULL; + char *pstValue = NULL; + int iRet; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isStringType(pvApiCtx, piAddrVar) == 0) + { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A single string expected.\n"), fname, iVar); + return SWIG_TypeError; + } + + iRet = getAllocatedSingleString(pvApiCtx, piAddrVar, &pstValue); + if (iRet) { + return SWIG_ERROR; + } + + if (pcValue != NULL) { + *pcValue = pstValue[0]; + } + + freeAllocatedSingleString(pstValue); + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(char), "header", fragment="SWIG_SciString_FromChar") { +#define SWIG_From_char(value) SWIG_SciString_FromChar(pvApiCtx, SWIG_Scilab_GetOutputPosition(), value) +} +%fragment("SWIG_SciString_FromChar", "header") { +SWIGINTERN int +SWIG_SciString_FromChar(void *pvApiCtx, int iVarOut, char chValue) { + char *pchValue = (char*)malloc(sizeof(char) * 2); + pchValue[0] = chValue; + pchValue[1] = '\0'; + + if (createSingleString(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, pchValue)) + return SWIG_ERROR; + + free(pchValue); + return SWIG_OK; +} +} + +/* + * CHAR * +*/ + +%fragment("SWIG_AsCharArray", "header", fragment = "SWIG_SciString_AsCharPtr") { +#define SWIG_AsCharArray(scilabValue, charPtrPointer, charPtrLength) SWIG_SciString_AsCharPtr(pvApiCtx, scilabValue, charPtrPointer, charPtrLength, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciString_AsCharPtr", "header") { +SWIGINTERN int +SWIG_SciString_AsCharPtr(void *pvApiCtx, int iVar, char *pcValue, int iLength, char *fname) { + SciErr sciErr; + int *piAddrVar = NULL; + char* pcTmpValue = NULL; + int iRet; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + iRet = getAllocatedSingleString(pvApiCtx, piAddrVar, &pcTmpValue); + if (iRet) { + return SWIG_ERROR; + } + + if (pcValue != NULL) { + strncpy(pcValue, pcTmpValue, iLength); + } + + freeAllocatedSingleString(pcTmpValue); + return SWIG_OK; +} +} + +%fragment("SWIG_AsCharPtrAndSize", "header", fragment = "SWIG_SciString_AsCharPtrAndSize") { +#define SWIG_AsCharPtrAndSize(scilabValue, charPtrPointer, charPtrLength, allocMemory) SWIG_SciString_AsCharPtrAndSize(pvApiCtx, scilabValue, charPtrPointer, charPtrLength, allocMemory, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciString_AsCharPtrAndSize", "header") { +SWIGINTERN int +SWIG_SciString_AsCharPtrAndSize(void *pvApiCtx, int iVar, char **pcValue, size_t *piLength, int *alloc, char *fname) { + SciErr sciErr; + int *piAddrVar = NULL; + char *pstString = NULL; + int iRows = 0; + int iCols = 0; + int iLen = 0; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isScalar(pvApiCtx, piAddrVar) == 0 || isStringType(pvApiCtx, piAddrVar) == 0) + { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A single string expected.\n"), fname, iVar); + return SWIG_TypeError; + } + + sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &iLen, NULL); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + pstString = %new_array(iLen + 1, char); + + sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &iLen, &pstString); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + // TODO: return SWIG_ERROR if pcValue NULL (now returning SWIG_ERROR fails some typechecks) + if (pcValue) { + *pcValue = pstString; + } + + if (alloc != NULL) { + *alloc = SWIG_NEWOBJ; + } + + if (piLength != NULL) { + *piLength = strlen(pstString); + } + + return SWIG_OK; +} +} + +%fragment("SWIG_FromCharPtr", "header", fragment = "SWIG_SciString_FromCharPtr") { +#define SWIG_FromCharPtr(charPtr) SWIG_SciString_FromCharPtr(pvApiCtx, SWIG_Scilab_GetOutputPosition(), charPtr) +} +%fragment("SWIG_SciString_FromCharPtr", "header") { +SWIGINTERN int +SWIG_SciString_FromCharPtr(void *pvApiCtx, int iVarOut, const char *pchValue) { + if (pchValue) { + SciErr sciErr; + const char* pstStrings[1]; + pstStrings[0] = pchValue; + + sciErr = createMatrixOfString(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, 1, 1, pstStrings); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + int iRet = createEmptyMatrix(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut); + if (iRet) { + return SWIG_ERROR; + } + } + + return SWIG_OK; +} +} + +/* + * CHAR * ARRAY + */ + +%fragment("SWIG_SciString_AsCharPtrArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciString_AsCharPtrArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, char ***charPtrArray, char *fname) { + SciErr sciErr; + int i = 0; + int *piAddrVar = NULL; + int* piLength = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getMatrixOfString(pvApiCtx, piAddrVar, iRows, iCols, NULL, NULL); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + piLength = (int*) malloc((*iRows) * (*iCols) * sizeof(int)); + + sciErr = getMatrixOfString(pvApiCtx, piAddrVar, iRows, iCols, piLength, NULL); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + *charPtrArray = (char**) malloc((*iRows) * (*iCols) * sizeof(char*)); + for(i = 0 ; i < (*iRows) * (*iCols); i++) { + (*charPtrArray)[i] = (char*) malloc(sizeof(char) * (piLength[i] + 1)); + } + + sciErr = getMatrixOfString(pvApiCtx, piAddrVar, iRows, iCols, piLength, *charPtrArray); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + free(piLength); + return SWIG_OK; +} +} + +%fragment("SWIG_SciString_FromCharPtrArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciString_FromCharPtrArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, char **charPtrArray) { + SciErr sciErr; + + sciErr = createMatrixOfString(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, iRows, iCols, (const char* const*) charPtrArray); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment("SWIG_FromCharPtrAndSize", "header", fragment = "SWIG_SciString_FromCharPtr") { +#define SWIG_FromCharPtrAndSize(charPtr, charPtrLength) SWIG_SciString_FromCharPtr(pvApiCtx, SWIG_Scilab_GetOutputPosition(), charPtr) +} + + +/* + * Char* Scilab variable + */ + +%fragment(SWIG_CreateScilabVariable_frag(char), "wrapper") { +SWIGINTERN int +SWIG_CreateScilabVariable_dec(char)(void *pvApiCtx, const char* psVariableName, const char cVariableValue) { + SciErr sciErr; + char sValue[2]; + const char* psStrings[1]; + + sValue[0] = cVariableValue; + sValue[1] = '\0'; + psStrings[0] = sValue; + + sciErr = createNamedMatrixOfString(pvApiCtx, psVariableName, 1, 1, psStrings); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + return SWIG_OK; +} +} + +%fragment(SWIG_CreateScilabVariable_frag(charptr), "wrapper") { +SWIGINTERN int +SWIG_CreateScilabVariable_dec(charptr)(void *pvApiCtx, const char* psVariableName, const char* psVariableValue) { + SciErr sciErr; + const char* psStrings[1]; + psStrings[0] = psVariableValue; + + sciErr = createNamedMatrixOfString(pvApiCtx, psVariableName, 1, 1, psStrings); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + return SWIG_OK; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scicontainer.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scicontainer.swg new file mode 100644 index 00000000..f6078690 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scicontainer.swg @@ -0,0 +1,445 @@ +/* ----------------------------------------------------------------------------- + * scicontainer.swg + * + * Scilab list <-> C++ container wrapper + * + * This wrapper, and its iterator, allows a general use (and reuse) of + * the mapping between C++ and Scilab, thanks to the C++ templates. + * + * Of course, it needs the C++ compiler to support templates, but + * since we will use this wrapper with the STL containers, that should + * be the case. + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +#if !defined(SWIG_NO_EXPORT_ITERATOR_METHODS) +# if !defined(SWIG_EXPORT_ITERATOR_METHODS) +# define SWIG_EXPORT_ITERATOR_METHODS SWIG_EXPORT_ITERATOR_METHODS +# endif +#endif + + +// #define (SWIG_SCILAB_EXTRA_NATIVE_CONTAINERS) +// if defined: sequences in return are converted from/to Scilab lists or matrices +// if not defined: sequences are passed from/to Scilab as pointers + +%{ +#define SWIG_STD_NOASSIGN_STL +%} + +%include +%include + +%{ +#include +%} + +%include +%include + +%fragment("SciSequence_Cont", "header", + fragment="StdTraits", + fragment="SwigSciIterator_T", + fragment=SWIG_Traits_Sequence_frag(ptr), + fragment=SWIG_Traits_SequenceItem_frag(ptr)) +{ +namespace swig +{ + template + struct SciSequence_Ref + { + SciSequence_Ref(const SwigSciObject& seq, int index) + : _seq(seq), _index(index) + { + if (traits_as_sequence::get(_seq, &piSeqAddr) != SWIG_OK) + { + throw std::invalid_argument("Cannot get sequence data."); + } + } + + operator T () const + { + return traits_asval_sequenceitem::asval(_seq, piSeqAddr, _index); + } + + SciSequence_Ref& operator=(const T& v) + { + // TODO + return *this; + } + + private: + SwigSciObject _seq; + int _index; + void *piSeqAddr; + }; + + + template + struct SciSequence_ArrowProxy + { + SciSequence_ArrowProxy(const T& x): m_value(x) {} + const T* operator->() const { return &m_value; } + operator const T*() const { return &m_value; } + T m_value; + }; + + template + struct SwigSciSequence_InputIterator + { + typedef SwigSciSequence_InputIterator self; + + typedef std::random_access_iterator_tag iterator_category; + typedef Reference reference; + typedef T value_type; + typedef T* pointer; + typedef int difference_type; + + SwigSciSequence_InputIterator() + { + } + + SwigSciSequence_InputIterator(const SwigSciObject& seq, int index) + : _seq(seq), _index(index) + { + } + + reference operator*() const + { + return reference(_seq, _index); + } + + SciSequence_ArrowProxy + operator->() const { + return SciSequence_ArrowProxy(operator*()); + } + + bool operator==(const self& ri) const + { + return (_index == ri._index); + } + + bool operator!=(const self& ri) const + { + return !(operator==(ri)); + } + + self& operator ++ () + { + ++_index; + return *this; + } + + self& operator -- () + { + --_index; + return *this; + } + + self& operator += (difference_type n) + { + _index += n; + return *this; + } + + self operator +(difference_type n) const + { + return self(_seq, _index + n); + } + + self& operator -= (difference_type n) + { + _index -= n; + return *this; + } + + self operator -(difference_type n) const + { + return self(_seq, _index - n); + } + + difference_type operator - (const self& ri) const + { + return _index - ri._index; + } + + bool operator < (const self& ri) const + { + return _index < ri._index; + } + + reference + operator[](difference_type n) const + { + return reference(_seq, _index + n); + } + + private: + SwigSciObject _seq; + difference_type _index; + }; + + template + struct SciSequence_Cont + { + typedef SciSequence_Ref reference; + typedef const SciSequence_Ref const_reference; + typedef T value_type; + typedef T* pointer; + typedef int difference_type; + typedef int size_type; + typedef const pointer const_pointer; + typedef SwigSciSequence_InputIterator iterator; + typedef SwigSciSequence_InputIterator const_iterator; + + SciSequence_Cont(const SwigSciObject& seq) : _seq(seq) + { + } + + ~SciSequence_Cont() + { + } + + size_type size() const + { + int iSeqSize; + if (traits_as_sequence::size(_seq, &iSeqSize) == SWIG_OK) + { + return iSeqSize; + } + else + { + return SWIG_ERROR; + } + } + + bool empty() const + { + return size() == 0; + } + + iterator begin() + { + return iterator(_seq, 0); + } + + const_iterator begin() const + { + return const_iterator(_seq, 0); + } + + iterator end() + { + return iterator(_seq, size()); + } + + const_iterator end() const + { + return const_iterator(_seq, size()); + } + + reference operator[](difference_type n) + { + return reference(_seq, n); + } + + const_reference operator[](difference_type n) const + { + return const_reference(_seq, n); + } + + private: + SwigSciObject _seq; + }; +} +} + +%define %swig_sequence_iterator(Sequence...) +#if defined(SWIG_EXPORT_ITERATOR_METHODS) + class iterator; + class reverse_iterator; + class const_iterator; + class const_reverse_iterator; + + %typemap(out,noblock=1,fragment="SciSequence_Cont") + iterator, reverse_iterator, const_iterator, const_reverse_iterator { + %set_output(SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &)), + swig::SciSwigIterator::descriptor(),SWIG_POINTER_OWN)); + } + %typemap(out,fragment="SciSequence_Cont") + std::pair, std::pair { + // TODO: return a Scilab list from the pair (see code for Octave) + } + + %fragment("SciSwigPairBoolOutputIterator", "header", + fragment=SWIG_From_frag(bool), fragment="SciSequence_Cont") {} + + %typemap(out,fragment="SciSwigPairBoolOutputIterator") + std::pair, std::pair { + // TODO: return a Scilab list from the pair (see code for Octave) + } + + %typemap(in,noblock=1,fragment="SciSequence_Cont") + iterator(swig::SciSwigIterator *iter = 0, int res), + reverse_iterator(swig::SciSwigIterator *iter = 0, int res), + const_iterator(swig::SciSwigIterator *iter = 0, int res), + const_reverse_iterator(swig::SciSwigIterator *iter = 0, int res) { + res = SWIG_ConvertPtr((SwigSciObject)$input, %as_voidptrptr(&iter), swig::SciSwigIterator::descriptor(), 0); + if (!SWIG_IsOK(res) || !iter) { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } else { + swig::SwigSciIterator_T<$type > *iter_t = dynamic_cast *>(iter); + if (iter_t) { + $1 = iter_t->get_current(); + } else { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } + } + } + + %typecheck(%checkcode(ITERATOR),noblock=1,fragment="SciSequence_Cont") + iterator, reverse_iterator, const_iterator, const_reverse_iterator { + swig::SciSwigIterator *iter = 0; + int res = SWIG_ConvertPtr((SwigSciObject)$input, %as_voidptrptr(&iter), swig::SciSwigIterator::descriptor(), 0); + $1 = (SWIG_IsOK(res) && iter && (dynamic_cast *>(iter) != 0)); + } + + %fragment("SciSequence_Cont"); +#endif //SWIG_EXPORT_ITERATOR_METHODS +%enddef + +// The Scilab container methods + +%define %swig_container_methods(Container...) +%enddef + +%define %swig_sequence_methods_common(Sequence...) + %swig_sequence_iterator(%arg(Sequence)) + %swig_container_methods(%arg(Sequence)) + +%enddef + +%define %swig_sequence_methods(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) +%enddef + +%define %swig_sequence_methods_val(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) +%enddef + +// +// Common fragments +// + +%fragment("StdSequenceTraits","header", + fragment="StdTraits", + fragment="SciSequence_Cont") +{ +namespace swig { + template + inline void + assign(const SciSeq& sciSeq, Seq* seq) { +%#ifdef SWIG_STD_NOASSIGN_STL + typedef typename SciSeq::value_type value_type; + typename SciSeq::const_iterator it = sciSeq.begin(); + for (;it != sciSeq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } +%#else + seq->assign(sciSeq.begin(), sciSeq.end()); +%#endif + } + + template + struct traits_asptr_stdseq { + typedef Seq sequence; + typedef T value_type; + + static int asptr(const SwigSciObject& obj, sequence **seq) + { + swig_type_info *typeInfo = swig::type_info(); + if (typeInfo) + { + sequence *p; + if (SWIG_ConvertPtr(obj, (void**)&p, typeInfo, 0) == SWIG_OK) + { + if (seq) + *seq = p; + return SWIG_OLDOBJ; + } + } + + if (traits_as_sequence::check(obj) == SWIG_OK) + { + try + { + SciSequence_Cont sciSeq(obj); + if (seq) + { + *seq = new sequence(); + assign(sciSeq, *seq); + return SWIG_NEWOBJ; + } + else + { + return SWIG_ERROR; + } + } + catch (std::exception& e) + { + SWIG_exception(SWIG_RuntimeError, e.what()); + return SWIG_ERROR; + } + } + else + { + return SWIG_ERROR; + } + } + }; + + template + struct traits_from_stdseq { + typedef Seq sequence; + typedef T value_type; + typedef typename Seq::size_type size_type; + typedef typename sequence::const_iterator const_iterator; + + static SwigSciObject from(const sequence& seq) + { + %#ifdef SWIG_SCILAB_EXTRA_NATIVE_CONTAINERS + swig_type_info *typeInfo = swig::type_info(); + if (typeInfo) + { + return SWIG_NewPointerObj(new sequence(seq), typeInfo, SWIG_POINTER_OWN); + } + %#endif + + try + { + void *data; + size_type size = seq.size(); + if (traits_from_sequence::create(size, &data) == SWIG_OK) { + const_iterator it; + int index = 0; + for (it = seq.begin(); it != seq.end(); ++it) + { + traits_from_sequenceitem::from(data, index, *it); + index++; + } + return traits_from_sequence::set(size, data); + } + return SWIG_OK; + } + catch (std::exception& e) + { + SWIG_exception(SWIG_RuntimeError, e.what()); + return SWIG_ERROR; + } + } + }; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scidouble.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scidouble.swg new file mode 100644 index 00000000..1b826330 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scidouble.swg @@ -0,0 +1,108 @@ +/* + * DOUBLE SCALAR + */ +%fragment(SWIG_AsVal_frag(double), "header", fragment="SWIG_SciDouble_AsDouble") { +%#define SWIG_AsVal_double(scilabValue, valuePointer) SWIG_SciDouble_AsDouble(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDouble_AsDouble", "header") { +SWIGINTERN int +SWIG_SciDouble_AsDouble(void *pvApiCtx, SwigSciObject iVar, double *pdblValue, char *fname) { + SciErr sciErr; + int iRet = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (!isDoubleType(pvApiCtx, piAddrVar) || isVarComplex(pvApiCtx, piAddrVar)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A real expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + if (!isScalar(pvApiCtx, piAddrVar)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A real expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + iRet = getScalarDouble(pvApiCtx, piAddrVar, pdblValue); + if (iRet) { + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(double), "header", fragment="SWIG_SciDouble_FromDouble") { +%#define SWIG_From_double(scilabValue) SWIG_SciDouble_FromDouble(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDouble_FromDouble", "header") { +SWIGINTERN int +SWIG_SciDouble_FromDouble(void *pvApiCtx, int iVarOut, double dblValue, char *fname) { + if (createScalarDouble(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, dblValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + +/* + * DOUBLE ARRAY + */ + +%fragment("SWIG_SciDouble_AsDoubleArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_AsDoubleArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, double **pdValue, char *fname) { + SciErr sciErr; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isDoubleType(pvApiCtx, piAddrVar) && !isVarComplex(pvApiCtx, piAddrVar)) { + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, iRows, iCols, pdValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A real matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment("SWIG_SciDouble_FromDoubleArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_FromDoubleArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, double *pdblValue) { + SciErr sciErr; + sciErr = createMatrixOfDouble(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, iRows, iCols, pdblValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment(SWIG_CreateScilabVariable_frag(double), "wrapper") { +SWIGINTERN int +SWIG_CreateScilabVariable_dec(double)(void *pvApiCtx, const char* psVariableName, const double dVariableValue) { + SciErr sciErr; + sciErr = createNamedMatrixOfDouble(pvApiCtx, psVariableName, 1, 1, &dVariableValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + return SWIG_OK; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scienum.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scienum.swg new file mode 100644 index 00000000..54ec1f85 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scienum.swg @@ -0,0 +1,31 @@ +/* + * C-type: enum + * Scilab type: double or int32 + */ + +%fragment(SWIG_AsVal_frag(Enum), "header", fragment="SWIG_Int_AsEnum") { +%#define SWIG_AsVal_Enum(scilabValue, valuePointer) SWIG_Int_AsEnum(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_Int_AsEnum", "header", fragment="SWIG_SciDoubleOrInt32_AsInt") { +SWIGINTERN int +SWIG_Int_AsEnum(void *pvApiCtx, int iVar, int *enumValue, char *fname) { + int iValue = 0; + if (SWIG_SciDoubleOrInt32_AsInt(pvApiCtx, iVar, &iValue, fname) != SWIG_OK) + return SWIG_ERROR; + *enumValue = iValue; + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(Enum), "header", fragment="SWIG_Int_FromEnum") { +%#define SWIG_From_Enum(scilabValue) SWIG_Int_FromEnum(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_Int_FromEnum", "header", fragment="SWIG_SciDouble_FromInt") { +SWIGINTERN int +SWIG_Int_FromEnum(void *pvApiCtx, int iVarOut, int enumValue, char *fname) { + if (SWIG_SciDouble_FromInt(pvApiCtx, iVarOut, enumValue, fname) != SWIG_OK) + return SWIG_ERROR; + SWIG_Scilab_SetOutput(pvApiCtx, iVarOut); + return SWIG_OK; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/sciexception.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/sciexception.swg new file mode 100644 index 00000000..1d653b31 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/sciexception.swg @@ -0,0 +1,60 @@ +/* + * Exception typemaps (throws) + */ + +%include + +%typemap(throws, noblock=1) int, unsigned int, signed int, + int&,unsigned int&, signed int&, + long, unsigned long, signed long, + short, unsigned short,signed short, + long long, unsigned long long, + unsigned char, signed char, + long&, unsigned long&, signed long&, + short&, unsigned short&, signed short&, + long long&, unsigned long long&, + unsigned char&, signed char&, + size_t, size_t&, + ptrdiff_t, ptrdiff_t& { + char obj[20]; + sprintf(obj, "%d", (int)$1); + SWIG_Scilab_Raise_Ex(obj, "$type", $descriptor); +} + +%typemap(throws, noblock=1) enum SWIGTYPE { + char obj[20]; + sprintf(obj, "%d", (int)$1); + SWIG_Scilab_Raise_Ex(obj, "$type", $descriptor); +} + +%typemap(throws, noblock=1) float, double, + float&, double& { + char obj[20]; + sprintf(obj, "%5.3f", (double)$1); + SWIG_Scilab_Raise_Ex(obj, "$type", $descriptor); +} + +%typemap(throws, noblock=1) bool, bool& { + SWIG_Scilab_Raise_Ex($1 ? "true" : "false", "$type", $descriptor); +} + +%typemap(throws, noblock=1) char*, char[ANY] { + SWIG_Scilab_Raise_Ex($1, "$type", $descriptor); +} + +%typemap(throws, noblock=1) char, char& { + char obj[2]; + sprintf(obj, "%c", (char)$1); + SWIG_Scilab_Raise_Ex(obj, "$type", $descriptor); +} + +%typemap(throws, noblock=1) SWIGTYPE, + SWIGTYPE*, + SWIGTYPE [ANY], + SWIGTYPE & { + SWIG_Scilab_Raise_Ex((char*)NULL, "$type", $descriptor); +} + +%typemap(throws, noblock=1) (...) { + SWIG_exception(SWIG_RuntimeError, "unknown exception"); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scifloat.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scifloat.swg new file mode 100644 index 00000000..f0af17c0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scifloat.swg @@ -0,0 +1,83 @@ +/* + * FLOAT SCALAR + */ + +%fragment(SWIG_AsVal_frag(float), "header", fragment=SWIG_AsVal_frag(double)) { +SWIGINTERN int +SWIG_AsVal_dec(float)(SwigSciObject iVar, float *pfValue) { + double dblValue = 0.0; + if(SWIG_AsVal_dec(double)(iVar, &dblValue) != SWIG_OK) { + return SWIG_ERROR; + } + if (pfValue) + *pfValue = (float) dblValue; + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(float), "header") { +SWIGINTERN int +SWIG_From_dec(float)(float flValue) { + if (createScalarDouble(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + + SWIG_Scilab_GetOutputPosition(), (double)flValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + +%fragment("SWIG_SciDouble_AsFloatArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_AsFloatArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, float **pfValue, char *fname) { + SciErr sciErr; + int *piAddrVar = NULL; + double *pdValue = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isDoubleType(pvApiCtx, piAddrVar) && !isVarComplex(pvApiCtx, piAddrVar)) { + int i; + + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, iRows, iCols, &pdValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + *pfValue = (float *) malloc((*iRows) * (*iCols) * sizeof(float)); + for (i=0; i < (*iRows) * (*iCols); i++) + (*pfValue)[i] = (float) pdValue[i]; + + return SWIG_OK; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A real matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } +} +} + +%fragment("SWIG_SciDouble_FromFloatArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_FromFloatArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, float *pfValue) { + SciErr sciErr; + double *pdValue; + int i; + + pdValue = (double *) malloc(iRows * iCols * sizeof(double)); + for (i = 0; i < iRows * iCols; i++) + pdValue[i] = pfValue[i]; + + sciErr = createMatrixOfDouble(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, iRows, iCols, pdValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + free(pdValue); + return SWIG_OK; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/sciint.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/sciint.swg new file mode 100644 index 00000000..2d699356 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/sciint.swg @@ -0,0 +1,202 @@ +/* + * C-type: int + * Scilab type: double or int32 + */ + +%fragment(SWIG_AsVal_frag(int), "header", fragment="SWIG_SciDoubleOrInt32_AsInt", fragment="") { +%#define SWIG_AsVal_int(scilabValue, valuePointer) SWIG_SciDoubleOrInt32_AsInt(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDoubleOrInt32_AsInt", "header") { +SWIGINTERN int +SWIG_SciDoubleOrInt32_AsInt(void *pvApiCtx, SwigSciObject iVar, int *piValue, char *fname) +{ + SciErr sciErr; + int iType = 0; + int iRows = 0; + int iCols = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_ints) { + if (piValue) { + int iPrec = 0; + int *piData = NULL; + + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iPrec != SCI_INT32) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 32-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + sciErr = getMatrixOfInteger32(pvApiCtx, piAddrVar, &iRows, &iCols, &piData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iRows * iCols != 1) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A 32-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + *piValue = *piData; + } + } + else if (iType == sci_matrix) { + if (piValue) { + double *pdData = NULL; + double dValue = 0.0f; + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, &iRows, &iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iRows * iCols != 1) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A 32-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + dValue = *pdData; + if (dValue != floor(dValue)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Incorrect value for input argument #%d: The double value cannot be converted to a 32-bit signed integer.\n"), fname, iVar); + return SWIG_ValueError; + } + if ((dValue < INT_MIN) || (dValue > INT_MAX)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Overflow error for input argument #%d: The double value cannot be converted to a 32-bit signed integer.\n"), fname, iVar); + return SWIG_OverflowError; + } + *piValue = (int) dValue; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 32-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(int), "header", fragment="SWIG_SciDouble_FromInt") { +%#define SWIG_From_int(scilabValue) SWIG_SciDouble_FromInt(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDouble_FromInt", "header") { +SWIGINTERN int +SWIG_SciDouble_FromInt(void *pvApiCtx, int iVarOut, int iValue, char *fname){ + if (createScalarDouble(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + + iVarOut, (double) iValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + +/* + * C-type: int[] + * Scilab type: double or int32 matrix + */ +%fragment("SWIG_SciDoubleOrInt32_AsIntArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDoubleOrInt32_AsIntArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, int **piValue, char *fname) { + SciErr sciErr; + int iType = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_matrix) { + double *pdData = NULL; + int size = 0; + int i; + + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, iRows, iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + size = (*iRows) * (*iCols); + *piValue = (int*) malloc(size * sizeof(int*)); + for (i = 0; i < size; i++) + (*piValue)[i] = (int) pdData[i]; + } + else if (iType == sci_ints) { + int iPrec = 0; + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iPrec != SCI_INT32) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 32-bit signed integer or a double matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } + sciErr = getMatrixOfInteger32(pvApiCtx, piAddrVar, iRows, iCols, piValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 32-bit signed integer or a double matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } + return SWIG_OK; +} +} + +%fragment("SWIG_SciDouble_FromIntArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_FromIntArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, const int *piData) { + SciErr sciErr; + double *pdValues = NULL; + int i; + + pdValues = (double*) malloc(iRows * iCols * sizeof(double)); + for (i=0; i + +%fragment("SciSwigIterator","header",fragment="") { +namespace swig { + struct stop_iteration { + }; + + struct SciSwigIterator { + private: + SwigSciObject _seq; + + protected: + SciSwigIterator(SwigSciObject seq) : _seq(seq) + { + } + + public: + virtual ~SciSwigIterator() {} + + virtual SwigSciObject value() const = 0; + + virtual SciSwigIterator *incr(size_t n = 1) = 0; + + virtual SciSwigIterator *decr(size_t n = 1) + { + throw stop_iteration(); + } + + virtual ptrdiff_t distance(const SciSwigIterator &x) const + { + throw std::invalid_argument("operation not supported"); + } + + virtual bool equal (const SciSwigIterator &x) const + { + throw std::invalid_argument("operation not supported"); + } + + virtual SciSwigIterator *copy() const = 0; + + SwigSciObject next() + { + SwigSciObject obj = value(); + incr(); + return obj; + } + + SwigSciObject previous() + { + decr(); + return value(); + } + + SciSwigIterator *advance(ptrdiff_t n) + { + return (n > 0) ? incr(n) : decr(-n); + } + + bool operator == (const SciSwigIterator& x) const + { + return equal(x); + } + + bool operator != (const SciSwigIterator& x) const + { + return ! operator==(x); + } + + SciSwigIterator* operator ++ () { + incr(); + return this; + } + + SciSwigIterator* operator -- () { + decr(); + return this; + } + + SciSwigIterator* operator + (ptrdiff_t n) const + { + return copy()->advance(n); + } + + SciSwigIterator* operator - (ptrdiff_t n) const + { + return copy()->advance(-n); + } + + ptrdiff_t operator - (const SciSwigIterator& x) const + { + return x.distance(*this); + } + + static swig_type_info* descriptor() { + static int init = 0; + static swig_type_info* desc = 0; + if (!init) { + desc = SWIG_TypeQuery("swig::SciSwigIterator *"); + init = 1; + } + return desc; + } + }; +} +} + +%fragment("SwigSciIterator_T","header",fragment="",fragment="SciSwigIterator",fragment="StdTraits",fragment="StdIteratorTraits") { +namespace swig { + template + class SwigSciIterator_T : public SciSwigIterator + { + public: + typedef OutIterator out_iterator; + typedef typename std::iterator_traits::value_type value_type; + typedef SwigSciIterator_T self_type; + + SwigSciIterator_T(out_iterator curr, SwigSciObject seq) + : SciSwigIterator(seq), current(curr) + { + } + + const out_iterator& get_current() const + { + return current; + } + + + bool equal (const SciSwigIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return (current == iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + ptrdiff_t distance(const SciSwigIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return std::distance(current, iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + protected: + out_iterator current; + }; + + template + struct from_oper + { + typedef const ValueType& argument_type; + typedef SwigSciObject result_type; + result_type operator()(argument_type v) const + { + return swig::from(v); + } + }; + + template::value_type, + typename FromOper = from_oper > + class SciSwigIteratorOpen_T : public SwigSciIterator_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigSciIterator_T base; + typedef SciSwigIteratorOpen_T self_type; + + SciSwigIteratorOpen_T(out_iterator curr, SwigSciObject seq) + : SwigSciIterator_T(curr, seq) + { + } + + SwigSciObject value() const { + return from(static_cast(*(base::current))); + } + + SciSwigIterator *copy() const + { + return new self_type(*this); + } + + SciSwigIterator *incr(size_t n = 1) + { + while (n--) { + ++base::current; + } + return this; + } + + SciSwigIterator *decr(size_t n = 1) + { + while (n--) { + --base::current; + } + return this; + } + }; + + template::value_type, + typename FromOper = from_oper > + class SciSwigIteratorClosed_T : public SwigSciIterator_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigSciIterator_T base; + typedef SciSwigIteratorClosed_T self_type; + + SciSwigIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, SwigSciObject seq) + : SwigSciIterator_T(curr, seq), begin(first), end(last) + { + } + + SwigSciObject value() const { + if (base::current == end) { + throw stop_iteration(); + } else { + return from(static_cast(*(base::current))); + } + } + + SciSwigIterator *copy() const + { + return new self_type(*this); + } + + SciSwigIterator *incr(size_t n = 1) + { + while (n--) { + if (base::current == end) { + throw stop_iteration(); + } else { + ++base::current; + } + } + return this; + } + + SciSwigIterator *decr(size_t n = 1) + { + while (n--) { + if (base::current == begin) { + throw stop_iteration(); + } else { + --base::current; + } + } + return this; + } + + private: + out_iterator begin; + out_iterator end; + }; + + template + inline SciSwigIterator* + make_output_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, SwigSciObject seq = SwigSciObject()) + { + return new SciSwigIteratorClosed_T(current, begin, end, seq); + } + + template + inline SciSwigIterator* + make_output_iterator(const OutIter& current, SwigSciObject seq = SwigSciObject()) + { + return new SciSwigIteratorOpen_T(current, seq); + } +} +} + + +%fragment("SciSwigIterator"); +namespace swig +{ +// Throw a StopIteration exception + %ignore stop_iteration; + struct stop_iteration {}; + + %typemap(throws, noblock=1) stop_iteration + { + SWIG_Scilab_Raise(0, "stop_iteration", NULL); + return SWIG_ERROR; + } + +// Mark methods that return new objects + %newobject SciSwigIterator::copy; + %newobject SciSwigIterator::operator + (ptrdiff_t n) const; + %newobject SciSwigIterator::operator - (ptrdiff_t n) const; + + %nodirector SciSwigIterator; + + %catches(swig::stop_iteration) SciSwigIterator::value() const; + %catches(swig::stop_iteration) SciSwigIterator::incr(size_t n = 1); + %catches(swig::stop_iteration) SciSwigIterator::decr(size_t n = 1); + %catches(std::invalid_argument) SciSwigIterator::distance(const SciSwigIterator &x) const; + %catches(std::invalid_argument) SciSwigIterator::equal (const SciSwigIterator &x) const; + %catches(swig::stop_iteration) SciSwigIterator::next(); + %catches(swig::stop_iteration) SciSwigIterator::previous(); + %catches(swig::stop_iteration) SciSwigIterator::advance(ptrdiff_t n); + %catches(swig::stop_iteration) SciSwigIterator::operator += (ptrdiff_t n); + %catches(swig::stop_iteration) SciSwigIterator::operator -= (ptrdiff_t n); + %catches(swig::stop_iteration) SciSwigIterator::operator + (ptrdiff_t n) const; + %catches(swig::stop_iteration) SciSwigIterator::operator - (ptrdiff_t n) const; + + %ignore SciSwigIterator::operator==; + %ignore SciSwigIterator::operator!=; + %ignore SciSwigIterator::operator++; + %ignore SciSwigIterator::operator--; + %ignore SciSwigIterator::operator+; + %ignore SciSwigIterator::operator-; + + struct SciSwigIterator + { + protected: + SciSwigIterator(SwigSciObject seq); + + public: + virtual ~SciSwigIterator(); + + virtual SwigSciObject value() const = 0; + + virtual SciSwigIterator *incr(size_t n = 1) = 0; + + virtual SciSwigIterator *decr(size_t n = 1); + + virtual ptrdiff_t distance(const SciSwigIterator &x) const; + + virtual bool equal (const SciSwigIterator &x) const; + + virtual SciSwigIterator *copy() const = 0; + + SwigSciObject next(); + SwigSciObject previous(); + SciSwigIterator *advance(ptrdiff_t n); + + bool operator == (const SciSwigIterator& x) const; + bool operator != (const SciSwigIterator& x) const; + SciSwigIterator* operator ++ (); + SciSwigIterator* operator -- (); + SciSwigIterator* operator + (ptrdiff_t n) const; + SciSwigIterator* operator - (ptrdiff_t n) const; + ptrdiff_t operator - (const SciSwigIterator& x) const; + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scilab.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scilab.swg new file mode 100644 index 00000000..3b5f6e81 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scilab.swg @@ -0,0 +1,6 @@ +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scilist.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scilist.swg new file mode 100644 index 00000000..513f40b6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scilist.swg @@ -0,0 +1,91 @@ +/* + * Scilab list related functions + * + */ + +%fragment("SWIG_ScilabList", "header") +{ +SWIGINTERN int +SWIG_GetScilabList(SwigSciObject obj, int **piListAddr) +{ + SciErr sciErr; + + sciErr = getVarAddressFromPosition(pvApiCtx, obj, piListAddr); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + return SWIG_OK; +} + +SWIGINTERN int +SWIG_GetScilabListSize(SwigSciObject obj, int *piListSize) +{ + SciErr sciErr; + int *piListAddr; + + sciErr = getVarAddressFromPosition(pvApiCtx, obj, &piListAddr); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getListItemNumber(pvApiCtx, piListAddr, piListSize); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + return SWIG_OK; +} + +SWIGINTERN int +SWIG_GetScilabListAndSize(SwigSciObject obj, int **piListAddr, int *piListSize) +{ + SciErr sciErr; + + sciErr = getVarAddressFromPosition(pvApiCtx, obj, piListAddr); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getListItemNumber(pvApiCtx, *piListAddr, piListSize); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + return SWIG_OK; +} + +SWIGINTERN int +SWIG_CheckScilabList(SwigSciObject obj) +{ + SciErr sciErr; + int *piListAddr; + int iType; + + sciErr = getVarAddressFromPosition(pvApiCtx, obj, &piListAddr); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piListAddr, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if ((iType != sci_list) && (iType != sci_tlist) && (iType != sci_mlist)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A list is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } + + return SWIG_OK; +} + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scilong.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scilong.swg new file mode 100644 index 00000000..4e55be53 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scilong.swg @@ -0,0 +1,123 @@ +/* + * C-type: long + * Scilab type: double or int32 + */ + +%fragment(SWIG_AsVal_frag(long), "header", fragment="SWIG_SciDoubleOrInt32_AsLong", fragment="") { +%#define SWIG_AsVal_long(scilabValue, valuePointer) SWIG_SciDoubleOrInt32_AsLong(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFuncName()); +} +%fragment("SWIG_SciDoubleOrInt32_AsLong", "header") { +SWIGINTERN int +SWIG_SciDoubleOrInt32_AsLong(void *pvApiCtx, SwigSciObject iVar, long *plValue, char *fname) { + SciErr sciErr; + int iType = 0; + int iRows = 0; + int iCols = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_ints) { + int iPrec = 0; + int *piData = NULL; + + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iPrec != SCI_INT32) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 32-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + sciErr = getMatrixOfInteger32(pvApiCtx, piAddrVar, &iRows, &iCols, &piData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iRows * iCols != 1) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A 32-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + *plValue = (long) *piData; + } + else if (iType == sci_matrix) { + double *pdData = NULL; + double dValue = 0.0f; + + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, &iRows, &iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iRows * iCols != 1) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A 32-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + dValue = *pdData; + if (dValue != floor(dValue)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Incorrect value for input argument #%d: The double value cannot be converted to a 32-bit signed integer.\n"), fname, iVar); + return SWIG_ValueError; + } + if ((dValue < LONG_MIN) || (dValue > LONG_MAX)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Overflow error for input argument #%d: The double value cannot be converted to a 32-bit signed integer.\n"), fname, iVar); + return SWIG_OverflowError; + } + *plValue = (long) dValue; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 32-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(long), "header", fragment="SWIG_SciDouble_FromLong") { +%#define SWIG_From_long(scilabValue) SWIG_SciDouble_FromLong(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDouble_FromLong", "header") { +SWIGINTERN int +SWIG_SciDouble_FromLong(void *pvApiCtx, int iVarOut, long lValue, char *fname) { + if (createScalarDouble(pvApiCtx, + SWIG_NbInputArgument(pvApiCtx) + iVarOut, (double) lValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + + +%fragment("SWIG_SciDouble_FromLongArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_FromLongArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, const long *plData) { + SciErr sciErr; + int i; + double *pdValues = NULL; + + pdValues = (double*) malloc(iRows * iCols * sizeof(double)); + for (i=0; i + +// in (bool *IN, int IN_ROWCOUNT, int IN_COLCOUNT) + +%typemap(in, noblock=1, fragment="SWIG_SciBoolean_AsBoolArrayAndSize") (bool *IN, int IN_ROWCOUNT, int IN_COLCOUNT) +{ + if (SWIG_SciBoolean_AsBoolArrayAndSize(pvApiCtx, $input, &$2, &$3, &$1, fname) != SWIG_OK) { + return SWIG_ERROR; + } +} + +// in (int IN_ROWCOUNT, int IN_COLCOUNT, bool *IN) + +%typemap(in, noblock=1, fragment="SWIG_SciBoolean_AsBoolArrayAndSize") (int IN_ROWCOUNT, int IN_COLCOUNT, bool *IN) +{ + if (SWIG_SciBoolean_AsBoolArrayAndSize(pvApiCtx, $input, &$1, &$2, &$3, fname) != SWIG_OK) { + return SWIG_ERROR; + } +} + +// in (bool *IN, int IN_SIZE) + +%typemap(in, noblock=1, fragment="SWIG_SciBoolean_AsBoolArrayAndSize") (bool *IN, int IN_SIZE) (int rowCount, int colCount) +{ + if (SWIG_SciBoolean_AsBoolArrayAndSize(pvApiCtx, $input, &rowCount, &colCount, &$1, fname) == SWIG_OK) { + $2 = rowCount * colCount; + } + else { + return SWIG_ERROR; + } +} + +// in (int IN_SIZE, bool *IN) + +%typemap(in, noblock=1) (int IN_SIZE, bool *IN) (int rowCount, int colCount) +{ + if (SWIG_SciBoolean_AsBoolArrayAndSize(pvApiCtx, $input, &rowCount, &colCount, &$2, fname) == SWIG_OK) { + $1 = rowCount * colCount; + } + else { + return SWIG_ERROR; + } +} + +// out (bool **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) + +%typemap(in, noblock=1, numinputs=0) (bool **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ +} + +%typemap(arginit, noblock=1) (bool **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + $1 = (bool**) malloc(sizeof(bool*)); + $2 = (int*) malloc(sizeof(int)); + $3 = (int*) malloc(sizeof(int)); +} + +%typemap(freearg, noblock=1) (bool **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + free(*$1); + free($1); + free($2); + free($3); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciBoolean_FromBoolArrayAndSize") (bool **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + if (SWIG_SciBoolean_FromBoolArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), *$2, *$3, *$1) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +// out (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, bool **OUT) + +%typemap(in, noblock=1, numinputs=0) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, bool **OUT) +{ +} + +%typemap(arginit, noblock=1) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, bool **OUT) +{ + $1 = (int*) malloc(sizeof(int)); + $2 = (int*) malloc(sizeof(int)); + $3 = (bool**) malloc(sizeof(bool*)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciBoolean_FromBoolArrayAndSize") (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, bool **OUT) +{ + if (SWIG_SciBoolean_FromBoolArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), *$1, *$2, *$3) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, bool **OUT) +{ + free($1); + free($2); + free(*$3); + free($3); +} + + +// out (bool **OUT, int *OUT_SIZE) + +%typemap(in, noblock=1, numinputs=0) (bool **OUT, int *OUT_SIZE) +{ +} + +%typemap(arginit, noblock=1) (bool **OUT, int *OUT_SIZE) +{ + $1 = (bool**) malloc(sizeof(bool*)); + $2 = (int*) malloc(sizeof(int)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciBoolean_FromBoolArrayAndSize") (bool **OUT, int *OUT_SIZE) +{ + if (SWIG_SciBoolean_FromBoolArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, *$2, *$1) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (bool **OUT, int *OUT_SIZE) +{ + free(*$1); + free($1); + free($2); +} + + +// out (int *OUT_SIZE, bool **OUT) + +%typemap(in, noblock=1, numinputs=0) (int *OUT_SIZE, bool **OUT) +{ +} + +%typemap(arginit, noblock=1) (int *OUT_SIZE, bool **OUT) +{ + $1 = (int*) malloc(sizeof(int)); + $2 = (bool**) malloc(sizeof(bool*)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciBoolean_FromBoolArrayAndSize") (int *OUT_SIZE, bool **OUT) +{ + if (SWIG_SciBoolean_FromBoolArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, *$1, *$2) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int *OUT_SIZE, bool **OUT) +{ + free($1); + free(*$2); + free($2); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixchar.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixchar.swg new file mode 100644 index 00000000..37f68339 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixchar.swg @@ -0,0 +1,199 @@ +/* + * C-type: char* + * Scilab type: string matrix + */ + +%include + +// in (char **IN, int IN_ROWCOUNT, int IN_COLCOUNT) + +%typemap(in, noblock=1, fragment="SWIG_SciString_AsCharPtrArrayAndSize") (char **IN, int IN_ROWCOUNT, int IN_COLCOUNT) +{ + if (SWIG_SciString_AsCharPtrArrayAndSize(pvApiCtx, $input, &$2, &$3, &$1, fname) != SWIG_OK) { + return SWIG_ERROR; + } +} + +// in (int IN_ROWCOUNT, int IN_COLCOUNT, char **IN) + +%typemap(in, noblock=1, fragment="SWIG_SciString_AsCharPtrArrayAndSize") (int IN_ROWCOUNT, int IN_COLCOUNT, char **IN) +{ + if (SWIG_SciString_AsCharPtrArrayAndSize(pvApiCtx, $input, &$1, &$2, &$3, fname) != SWIG_OK) { + return SWIG_ERROR; + } +} + +// in (char **IN, int IN_SIZE) + +%typemap(in, noblock=1, fragment="SWIG_SciString_AsCharPtrArrayAndSize") (char **IN, int IN_SIZE) (int rowCount, int colCount) +{ + if (SWIG_SciString_AsCharPtrArrayAndSize(pvApiCtx, $input, &rowCount, &colCount, &$1, fname) == SWIG_OK) { + $2 = rowCount * colCount; + } + else { + return SWIG_ERROR; + } +} + +// in (int IN_SIZE, char **IN) + +%typemap(in, noblock=1, fragment="SWIG_SciString_AsCharPtrArrayAndSize") (int IN_SIZE, char **IN) (int rowCount, int colCount) +{ + if (SWIG_SciString_AsCharPtrArrayAndSize(pvApiCtx, $input, &rowCount, &colCount, &$2, fname) == SWIG_OK) { + $1 = rowCount * colCount; + } + else { + return SWIG_ERROR; + } +} + +// out (char ***OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) + +%typemap(in, noblock=1, numinputs=0) (char ***OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ +} + +%typemap(arginit, noblock=1) (char ***OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + $1 = (char***) malloc(sizeof(char**)); + $2 = (int*) malloc(sizeof(int)); + $3 = (int*) malloc(sizeof(int)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciString_FromCharPtrArrayAndSize") (char ***OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + if (SWIG_SciString_FromCharPtrArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), *$2, *$3, *$1) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (char ***OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + { + int i; + for (i = 0; i < (*$2) * (*$3); i++) + free((*$1)[i]); + } + free(*$1); + free($1); + free($2); + free($3); +} + +// out (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, char ***OUT) + +%typemap(in, noblock=1, numinputs=0) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, char ***OUT) +{ +} + +%typemap(arginit, noblock=1) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, char ***OUT) +{ + $1 = (char***) malloc(sizeof(char**)); + $2 = (int*) malloc(sizeof(int)); + $3 = (int**) malloc(sizeof(int*)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciString_FromCharPtrArrayAndSize") (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, char ***OUT) +{ + if (SWIG_SciString_FromCharPtrArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), *$1, *$2, *$3) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, char ***OUT) +{ + free($1); + free($2); + { + int i; + for (i = 0; i < (*$1) * (*$2); i++) + free((*$3)[i]); + } + free(*$3); + free($3); +} + + +// out (char ***OUT, int *OUT_SIZE) + +%typemap(in, noblock=1, numinputs=0) (char ***OUT, int *OUT_SIZE) +{ +} + +%typemap(arginit, noblock=1) (char ***OUT, int *OUT_SIZE) +{ + $1 = (char***) malloc(sizeof(char**)); + $2 = (int*) malloc(sizeof(int)); +} + +%typemap(freearg, noblock=1) (char ***OUT, int *OUT_SIZE) +{ + { + int i; + for (i = 0; i < *$2; i++) + free((*$1)[i]); + } + free(*$1); + free($1); + free($2); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciString_FromCharPtrArrayAndSize") (char ***OUT, int *OUT_SIZE) +{ + if (SWIG_SciString_FromCharPtrArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, *$2, *$1) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +// in (int IN_SIZE, char **IN) + +%typemap(in, noblock=1, fragment="SWIG_SciString_AsCharPtrArrayAndSize") (int IN_SIZE, char **IN) +{ + if (SWIG_SciString_AsCharPtrArrayAndSize(pvApiCtx, $input, 1, &$1, &$2, fname) != SWIG_OK) { + return SWIG_ERROR; + } +} + +// out (int *OUT_SIZE, char ***OUT) + +%typemap(in, noblock=1, numinputs=0) (int *OUT_SIZE, char ***OUT) +{ +} + +%typemap(arginit, noblock=1) (int *OUT_SIZE, char ***OUT) +{ + $1 = (int*) malloc(sizeof(int)); + $2 = (char***) malloc(sizeof(char**)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciString_FromCharPtrArrayAndSize") (int *OUT_SIZE, char ***OUT) +{ + if (SWIG_SciString_FromCharPtrArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, *$1, *$2) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int *OUT_SIZE, char ***OUT) +{ + free($1); + { + int i; + for (i = 0; i < *$1; i++) + free((*$2)[i]); + } + free(*$2); + free($2); +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixdouble.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixdouble.swg new file mode 100644 index 00000000..9444a807 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixdouble.swg @@ -0,0 +1,170 @@ +/* + * C-type: double array + * Scilab type: double matrix + */ + +%include + +// in (double *IN, int IN_ROWCOUNT, int IN_COLCOUNT) + +%typemap(in, noblock=1, fragment="SWIG_SciDouble_AsDoubleArrayAndSize") (double *IN, int IN_ROWCOUNT, int IN_COLCOUNT) +{ + if (SWIG_SciDouble_AsDoubleArrayAndSize(pvApiCtx, $input, &$2, &$3, &$1, fname) != SWIG_OK) { + return SWIG_ERROR; + } +} + +// in (int IN_ROWCOUNT, int IN_COLCOUNT, double *IN) + +%typemap(in, noblock=1, fragment="SWIG_SciDouble_AsDoubleArrayAndSize") (int IN_ROWCOUNT, int IN_COLCOUNT, double *IN) +{ + if (SWIG_SciDouble_AsDoubleArrayAndSize(pvApiCtx, $input, &$1, &$2, &$3, fname) != SWIG_OK) { + return SWIG_ERROR; + } +} + +// in (double *IN, int IN_SIZE) + +%typemap(in, noblock=1, fragment="SWIG_SciDouble_AsDoubleArrayAndSize") (double *IN, int IN_SIZE) (int rowCount, int colCount) +{ + if (SWIG_SciDouble_AsDoubleArrayAndSize(pvApiCtx, $input, &rowCount, &colCount, &$1, fname) == SWIG_OK) { + $2 = rowCount * colCount; + } + else { + return SWIG_ERROR; + } +} + +// in (int IN_SIZE, double *IN) + +%typemap(in, noblock=1, fragment="SWIG_SciDouble_AsDoubleArrayAndSize") (int IN_SIZE, double *IN) (int rowCount, int colCount) +{ + if (SWIG_SciDouble_AsDoubleArrayAndSize(pvApiCtx, $input, &rowCount, &colCount, &$2, fname) == SWIG_OK) { + $1 = rowCount * colCount; + } + else { + return SWIG_ERROR; + } +} + +// out (double **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) + +%typemap(in, noblock=1, numinputs=0) (double **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ +} + +%typemap(arginit, noblock=1) (double **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + $1 = (double**) malloc(sizeof(double*)); + $2 = (int*) malloc(sizeof(int)); + $3 = (int*) malloc(sizeof(int)); +} + +%typemap(freearg, noblock=1) (double **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + free(*$1); + free($1); + free($2); + free($3); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromDoubleArrayAndSize") (double **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + if (SWIG_SciDouble_FromDoubleArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), *$2, *$3, *$1) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +// out (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, double **OUT) + +%typemap(in, noblock=1, numinputs=0) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, double **OUT) +{ +} + +%typemap(arginit, noblock=1) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, double **OUT) +{ + $1 = (int*) malloc(sizeof(int)); + $2 = (int*) malloc(sizeof(int)); + $3 = (double**) malloc(sizeof(double*)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromDoubleArrayAndSize") (int *IN_ROWCOUNT, int *IN_COLCOUNT, double **OUT) +{ + if (SWIG_SciDouble_FromDoubleArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), *$1, *$2, *$3) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, double **OUT) +{ + free($1); + free($2); + free(*$3); + free($3); +} + + +// out (double **OUT, int *OUT_SIZE) + +%typemap(in, noblock=1, numinputs=0) (double **OUT, int *OUT_SIZE) +{ +} + +%typemap(arginit, noblock=1) (double **OUT, int *OUT_SIZE) +{ + $1 = (double**) malloc(sizeof(double*)); + $2 = (int*) malloc(sizeof(int)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromDoubleArrayAndSize") (double **OUT, int *OUT_SIZE) +{ + if (SWIG_SciDouble_FromDoubleArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, *$2, *$1) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (double **OUT, int *OUT_SIZE) +{ + free(*$1); + free($1); + free($2); +} + + +// out (int *OUT_SIZE, double **OUT) + +%typemap(in, noblock=1, numinputs=0) (int *OUT_SIZE, double **OUT) +{ +} + +%typemap(arginit, noblock=1) (int *OUT_SIZE, double **OUT) +{ + $1 = (int*) malloc(sizeof(int)); + $2 = (double**) malloc(sizeof(double*)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromDoubleArrayAndSize") (int *OUT_SIZE, double **OUT) +{ + if (SWIG_SciDouble_FromDoubleArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, *$1, *$2) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int *OUT_SIZE, double **OUT) +{ + free($1); + free(*$2); + free($2); +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixint.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixint.swg new file mode 100644 index 00000000..e304d4f6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scimatrixint.swg @@ -0,0 +1,175 @@ +/* + * C-type: int array + * Scilab type: 32-bit integer matrix + */ + +%include + +// in (int *IN, int IN_ROWCOUNT, int IN_COLCOUNT) + +%typemap(in, noblock=1, fragment="SWIG_SciDoubleOrInt32_AsIntArrayAndSize") (int *IN, int IN_ROWCOUNT, int IN_COLCOUNT) +{ + if (SWIG_SciDoubleOrInt32_AsIntArrayAndSize(pvApiCtx, $input, &$2, &$3, &$1, fname) != SWIG_OK) { + return SWIG_ERROR; + } +} + + +// in (int IN_ROWCOUNT, int IN_COLCOUNT, int *IN) + +%typemap(in, noblock=1, fragment="SWIG_SciDoubleOrInt32_AsIntArrayAndSize") (int IN_ROWCOUNT, int IN_COLCOUNT, int *IN) +{ + if (SWIG_SciDoubleOrInt32_AsIntArrayAndSize(pvApiCtx, $input, &$1, &$2, &$3, fname) != SWIG_OK) { + return SWIG_ERROR; + } +} + + +// in (int *IN, int IN_SIZE) + +%typemap(in, noblock=1, fragment="SWIG_SciDoubleOrInt32_AsIntArrayAndSize") (int *IN, int IN_SIZE) (int rowCount, int colCount) +{ + if (SWIG_SciDoubleOrInt32_AsIntArrayAndSize(pvApiCtx, $input, &rowCount, &colCount, &$1, fname) == SWIG_OK) { + $2 = rowCount * colCount; + } + else { + return SWIG_ERROR; + } +} + + +// in (int IN_SIZE, int *IN) + +%typemap(in, noblock=1, fragment="SWIG_SciDoubleOrInt32_AsIntArrayAndSize") (int IN_SIZE, int *IN) (int rowCount, int colCount) +{ + if (SWIG_SciDoubleOrInt32_AsIntArrayAndSize(pvApiCtx, $input, &rowCount, &colCount, &$2, fname) == SWIG_OK) { + $1 = rowCount * colCount; + } + else { + return SWIG_ERROR; + } +} + +// out (int **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) + +%typemap(in, noblock=1, numinputs=0) (int **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ +} + +%typemap(arginit, noblock=1) (int **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + $1 = (int**) malloc(sizeof(int*)); + $2 = (int*) malloc(sizeof(int)); + $3 = (int*) malloc(sizeof(int)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromIntArrayAndSize") (int **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + if (SWIG_SciDouble_FromIntArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), *$2, *$3, *$1) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT) +{ + free(*$1); + free($1); + free($2); + free($3); +} + + +// out (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, int **OUT) + +%typemap(in, noblock=1, numinputs=0) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, int **OUT) +{ +} + +%typemap(arginit, noblock=1) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, int **OUT) +{ + $1 = (int*) malloc(sizeof(int)); + $2 = (int*) malloc(sizeof(int)); + $3 = (int**) malloc(sizeof(int*)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromIntArrayAndSize") (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, int **OUT) +{ + if (SWIG_SciDouble_FromIntArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), *$1, *$2, *$3) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, int **OUT) +{ + free($1); + free($2); + free(*$3); + free($3); +} + + +// out (int **OUT, int *OUT_SIZE) + +%typemap(in, noblock=1, numinputs=0) (int **OUT, int *OUT_SIZE) +{ +} + +%typemap(arginit) (int **OUT, int *OUT_SIZE) +{ + $1 = (int**) malloc(sizeof(int*)); + $2 = (int*) malloc(sizeof(int)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromIntArrayAndSize") (int **OUT, int *OUT_SIZE) +{ + if (SWIG_SciDouble_FromIntArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, *$2, *$1) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int **OUT, int *OUT_SIZE) +{ + free(*$1); + free($1); + free($2); +} + + +// out (int *OUT_SIZE, int **OUT) + +%typemap(in, noblock=1, numinputs=0) (int *OUT_SIZE, int **OUT) +{ +} + +%typemap(arginit, noblock=1) (int *OUT_SIZE, int **OUT) +{ + $1 = (int*) malloc(sizeof(int)); + $2 = (int**) malloc(sizeof(int*)); +} + +%typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromIntArrayAndSize") (int *OUT_SIZE, int **OUT) +{ + if (SWIG_SciDouble_FromIntArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, *$1, *$2) == SWIG_OK) { + SWIG_Scilab_SetOutput(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition()); + } + else { + return SWIG_ERROR; + } +} + +%typemap(freearg, noblock=1) (int *IN_SIZE, int **OUT) +{ + free($1); + free(*$2); + free($2); +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scimisctypes.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scimisctypes.swg new file mode 100644 index 00000000..fe75e156 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scimisctypes.swg @@ -0,0 +1,69 @@ +// Other primitive such as size_t and ptrdiff_t + +/* + * C-type: size_t + * Scilab type: double or int32 + */ + +%fragment(SWIG_AsVal_frag(size_t), "header", fragment="SWIG_Int_AsSize") { +%#define SWIG_AsVal_size_t(scilabValue, valuePointer) SWIG_Int_AsSize(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_Int_AsSize", "header", fragment=SWIG_AsVal_frag(int)) +{ +SWIGINTERN int +SWIG_Int_AsSize(void *pvApiCtx, SwigSciObject iVar, size_t *piValue, char *fname) { + int iValue = 0; + if (SWIG_AsVal_dec(int)(iVar, &iValue) != SWIG_OK) + return SWIG_ERROR; + + if (piValue) + *piValue = (size_t) iValue; + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(size_t), "header", fragment="SWIG_Int_FromSize") { +%#define SWIG_From_size_t(scilabValue) SWIG_Int_FromSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_Int_FromSize", "header", fragment=SWIG_From_frag(int)) +{ +SWIGINTERN int +SWIG_Int_FromSize(void *pvApiCtx, int iVarOut, size_t iValue, char *fname) { + return SWIG_From_dec(int)((int)iValue); +} +} + +/* + * C-type: ptrdiff_t + * Scilab type: double or int32 + */ + +%fragment(SWIG_AsVal_frag(ptrdiff_t), "header", fragment="SWIG_Int_AsPtrDiff") { +%#define SWIG_AsVal_ptrdiff_t(scilabValue, valuePointer) SWIG_Int_AsPtrDiff(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_Int_AsPtrDiff", "header", fragment=SWIG_AsVal_frag(int)) +{ +SWIGINTERN int +SWIG_Int_AsPtrDiff(void *pvApiCtx, SwigSciObject iVar, ptrdiff_t *piValue, char *fname) { + int iValue = 0; + if (SWIG_AsVal_dec(int)(iVar, &iValue) != SWIG_OK) + return SWIG_ERROR; + + if (piValue) + *piValue = (ptrdiff_t) iValue; + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(ptrdiff_t), "header", fragment="SWIG_Int_FromPtrDiff") { +%#define SWIG_From_ptrdiff_t(scilabValue) SWIG_Int_FromPtrDiff(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_Int_FromPtrDiff", "header", fragment=SWIG_From_frag(int)) { +SWIGINTERN int +SWIG_Int_FromPtrDiff(void *pvApiCtx, int iVarOut, ptrdiff_t iValue, char *fname) { + return SWIG_From_dec(int)((int)iValue); +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scipointer.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scipointer.swg new file mode 100644 index 00000000..94ca4ef3 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scipointer.swg @@ -0,0 +1,32 @@ +/* + * POINTER + */ +%fragment("SWIG_ConvertPtr", "header") { +#define SWIG_ConvertPtr(scilabValue, voidPointer, pointerDescriptor, flags) SwigScilabPtrToObject(pvApiCtx, scilabValue, voidPointer, pointerDescriptor, flags, SWIG_Scilab_GetFuncName()) +} + +%fragment("SWIG_NewPointerObj", "header") { +#define SWIG_NewPointerObj(pointer, pointerDescriptor, flags) SwigScilabPtrFromObject(pvApiCtx, SWIG_Scilab_GetOutputPosition(), pointer, pointerDescriptor, flags, NULL) +} + +/* + * FUNCTION POINTER + */ +%fragment("SWIG_ConvertFunctionPtr", "header") { +#define SWIG_ConvertFunctionPtr(scilabValue, voidPointer, pointerDescriptor) SwigScilabPtrToObject(pvApiCtx, scilabValue, voidPointer, pointerDescriptor, 0, SWIG_Scilab_GetFuncName()) +} + +%fragment("SWIG_NewFunctionPtrObj", "header") { +#define SWIG_NewFunctionPtrObj(pointer, pointerDescriptor) SwigScilabPtrFromObject(pvApiCtx, SWIG_Scilab_GetOutputPosition(), pointer, pointerDescriptor, 0, NULL) +} +// No fragment used here, the functions "SwigScilabPtrToObject" and "SwigScilabPtrFromObject" are defined in sciruntime.swg + +/* + * C++ member pointers, ie, member methods + */ +%fragment("SWIG_NewMemberObj", "header") { +#define SWIG_NewMemberObj(ptr, sz, tp) SWIG_Scilab_NewMemberObj(pvApiCtx, $result, ptr, sz, tp) +} +%fragment("SWIG_ConvertMember", "header") { +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Scilab_ConvertPacked(pvApiCtx, obj, ptr, sz, ty, SWIG_Scilab_GetFuncName()) +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/sciprimtypes.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/sciprimtypes.swg new file mode 100644 index 00000000..b5e30d93 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/sciprimtypes.swg @@ -0,0 +1,23 @@ +%include +%include + +%include + +%include +%include + +%include +%include + +%include +%include + +%include +%include +%include + +%include + +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scirun.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scirun.swg new file mode 100644 index 00000000..51df9a59 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scirun.swg @@ -0,0 +1,534 @@ +/* ----------------------------------------------------------------------------- + * Scilab support runtime + * -----------------------------------------------------------------------------*/ + +/* Scilab version macro */ + +#include "version.h" +#define SWIG_SCILAB_VERSION (SCI_VERSION_MAJOR * 100) + (SCI_VERSION_MINOR * 10) + SCI_VERSION_MAINTENANCE + +/* Scilab standard headers */ + +#ifdef __cplusplus +extern "C" { +#endif +#include "api_scilab.h" +#if SWIG_SCILAB_VERSION < 540 +#define __USE_DEPRECATED_STACK_FUNCTIONS__ +#include "stack-c.h" +#endif +#if SWIG_SCILAB_VERSION < 600 +#include "MALLOC.h" +#endif +#include "Scierror.h" +#include "localization.h" +#include "freeArrayOfString.h" +#include +#include +#ifdef __cplusplus +} +#endif + +/* Gateway signature */ + +#if SWIG_SCILAB_VERSION >= 600 +#define SWIG_GatewayParameters char* fname, void *pvApiCtx +#define SWIG_GatewayArguments fname, pvApiCtx +#else +#define SWIG_GatewayParameters char* fname, unsigned long fname_len +#define SWIG_GatewayArguments fname, fname_len +#endif + +/* Function name management functions */ + +#include +static char *SwigFuncName = NULL; +static char *SWIG_Scilab_GetFuncName(void) { + return SwigFuncName; +} +static void SWIG_Scilab_SetFuncName(char *funcName) { + if (SwigFuncName != NULL) { + free(SwigFuncName); + SwigFuncName = NULL; + } + if (funcName) { + SwigFuncName = (char *)malloc(strlen(funcName) + 1); + if (SwigFuncName) + strcpy(SwigFuncName, funcName); + } +} + +/* Api context management functions */ + +#if SWIG_SCILAB_VERSION >= 600 +static void *pvApiCtx = NULL; +static void SWIG_Scilab_SetApiContext(void *apiCtx) { + pvApiCtx = apiCtx; +} +#else +#define SWIG_Scilab_SetApiContext(apiCtx) +#endif + +/* Argument management functions */ + +#if SWIG_SCILAB_VERSION >= 540 +#define SWIG_CheckInputArgument(pvApiCtx, minInputArgument, maxInputArgument) CheckInputArgument(pvApiCtx, minInputArgument, maxInputArgument) +#define SWIG_CheckInputArgumentAtLeast(pvApiCtx, minInputArgument) CheckInputArgumentAtLeast(pvApiCtx, minInputArgument) +#define SWIG_CheckOutputArgument(pvApiCtx, minOutputArgument, maxOutputArgument) CheckOutputArgument(pvApiCtx, minOutputArgument, maxOutputArgument) +#define SWIG_NbInputArgument(pvApiCtx) nbInputArgument(pvApiCtx) +#define SWIG_AssignOutputArgument(pvApiCtx, outputArgumentPos, argumentPos) AssignOutputVariable(pvApiCtx, outputArgumentPos) = argumentPos +#else +#define SWIG_CheckInputArgument(pvApiCtx, minInputArgument, maxInputArgument) CheckRhs(minInputArgument, maxInputArgument) +#define SWIG_CheckInputArgumentAtLeast(pvApiCtx, minInputArgument) CheckRhs(minInputArgument, 256) +#define SWIG_CheckOutputArgument(pvApiCtx, minOutputArgument, maxOutputArgument) CheckLhs(minOutputArgument, maxOutputArgument) +#define SWIG_NbInputArgument(pvApiCtx) Rhs +#define SWIG_AssignOutputArgument(pvApiCtx, outputArgumentPos, argumentPos) LhsVar(outputArgumentPos) = argumentPos +#endif + +typedef int SwigSciObject; + +static int SwigOutputPosition = -1; +static int SWIG_Scilab_GetOutputPosition(void) { + return SwigOutputPosition; +} +static void SWIG_Scilab_SetOutputPosition(int outputPosition) { + SwigOutputPosition = outputPosition; +} + +SWIGRUNTIME int +SWIG_Scilab_SetOutput(void *pvApiCtx, SwigSciObject output) { + int outputPosition = SWIG_Scilab_GetOutputPosition(); + if (outputPosition < 0) + return SWIG_ERROR; + SWIG_AssignOutputArgument(pvApiCtx, outputPosition, + SWIG_NbInputArgument(pvApiCtx) + outputPosition); + return SWIG_OK; +} + +/* Error functions */ + +#define SCILAB_API_ARGUMENT_ERROR 999 + +SWIGINTERN const char* +SWIG_Scilab_ErrorType(int code) { + switch(code) { + case SWIG_MemoryError: + return "MemoryError"; + case SWIG_IOError: + return "IOError"; + case SWIG_RuntimeError: + return "RuntimeError"; + case SWIG_IndexError: + return "IndexError"; + case SWIG_TypeError: + return "TypeError"; + case SWIG_DivisionByZero: + return "ZeroDivisionError"; + case SWIG_OverflowError: + return "OverflowError"; + case SWIG_SyntaxError: + return "SyntaxError"; + case SWIG_ValueError: + return "ValueError"; + case SWIG_SystemError: + return "SystemError"; + case SWIG_AttributeError: + return "AttributeError"; + default: + return "RuntimeError"; + } +} +#define SWIG_ErrorType(code) SWIG_Scilab_ErrorType(code) + +#ifndef SWIG_SCILAB_ERROR +#define SWIG_SCILAB_ERROR 20000 +#endif + +SWIGINTERN void +SWIG_Scilab_Error(int code, const char *msg) { + Scierror(SWIG_SCILAB_ERROR - code, _("SWIG/Scilab: %s: %s\n"), SWIG_Scilab_ErrorType(code), msg); +} + +#define SWIG_Error(code, msg) SWIG_Scilab_Error(code, msg) + +#define SWIG_fail return SWIG_ERROR; + +SWIGRUNTIME void +SWIG_Scilab_Raise_Ex(const char *obj, const char *type, swig_type_info *descriptor) { + if (type) { + if (obj) + Scierror(SWIG_SCILAB_ERROR, "SWIG/Scilab: Exception (%s) occurred: %s\n", type, obj); + else + Scierror(SWIG_SCILAB_ERROR, "SWIG/Scilab: Exception (%s) occurred.\n", type); + } +} + +SWIGRUNTIME void +SWIG_Scilab_Raise(const int obj, const char *type, swig_type_info *descriptor) { + Scierror(SWIG_SCILAB_ERROR, "SWIG/Scilab: Exception (%s) occurred.\n", type); +} + +/* Module initialization */ + +static int swig_module_initialized = 0; + +SWIGRUNTIME int +SWIG_Module_Initialized() { + return swig_module_initialized; +} + +/* Pointer conversion functions */ + +SWIGRUNTIME swig_type_info * +SWIG_Scilab_TypeQuery(const char *name); + +SWIGINTERN int +SwigScilabCheckPtr(void *pvApiCtx, int iVar, swig_type_info *descriptor, char *fname) { + SciErr sciErr; + int *piAddrVar = NULL; + int iType = 0; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_mlist) { + int iItemCount = 0; + void *pvTypeinfo = NULL; + + sciErr = getListItemNumber(pvApiCtx, piAddrVar, &iItemCount); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iItemCount < 3) { + return SWIG_ERROR; + } + + sciErr = getPointerInList(pvApiCtx, piAddrVar, 2, &pvTypeinfo); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (descriptor) { + swig_cast_info *cast = SWIG_TypeCheck(SWIG_TypeName((swig_type_info*)pvTypeinfo), descriptor); + return (cast != NULL); + } + else { + return SWIG_ERROR; + } + } + else { + return (iType == sci_pointer); + } +} + +SWIGINTERN int +SwigScilabPtrToObject(void *pvApiCtx, int iVar, void **pvObj, swig_type_info *descriptor, int flags, char *fname) { + SciErr sciErr; + int *piAddrVar = NULL; + int iType = 0; + void *pvPtr = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_mlist) { + int iItemCount = 0; + void *pvTypeinfo = NULL; + + sciErr = getListItemNumber(pvApiCtx, piAddrVar, &iItemCount); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iItemCount < 3) { + return SWIG_ERROR; + } + + sciErr = getPointerInList(pvApiCtx, piAddrVar, 2, &pvTypeinfo); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getPointerInList(pvApiCtx, piAddrVar, 3, &pvPtr); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (pvPtr) { + if (descriptor) { + swig_cast_info *cast = SWIG_TypeCheck(SWIG_TypeName((swig_type_info *)pvTypeinfo), descriptor); + if (cast) { + int newmemory = 0; + pvPtr = SWIG_TypeCast(cast, pvPtr, &newmemory); + // TODO newmemory + } + else { + return SWIG_ERROR; + } + } + } + } + else if (iType == sci_pointer) { + sciErr = getPointer(pvApiCtx, piAddrVar, &pvPtr); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + return SWIG_ERROR; + } + + if (pvObj) { + *pvObj = pvPtr; + if (pvPtr) + return SWIG_OK; + else + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } + else { + return SWIG_ERROR; + } +} + +SWIGRUNTIMEINLINE int +SwigScilabPtrFromObject(void *pvApiCtx, int iVarOut, void *pvObj, swig_type_info *descriptor, int flags, const char *pstTypeName) { + SciErr sciErr; + + if (descriptor) { + int *piMListAddr = NULL; + + sciErr = createMList(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, 3, &piMListAddr); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (pstTypeName == NULL) { + pstTypeName = SWIG_TypeName(descriptor); + } + + sciErr = createMatrixOfStringInList(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, piMListAddr, 1, 1, 1, &pstTypeName); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = createPointerInList(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, piMListAddr, 2, descriptor); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = createPointerInList(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, piMListAddr, 3, pvObj); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + sciErr = createPointer(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, pvObj); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + + return SWIG_OK; +} + +/* Pointer argument conversions */ + + +SWIGRUNTIME int +SWIG_Scilab_ConvertPacked(void *pvApiCtx, int iVar, void *ptr, int sz, swig_type_info *ty, char *fname) { + swig_cast_info *tc; + int *piAddrVar = NULL; + char *pstString = NULL; + char *pstStringPtr = NULL; + SciErr sciErr; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (getAllocatedSingleString(pvApiCtx, piAddrVar, &pstString)) { + return SWIG_ERROR; + } + + /* Pointer values must start with leading underscore */ + if (*pstString != '_') { + freeAllocatedSingleString(pstString); + return SWIG_ERROR; + } + + pstStringPtr = pstString; + pstStringPtr++; + pstStringPtr = (char*)SWIG_UnpackData(pstStringPtr, ptr, sz); + + if (ty) { + if (!pstStringPtr) { + freeAllocatedSingleString(pstString); + return SWIG_ERROR; + } + tc = SWIG_TypeCheck(pstStringPtr, ty); + if (!tc) { + freeAllocatedSingleString(pstString); + return SWIG_ERROR; + } + } + + freeAllocatedSingleString(pstString); + return SWIG_OK; +} + +SWIGRUNTIME int +SWIG_Scilab_NewMemberObj(void *pvApiCtx, int iVarOut, void *ptr, int sz, swig_type_info *type) { + char result[1024]; + char *r = result; + + if ((2*sz + 1 + strlen(type->name)) > 1000) { + return SWIG_ERROR; + } + *(r++) = '_'; + r = SWIG_PackData(r, ptr, sz); + strcpy(r, type->name); + + if (createSingleString(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, &result[0])) + return SWIG_ERROR; + + return SWIG_OK; +} + + + + +/* + * Pointer utility functions + */ + +#include + +#ifdef __cplusplus +extern "C" +#endif +int SWIG_this(SWIG_GatewayParameters) { + void *ptrValue = NULL; + if (SwigScilabPtrToObject(pvApiCtx, 1, &ptrValue, NULL, 0, fname) == SWIG_OK) { + SWIG_Scilab_SetOutputPosition(1); + return SWIG_Scilab_SetOutput(pvApiCtx, + createScalarDouble(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + 1, + (double)(uintptr_t)ptrValue)); + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Incorrect value for input argument #%d: The value is not a pointer.\n"), fname, 1); + return SWIG_ERROR; + } +} + +#ifdef __cplusplus +extern "C" +#endif +int SWIG_ptr(SWIG_GatewayParameters) { + if (SWIG_NbInputArgument(pvApiCtx) > 0) { + SciErr sciErr; + int *piAddrVar1 = NULL; + int iTypeVar1 = 0; + char *pstInputPtrTypeName = NULL; + char *pstOutputMListTypeName = NULL; + if (SWIG_NbInputArgument(pvApiCtx) > 2) { + int *piAddrVar2 = NULL; + int *piAddrVar3 = NULL; + sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddrVar2); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (getAllocatedSingleString(pvApiCtx, piAddrVar2, &pstInputPtrTypeName)) { + return SWIG_ERROR; + } + sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddrVar3); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (getAllocatedSingleString(pvApiCtx, piAddrVar3, &pstOutputMListTypeName)) { + return SWIG_ERROR; + } + } + + sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrVar1); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + sciErr = getVarType(pvApiCtx, piAddrVar1, &iTypeVar1); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if ((iTypeVar1 == sci_pointer) || (iTypeVar1 == sci_mlist)) { + void *ptrValue = NULL; + if (SwigScilabPtrToObject(pvApiCtx, 1, &ptrValue, SWIG_Scilab_TypeQuery(pstInputPtrTypeName), 0, (char *) "SWIG_ptr") == SWIG_OK) { + SWIG_Scilab_SetOutputPosition(1); + return SWIG_Scilab_SetOutput(pvApiCtx, + SwigScilabPtrFromObject(pvApiCtx, 1, ptrValue, SWIG_Scilab_TypeQuery(pstInputPtrTypeName), 0, pstOutputMListTypeName)); + } + else { + return SWIG_ERROR; + } + } + else if (iTypeVar1 == sci_matrix) { + double dValue = 0; + if (getScalarDouble(pvApiCtx, piAddrVar1, &dValue) == 0) { + if (dValue != (uintptr_t)dValue) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Incorrect value for input argument #%d: The double value cannot be converted to a pointer.\n"), fname, 1); + return SWIG_ValueError; + } + if ((dValue < 0) || (dValue > ULONG_MAX)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Overflow error for input argument #%d: The double value cannot be converted to a pointer.\n"), fname, 1); + return SWIG_OverflowError; + } + SWIG_Scilab_SetOutputPosition(1); + return SWIG_Scilab_SetOutput(pvApiCtx, + SwigScilabPtrFromObject(pvApiCtx, 1, (void *) (uintptr_t)dValue, SWIG_Scilab_TypeQuery(pstInputPtrTypeName), 0, pstOutputMListTypeName)); + } + else { + return SWIG_TypeError; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A mlist, pointer or a double expected.\n"), (char *) "SWIG_ptr", 1); + return SWIG_TypeError; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: A mlist, pointer, or a double expected.\n"), "SWIG_ptr", 1); + return SWIG_TypeError; + } +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/sciruntime.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/sciruntime.swg new file mode 100644 index 00000000..3de138e1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/sciruntime.swg @@ -0,0 +1,47 @@ +%insert(runtime) "swigrun.swg"; +%insert(runtime) "swigerrors.swg"; + +%insert(runtime) "scirun.swg"; + +%insert(init) %{ +/* Module management functions */ + +#define SWIG_GetModule(clientdata) SWIG_Scilab_GetModule() +#define SWIG_SetModule(clientdata, pointer) SWIG_Scilab_SetModule(pointer) + +SWIGRUNTIME swig_module_info* +SWIG_Scilab_GetModule(void) { + return NULL; +} + +SWIGRUNTIME void +SWIG_Scilab_SetModule(swig_module_info *swig_module) { +} +%} + +%insert(init) "swiginit.swg" + +%insert(init) %{ +SWIGRUNTIME swig_type_info * +SWIG_Scilab_TypeQuery(const char *name) { + if (SWIG_Module_Initialized()) { + if (name) { + return SWIG_TypeQuery(name); + } + } + else { + SWIG_Error(SWIG_RuntimeError, "the module is not initialized"); + } + return NULL; +} +%} + +%insert(init) %{ +#ifdef __cplusplus +extern "C" +#endif +int _Init(SWIG_GatewayParameters) { + SWIG_InitializeModule(NULL); + SWIG_CreateScilabVariables(pvApiCtx); + swig_module_initialized = 1; +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scisequence.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequence.swg new file mode 100644 index 00000000..5fe0fdbe --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequence.swg @@ -0,0 +1,195 @@ +/* + * + * Scilab sequence conversions + * + */ + +#define SWIG_Traits_Sequence_frag(Type) %fragment_name(AsVal_Traits_Sequence, Type) + +#define SWIG_AsCheck_Sequence_frag(Type...) %fragment_name(AsCheck_Sequence, Type) +#define SWIG_AsCheck_Sequence_dec(Type...) %symbol_name(AsCheck_Sequence, Type) +#define SWIG_AsGet_Sequence_frag(Type...) %fragment_name(AsGet_Sequence, Type) +#define SWIG_AsGet_Sequence_dec(Type...) %symbol_name(AsGet_Sequence, Type) +#define SWIG_AsSize_Sequence_frag(Type...) %fragment_name(AsSize_Sequence, Type) +#define SWIG_AsSize_Sequence_dec(Type...) %symbol_name(AsSize_Sequence, Type) +#define SWIG_FromCreate_Sequence_frag(Type...) %fragment_name(FromCreate_Sequence, Type) +#define SWIG_FromCreate_Sequence_dec(Type...) %symbol_name(FromCreate_Sequence, Type) +#define SWIG_FromSet_Sequence_frag(Type...) %fragment_name(FromSet_Sequence, Type) +#define SWIG_FromSet_Sequence_dec(Type...) %symbol_name(FromSet_Sequence, Type) + +#define SWIG_Traits_SequenceItem_frag(Type) %fragment_name(AsVal_Traits_SequenceItem, Type) +#define SWIG_AsVal_SequenceItem_frag(Type...) %fragment_name(AsVal_SequenceItem, Type) +#define SWIG_AsVal_SequenceItem_dec(Type...) %symbol_name(AsVal_SequenceItem, Type) +#define SWIG_From_SequenceItem_frag(Type...) %fragment_name(From_SequenceItem, Type) +#define SWIG_From_SequenceItem_dec(Type...) %symbol_name(From_SequenceItem, Type) + +%include +%include +%include +%include +%include +%include + +// +// Sequence conversion +// + +%fragment(SWIG_Traits_Sequence_frag(ptr), "header", + fragment=SWIG_AsCheck_Sequence_frag(ptr), + fragment=SWIG_AsGet_Sequence_frag(ptr), + fragment=SWIG_AsSize_Sequence_frag(ptr), + fragment=SWIG_FromCreate_Sequence_frag(ptr), + fragment=SWIG_FromSet_Sequence_frag(ptr), + fragment="StdTraits", + fragment="") { + +namespace swig { + // Error returned for sequence containers of default item type + template struct traits_as_sequence { + static int check(SwigSciObject obj) { + throw std::invalid_argument("The container data type is not supported."); + } + static int get(SwigSciObject obj, void **sequence) { + throw std::invalid_argument("The container data type is not supported."); + } + static int size(SwigSciObject obj, int *size) { + throw std::invalid_argument("The container data type is not supported."); + } + }; + template struct traits_from_sequence { + static int create(int size, void **sequence) { + throw std::invalid_argument("The container data type is not supported."); + } + static SwigSciObject set(int size, void *sequence) { + throw std::invalid_argument("The container data type is not supported."); + } + }; + + // Support sequence containers of pointers + template struct traits_as_sequence { + static int check(SwigSciObject obj) { + return SWIG_AsCheck_Sequence_dec(ptr)(obj); + } + static int get(SwigSciObject obj, void **sequence) { + return SWIG_AsGet_Sequence_dec(ptr)(obj, (int **)sequence); + } + static int size(SwigSciObject obj, int *size) { + return SWIG_AsSize_Sequence_dec(ptr)(obj, size); + } + }; + template struct traits_from_sequence { + static int create(int size, void **sequence) { + return SWIG_FromCreate_Sequence_dec(ptr)(size, (uintptr_t **)sequence); + } + static SwigSciObject set(int size, void *sequence) { + return SWIG_FromSet_Sequence_dec(ptr)(size, (uintptr_t *)sequence); + } + }; +} +} + +%define %traits_sequence(CppType, ScilabType) + %fragment(SWIG_Traits_Sequence_frag(CppType), "header", + fragment=SWIG_Traits_Sequence_frag(ptr), + fragment=SWIG_AsCheck_Sequence_frag(CppType), + fragment=SWIG_AsGet_Sequence_frag(CppType), + fragment=SWIG_AsSize_Sequence_frag(CppType), + fragment=SWIG_FromCreate_Sequence_frag(CppType), + fragment=SWIG_FromSet_Sequence_frag(CppType)) { + +namespace swig { + template <> struct traits_as_sequence { + static int check(SwigSciObject obj) { + return SWIG_AsCheck_Sequence_dec(CppType)(obj); + } + static int get(SwigSciObject obj, void **sequence) { + return SWIG_AsGet_Sequence_dec(CppType)(obj, (ScilabType **)sequence); + } + static int size(SwigSciObject obj, int *size) { + return SWIG_AsSize_Sequence_dec(CppType)(obj, size); + } + }; + template <> struct traits_from_sequence { + static int create(int size, void **sequence) { + return SWIG_FromCreate_Sequence_dec(CppType)(size, (ScilabType **)sequence); + } + static SwigSciObject set(int size, void *sequence) { + return SWIG_FromSet_Sequence_dec(CppType)(size, (ScilabType *)sequence); + } + }; +} +} +%enddef + + +// +// Sequence item conversion +// + +%fragment(SWIG_Traits_SequenceItem_frag(ptr), "header", + fragment=SWIG_AsVal_SequenceItem_frag(ptr), + fragment=SWIG_From_SequenceItem_frag(ptr), + fragment="StdTraits", + fragment="") { + +namespace swig { + // Error returned for sequence containers of default item type + template struct traits_asval_sequenceitem { + static T asval(SwigSciObject obj, void *pSequence, int iItemIndex) { + throw std::invalid_argument("The container data type is not supported."); + } + }; + template struct traits_from_sequenceitem { + static int from(void *pSequence, int iItemIndex, T itemValue) { + throw std::invalid_argument("The container data type is not supported."); + } + }; + + // Support sequence containers of pointers + template struct traits_asval_sequenceitem { + static T* asval(SwigSciObject obj, void *pSequence, int iItemIndex) { + return static_cast(SWIG_AsVal_SequenceItem_dec(ptr)(obj, (int *)pSequence, iItemIndex)); + } + }; + template struct traits_from_sequenceitem { + static int from(void *pSequence, int iItemIndex, T *itemValue) { + return SWIG_From_SequenceItem_dec(ptr)((uintptr_t *)pSequence, iItemIndex, (uintptr_t) itemValue); + } + }; +} +} + +%define %traits_sequenceitem(CppType, ScilabType) + %fragment(SWIG_Traits_SequenceItem_frag(CppType), "header", + fragment=SWIG_Traits_SequenceItem_frag(ptr), + fragment=SWIG_AsVal_SequenceItem_frag(CppType), + fragment=SWIG_From_SequenceItem_frag(CppType)) { + +namespace swig { + template <> struct traits_asval_sequenceitem { + static CppType asval(SwigSciObject obj, void *pSequence, int iItemIndex) { + return SWIG_AsVal_SequenceItem_dec(CppType)(obj, (ScilabType *)pSequence, iItemIndex); + } + }; + template <> struct traits_from_sequenceitem { + static int from(void *pSequence, int iItemIndex, CppType itemValue) { + return SWIG_From_SequenceItem_dec(CppType)((ScilabType *)pSequence, iItemIndex, itemValue); + } + }; +} +} +%enddef + +%define %add_traits_sequence(CppType, ScilabType) + %traits_sequence(CppType, ScilabType); + %fragment(SWIG_Traits_Sequence_frag(CppType)); + %traits_sequenceitem(CppType, ScilabType); + %fragment(SWIG_Traits_SequenceItem_frag(CppType)); +%enddef + +%add_traits_sequence(int, int); +%add_traits_sequence(double, double); +%add_traits_sequence(float, float); +%add_traits_sequence(std::string, char*); +%add_traits_sequence(bool, int); + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencebool.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencebool.swg new file mode 100644 index 00000000..b7d07844 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencebool.swg @@ -0,0 +1,98 @@ +/* + * + * Scilab matrix of bool <-> C++ bool container + * + */ + +%include + +%fragment(SWIG_AsCheck_Sequence_frag(bool), "header") { + +SWIGINTERN int +SWIG_AsCheck_Sequence_dec(bool)(SwigSciObject obj) { + SciErr sciErr; + int *piAddrVar; + + sciErr = getVarAddressFromPosition(pvApiCtx, obj, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isBooleanType(pvApiCtx, piAddrVar)) { + return SWIG_OK; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A boolean is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_AsGet_Sequence_frag(bool), "header", + fragment="SWIG_SciBoolean_AsIntArrayAndSize") { + +SWIGINTERN int +SWIG_AsGet_Sequence_dec(bool)(SwigSciObject obj, int **pSequence) { + int iMatrixRowCount; + int iMatrixColCount; + return (SWIG_SciBoolean_AsIntArrayAndSize(pvApiCtx, obj, &iMatrixRowCount, &iMatrixColCount, pSequence, SWIG_Scilab_GetFuncName())); +} +} + +%fragment(SWIG_AsSize_Sequence_frag(bool), "header", + fragment="SWIG_SciBoolean_AsIntArrayAndSize") { + +SWIGINTERN int +SWIG_AsSize_Sequence_dec(bool)(SwigSciObject obj, int *piSize) { + int *piMatrix; + int iMatrixRowCount; + int iMatrixColCount; + if (SWIG_SciBoolean_AsIntArrayAndSize(pvApiCtx, obj, &iMatrixRowCount, &iMatrixColCount, &piMatrix, SWIG_Scilab_GetFuncName()) == SWIG_OK) { + if ((iMatrixRowCount > 1) && (iMatrixColCount > 1)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: An integer vector is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } + *piSize = iMatrixRowCount * iMatrixColCount; + return SWIG_OK; + } + return SWIG_ERROR; +} +} + +%fragment(SWIG_FromCreate_Sequence_frag(bool), "header") { + +SWIGINTERN int +SWIG_FromCreate_Sequence_dec(bool)(int size, int **pSequence) { + *pSequence = new int[size]; + return *pSequence != NULL ? SWIG_OK : SWIG_ERROR; +} +} + +%fragment(SWIG_FromSet_Sequence_frag(bool), "header", + fragment="SWIG_SciBoolean_FromIntArrayAndSize") { + +SWIGINTERN SwigSciObject +SWIG_FromSet_Sequence_dec(bool)(int size, int *pSequence) { + SwigSciObject obj = SWIG_SciBoolean_FromIntArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, size, pSequence); + delete (int *)pSequence; + return obj; +} +} + +%fragment(SWIG_AsVal_SequenceItem_frag(bool), "header") { + +SWIGINTERN bool +SWIG_AsVal_SequenceItem_dec(bool)(SwigSciObject obj, int *pSequence, int iItemIndex) { + return (bool) pSequence[iItemIndex]; +} +} + +%fragment(SWIG_From_SequenceItem_frag(bool), "header") { + +SWIGINTERN int +SWIG_From_SequenceItem_dec(bool)(int *pSequence, int iItemIndex, bool itemValue) { + pSequence[iItemIndex] = itemValue; + return SWIG_OK; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencedouble.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencedouble.swg new file mode 100644 index 00000000..29cc52d6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencedouble.swg @@ -0,0 +1,99 @@ +/* + * + * Scilab matrix of double <-> C++ double container + * + */ + +%include + +%fragment(SWIG_AsCheck_Sequence_frag(double), "header") { + +SWIGINTERN int +SWIG_AsCheck_Sequence_dec(double)(SwigSciObject obj) { + SciErr sciErr; + int *piAddrVar; + + sciErr = getVarAddressFromPosition(pvApiCtx, obj, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isDoubleType(pvApiCtx, piAddrVar)) { + return SWIG_OK; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A double is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_AsGet_Sequence_frag(double), "header", + fragment="SWIG_SciDouble_AsDoubleArrayAndSize") { + +SWIGINTERN int +SWIG_AsGet_Sequence_dec(double)(SwigSciObject obj, double **pSequence) { + int iMatrixRowCount; + int iMatrixColCount; + return (SWIG_SciDouble_AsDoubleArrayAndSize(pvApiCtx, obj, &iMatrixRowCount, &iMatrixColCount, pSequence, SWIG_Scilab_GetFuncName())); +} +} + +%fragment(SWIG_AsSize_Sequence_frag(double), "header", + fragment="SWIG_SciDouble_AsDoubleArrayAndSize") { + +SWIGINTERN int +SWIG_AsSize_Sequence_dec(double)(SwigSciObject obj, int *piSize) { + double *pdblMatrix; + int iMatrixRowCount; + int iMatrixColCount; + if (SWIG_SciDouble_AsDoubleArrayAndSize(pvApiCtx, obj, &iMatrixRowCount, &iMatrixColCount, &pdblMatrix, SWIG_Scilab_GetFuncName()) == SWIG_OK) { + if ((iMatrixRowCount > 1) && (iMatrixColCount > 1)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A double vector is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } + *piSize = iMatrixRowCount * iMatrixColCount; + return SWIG_OK; + } + return SWIG_ERROR; +} +} + +%fragment(SWIG_FromCreate_Sequence_frag(double), "header") { + +SWIGINTERN int +SWIG_FromCreate_Sequence_dec(double)(int size, double **pSequence) { + *pSequence = new double[size]; + return *pSequence != NULL ? SWIG_OK : SWIG_ERROR; +} +} + +%fragment(SWIG_FromSet_Sequence_frag(double), "header", + fragment="SWIG_SciDouble_FromDoubleArrayAndSize") { + +SWIGINTERN SwigSciObject +SWIG_FromSet_Sequence_dec(double)(int size, double *pSequence) { + SwigSciObject obj = SWIG_SciDouble_FromDoubleArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, size, pSequence); + delete (double *)pSequence; + return obj; +} +} + +%fragment(SWIG_AsVal_SequenceItem_frag(double), "header") { + +SWIGINTERN double +SWIG_AsVal_SequenceItem_dec(double)(SwigSciObject obj, double *pSequence, int iItemIndex) { + return pSequence[iItemIndex]; +} +} + +%fragment(SWIG_From_SequenceItem_frag(double), "header") { + +SWIGINTERN int +SWIG_From_SequenceItem_dec(double)(double *pSequence, int iItemIndex, double itemValue) { + pSequence[iItemIndex] = itemValue; + return SWIG_OK; +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencefloat.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencefloat.swg new file mode 100644 index 00000000..41d37e55 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencefloat.swg @@ -0,0 +1,98 @@ +/* + * + * Scilab matrix of float <-> C++ float container + * + */ + +%include + +%fragment(SWIG_AsCheck_Sequence_frag(float), "header") { + +SWIGINTERN int +SWIG_AsCheck_Sequence_dec(float)(SwigSciObject obj) { + SciErr sciErr; + int *piAddrVar; + + sciErr = getVarAddressFromPosition(pvApiCtx, obj, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isDoubleType(pvApiCtx, piAddrVar)) { + return SWIG_OK; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A double is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_AsGet_Sequence_frag(float), "header", + fragment="SWIG_SciDouble_AsFloatArrayAndSize") { + +SWIGINTERN int +SWIG_AsGet_Sequence_dec(float)(SwigSciObject obj, float **pSequence) { + int iMatrixRowCount; + int iMatrixColCount; + return (SWIG_SciDouble_AsFloatArrayAndSize(pvApiCtx, obj, &iMatrixRowCount, &iMatrixColCount, pSequence, SWIG_Scilab_GetFuncName())); +} +} + +%fragment(SWIG_AsSize_Sequence_frag(float), "header", + fragment="SWIG_SciDouble_AsFloatArrayAndSize") { + +SWIGINTERN int +SWIG_AsSize_Sequence_dec(float)(SwigSciObject obj, int *piSize) { + float *pdblMatrix; + int iMatrixRowCount; + int iMatrixColCount; + if (SWIG_SciDouble_AsFloatArrayAndSize(pvApiCtx, obj, &iMatrixRowCount, &iMatrixColCount, &pdblMatrix, SWIG_Scilab_GetFuncName()) == SWIG_OK) { + if ((iMatrixRowCount > 1) && (iMatrixColCount > 1)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A float vector is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } + *piSize = iMatrixRowCount * iMatrixColCount; + return SWIG_OK; + } + return SWIG_ERROR; +} +} + +%fragment(SWIG_FromCreate_Sequence_frag(float), "header") { + +SWIGINTERN int +SWIG_FromCreate_Sequence_dec(float)(int size, float **pSequence) { + *pSequence = new float[size]; + return *pSequence != NULL ? SWIG_OK : SWIG_ERROR; +} +} + +%fragment(SWIG_FromSet_Sequence_frag(float), "header", + fragment="SWIG_SciDouble_FromFloatArrayAndSize") { + +SWIGINTERN SwigSciObject +SWIG_FromSet_Sequence_dec(float)(int size, float *pSequence) { + SwigSciObject obj = SWIG_SciDouble_FromFloatArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, size, pSequence); + delete (float *)pSequence; + return obj; +} +} + +%fragment(SWIG_AsVal_SequenceItem_frag(float), "header") { + +SWIGINTERN float +SWIG_AsVal_SequenceItem_dec(float)(SwigSciObject obj, float *pSequence, int iItemIndex) { + return pSequence[iItemIndex]; +} +} + +%fragment(SWIG_From_SequenceItem_frag(float), "header") { +SWIGINTERN int +SWIG_From_SequenceItem_dec(float)(float *pSequence, int iItemIndex, float itemValue) { + pSequence[iItemIndex] = itemValue; + return SWIG_OK; +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scisequenceint.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequenceint.swg new file mode 100644 index 00000000..3a9f7bf6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequenceint.swg @@ -0,0 +1,104 @@ +/* + * + * Scilab matrix of int <-> C++ int container + * + */ + +%include + +%fragment(SWIG_AsCheck_Sequence_frag(int), "header") { + +SWIGINTERN int +SWIG_AsCheck_Sequence_dec(int)(SwigSciObject obj) { + SciErr sciErr; + int *piAddrVar; + int iType = 0; + + sciErr = getVarAddressFromPosition(pvApiCtx, obj, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if ((iType == sci_matrix) || (iType == sci_ints)) { + return SWIG_OK; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: An integer is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_AsGet_Sequence_frag(int), "header", + fragment="SWIG_SciDoubleOrInt32_AsIntArrayAndSize") { +SWIGINTERN int +SWIG_AsGet_Sequence_dec(int)(SwigSciObject obj, int **pSequence) { + int iMatrixRowCount; + int iMatrixColCount; + return (SWIG_SciDoubleOrInt32_AsIntArrayAndSize(pvApiCtx, obj, &iMatrixRowCount, &iMatrixColCount, pSequence, SWIG_Scilab_GetFuncName())); +} +} + +%fragment(SWIG_AsSize_Sequence_frag(int), "header", + fragment="SWIG_SciDoubleOrInt32_AsIntArrayAndSize") { + +SWIGINTERN int +SWIG_AsSize_Sequence_dec(int)(SwigSciObject obj, int *piSize) { + int *piMatrix; + int iMatrixRowCount; + int iMatrixColCount; + if (SWIG_SciDoubleOrInt32_AsIntArrayAndSize(pvApiCtx, obj, &iMatrixRowCount, &iMatrixColCount, &piMatrix, SWIG_Scilab_GetFuncName()) == SWIG_OK) { + if ((iMatrixRowCount > 1) && (iMatrixColCount > 1)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: An integer vector is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } + *piSize = iMatrixRowCount * iMatrixColCount; + return SWIG_OK; + } + return SWIG_ERROR; +} +} + +%fragment(SWIG_FromCreate_Sequence_frag(int), "header") { + +SWIGINTERN int +SWIG_FromCreate_Sequence_dec(int)(int size, int **pSequence) { + *pSequence = new int[size]; + return *pSequence != NULL ? SWIG_OK : SWIG_ERROR; +} +} + +%fragment(SWIG_FromSet_Sequence_frag(int), "header", + fragment="SWIG_SciDouble_FromIntArrayAndSize") { + +SWIGINTERN SwigSciObject +SWIG_FromSet_Sequence_dec(int)(int size, int *pSequence) { + SwigSciObject obj = SWIG_SciDouble_FromIntArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, size, pSequence); + delete (int *)pSequence; + return obj; +} +} + +%fragment(SWIG_AsVal_SequenceItem_frag(int), "header") { + +SWIGINTERN int +SWIG_AsVal_SequenceItem_dec(int)(SwigSciObject obj, int *pSequence, int iItemIndex) { + return pSequence[iItemIndex]; +} +} + +%fragment(SWIG_From_SequenceItem_frag(int), "header") { + +SWIGINTERN int +SWIG_From_SequenceItem_dec(int)(int *pSequence, int iItemIndex, int itemValue) { + pSequence[iItemIndex] = itemValue; + return SWIG_OK; +} +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencepointer.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencepointer.swg new file mode 100644 index 00000000..b3618e94 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scisequencepointer.swg @@ -0,0 +1,123 @@ +/* + * + * Scilab list of pointer <-> C++ pointer container + * + */ + +%include + +%fragment("", "header") { +%#include +} + +%fragment(SWIG_AsCheck_Sequence_frag(ptr), "header", + fragment="SWIG_ScilabList") { + +SWIGINTERN int +SWIG_AsCheck_Sequence_dec(ptr)(SwigSciObject obj) { + return SWIG_CheckScilabList(obj); +} +} + +%fragment(SWIG_AsGet_Sequence_frag(ptr), "header", + fragment="SWIG_ScilabList") { + +SWIGINTERN int +SWIG_AsGet_Sequence_dec(ptr)(SwigSciObject obj, int **piSequence) { + return SWIG_GetScilabList(obj, piSequence); +} +} + +%fragment(SWIG_AsSize_Sequence_frag(ptr), "header", + fragment="SWIG_ScilabList") { + +SWIGINTERN int +SWIG_AsSize_Sequence_dec(ptr)(SwigSciObject obj, int *piSize) { + return SWIG_GetScilabListSize(obj, piSize); +} +} + +%fragment(SWIG_FromCreate_Sequence_frag(ptr), "header", + fragment="") { + +SWIGINTERN int +SWIG_FromCreate_Sequence_dec(ptr)(int size, uintptr_t **pSequence) { + *pSequence = new uintptr_t[size]; + return *pSequence != NULL ? SWIG_OK : SWIG_ERROR; +} +} + +%fragment(SWIG_FromSet_Sequence_frag(ptr), "header", + fragment="") { + +SWIGINTERN SwigSciObject +SWIG_FromSet_Sequence_dec(ptr)(int size, uintptr_t *pSequence) { + SciErr sciErr; + int *piListAddr; + + int iVarOut = SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition(); + + sciErr = createList(pvApiCtx, iVarOut, size, &piListAddr); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + for (int i=0; i C++ std::string container + * + */ + +%include + +%fragment(SWIG_AsCheck_Sequence_frag(std::string), "header") { + +SWIGINTERN int +SWIG_AsCheck_Sequence_dec(std::string)(SwigSciObject obj) { + SciErr sciErr; + int *piAddrVar; + + sciErr = getVarAddressFromPosition(pvApiCtx, obj, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (isStringType(pvApiCtx, piAddrVar)) { + return SWIG_OK; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A string is expected.\n"), SWIG_Scilab_GetFuncName(), obj); + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_AsGet_Sequence_frag(std::string), "header", + fragment="SWIG_SciString_AsCharPtrArrayAndSize") { + +SWIGINTERN int +SWIG_AsGet_Sequence_dec(std::string)(SwigSciObject obj, char ***pSequence) { + int iRows = 0; + int iCols = 0; + return (SWIG_SciString_AsCharPtrArrayAndSize(pvApiCtx, obj, &iRows, &iCols, pSequence, SWIG_Scilab_GetFuncName())); +} +} + +%fragment(SWIG_AsSize_Sequence_frag(std::string), "header", + fragment="SWIG_SciString_AsCharPtrArrayAndSize") { + +SWIGINTERN int +SWIG_AsSize_Sequence_dec(std::string)(SwigSciObject obj, int *piSize) { + char **pstMatrix; + int iCols = 0; + int iRows = 0; + if (SWIG_SciString_AsCharPtrArrayAndSize(pvApiCtx, obj, &iRows, &iCols, &pstMatrix, SWIG_Scilab_GetFuncName()) == SWIG_OK) { + *piSize = iRows * iCols; + return SWIG_OK; + } + return SWIG_ERROR; +} +} + +%fragment(SWIG_FromCreate_Sequence_frag(std::string), "header") { + +SWIGINTERN int +SWIG_FromCreate_Sequence_dec(std::string)(int size, char ***pSequence) { + *pSequence = new char*[size]; + return *pSequence != NULL ? SWIG_OK : SWIG_ERROR; +} +} + +%fragment(SWIG_FromSet_Sequence_frag(std::string), "header", + fragment="SWIG_SciString_FromCharPtrArrayAndSize") { + +SWIGINTERN SwigSciObject +SWIG_FromSet_Sequence_dec(std::string)(int size, char **pSequence) { + SwigSciObject obj = SWIG_SciString_FromCharPtrArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, size, pSequence); + delete (char **)pSequence; + return obj; +} +} + +%fragment(SWIG_AsVal_SequenceItem_frag(std::string), "header") { + +SWIGINTERN std::string +SWIG_AsVal_SequenceItem_dec(std::string)(SwigSciObject obj, char **pSequence, int iItemIndex) { + return std::string(pSequence[iItemIndex]); +} +} + +%fragment(SWIG_From_SequenceItem_frag(std::string), "header") { + +SWIGINTERN int +SWIG_From_SequenceItem_dec(std::string)(char **pSequence, int iItemIndex, std::string itemValue) { + char *pChar = new char((int) itemValue.size() + 1); + strcpy(pChar, itemValue.c_str()); + pSequence[iItemIndex] = pChar; + return SWIG_OK; +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scishort.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scishort.swg new file mode 100644 index 00000000..3d2f0f97 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scishort.swg @@ -0,0 +1,188 @@ +/* + * C-type: short + * Scilab type: double or int16 + */ + +%fragment(SWIG_AsVal_frag(short), "header", fragment="SWIG_SciDoubleOrInt16_AsShort", fragment="") { +#define SWIG_AsVal_short(scilabValue, valuePointer) SWIG_SciDoubleOrInt16_AsShort(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDoubleOrInt16_AsShort", "header") { +SWIGINTERN int +SWIG_SciDoubleOrInt16_AsShort(void *pvApiCtx, int iVar, short *psValue, char *fname) { + SciErr sciErr; + int iType = 0; + int iRows = 0; + int iCols = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_ints) { + int iPrec = 0; + short *psData = NULL; + + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iPrec != SCI_INT16) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 16-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + sciErr = getMatrixOfInteger16(pvApiCtx, piAddrVar, &iRows, &iCols, &psData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iRows * iCols != 1) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A 16-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + *psValue = *psData; + } + else if (iType == sci_matrix) { + double *pdData = NULL; + double dValue = 0.0f; + + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, &iRows, &iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iRows * iCols != 1) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A 16-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + dValue = *pdData; + if (dValue != floor(dValue)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Incorrect value for input argument #%d: The double value cannot be converted to a 16-bit signed integer.\n"), fname, iVar); + return SWIG_ValueError; + } + if ((dValue < SHRT_MIN) || (dValue > SHRT_MAX)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Overflow error for input argument #%d: The double value cannot be converted to a 16-bit signed integer.\n"), fname, iVar); + return SWIG_OverflowError; + } + *psValue = (short) dValue; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 16-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(short), "header", fragment="SWIG_SciDouble_FromShort") { +#define SWIG_From_short(scilabValue) SWIG_SciDouble_FromShort(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDouble_FromShort", "header") { +SWIGINTERN int +SWIG_SciDouble_FromShort(void *pvApiCtx, int iVarOut, short sValue, char *fname) { + if (createScalarDouble(pvApiCtx, + SWIG_NbInputArgument(pvApiCtx) + iVarOut, (double) sValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + +/* + * C-type: short[] + * Scilab type: double or int16 matrix + */ +%fragment("SWIG_SciDoubleOrInt16_AsShortArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDoubleOrInt16_AsShortArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, short **psValue, char *fname) { + SciErr sciErr; + int iType = 0; + int iPrec = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_matrix) { + double *pdData = NULL; + int size = 0; + int i; + + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, iRows, iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + size = (*iRows) * (*iCols); + *psValue = (short*) malloc(size * sizeof(int*)); + for (i = 0; i < size; i++) + (*psValue)[i] = (short) pdData[i]; + } + else if (iType == sci_ints) { + int iPrec = 0; + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iPrec != SCI_INT16) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 16-bit signed integer or a double matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + sciErr = getMatrixOfInteger16(pvApiCtx, piAddrVar, iRows, iCols, psValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 16-bit signed integer or a double matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} +%fragment("SWIG_SciDouble_FromShortArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_FromShortArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, short *psValue) { + SciErr sciErr; + int i; + double *pdValues = NULL; + + pdValues = (double*) malloc(iRows * iCols * sizeof(double)); + for (i=0; i SCHAR_MAX)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Overflow error for input argument #%d: The double value cannot be converted to a 8-bit signed integer.\n"), fname, iVar); + return SWIG_OverflowError; + } + *pscValue = (signed char) dValue; + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 8-bit signed integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(signed char), "header", fragment="SWIG_SciDouble_FromSignedChar") { +#define SWIG_From_signed_SS_char(scilabValue) SWIG_SciDouble_FromSignedChar(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue) +} +%fragment("SWIG_SciDouble_FromSignedChar", "header") { +SWIGINTERN int +SWIG_SciDouble_FromSignedChar(void *pvApiCtx, int iVarOut, signed char scValue) { + if (createScalarDouble(pvApiCtx, + SWIG_NbInputArgument(pvApiCtx) + iVarOut, (double) scValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + +/* + * C-type: signed char[] + * Scilab type: double or int8 matrix + */ +%fragment("SWIG_SciDoubleOrInt8_AsSignedCharArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDoubleOrInt8_AsSignedCharArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, signed char **pscValue, char *fname) { + SciErr sciErr; + int iType = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_matrix) { + double *pdData = NULL; + int size = 0; + int i; + + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, iRows, iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + size = (*iRows) * (*iCols); + *pscValue = (signed char*) malloc(size * sizeof(int*)); + for (i = 0; i < size; i++) + (*pscValue)[i] = (signed char) pdData[i]; + } + else if (iType == sci_ints) { + int iPrec = 0; + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iPrec != SCI_INT8) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 8-bit signed integer or a double matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + sciErr = getMatrixOfInteger8(pvApiCtx, piAddrVar, iRows, iCols, (char **)pscValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 8-bit signed integer or a double matrix expected.\n"), fname, iVar); + return SWIG_ERROR; + } + return SWIG_OK; +} +} + +%fragment("SWIG_SciDouble_FromSignedCharArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_FromSignedCharArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, const signed char *pscValue) { + SciErr sciErr; + int i; + double *pdValues = NULL; + + pdValues = (double*) malloc(iRows * iCols * sizeof(double)); + for (i=0; i struct traits_from_ptr { + static SwigSciObject from(Type *val, int owner = 0) { + return SWIG_OK; //SWIG_NewPointerObj(val, type_info(), owner); + } + }; + + template struct traits_from { + static SwigSciObject from(const Type& val) { + return traits_from_ptr::from(new Type(val), 1); + } + }; + + template struct traits_from { + static SwigSciObject from(Type* val) { + return traits_from_ptr::from(val, 0); + } + }; + + template struct traits_from { + static SwigSciObject from(const Type* val) { + return traits_from_ptr::from(const_cast(val), 0); + } + }; + + + template + inline SwigSciObject from(const Type& val) { + return traits_from::from(val); + } + + template + inline SwigSciObject from_ptr(Type* val, int owner) { + return traits_from_ptr::from(val, owner); + } + + // Traits that provides the asval/as/check method + template + struct traits_asptr { + static int asptr(const SwigSciObject& obj, Type **val) { + Type *p = 0; + swig_type_info *descriptor = type_info(); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template + inline int asptr(const SwigSciObject& obj, Type **vptr) { + return traits_asptr::asptr(obj, vptr); + } + + template + struct traits_asval { + static int asval(const SwigSciObject& obj, Type *val) { + if (val) { + Type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (!SWIG_IsOK(res)) + return res; + if (p) { + typedef typename noconst_traits::noconst_type noconst_type; + *(const_cast(val)) = *p; + if (SWIG_IsNewObj(res)){ + %delete(p); + res = SWIG_DelNewMask(res); + } + return res; + } else { + return SWIG_ERROR; + } + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template struct traits_asval { + static int asval(const SwigSciObject& obj, Type **val) { + if (val) { + typedef typename noconst_traits::noconst_type noconst_type; + noconst_type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (SWIG_IsOK(res)) { + *(const_cast(val)) = p; + } + return res; + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template + inline int asval(const SwigSciObject& obj, Type *val) { + return traits_asval::asval(obj, val); + } + + template + struct traits_as { + static Type as(const SwigSciObject& obj) { + Type v; + int res = asval(obj, &v); + if (SWIG_IsOK(res)) { + return v; + } else { + %type_error(swig::type_name()); + throw std::invalid_argument("bad type"); + } + } + }; + + template + struct traits_as { + static Type as(const SwigSciObject& obj) { + Type *v = 0; + int res = traits_asptr::asptr(obj, &v); + if (SWIG_IsOK(res) && v) { + if (SWIG_IsNewObj(res)) { + Type r(*v); + %delete(v); + return r; + } else { + return *v; + } + } else { + %type_error(swig::type_name()); + throw std::invalid_argument("bad type"); + } + } + }; + + template + struct traits_as { + static Type* as(const SwigSciObject& obj) { + Type *v = 0; + int res = traits_asptr::asptr(obj, &v); + if (SWIG_IsOK(res)) { + return v; + } else { + %type_error(swig::type_name()); + throw std::invalid_argument("bad type"); + } + } + }; + + template + inline Type as(const SwigSciObject& obj) { + return traits_as::category>::as(obj); + } + + template + struct traits_check { + static bool check(const SwigSciObject& obj) { + int res = asval(obj, (Type *)(0)); + return SWIG_IsOK(res) ? true : false; + } + }; + + template + struct traits_check { + static bool check(const SwigSciObject& obj) { + int res = asptr(obj, (Type **)(0)); + return SWIG_IsOK(res) ? true : false; + } + }; + + template + inline bool check(const SwigSciObject& obj) { + return traits_check::category>::check(obj); + } +} +} + +%define %specialize_std_container(Type,Check,As,From) +%{ +namespace swig { + template <> struct traits_asval { + typedef Type value_type; + static int asval(const SwigSciObject& obj, value_type *val) { + if (Check(obj)) { + if (val) *val = As(obj); + return SWIG_OK; + } + return SWIG_ERROR; + } + }; + template <> struct traits_from { + typedef Type value_type; + static SwigSciObject from(const value_type& val) { + return From(val); + } + }; + + template <> + struct traits_check { + static int check(const SwigSciObject& obj) { + int res = Check(obj); + return obj && res ? res : 0; + } + }; +} +%} +%enddef + + +#define specialize_std_vector(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_list(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_deque(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_set(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_multiset(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/scitypemaps.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/scitypemaps.swg new file mode 100644 index 00000000..99fdce7b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/scitypemaps.swg @@ -0,0 +1,259 @@ +// Scilab fragments for primitive types +%include + +%include + +// Scilab object type +#define SWIG_Object int + +#define %append_output(obj) if (!SWIG_IsOK(SWIG_Scilab_SetOutput(pvApiCtx, obj))) return SWIG_ERROR +#define %set_constant(name, obj) if (!SWIG_IsOK(SWIG_Scilab_SetOutput(pvApiCtx, obj))) return SWIG_ERROR // Name is managed by the function name +#define %raise(obj, type, desc) SWIG_Scilab_Raise(obj, type, desc) +#define %set_output(obj) if (!SWIG_IsOK(SWIG_Scilab_SetOutput(pvApiCtx, obj))) return SWIG_ERROR +#define %set_varoutput(obj) if (!SWIG_IsOK(SWIG_Scilab_SetOutput(pvApiCtx, obj))) return SWIG_ERROR +#define %set_argoutput(obj) if (!SWIG_IsOK(SWIG_Scilab_SetOutput(pvApiCtx, obj))) return SWIG_ERROR + +// Include the unified typemap library +%include + +/* ---------------------------------------------------------------------------*/ +/* Generic typmemaps */ +/* */ +/* This typemap is used when Scilab does not store this type directly */ +/* For example, a 'float' is stored in Scilab as a 'double' */ +/* So we read a 'double' in Scilab and cast it to a 'float' */ +/* ---------------------------------------------------------------------------*/ + +%define %scilab_in_typemap_withcast(TYPEMAPTYPE, FRAGMENTNAME, CTYPE, TEMPTYPE, TEMPINIT) +%typemap(TYPEMAPTYPE, fragment="FRAGMENTNAME") CTYPE { + TEMPTYPE tempValue = TEMPINIT; + if(FRAGMENTNAME(pvApiCtx, $input, &tempValue, SWIG_Scilab_GetFuncName()) != SWIG_OK) { + return SWIG_ERROR; + } + $1 = (CTYPE) tempValue; +} +%enddef +%define %scilab_inptr_typemap(TYPEMAPTYPE, FRAGMENTNAME, CTYPE) +%typemap(TYPEMAPTYPE, noblock=1, fragment="FRAGMENTNAME") CTYPE { + if (FRAGMENTNAME(pvApiCtx, $input, %as_voidptrptr(&$1), SWIG_Scilab_GetFuncName()) != SWIG_OK) { + return SWIG_ERROR; + } +} +%enddef + +%define %scilab_out_typemap(TYPEMAPTYPE, FRAGMENTNAME, CTYPE) +%typemap(TYPEMAPTYPE, noblock=1, fragment="FRAGMENTNAME") CTYPE { + if (FRAGMENTNAME(pvApiCtx, $result, $1) != SWIG_OK) { + return SWIG_ERROR; + } +} +%enddef + +%define %scilab_outptr_typemap(TYPEMAPTYPE, FRAGMENTNAME, CTYPE) +%typemap(TYPEMAPTYPE, noblock=1, fragment="FRAGMENTNAME") CTYPE { + if (FRAGMENTNAME(pvApiCtx, $result, %as_voidptr($1)) != SWIG_OK) { + return SWIG_ERROR; + } +} +%enddef + +%define %scilab_varout_typemap(TYPEMAPTYPE, FRAGMENTNAME, CTYPE) +%typemap(TYPEMAPTYPE, noblock=1, fragment="FRAGMENTNAME") CTYPE { + if (FRAGMENTNAME(pvApiCtx, $result, $value) != SWIG_OK) { + return SWIG_ERROR; + } +} +%enddef + +%define %scilab_varoutptr_typemap(TYPEMAPTYPE, FRAGMENTNAME, CTYPE) +%typemap(TYPEMAPTYPE, noblock=1, fragment="FRAGMENTNAME") CTYPE { + if (FRAGMENTNAME(pvApiCtx, $result, %as_voidptr($value)) != SWIG_OK) { + return SWIG_ERROR; + } +} +%enddef + +%define %scilab_in_typemap(TYPEMAPTYPE, FRAGMENTNAME, CTYPE) +%typemap(TYPEMAPTYPE, noblock=1, fragment="FRAGMENTNAME") CTYPE { + if (FRAGMENTNAME(pvApiCtx, $input, &$1, SWIG_Scilab_GetFuncName()) != SWIG_OK) { + return SWIG_ERROR; + } +} +%enddef + + +/* ---------------------------------------------------------------------------*/ +/* Array typmemaps */ +/* ---------------------------------------------------------------------------*/ + +%include + + +/* ---------------------------------------------------------------------------*/ +/* Enum typemaps */ +/* ---------------------------------------------------------------------------*/ + +%typemap(in, noblock=1, fragment=SWIG_AsVal_frag(Enum)) enum SWIGTYPE (int val) { + if (SWIG_AsVal_dec(Enum)($input, &val) != SWIG_OK) { + return SWIG_ERROR; + } + $1 = %static_cast(val, $1_ltype); +} + +%typemap(out, fragment=SWIG_From_frag(Enum)) enum SWIGTYPE { + if (SWIG_From_dec(Enum)($1) != SWIG_OK) { + return SWIG_ERROR; + } +} + +/* ---------------------------------------------------------------------------*/ +/* Typecheck typemaps */ +/* ---------------------------------------------------------------------------*/ + +%define %scilab_typecheck_generic(PRECEDENCE, TYPE_CHECK_FUNCTION, TYPE) +%typecheck(PRECEDENCE) TYPE { + int *piAddrVar = NULL; + SciErr sciErr = getVarAddressFromPosition(pvApiCtx, $input, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + $1 = TYPE_CHECK_FUNCTION(pvApiCtx, piAddrVar); +} +%enddef + +%fragment("SWIG_Check_SciDoubleOrInt", "header") { +SWIGINTERN int +SWIG_Check_SciDoubleOrInt(void *pvApiCtx, SwigSciObject iVar, int iIntegerType) { + int *piAddrVar = NULL; + int ret = 0; + SciErr sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return 0; + } + ret = isIntegerType(pvApiCtx, piAddrVar); + if (ret == 1) { + int iPrec = 0; + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return 0; + } + ret = (iPrec == iIntegerType) ? 1 : 0; + } + else { + ret = isDoubleType(pvApiCtx, piAddrVar); + } + return ret; +} +} + +/* Scilab equivalent for C integers can be sci_intXX or sci_matrix */ +%define %scilab_typecheck_integer(PRECEDENCE, INTTYPE, TYPE) +%typecheck(PRECEDENCE, fragment="SWIG_Check_SciDoubleOrInt") TYPE { + $1 = SWIG_Check_SciDoubleOrInt(pvApiCtx, $input, INTTYPE); +} +%enddef + +%define %scilab_typecheck_pointer(PRECEDENCE, TYPE) +%typecheck(PRECEDENCE) TYPE { + $1 = SwigScilabCheckPtr(pvApiCtx, $input, $descriptor, SWIG_Scilab_GetFuncName()); +} +%enddef + + +// Double (and Float) have priority over before Integer type. + +// Primitive types +%scilab_typecheck_pointer(SWIG_TYPECHECK_VOIDPTR, SWIGTYPE *) +%scilab_typecheck_pointer(SWIG_TYPECHECK_POINTER, SWIGTYPE *) +%scilab_typecheck_generic(SWIG_TYPECHECK_BOOL, isBooleanType, bool) +%scilab_typecheck_generic(16, isDoubleType, double) +%scilab_typecheck_generic(17, isDoubleType, float) +%scilab_typecheck_integer(SWIG_TYPECHECK_INT8, SCI_INT8, signed char) +%scilab_typecheck_integer(SWIG_TYPECHECK_UINT8, SCI_UINT8, unsigned char) +%scilab_typecheck_integer(SWIG_TYPECHECK_INT16, SCI_INT16, short) +%scilab_typecheck_integer(SWIG_TYPECHECK_UINT16, SCI_UINT16, unsigned short) +%scilab_typecheck_integer(SWIG_TYPECHECK_INT32, SCI_INT32, int) +%scilab_typecheck_integer(SWIG_TYPECHECK_INT32, SCI_INT32, long) +%scilab_typecheck_integer(SWIG_TYPECHECK_UINT32, SCI_UINT32, unsigned int) +%scilab_typecheck_integer(SWIG_TYPECHECK_UINT32, SCI_UINT32, unsigned long) +%scilab_typecheck_integer(SWIG_TYPECHECK_INT32, SCI_INT32, enum SWIGTYPE) +%scilab_typecheck_generic(SWIG_TYPECHECK_CHAR, isStringType, char) + +// Arrays +%scilab_typecheck_generic(SWIG_TYPECHECK_BOOL_ARRAY, isBooleanType, bool) +%scilab_typecheck_generic(1016, isDoubleType, double [ANY]) +%scilab_typecheck_generic(1017, isDoubleType, float [ANY]) +%scilab_typecheck_integer(SWIG_TYPECHECK_INT8_ARRAY, SCI_INT8, signed char [ANY]) +%scilab_typecheck_integer(1026, SCI_UINT8, unsigned char [ANY]) +%scilab_typecheck_integer(SWIG_TYPECHECK_INT16_ARRAY, SCI_INT16, short [ANY]) +%scilab_typecheck_integer(1036, SCI_UINT16, unsigned short [ANY]) +%scilab_typecheck_integer(SWIG_TYPECHECK_INT32_ARRAY, SCI_INT32, int [ANY]) +%scilab_typecheck_integer(SWIG_TYPECHECK_INT32_ARRAY, SCI_INT32, long [ANY]) +%scilab_typecheck_integer(1046, SCI_UINT32, unsigned int [ANY]) +%scilab_typecheck_integer(1046, SCI_UINT32, unsigned long [ANY]) +%scilab_typecheck_generic(SWIG_TYPECHECK_CHAR_ARRAY, isStringType, char [ANY]) +%scilab_typecheck_generic(SWIG_TYPECHECK_STRING_ARRAY, isStringType, char *[ANY]) +%scilab_typecheck_generic(SWIG_TYPECHECK_STRING_ARRAY, isStringType, char **) + + +/* ---------------------------------------------------------------------------*/ +/* %scilabconstcode() feature typemaps */ +/* ---------------------------------------------------------------------------*/ + +%typemap(scilabconstcode, fragment=SWIG_CreateScilabVariable_frag(double)) double +%{ + if (SWIG_CreateScilabVariable_double(pvApiCtx, "$result", $value) != SWIG_OK) + return SWIG_ERROR; +%} + +%typemap(scilabconstcode, fragment=SWIG_CreateScilabVariable_frag(int)) int +%{ + if (SWIG_CreateScilabVariable_int(pvApiCtx, "$result", $value) != SWIG_OK) + return SWIG_ERROR; +%} + +%typemap(scilabconstcode, fragment=SWIG_CreateScilabVariable_frag(uint)) unsigned int +%{ + if (SWIG_CreateScilabVariable_uint(pvApiCtx, "$result", $value) != SWIG_OK) + return SWIG_ERROR; +%} + +%typemap(scilabconstcode, fragment=SWIG_CreateScilabVariable_frag(int)) long +%{ + if (SWIG_CreateScilabVariable_int(pvApiCtx, "$result", $value) != SWIG_OK) + return SWIG_ERROR; +%} + +%typemap(scilabconstcode, fragment=SWIG_CreateScilabVariable_frag(uint)) unsigned long +%{ + if (SWIG_CreateScilabVariable_uint(pvApiCtx, "$result", $value) != SWIG_OK) + return SWIG_ERROR; +%} + +%typemap(scilabconstcode, fragment=SWIG_CreateScilabVariable_frag(char)) char +%{ + if (SWIG_CreateScilabVariable_char(pvApiCtx, "$result", $value) != SWIG_OK) + return SWIG_ERROR; +%} + +%typemap(scilabconstcode, fragment=SWIG_CreateScilabVariable_frag(charptr)) char * +%{ + if (SWIG_CreateScilabVariable_charptr(pvApiCtx, "$result", $value) != SWIG_OK) + return SWIG_ERROR; +%} + +%typemap(scilabconstcode, fragment=SWIG_CreateScilabVariable_frag(double)) enum SWIGTYPE +%{ + if (SWIG_CreateScilabVariable_double(pvApiCtx, "$result", $value) != SWIG_OK) + return SWIG_ERROR; +%} + + +/* ---------------------------------------------------------------------------*/ +/* Exception typmemaps */ +/* ---------------------------------------------------------------------------*/ + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/sciunsignedchar.swg b/macx64/bin/swig/share/swig/4.0.0/scilab/sciunsignedchar.swg new file mode 100644 index 00000000..f7338958 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/sciunsignedchar.swg @@ -0,0 +1,190 @@ +/* + * C-type: unsigned char + * Scilab type: double or uint8 + */ +%fragment(SWIG_AsVal_frag(unsigned char), "header", fragment="SWIG_SciDoubleOrUint8_AsUnsignedChar", fragment="") { +#define SWIG_AsVal_unsigned_SS_char(scilabValue, valuePointer) SWIG_SciDoubleOrUint8_AsUnsignedChar(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDoubleOrUint8_AsUnsignedChar", "header") { +SWIGINTERN int +SWIG_SciDoubleOrUint8_AsUnsignedChar(void *pvApiCtx, int iVar, unsigned char *pucValue, char *fname) { + SciErr sciErr; + int iType = 0; + int iRows = 0; + int iCols = 0; + int iPrec = 0; + int *piAddrVar = NULL; + unsigned char *pucData = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_ints) { + if (pucValue) { + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iPrec != SCI_UINT8) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 8-bit unsigned integer or a double expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + sciErr = getMatrixOfUnsignedInteger8(pvApiCtx, piAddrVar, &iRows, &iCols, &pucData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iRows * iCols != 1) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A 8-bit unsigned integer or a double expected.\n"), fname, iVar); + return SWIG_ERROR; + } + *pucValue = *pucData; + } + } + else if (iType == sci_matrix) { + if (pucValue) { + double *pdData = NULL; + double dValue = 0.0f; + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, &iRows, &iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + if (iRows * iCols != 1) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A 8-bit unsigned integer or a double expected.\n"), fname, iVar); + return SWIG_TypeError; + } + dValue = *pdData; + if (dValue != floor(dValue)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Incorrect value for input argument #%d: The double value cannot be converted to a 8-bit unsigned integer.\n"), fname, iVar); + return SWIG_ValueError; + } + if ((dValue < 0) || (dValue > UCHAR_MAX)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Overflow error for input argument #%d: The double value cannot be converted to a 8-bit unsigned integer.\n"), fname, iVar); + return SWIG_OverflowError; + } + *pucValue = (unsigned char) dValue; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 8-bit unsigned integer or a double expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(unsigned char), "header", fragment="SWIG_SciDouble_FromUnsignedChar") { +#define SWIG_From_unsigned_SS_char(value) SWIG_SciDouble_FromUnsignedChar(pvApiCtx, SWIG_Scilab_GetOutputPosition(), value) +} +%fragment("SWIG_SciDouble_FromUnsignedChar", "header") { +SWIGINTERN int +SWIG_SciDouble_FromUnsignedChar(void *pvApiCtx, int iVarOut, unsigned char ucValue) { + if (createScalarDouble(pvApiCtx, + SWIG_NbInputArgument(pvApiCtx) + iVarOut, (double) ucValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + +/* + * C-type: unsigned char[] + * Scilab type: double or uint8 matrix + */ +%fragment("SWIG_SciDoubleOrUint8_AsUnsignedCharArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDoubleOrUint8_AsUnsignedCharArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, unsigned char **pucValue, char *fname) { + SciErr sciErr; + int iType = 0; + int iPrec = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_matrix) { + double *pdData = NULL; + int size = 0; + int i; + + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, iRows, iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + size = (*iRows) * (*iCols); + *pucValue = (unsigned char*) malloc(size * sizeof(int*)); + for (i = 0; i < size; i++) + (*pucValue)[i] = (unsigned char) pdData[i]; + } + else if (iType == sci_ints) { + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iPrec != SCI_UINT8) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 8-bit unsigned integer or a double vector expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + sciErr = getMatrixOfUnsignedInteger8(pvApiCtx, piAddrVar, iRows, iCols, pucValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 8-bit unsigned integer or a double vector expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment("SWIG_SciDouble_FromUnsignedCharArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_FromUnsignedCharArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, const unsigned char *pucValues) { + SciErr sciErr; + double *pdValues = NULL; + int i; + + pdValues = (double*) malloc(iRows * iCols * sizeof(double)); + for (i=0; i UINT_MAX)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Overflow error for input argument #%d: The double value cannot be converted to a 32-bit unsigned integer.\n"), fname, iVar); + return SWIG_OverflowError; + } + *puiValue = (unsigned int) dValue; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 32-bit unsigned integer or a double expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(unsigned int), "header", fragment="SWIG_SciDouble_FromUnsignedInt") { +%#define SWIG_From_unsigned_SS_int(scilabValue) SWIG_SciDouble_FromUnsignedInt(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDouble_FromUnsignedInt", "header") { +SWIGINTERN int +SWIG_SciDouble_FromUnsignedInt(void *pvApiCtx, int iVarOut, unsigned int uiValue, char *fname) { + if (createScalarDouble(pvApiCtx, + SWIG_NbInputArgument(pvApiCtx) + iVarOut, (double) uiValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + +/* + * C-type: unsigned int[] + * Scilab type: uint32 vector + */ +%fragment("SWIG_SciDoubleOrUint32_AsUnsignedIntArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDoubleOrUint32_AsUnsignedIntArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, unsigned int **puiValue, char *fname) { + SciErr sciErr; + int iType = 0; + int iPrec = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_matrix) { + double *pdData = NULL; + int size = 0; + int i; + + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, iRows, iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + size = (*iRows) * (*iCols); + *puiValue = (unsigned int*) malloc(size * sizeof(int*)); + for (i = 0; i < size; i++) + (*puiValue)[i] = (unsigned int) pdData[i]; + } + else if (iType == sci_ints) { + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iPrec != SCI_UINT32) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 32-bit unsigned integer or a double vector expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + sciErr = getMatrixOfUnsignedInteger32(pvApiCtx, piAddrVar, iRows, iCols, puiValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 32-bit unsigned integer or a double vector expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment("SWIG_SciDouble_FromUnsignedIntArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_FromUnsignedIntArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, unsigned int *puiValues) { + SciErr sciErr; + double *pdValues = NULL; + int i; + + pdValues = (double*) malloc(iRows * iCols * sizeof(double)); + for (i=0; i USHRT_MAX)) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Overflow error for input argument #%d: The double value cannot be converted to a 16-bit unsigned integer.\n"), fname, iVar); + return SWIG_OverflowError; + } + *pusValue = (unsigned short) dValue; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 16-bit unsigned integer or a double expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(unsigned short), "header", fragment="SWIG_SciDouble_FromUnsignedShort") { +%#define SWIG_From_unsigned_SS_short(scilabValue) SWIG_SciDouble_FromUnsignedShort(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFuncName()) +} +%fragment("SWIG_SciDouble_FromUnsignedShort", "header") { +SWIGINTERN int +SWIG_SciDouble_FromUnsignedShort(void *pvApiCtx, int iVarOut, unsigned short usValue, char *fname) { + if (createScalarDouble(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, (double) usValue)) + return SWIG_ERROR; + return SWIG_OK; +} +} + +/* + * C-type: unsigned short[] + * Scilab type: uint16 vector + */ +%fragment("SWIG_SciDoubleOrUint16_AsUnsignedShortArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDoubleOrUint16_AsUnsignedShortArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, unsigned short **pusValue, char *fname) { + SciErr sciErr; + int iType = 0; + int iPrec = 0; + int *piAddrVar = NULL; + + sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iType == sci_matrix) { + double *pdData = NULL; + int size = 0; + int i; + + sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, iRows, iCols, &pdData); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + size = (*iRows) * (*iCols); + *pusValue = (unsigned short*) malloc(size * sizeof(int*)); + for (i = 0; i < size; i++) + (*pusValue)[i] = (unsigned short) pdData[i]; + } + else if (iType == sci_ints) { + sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if (iPrec != SCI_UINT16) { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 16-bit unsigned integer or a double vector expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + sciErr = getMatrixOfUnsignedInteger16(pvApiCtx, piAddrVar, iRows, iCols, pusValue); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + } + else { + Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A 16-bit unsigned integer or a double vector expected.\n"), fname, iVar); + return SWIG_ERROR; + } + + return SWIG_OK; +} +} + +%fragment("SWIG_SciDouble_FromUnsignedShortArrayAndSize", "header") { +SWIGINTERN int +SWIG_SciDouble_FromUnsignedShortArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, unsigned short *pusValues) { + SciErr sciErr; + double *pdValues = NULL; + int i; + + pdValues = (double*) malloc(iRows * iCols * sizeof(double)); + for (i=0; i + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_basic_string.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_basic_string.i new file mode 100644 index 00000000..b5735381 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_basic_string.i @@ -0,0 +1,45 @@ +/* + * C++: basic_string + * Scilab: string + */ + +#define %swig_basic_string(Type...) %swig_sequence_methods_val(Type) + +%fragment(SWIG_AsPtr_frag(std::basic_string), "header", fragment="SWIG_SciString_AsCharPtrAndLength") { +SWIGINTERN int +SWIG_AsPtr_dec(std::basic_string)(int _iVar, std::basic_string **_pstValue) { + char* buf = 0; + size_t len = 0; + int alloc = SWIG_OLDOBJ; + + if (SWIG_IsOK((SWIG_SciString_AsCharPtrAndSize(pvApiCtx, _iVar, &buf, &len, &alloc, SWIG_Scilab_GetFuncName())))) { + if (buf) { + if (_pstValue) { + *_pstValue = new std::string(buf, len - 1); + } + if (alloc == SWIG_NEWOBJ) { + delete[] buf; + } + return SWIG_NEWOBJ; + } else { + if (_pstValue) { + *_pstValue = NULL; + } + return SWIG_OLDOBJ; + } + } else { + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_From_frag(std::basic_string), "header", fragment="SWIG_SciString_FromCharPtr") { +SWIGINTERN int +SWIG_From_dec(std::basic_string)(std::basic_string _pstValue) { + return SWIG_SciString_FromCharPtr(pvApiCtx, SWIG_Scilab_GetOutputPosition(), _pstValue.c_str()); +} +} + +%include + + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_char_traits.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_char_traits.i new file mode 100644 index 00000000..bf4e6c47 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_char_traits.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_common.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_common.i new file mode 100644 index 00000000..97cfa7b0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_common.i @@ -0,0 +1,72 @@ +%include +%include + + +// Generate the traits for a 'primitive' type, such as 'double', +// for which the SWIG_AsVal and SWIG_From methods are already defined. + +%define %traits_ptypen(Type...) + %fragment(SWIG_Traits_frag(Type),"header", + fragment=SWIG_AsVal_frag(Type), + fragment=SWIG_From_frag(Type), + fragment="StdTraits") { +namespace swig { + template <> struct traits< Type > { + typedef value_category category; + static const char* type_name() { return #Type; } + }; + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(SwigSciObject obj, value_type *val) { + return SWIG_AsVal(Type)(obj, val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static SwigSciObject from(const value_type& val) { + return SWIG_From(Type)(val); + } + }; +} +} +%enddef + +/* Traits for enums. This is bit of a sneaky trick needed because a generic template specialization of enums + is not possible (unless using template meta-programming which SWIG doesn't support because of the explicit + instantiations required using %template). The STL containers define the 'front' method and the typemap + below is used whenever the front method is wrapped returning an enum. This typemap simply picks up the + standard enum typemap, but additionally drags in a fragment containing the traits_asval and traits_from + required in the generated code for enums. */ + +%define %traits_enum(Type...) + %fragment("SWIG_Traits_enum_"{Type},"header", + fragment=SWIG_AsVal_frag(int), + fragment=SWIG_From_frag(int), + fragment="StdTraits") { +namespace swig { + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(SwigSciObject obj, value_type *val) { + return SWIG_AsVal(int)(obj, (int *)val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static SwigSciObject from(const value_type& val) { + return SWIG_From(int)((int)val); + } + }; +} +} +%typemap(out, fragment="SWIG_Traits_enum_"{Type}) const enum SWIGTYPE& front %{$typemap(out, const enum SWIGTYPE&)%} +%enddef + + +%include + +// +// Generates the traits for all the known primitive +// C++ types (int, double, ...) +// +%apply_cpptypes(%traits_ptypen); + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_container.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_container.i new file mode 100644 index 00000000..a1e037b8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_container.i @@ -0,0 +1,3 @@ +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_deque.i new file mode 100644 index 00000000..d2ca597a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_deque.i @@ -0,0 +1,31 @@ +/* + * + * C++ type : STL deque + * Scilab type : matrix (for primitive types) or list (for pointer types) + * +*/ + +%fragment("StdDequeTraits", "header", fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(const SwigSciObject &obj, std::deque **deq) { + return traits_asptr_stdseq >::asptr(obj, deq); + } + }; + + template + struct traits_from > { + static SwigSciObject from(const std::deque& deq) { + return traits_from_stdseq >::from(deq); + } + }; + } +%} + + +#define %swig_deque_methods(Type...) %swig_sequence_methods(Type) +#define %swig_deque_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_except.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_except.i new file mode 100644 index 00000000..af98428f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_except.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_list.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_list.i new file mode 100644 index 00000000..75d002d4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_list.i @@ -0,0 +1,30 @@ +/* + * + * C++ type : STL list + * Scilab type : matrix (for primitive types) or list (for pointer types) + * +*/ + +%fragment("StdListTraits", "header", fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(SwigSciObject obj, std::list **lis) { + return traits_asptr_stdseq >::asptr(obj, lis); + } + }; + + template + struct traits_from > { + static SwigSciObject from(const std::list &lis) { + return traits_from_stdseq >::from(lis); + } + }; + } +%} + +#define %swig_list_methods(Type...) %swig_sequence_methods(Type) +#define %swig_list_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_map.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_map.i new file mode 100644 index 00000000..07eb63fd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_map.i @@ -0,0 +1,79 @@ +// +// SWIG typemaps for std::map +// +// Common implementation + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template > class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + } + }; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_multiset.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_multiset.i new file mode 100644 index 00000000..67e17926 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_multiset.i @@ -0,0 +1,30 @@ +/* + * + * C++ type : STL multiset + * Scilab type : matrix (for primitive types) or list (for pointer types) + * +*/ + +%fragment("StdMultisetTraits", "header", fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(const SwigSciObject &obj, std::multiset **multiset) { + return traits_asptr_stdseq >::asptr(obj, multiset); + } + }; + + template + struct traits_from > { + static SwigSciObject from(const std::multiset& multiset) { + return traits_from_stdseq >::from(multiset); + } + }; + } +%} + +#define %swig_multiset_methods(Set...) %swig_sequence_methods(Type) +#define %swig_multiset_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_pair.i new file mode 100644 index 00000000..39ef008d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_pair.i @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * Typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_set.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_set.i new file mode 100644 index 00000000..9070e2d6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_set.i @@ -0,0 +1,32 @@ +/* + * + * C++ type : STL set + * Scilab type : matrix (for primitive types) or list (for pointer types) + * +*/ + +%fragment("StdSetTraits", "header", fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(const SwigSciObject &obj, std::set **set) { + return traits_asptr_stdseq >::asptr(obj, set); + } + }; + + template + struct traits_from > { + static SwigSciObject from(const std::set& set) { + return traits_from_stdseq >::from(set); + } + }; + } +%} + + +#define %swig_set_methods(Type...) %swig_sequence_methods(Type) +#define %swig_set_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_shared_ptr.i new file mode 100644 index 00000000..df873679 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_shared_ptr.i @@ -0,0 +1,2 @@ +#define SWIG_SHARED_PTR_NAMESPACE std +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_string.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_string.i new file mode 100644 index 00000000..71ac6d2f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_string.i @@ -0,0 +1,39 @@ +/* + * POINTER + */ +%fragment(SWIG_AsPtr_frag(std::string), "header", fragment="SWIG_SciString_AsCharPtrAndSize") { +SWIGINTERN int +SWIG_AsPtr_dec(std::string)(int iVar, std::string **pstValue) { + char* buf = 0; + size_t size = 0; + int alloc = SWIG_OLDOBJ; + + if (SWIG_IsOK((SWIG_SciString_AsCharPtrAndSize(pvApiCtx, iVar, &buf, &size, &alloc, SWIG_Scilab_GetFuncName())))) { + if (buf) { + if (pstValue) { + *pstValue = new std::string(buf, size); + } + if (alloc == SWIG_NEWOBJ) { + delete[] buf; + } + return SWIG_NEWOBJ; + } else { + if (pstValue) { + *pstValue = NULL; + } + return SWIG_OLDOBJ; + } + } else { + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_From_frag(std::string), "header", fragment="SWIG_SciString_FromCharPtr") { +SWIGINTERN int +SWIG_From_dec(std::string)(std::string pstValue) { + return SWIG_SciString_FromCharPtr(pvApiCtx, SWIG_Scilab_GetOutputPosition(), pstValue.c_str()); +} +} + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/scilab/std_vector.i new file mode 100644 index 00000000..6eaeeca5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/std_vector.i @@ -0,0 +1,31 @@ +/* + * + * C++ type : STL vector + * Scilab type : matrix (for primitive types) or list (for pointer types) + * +*/ + +%fragment("StdVectorTraits", "header", fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(const SwigSciObject &obj, std::vector **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static SwigSciObject from(const std::vector& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } +%} + + +#define %swig_vector_methods(Type...) %swig_sequence_methods(Type) +#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/stl.i b/macx64/bin/swig/share/swig/4.0.0/scilab/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/scilab/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/scilab/typemaps.i new file mode 100644 index 00000000..9d713874 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/scilab/typemaps.i @@ -0,0 +1,62 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * ----------------------------------------------------------------------------- */ + +// INPUT typemaps +%define %scilab_input_typemap(Type) +%typemap(in, noblock=1, fragment=SWIG_AsVal_frag(Type)) Type *INPUT(Type temp)(int ecode), Type &INPUT(Type temp)(int ecode) { + ecode = SWIG_AsVal_dec(Type)($input, &temp); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$type", $symname, $argnum); + } + $1 = &temp; +} + +%typemap(freearg, noblock=1) Type *INPUT, Type &INPUT { +} + +%typemap(typecheck) Type *INPUT, Type &INPUT { +} +%enddef + +// OUTPUT typemaps +%define %scilab_output_typemap(Type) +%typemap(argout, noblock=1, fragment=SWIG_From_frag(Type)) Type *OUTPUT, Type &OUTPUT { + %set_output(SWIG_From_dec(Type)(*$1)); +} +%enddef + +// INOUT typemaps +%define %scilab_inout_typemap(Type) + %typemap(in) Type *INOUT = Type *INPUT; + %typemap(in) Type &INOUT = Type &INPUT; + %typemap(argout) Type *INOUT = Type *OUTPUT; + %typemap(argout) Type &INOUT = Type &OUTPUT; +%enddef + + +%define %scilab_inout_typemaps(Type) + %scilab_input_typemap(%arg(Type)) + %scilab_output_typemap(%arg(Type)) + %scilab_inout_typemap(%arg(Type)) +%enddef + +%scilab_inout_typemaps(double); +%scilab_inout_typemaps(signed char); +%scilab_inout_typemaps(unsigned char); +%scilab_inout_typemaps(short); +%scilab_inout_typemaps(unsigned short); +%scilab_inout_typemaps(int); +%scilab_inout_typemaps(unsigned int); +%scilab_inout_typemaps(long); +%scilab_inout_typemaps(unsigned long); +%scilab_inout_typemaps(bool); +%scilab_inout_typemaps(float); + +//%apply_ctypes(%scilab_inout_typemaps); + + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/shared_ptr.i b/macx64/bin/swig/share/swig/4.0.0/shared_ptr.i new file mode 100644 index 00000000..eada0b9e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/shared_ptr.i @@ -0,0 +1,69 @@ +// This is a helper file for shared_ptr and should not be included directly. + +// The main implementation detail in using this smart pointer of a type is to customise the code generated +// to use a pointer to the smart pointer of the type, rather than the usual pointer to the underlying type. +// So for some type T, shared_ptr * is used rather than T *. + +// Another key part of the implementation is the smartptr feature: +// %feature("smartptr") T { shared_ptr } +// This feature marks the class T as having a smartptr to it (the shared_ptr type). This is then used to +// support smart pointers and inheritance. Say class D derives from base B, then shared_ptr is marked +// with a fake inheritance from shared_ptr in the type system if the "smartptr" feature is used on both +// B and D. This is to emulate the conversion of shared_ptr to shared_ptr in the target language. + +// shared_ptr namespaces could be boost or std or std::tr1 +// For example for std::tr1, use: +// #define SWIG_SHARED_PTR_NAMESPACE std +// #define SWIG_SHARED_PTR_SUBNAMESPACE tr1 + +#if !defined(SWIG_SHARED_PTR_NAMESPACE) +# define SWIG_SHARED_PTR_NAMESPACE boost +#endif + +#if defined(SWIG_SHARED_PTR_SUBNAMESPACE) +# define SWIG_SHARED_PTR_QNAMESPACE SWIG_SHARED_PTR_NAMESPACE::SWIG_SHARED_PTR_SUBNAMESPACE +#else +# define SWIG_SHARED_PTR_QNAMESPACE SWIG_SHARED_PTR_NAMESPACE +#endif + +namespace SWIG_SHARED_PTR_NAMESPACE { +#if defined(SWIG_SHARED_PTR_SUBNAMESPACE) + namespace SWIG_SHARED_PTR_SUBNAMESPACE { +#endif + template class shared_ptr { + }; +#if defined(SWIG_SHARED_PTR_SUBNAMESPACE) + } +#endif +} + +%fragment("SWIG_null_deleter", "header") { +struct SWIG_null_deleter { + void operator() (void const *) const { + } +}; +%#define SWIG_NO_NULL_DELETER_0 , SWIG_null_deleter() +%#define SWIG_NO_NULL_DELETER_1 +%#define SWIG_NO_NULL_DELETER_SWIG_POINTER_NEW +%#define SWIG_NO_NULL_DELETER_SWIG_POINTER_OWN +} + + +// Main user macro for defining shared_ptr typemaps for both const and non-const pointer types +%define %shared_ptr(TYPE...) +%feature("smartptr", noblock=1) TYPE { SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > } +SWIG_SHARED_PTR_TYPEMAPS(, TYPE) +SWIG_SHARED_PTR_TYPEMAPS(const, TYPE) +%enddef + +// Legacy macros +%define SWIG_SHARED_PTR(PROXYCLASS, TYPE...) +#warning "SWIG_SHARED_PTR(PROXYCLASS, TYPE) is deprecated. Please use %shared_ptr(TYPE) instead." +%shared_ptr(TYPE) +%enddef + +%define SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...) +#warning "SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE) is deprecated. Please use %shared_ptr(TYPE) instead." +%shared_ptr(TYPE) +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/_std_deque.i b/macx64/bin/swig/share/swig/4.0.0/std/_std_deque.i new file mode 100644 index 00000000..af9db27f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/_std_deque.i @@ -0,0 +1,139 @@ +/* ----------------------------------------------------------------------------- + * _std_deque.i + * + * This file contains a generic definition of std::deque along with + * some helper functions. Specific language modules should include + * this file to generate wrappers. + * ----------------------------------------------------------------------------- */ + +%include + +%{ +#include +#include +%} + + +/* This macro defines all of the standard methods for a deque. This + is defined as a macro to simplify the task of specialization. For + example, + + template<> class deque { + public: + %std_deque_methods(int); + }; +*/ + +%define %std_deque_methods_noempty(T...) + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + deque(); + deque(unsigned int size, const T& value=T()); + deque(const deque< T > &); + ~deque(); + + void assign(unsigned int n, const T& value); + void swap(deque< T > &x); + unsigned int size() const; + unsigned int max_size() const; + void resize(unsigned int n, T c = T()); + const_reference front(); + const_reference back(); + void push_front(const T& x); + void push_back(const T& x); + void pop_front(); + void pop_back(); + void clear(); + + /* Some useful extensions */ + %extend { + const_reference getitem(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i<0) i += size; + if (i>=0 && isize()); + if (i<0) i+= size; + if (i>=0 && isize()); + if (i<0) i+= size; + if (i>=0 && ierase(self->begin()+i); + } else { + throw std::out_of_range("deque index out of range"); + } + } + std::deque< T > getslice(int i, int j) { + int size = int(self->size()); + if (i<0) i = size+i; + if (j<0) j = size+j; + if (i<0) i = 0; + if (j>size) j = size; + std::deque< T > tmp(j-i); + std::copy(self->begin()+i,self->begin()+j,tmp.begin()); + return tmp; + } + void setslice(int i, int j, const std::deque< T >& v) { + int size = int(self->size()); + if (i<0) i = size+i; + if (j<0) j = size+j; + if (i<0) i = 0; + if (j>size) j = size; + if (int(v.size()) == j-i) { + std::copy(v.begin(),v.end(),self->begin()+i); + } else { + self->erase(self->begin()+i,self->begin()+j); + if (i+1 <= size) + self->insert(self->begin()+i+1,v.begin(),v.end()); + else + self->insert(self->end(),v.begin(),v.end()); + } + } + void delslice(int i, int j) { + int size = int(self->size()); + if (i<0) i = size+i; + if (j<0) j = size+j; + if (i<0) i = 0; + if (j>size) j = size; + self->erase(self->begin()+i,self->begin()+j); + } + }; +%enddef + +#ifdef SWIGPHP +%define %std_deque_methods(T...) + %extend { + bool is_empty() const { + return self->empty(); + } + }; + %std_deque_methods_noempty(T) +%enddef +#else +%define %std_deque_methods(T...) + bool empty() const; + %std_deque_methods_noempty(T) +%enddef +#endif + +namespace std { + template class deque { + public: + %std_deque_methods(T); + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_alloc.i b/macx64/bin/swig/share/swig/4.0.0/std/std_alloc.i new file mode 100644 index 00000000..e460dc3e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_alloc.i @@ -0,0 +1,77 @@ +namespace std +{ + /** + * @brief The "standard" allocator, as per [20.4]. + * + * The private _Alloc is "SGI" style. (See comments at the top + * of stl_alloc.h.) + * + * The underlying allocator behaves as follows. + * - __default_alloc_template is used via two typedefs + * - "__single_client_alloc" typedef does no locking for threads + * - "__alloc" typedef is threadsafe via the locks + * - __new_alloc is used for memory requests + * + * (See @link Allocators allocators info @endlink for more.) + */ + template + class allocator + { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* pointer; + typedef const _Tp* const_pointer; + typedef _Tp& reference; + typedef const _Tp& const_reference; + typedef _Tp value_type; + + template + struct rebind; + + allocator() throw(); + + allocator(const allocator& other) throw(); + template + allocator(const allocator<_Tp1>& other) throw(); + ~allocator() throw(); + + + pointer + address(reference __x) const; + + + const_pointer + address(const_reference __x) const; + + + // NB: __n is permitted to be 0. The C++ standard says nothing + // about what the return value is when __n == 0. + _Tp* + allocate(size_type __n, const void* = 0); + + // __p is not permitted to be a null pointer. + void + deallocate(pointer __p, size_type __n); + + size_type + max_size() const throw(); + + void construct(pointer __p, const _Tp& __val); + void destroy(pointer __p); + }; + + template<> + class allocator + { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef void* pointer; + typedef const void* const_pointer; + typedef void value_type; + + template + struct rebind; + }; +} // namespace std diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_array.i b/macx64/bin/swig/share/swig/4.0.0/std/std_array.i new file mode 100644 index 00000000..3f70ef57 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_array.i @@ -0,0 +1,85 @@ +// +// std::array +// + +%include + +%define %std_array_methods(array...) + %std_sequence_methods_non_resizable(array) + void fill(const value_type& u); +%enddef + + +%define %std_array_methods_val(array...) + %std_sequence_methods_non_resizable_val(array) + void fill(const value_type& u); +%enddef + +// ------------------------------------------------------------------------ +// std::array +// +// The aim of all that follows would be to integrate std::array with +// as much as possible, namely, to allow the user to pass and +// be returned tuples or lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::array), f(const std::array&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::array can be passed. +// -- f(std::array&), f(std::array*): +// the parameter may be modified; therefore, only a wrapped std::array +// can be passed. +// -- std::array f(), const std::array& f(): +// the array is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::array& f(), std::array* f(): +// the array is returned by reference; therefore, a wrapped std::array +// is returned +// -- const std::array* f(), f(const std::array*): +// for consistency, they expect and return a plain array pointer. +// ------------------------------------------------------------------------ + + +// exported classes + +namespace std { + + template + class array { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + %traits_swigtype(_Tp); + %traits_enum(_Tp); + + %fragment(SWIG_Traits_frag(std::array< _Tp, _Nm >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdArrayTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::array<" #_Tp "," #_Nm " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_STDARRAY, std::array< _Tp, _Nm >); + +#ifdef %swig_array_methods + // Add swig/language extra methods + %swig_array_methods(std::array< _Tp, _Nm >); +#endif + + %std_array_methods(array); + }; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_basic_string.i b/macx64/bin/swig/share/swig/4.0.0/std/std_basic_string.i new file mode 100644 index 00000000..fb7afc1e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_basic_string.i @@ -0,0 +1,267 @@ +%include +%include +%include +%include + +%fragment(""); + +namespace std +{ + %naturalvar basic_string; +} + + +namespace std { + + template , typename _Alloc = allocator<_CharT> > + class basic_string + { +#if !defined(SWIG_STD_MODERN_STL) || defined(SWIG_STD_NOMODERN_STL) + %ignore push_back; + %ignore clear; + %ignore compare; + %ignore append; +#endif + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _CharT value_type; + typedef value_type reference; + typedef value_type const_reference; + typedef _Alloc allocator_type; + + static const size_type npos; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + class iterator; + class reverse_iterator; + class const_iterator; + class const_reverse_iterator; +#endif + + + %traits_swigtype(_CharT); + %fragment(SWIG_Traits_frag(_CharT)); + + + basic_string(const _CharT* __s, size_type __n); + + // Capacity: + + size_type length() const; + + size_type max_size() const; + + size_type capacity() const; + + void reserve(size_type __res_arg = 0); + + + // Modifiers: + + basic_string& + append(const basic_string& __str); + + basic_string& + append(const basic_string& __str, size_type __pos, size_type __n); + + basic_string& + append(const _CharT* __s, size_type __n); + + basic_string& + append(size_type __n, _CharT __c); + + basic_string& + assign(const basic_string& __str); + + basic_string& + assign(const basic_string& __str, size_type __pos, size_type __n); + + basic_string& + assign(const _CharT* __s, size_type __n); + + basic_string& + insert(size_type __pos1, const basic_string& __str); + + basic_string& + insert(size_type __pos1, const basic_string& __str, + size_type __pos2, size_type __n); + + basic_string& + insert(size_type __pos, const _CharT* __s, size_type __n); + + basic_string& + insert(size_type __pos, size_type __n, _CharT __c); + + basic_string& + erase(size_type __pos = 0, size_type __n = npos); + + basic_string& + replace(size_type __pos, size_type __n, const basic_string& __str); + + basic_string& + replace(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2); + + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s, + size_type __n2); + + basic_string& + replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c); + + + size_type + copy(_CharT* __s, size_type __n, size_type __pos = 0) const; + + // String operations: + const _CharT* c_str() const; + + size_type + find(const _CharT* __s, size_type __pos, size_type __n) const; + + size_type + find(const basic_string& __str, size_type __pos = 0) const; + + size_type + find(_CharT __c, size_type __pos = 0) const; + + size_type + rfind(const basic_string& __str, size_type __pos = npos) const; + + size_type + rfind(const _CharT* __s, size_type __pos, size_type __n) const; + + size_type + rfind(_CharT __c, size_type __pos = npos) const; + + size_type + find_first_of(const basic_string& __str, size_type __pos = 0) const; + + size_type + find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; + + size_type + find_first_of(_CharT __c, size_type __pos = 0) const; + + size_type + find_last_of(const basic_string& __str, size_type __pos = npos) const; + + size_type + find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; + + size_type + find_last_of(_CharT __c, size_type __pos = npos) const; + + size_type + find_first_not_of(const basic_string& __str, size_type __pos = 0) const; + + size_type + find_first_not_of(const _CharT* __s, size_type __pos, + size_type __n) const; + + size_type + find_first_not_of(_CharT __c, size_type __pos = 0) const; + + size_type + find_last_not_of(const basic_string& __str, size_type __pos = npos) const; + + size_type + find_last_not_of(const _CharT* __s, size_type __pos, + size_type __n) const; + + size_type + find_last_not_of(_CharT __c, size_type __pos = npos) const; + + basic_string + substr(size_type __pos = 0, size_type __n = npos) const; + + int + compare(const basic_string& __str) const; + + int + compare(size_type __pos, size_type __n, const basic_string& __str) const; + + int + compare(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) const; + + + %ignore pop_back(); + %ignore front() const; + %ignore back() const; + %ignore basic_string(size_type n); + %std_sequence_methods_val(basic_string); + + + %ignore pop(); + + +#ifdef %swig_basic_string + // Add swig/language extra methods + %swig_basic_string(std::basic_string< _CharT, _Traits, _Alloc >); +#endif + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + + + class iterator; + class reverse_iterator; + class const_iterator; + class const_reverse_iterator; + + + void + insert(iterator __p, size_type __n, _CharT __c); + + basic_string& + replace(iterator __i1, iterator __i2, const basic_string& __str); + + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n); + + basic_string& + replace(iterator __i1, iterator __i2, size_type __n, _CharT __c); + + + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __k1, const _CharT* __k2); + + basic_string& + replace(iterator __i1, iterator __i2, const_iterator __k1, const_iterator __k2); +#endif + + basic_string& operator +=(const basic_string& v); + + %newobject __add__; + %newobject __radd__; + %extend { + + std::basic_string< _CharT,_Traits,_Alloc >* __add__(const basic_string& v) { + std::basic_string< _CharT,_Traits,_Alloc >* res = new std::basic_string< _CharT,_Traits,_Alloc >(*self); + *res += v; + return res; + } + + std::basic_string< _CharT,_Traits,_Alloc >* __radd__(const basic_string& v) { + std::basic_string< _CharT,_Traits,_Alloc >* res = new std::basic_string< _CharT,_Traits,_Alloc >(v); + *res += *self; + return res; + } + + std::basic_string< _CharT,_Traits,_Alloc > __str__() { + return *self; + } + + std::basic_ostream<_CharT, std::char_traits<_CharT> >& + __rlshift__(std::basic_ostream<_CharT, std::char_traits<_CharT> >& out) { + out << *self; + return out; + } + } + + }; +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_carray.swg b/macx64/bin/swig/share/swig/4.0.0/std/std_carray.swg new file mode 100644 index 00000000..de2a0762 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_carray.swg @@ -0,0 +1,64 @@ +%{ +#include +%} + +// +// std::carray - is really an extension to the 'std' namespace. +// +// A simple fix C array wrapper, more or less as presented in +// +// "The C++ Standarf Library", by Nicolai M. Josuttis +// +// which is also derived from the example in +// +// "The C++ Programming Language", by Bjarne Stroustup. +// + +%inline %{ +namespace std { + template + class carray + { + public: + typedef _Type value_type; + typedef size_t size_type; + + typedef _Type * iterator; + typedef const _Type * const_iterator; + + carray() { } + + carray(const carray& other) { + std::copy(other.v, other.v + size(), v); + } + + template + carray(_Iterator first, _Iterator last) { + assign(first, last); + } + + iterator begin() { return v; } + iterator end() { return v + _Size; } + + const_iterator begin() const { return v; } + const_iterator end() const { return v + _Size; } + + _Type& operator[](size_t i) { return v[i]; } + const _Type& operator[](size_t i) const { return v[i]; } + + static size_t size() { return _Size; } + + template + void assign(_Iterator first, _Iterator last) { + if (std::distance(first,last) == size()) { + std::copy(first, last, v); + } else { + throw std::length_error("bad range length"); + } + } + + private: + _Type v[_Size]; + }; +} +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_char_traits.i b/macx64/bin/swig/share/swig/4.0.0/std/std_char_traits.i new file mode 100644 index 00000000..b9b4def3 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_char_traits.i @@ -0,0 +1,140 @@ +%include +#if defined(SWIG_WCHAR) +%include +#endif + +namespace std +{ + + /// 21.1.2 Basis for explicit _Traits specialization + /// NB: That for any given actual character type this definition is + /// probably wrong. + template + struct char_traits + { + }; + + + /// 21.1.4 char_traits specializations + template<> + struct char_traits { + typedef char char_type; + typedef int int_type; + typedef streampos pos_type; + typedef streamoff off_type; + typedef mbstate_t state_type; + + static void + assign(char_type& __c1, const char_type& __c2); + + static bool + eq(const char_type& __c1, const char_type& __c2); + + static bool + lt(const char_type& __c1, const char_type& __c2); + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n); + + static size_t + length(const char_type* __s); + + static const char_type* + find(const char_type* __s, size_t __n, const char_type& __a); + + static char_type* + move(char_type* __s1, const char_type* __s2, size_t __n); + + static char_type* + copy(char_type* __s1, const char_type* __s2, size_t __n); + + static char_type* + assign(char_type* __s, size_t __n, char_type __a); + + static char_type + to_char_type(const int_type& __c); + + // To keep both the byte 0xff and the eof symbol 0xffffffff + // from ending up as 0xffffffff. + static int_type + to_int_type(const char_type& __c); + + static bool + eq_int_type(const int_type& __c1, const int_type& __c2); + + static int_type + eof() ; + + static int_type + not_eof(const int_type& __c); + }; + + +#if defined(SWIG_WCHAR) + template<> + struct char_traits + { + typedef wchar_t char_type; + typedef wint_t int_type; + typedef streamoff off_type; + typedef wstreampos pos_type; + typedef mbstate_t state_type; + + static void + assign(char_type& __c1, const char_type& __c2); + + static bool + eq(const char_type& __c1, const char_type& __c2); + + static bool + lt(const char_type& __c1, const char_type& __c2); + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n); + + static size_t + length(const char_type* __s); + + static const char_type* + find(const char_type* __s, size_t __n, const char_type& __a); + + static char_type* + move(char_type* __s1, const char_type* __s2, int_type __n); + + static char_type* + copy(char_type* __s1, const char_type* __s2, size_t __n); + + static char_type* + assign(char_type* __s, size_t __n, char_type __a); + + static char_type + to_char_type(const int_type& __c) ; + + static int_type + to_int_type(const char_type& __c) ; + + static bool + eq_int_type(const int_type& __c1, const int_type& __c2); + + static int_type + eof() ; + + static int_type + not_eof(const int_type& __c); + }; +#endif +} + +namespace std { +#ifndef SWIG_STL_WRAP_TRAITS +%template() char_traits; +#if defined(SWIG_WCHAR) +%template() char_traits; +#endif +#else +%template(char_traits_c) char_traits; +#if defined(SWIG_WCHAR) +%template(char_traits_w) char_traits; +#endif +#endif +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_common.i b/macx64/bin/swig/share/swig/4.0.0/std/std_common.i new file mode 100644 index 00000000..708f3cee --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_common.i @@ -0,0 +1,250 @@ +%include + +// +// Use the following macro with modern STL implementations +// +//#define SWIG_STD_MODERN_STL +// +// Use this to deactivate the previous definition, when using gcc-2.95 +// or similar old compilers. +// +//#define SWIG_STD_NOMODERN_STL + +// Here, we identify compilers we know have problems with STL. +%{ +#if defined(__GNUC__) +# if __GNUC__ == 2 && __GNUC_MINOR <= 96 +# define SWIG_STD_NOMODERN_STL +# endif +#endif +%} + +// +// Common code for supporting the C++ std namespace +// + +%fragment(""); +%fragment(""); +%fragment(""); + + +%fragment("StdIteratorTraits","header",fragment="") %{ +#if defined(__SUNPRO_CC) && defined(_RWSTD_VER) +# if !defined(SWIG_NO_STD_NOITERATOR_TRAITS_STL) +# define SWIG_STD_NOITERATOR_TRAITS_STL +# endif +#endif + +#if !defined(SWIG_STD_NOITERATOR_TRAITS_STL) +#include +#else +namespace std { + template + struct iterator_traits { + typedef ptrdiff_t difference_type; + typedef typename Iterator::value_type value_type; + }; + + template + struct iterator_traits<__reverse_bi_iterator > { + typedef Distance difference_type; + typedef T value_type; + }; + + template + struct iterator_traits { + typedef T value_type; + typedef ptrdiff_t difference_type; + }; + + template + inline typename iterator_traits<_InputIterator>::difference_type + distance(_InputIterator __first, _InputIterator __last) + { + typename iterator_traits<_InputIterator>::difference_type __n = 0; + while (__first != __last) { + ++__first; ++__n; + } + return __n; + } +} +#endif +%} + +%fragment("StdTraitsCommon","header",fragment="") %{ +namespace swig { + template + struct noconst_traits { + typedef Type noconst_type; + }; + + template + struct noconst_traits { + typedef Type noconst_type; + }; + + /* + type categories + */ + struct pointer_category { }; + struct value_category { }; + + /* + General traits that provides type_name and type_info + */ + template struct traits { }; + + template + inline const char* type_name() { + return traits::noconst_type >::type_name(); + } + + template struct traits_info { + static swig_type_info *type_query(std::string name) { + name += " *"; + return SWIG_TypeQuery(name.c_str()); + } + static swig_type_info *type_info() { + static swig_type_info *info = type_query(type_name()); + return info; + } + }; + + /* + Partial specialization for pointers (traits_info) + */ + template struct traits_info { + static swig_type_info *type_query(std::string name) { + name += " *"; + return SWIG_TypeQuery(name.c_str()); + } + static swig_type_info *type_info() { + static swig_type_info *info = type_query(type_name()); + return info; + } + }; + + template + inline swig_type_info *type_info() { + return traits_info::type_info(); + } + + /* + Partial specialization for pointers (traits) + */ + template struct traits { + typedef pointer_category category; + static std::string make_ptr_name(const char* name) { + std::string ptrname = name; + ptrname += " *"; + return ptrname; + } + static const char* type_name() { + static std::string name = make_ptr_name(swig::type_name()); + return name.c_str(); + } + }; + + template + struct traits_as { }; + + template + struct traits_check { }; + +} +%} + +/* + Generate the traits for a swigtype +*/ + +%define %traits_swigtype(Type...) +%fragment(SWIG_Traits_frag(Type),"header",fragment="StdTraits") { + namespace swig { + template <> struct traits< Type > { + typedef pointer_category category; + static const char* type_name() { return #Type; } + }; + } +} +%enddef + + + +/* + Generate the typemaps for a class that has 'value' traits +*/ + +%define %typemap_traits(Code,Type...) + %typemaps_asvalfrom(%arg(Code), + %arg(swig::asval< Type >), + %arg(swig::from), + %arg(SWIG_Traits_frag(Type)), + %arg(SWIG_Traits_frag(Type)), + Type); +%enddef + +/* + Generate the typemaps for a class that behaves more like a 'pointer' or + plain wrapped Swigtype. +*/ + +%define %typemap_traits_ptr(Code,Type...) + %typemaps_asptrfrom(%arg(Code), + %arg(swig::asptr), + %arg(swig::from), + %arg(SWIG_Traits_frag(Type)), + %arg(SWIG_Traits_frag(Type)), + Type); +%enddef + + +/* + Equality methods +*/ +%define %std_equal_methods(Type...) +%extend Type { + bool operator == (const Type& v) { + return *self == v; + } + + bool operator != (const Type& v) { + return *self != v; + } +} + +%enddef + +/* + Order methods +*/ + +%define %std_order_methods(Type...) +%extend Type { + bool operator > (const Type& v) { + return *self > v; + } + + bool operator < (const Type& v) { + return *self < v; + } + + bool operator >= (const Type& v) { + return *self >= v; + } + + bool operator <= (const Type& v) { + return *self <= v; + } +} +%enddef + +/* + Comparison methods +*/ + +%define %std_comp_methods(Type...) +%std_equal_methods(Type ) +%std_order_methods(Type ) +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_container.i b/macx64/bin/swig/share/swig/4.0.0/std/std_container.i new file mode 100644 index 00000000..570dfde4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_container.i @@ -0,0 +1,169 @@ +%include +%include +%include + +%{ +#include +%} + +// Common non-resizable container methods + +%define %std_container_methods_non_resizable(container...) + + container(); + container(const container& other); + + bool empty() const; + size_type size() const; + void swap(container& v); + +%enddef + +%define %std_container_methods_forward_iterators(container...) + + #ifdef SWIG_EXPORT_ITERATOR_METHODS + class iterator; + class const_iterator; + iterator begin(); + iterator end(); + #endif + +%enddef + +%define %std_container_methods_reverse_iterators(container...) + + #ifdef SWIG_EXPORT_ITERATOR_METHODS + class reverse_iterator; + class const_reverse_iterator; + reverse_iterator rbegin(); + reverse_iterator rend(); + #endif + +%enddef + +// Common container methods + +%define %std_container_methods(container...) + + %std_container_methods_non_resizable(%arg(container)) + %std_container_methods_forward_iterators(%arg(container)) + %std_container_methods_reverse_iterators(%arg(container)) + + void clear(); + allocator_type get_allocator() const; + +%enddef + +%define %std_container_methods_without_reverse_iterators(container...) + + %std_container_methods_non_resizable(%arg(container)) + %std_container_methods_forward_iterators(%arg(container)) + + void clear(); + allocator_type get_allocator() const; + +%enddef + +// Common sequence + +%define %std_sequence_methods_common(sequence) + + %std_container_methods(%arg(sequence)); + + sequence(size_type size); + void pop_back(); + + void resize(size_type new_size); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + iterator erase(iterator pos) { return $self->erase(pos); } + iterator erase(iterator first, iterator last) { return $self->erase(first, last); } +} + #endif + +%enddef + +%define %std_sequence_methods_non_resizable(sequence) + + %std_container_methods_non_resizable(%arg(sequence)) + %std_container_methods_forward_iterators(%arg(container)) + %std_container_methods_reverse_iterators(%arg(container)) + + const value_type& front() const; + const value_type& back() const; + +%enddef + +%define %std_sequence_methods(sequence) + + %std_sequence_methods_common(%arg(sequence)); + + sequence(size_type size, const value_type& value); + void push_back(const value_type& x); + + const value_type& front() const; + const value_type& back() const; + + void assign(size_type n, const value_type& x); + void resize(size_type new_size, const value_type& x); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + iterator insert(iterator pos, const value_type& x) { return $self->insert(pos, x); } + void insert(iterator pos, size_type n, const value_type& x) { $self->insert(pos, n, x); } +} + #endif + +%enddef + +%define %std_sequence_methods_non_resizable_val(sequence...) + + %std_container_methods_non_resizable(%arg(sequence)) + %std_container_methods_forward_iterators(%arg(container)) + %std_container_methods_reverse_iterators(%arg(container)) + + value_type front() const; + value_type back() const; + +#endif + +%enddef + +%define %std_sequence_methods_val(sequence...) + + %std_sequence_methods_common(%arg(sequence)); + + sequence(size_type size, value_type value); + void push_back(value_type x); + + value_type front() const; + value_type back() const; + + void assign(size_type n, value_type x); + void resize(size_type new_size, value_type x); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + iterator insert(iterator pos, value_type x) { return $self->insert(pos, x); } + void insert(iterator pos, size_type n, value_type x) { $self->insert(pos, n, x); } +} + #endif + +%enddef + + +// +// Ignore member methods for Type with no default constructor +// +%define %std_nodefconst_type(Type...) +%feature("ignore") std::vector< Type >::vector(size_type size); +%feature("ignore") std::vector< Type >::resize(size_type size); +%feature("ignore") std::deque< Type >::deque(size_type size); +%feature("ignore") std::deque< Type >::resize(size_type size); +%feature("ignore") std::list< Type >::list(size_type size); +%feature("ignore") std::list< Type >::resize(size_type size); +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/std/std_deque.i new file mode 100644 index 00000000..aa5536bf --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_deque.i @@ -0,0 +1,127 @@ +// +// std::deque + +%include + +// Deque + +%define %std_deque_methods(deque...) + %std_sequence_methods(deque) + + void pop_front(); + void push_front(const value_type& x); +%enddef + +%define %std_deque_methods_val(deque...) + %std_sequence_methods_val(deque) + + void pop_front(); + void push_front(value_type x); +%enddef + +// ------------------------------------------------------------------------ +// std::deque +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::deque), f(const std::deque&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::deque can be passed. +// -- f(std::deque&), f(std::deque*): +// the parameter may be modified; therefore, only a wrapped std::deque +// can be passed. +// -- std::deque f(), const std::deque& f(): +// the deque is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::deque& f(), std::deque* f(): +// the deque is returned by reference; therefore, a wrapped std::deque +// is returned +// -- const std::deque* f(), f(const std::deque*): +// for consistency, they expect and return a plain deque pointer. +// ------------------------------------------------------------------------ + +%{ +#include +%} + +// exported classes + +namespace std { + + template > + class deque { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::deque< _Tp, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdDequeTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::deque<" #_Tp " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_DEQUE, std::deque< _Tp, _Alloc >); + +#ifdef %swig_deque_methods + // Add swig/language extra methods + %swig_deque_methods(std::deque< _Tp, _Alloc >); +#endif + + %std_deque_methods(deque); + }; + + template + class deque< _Tp*, _Alloc > { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type reference; + typedef value_type const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::deque< _Tp*, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdDequeTraits") { + namespace swig { + template <> struct traits > { + typedef value_category category; + static const char* type_name() { + return "std::deque<" #_Tp " * >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_DEQUE, std::deque< _Tp*, _Alloc >); + +#ifdef %swig_deque_methods_val + // Add swig/language extra methods + %swig_deque_methods_val(std::deque< _Tp*, _Alloc >); +#endif + + %std_deque_methods_val(deque); + }; + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_except.i b/macx64/bin/swig/share/swig/4.0.0/std/std_except.i new file mode 100644 index 00000000..728b9c8b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_except.i @@ -0,0 +1,73 @@ +#if defined(SWIGJAVA) || defined(SWIGCSHARP) +#error "do not use this version of std_except.i" +#endif + +%{ +#include +#include +%} + +#if defined(SWIG_STD_EXCEPTIONS_AS_CLASSES) + +namespace std { + struct exception + { + virtual ~exception() throw(); + virtual const char* what() const throw(); + }; + + struct bad_cast : exception + { + }; + + struct bad_exception : exception + { + }; + + struct logic_error : exception + { + logic_error(const string& msg); + }; + + struct domain_error : logic_error + { + domain_error(const string& msg); + }; + + struct invalid_argument : logic_error + { + invalid_argument(const string& msg); + }; + + struct length_error : logic_error + { + length_error(const string& msg); + }; + + struct out_of_range : logic_error + { + out_of_range(const string& msg); + }; + + struct runtime_error : exception + { + runtime_error(const string& msg); + }; + + struct range_error : runtime_error + { + range_error(const string& msg); + }; + + struct overflow_error : runtime_error + { + overflow_error(const string& msg); + }; + + struct underflow_error : runtime_error + { + underflow_error(const string& msg); + }; +} + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_ios.i b/macx64/bin/swig/share/swig/4.0.0/std/std_ios.i new file mode 100644 index 00000000..7c62ed69 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_ios.i @@ -0,0 +1,262 @@ +%include +%include +%include +%{ +#ifndef SWIG_STD_NOMODERN_STL +# include +#else +# include +#endif +%} + +namespace std { + + template > + class basic_streambuf; + + template > + class basic_istream; + + template > + class basic_ostream; + + // 27.4.2 Class ios_base + typedef size_t streamsize; + + class locale; + + + class ios_base + { + public: + +#ifdef SWIG_NESTED_CLASSES + // 27.4.2.1.1 Class ios_base::failure + class failure : public exception + { + public: + explicit failure(const string& __str) throw(); + }; +#endif + + // 27.4.2.1.2 Type ios_base::fmtflags + typedef int fmtflags; + // 27.4.2.1.2 Type fmtflags + static const fmtflags boolalpha ; + static const fmtflags dec ; + static const fmtflags fixed ; + static const fmtflags hex ; + static const fmtflags internal ; + static const fmtflags left ; + static const fmtflags oct ; + static const fmtflags right ; + static const fmtflags scientific ; + static const fmtflags showbase ; + static const fmtflags showpoint ; + static const fmtflags showpos ; + static const fmtflags skipws ; + static const fmtflags unitbuf ; + static const fmtflags uppercase ; + static const fmtflags adjustfield ; + static const fmtflags basefield ; + static const fmtflags floatfield ; + + // 27.4.2.1.3 Type ios_base::iostate + typedef int iostate; + static const iostate badbit ; + static const iostate eofbit ; + static const iostate failbit ; + static const iostate goodbit ; + + // 27.4.2.1.4 Type openmode + typedef int openmode; + static const openmode app ; + static const openmode ate ; + static const openmode binary ; + static const openmode in ; + static const openmode out ; + static const openmode trunc ; + + // 27.4.2.1.5 Type seekdir + typedef int seekdir; + static const seekdir beg ; + static const seekdir cur ; + static const seekdir end ; + + + // Callbacks; + enum event + { + erase_event, + imbue_event, + copyfmt_event + }; + + typedef void (*event_callback) (event, ios_base&, int); + + void + register_callback(event_callback __fn, int __index); + + // Fmtflags state: + inline fmtflags + flags() const ; + + inline fmtflags + flags(fmtflags __fmtfl); + + inline fmtflags + setf(fmtflags __fmtfl); + + inline fmtflags + setf(fmtflags __fmtfl, fmtflags __mask); + + inline void + unsetf(fmtflags __mask) ; + + inline streamsize + precision() const ; + + inline streamsize + precision(streamsize __prec); + + inline streamsize + width() const ; + + inline streamsize + width(streamsize __wide); + + static bool + sync_with_stdio(bool __sync = true); + + // Locales: + locale + imbue(const locale& __loc); + + inline locale + getloc() const { return _M_ios_locale; } + + // Storage: + static int + xalloc() throw(); + + inline long& + iword(int __ix); + + inline void*& + pword(int __ix); + + // Destructor + ~ios_base(); + + protected: + ios_base(); + + //50. Copy constructor and assignment operator of ios_base + private: + ios_base(const ios_base& other); + + ios_base& + operator=(const ios_base& other); + }; + + template > + class basic_ios : public ios_base + { + public: + // Types: + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + public: + + iostate + rdstate() const; + + void + clear(iostate __state = goodbit); + + void + setstate(iostate __state); + + bool + good() const; + + bool + eof() const; + + bool + fail() const; + + bool + bad() const; + + iostate + exceptions() const; + + void + exceptions(iostate __except); + + // Constructor/destructor: + explicit + basic_ios(basic_streambuf<_CharT, _Traits>* __sb) : ios_base(); + + virtual + ~basic_ios() ; + + // Members: + basic_ostream<_CharT, _Traits>* + tie() const; + + basic_ostream<_CharT, _Traits>* + tie(basic_ostream<_CharT, _Traits>* __tiestr); + + basic_streambuf<_CharT, _Traits>* + rdbuf() const; + + basic_streambuf<_CharT, _Traits>* + rdbuf(basic_streambuf<_CharT, _Traits>* __sb); + + basic_ios& + copyfmt(const basic_ios& __rhs); + + char_type + fill() const; + + char_type + fill(char_type __ch); + + // Locales: + locale + imbue(const locale& __loc); + + char + narrow(char_type __c, char __dfault) const; + + char_type + widen(char __c) const; + + protected: + // 27.4.5.1 basic_ios constructors + basic_ios(); + private: + basic_ios(const basic_ios& other); + + basic_ios& + operator=(const basic_ios& other); + }; + +} + +namespace std { + typedef basic_ios ios; + %template(ios) basic_ios; +#if defined(SWIG_WCHAR) + typedef basic_ios wios; + %template(wios) basic_ios; +#endif +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_iostream.i b/macx64/bin/swig/share/swig/4.0.0/std/std_iostream.i new file mode 100644 index 00000000..38a22963 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_iostream.i @@ -0,0 +1,339 @@ +/* + For wchar support, you need to include the wchar.i file + before this file, ie: + + %include + %include + + or equivalently, just include + + %include +*/ + +%include +%include +%include +#if defined(SWIG_WCHAR) +%include +#endif + +%{ +#include +%} + + +namespace std +{ + // 27.6.2.1 Template class basic_ostream + template > + class basic_ostream : virtual public basic_ios<_CharT, _Traits> + { + public: + // Types (inherited from basic_ios (27.4.4)): + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + // 27.6.2.2 Constructor/destructor: + explicit + basic_ostream(basic_streambuf<_CharT, _Traits>* __sb); + + virtual + ~basic_ostream(); + + // 27.6.2.5 Formatted output: + // 27.6.2.5.3 basic_ostream::operator<< + basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& (*__pf)(basic_ostream<_CharT, _Traits>&)); + + + basic_ostream<_CharT, _Traits>& + operator<<(basic_ios<_CharT, _Traits>& (*__pf)(basic_ios<_CharT, _Traits>&)); + + + basic_ostream<_CharT, _Traits>& + operator<<(ios_base& (*__pf) (ios_base&)); + + // 27.6.2.5.2 Arithmetic Inserters + + basic_ostream<_CharT, _Traits>& + operator<<(long __n); + + basic_ostream<_CharT, _Traits>& + operator<<(unsigned long __n); + + basic_ostream<_CharT, _Traits>& + operator<<(bool __n); + + basic_ostream<_CharT, _Traits>& + operator<<(short __n); + + basic_ostream<_CharT, _Traits>& + operator<<(unsigned short __n); + + basic_ostream<_CharT, _Traits>& + operator<<(int __n); + + basic_ostream<_CharT, _Traits>& + operator<<(unsigned int __n); + + basic_ostream<_CharT, _Traits>& + operator<<(long long __n); + + basic_ostream<_CharT, _Traits>& + operator<<(unsigned long long __n); + + basic_ostream<_CharT, _Traits>& + operator<<(double __f); + + basic_ostream<_CharT, _Traits>& + operator<<(float __f); + + basic_ostream<_CharT, _Traits>& + operator<<(long double __f); + + basic_ostream<_CharT, _Traits>& + operator<<(const void* __p); + + basic_ostream<_CharT, _Traits>& + operator<<(basic_streambuf<_CharT, _Traits>* __sb); + + %extend { + std::basic_ostream<_CharT, _Traits >& + operator<<(const std::basic_string<_CharT,_Traits, std::allocator<_CharT> >& s) + { + *self << s; + return *self; + } + } + + // Unformatted output: + basic_ostream<_CharT, _Traits>& + put(char_type __c); + + basic_ostream<_CharT, _Traits>& + write(const char_type* __s, streamsize __n); + + basic_ostream<_CharT, _Traits>& + flush(); + + // Seeks: + pos_type + tellp(); + + basic_ostream<_CharT, _Traits>& + seekp(pos_type); + + basic_ostream<_CharT, _Traits>& + seekp(off_type, ios_base::seekdir); + + }; + + // 27.6.1.1 Template class basic_istream + template > + class basic_istream : virtual public basic_ios<_CharT, _Traits> + { + public: + // Types (inherited from basic_ios (27.4.4)): + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + + public: + // 27.6.1.1.1 Constructor/destructor: + explicit + basic_istream(basic_streambuf<_CharT, _Traits>* __sb); + + virtual + ~basic_istream(); + + // 27.6.1.2.3 basic_istream::operator>> + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& (*__pf)(basic_istream<_CharT, _Traits>&)); + + basic_istream<_CharT, _Traits>& + operator>>(basic_ios<_CharT, _Traits>& (*__pf)(basic_ios<_CharT, _Traits>&)); + + basic_istream<_CharT, _Traits>& + operator>>(ios_base& (*__pf)(ios_base&)); + + // 27.6.1.2.2 Arithmetic Extractors + basic_istream<_CharT, _Traits>& + operator>>(bool& __n); + + basic_istream<_CharT, _Traits>& + operator>>(short& __n); + + basic_istream<_CharT, _Traits>& + operator>>(unsigned short& __n); + + basic_istream<_CharT, _Traits>& + operator>>(int& __n); + + basic_istream<_CharT, _Traits>& + operator>>(unsigned int& __n); + + basic_istream<_CharT, _Traits>& + operator>>(long& __n); + + basic_istream<_CharT, _Traits>& + operator>>(unsigned long& __n); + + basic_istream<_CharT, _Traits>& + operator>>(long long& __n); + + basic_istream<_CharT, _Traits>& + operator>>(unsigned long long& __n); + + basic_istream<_CharT, _Traits>& + operator>>(float& __f); + + basic_istream<_CharT, _Traits>& + operator>>(double& __f); + + basic_istream<_CharT, _Traits>& + operator>>(long double& __f); + + basic_istream<_CharT, _Traits>& + operator>>(void*& __p); + + basic_istream<_CharT, _Traits>& + operator>>(basic_streambuf<_CharT, _Traits>* __sb); + + // 27.6.1.3 Unformatted input: + inline streamsize + gcount(void) const; + + int_type + get(void); + + basic_istream<_CharT, _Traits>& + get(char_type& __c); + + basic_istream<_CharT, _Traits>& + get(char_type* __s, streamsize __n, char_type __delim); + + inline basic_istream<_CharT, _Traits>& + get(char_type* __s, streamsize __n); + + basic_istream<_CharT, _Traits>& + get(basic_streambuf<_CharT, _Traits>& __sb, char_type __delim); + + inline basic_istream<_CharT, _Traits>& + get(basic_streambuf<_CharT, _Traits>& __sb); + + basic_istream<_CharT, _Traits>& + getline(char_type* __s, streamsize __n, char_type __delim); + + inline basic_istream<_CharT, _Traits>& + getline(char_type* __s, streamsize __n); + + basic_istream<_CharT, _Traits>& + ignore(streamsize __n = 1, int_type __delim = _Traits::eof()); + + int_type + peek(void); + + basic_istream<_CharT, _Traits>& + read(char_type* __s, streamsize __n); + + streamsize + readsome(char_type* __s, streamsize __n); + + basic_istream<_CharT, _Traits>& + putback(char_type __c); + + basic_istream<_CharT, _Traits>& + unget(void); + + int + sync(void); + + pos_type + tellg(void); + + basic_istream<_CharT, _Traits>& + seekg(pos_type); + + basic_istream<_CharT, _Traits>& + seekg(off_type, ios_base::seekdir); + }; + + // 27.6.1.5 Template class basic_iostream + template > + class basic_iostream + : public basic_istream<_CharT, _Traits>, + public basic_ostream<_CharT, _Traits> + { + public: + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + explicit + basic_iostream(basic_streambuf<_CharT, _Traits>* __sb); + + virtual + ~basic_iostream(); + }; + + typedef basic_ostream ostream ; + typedef basic_istream istream; + typedef basic_iostream iostream; + + extern istream cin; + extern ostream cout; + extern ostream cerr; + extern ostream clog; + +#if defined(SWIG_WCHAR) + typedef basic_ostream wostream; + typedef basic_istream wistream; + typedef basic_iostream wiostream; + + extern wistream wcin; + extern wostream wcout; + extern wostream wcerr; + extern wostream wclog; +#endif + + template > + std::basic_ostream<_CharT, _Traits>& + endl(std::basic_ostream<_CharT, _Traits>& value); + + template > + std::basic_ostream<_CharT, _Traits>& + ends(std::basic_ostream<_CharT, _Traits>& value); + + template > + std::basic_ostream<_CharT, _Traits>& + flush(std::basic_ostream<_CharT, _Traits>& value); +} + +namespace std { + %template(ostream) basic_ostream; + %template(istream) basic_istream; + %template(iostream) basic_iostream; + + %template(endl) endl >; + %template(ends) ends >; + %template(flush) flush >; + +#if defined(SWIG_WCHAR) + %template(wostream) basic_ostream; + %template(wistream) basic_istream; + %template(wiostream) basic_iostream; + + %template(wendl) endl >; + %template(wends) ends >; + %template(wflush) flush >; +#endif +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_list.i b/macx64/bin/swig/share/swig/4.0.0/std/std_list.i new file mode 100644 index 00000000..2cc2d97c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_list.i @@ -0,0 +1,148 @@ +// +// std::list +// + +%include + +// List + +%define %std_list_methods(list...) + %std_sequence_methods(list) + + void pop_front(); + void push_front(const value_type& x); + + void reverse(); + +%enddef + + +%define %std_list_methods_val(list...) + %std_sequence_methods_val(list) + + void pop_front(); + void push_front(value_type x); + + void remove(value_type x); + void unique(); + void reverse(); + void sort(); + + void merge(list& x); +%enddef + +// ------------------------------------------------------------------------ +// std::list +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::list), f(const std::list&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::list can be passed. +// -- f(std::list&), f(std::list*): +// the parameter may be modified; therefore, only a wrapped std::list +// can be passed. +// -- std::list f(), const std::list& f(): +// the list is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::list& f(), std::list* f(): +// the list is returned by reference; therefore, a wrapped std::list +// is returned +// -- const std::list* f(), f(const std::list*): +// for consistency, they expect and return a plain list pointer. +// ------------------------------------------------------------------------ + +%{ +#include +%} + +// exported classes + +namespace std { + + template > + class list { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::list< _Tp, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdListTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::list<" #_Tp ", " #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_LIST, std::list< _Tp, _Alloc >); + +#ifdef %swig_list_methods + // Add swig/language extra methods + %swig_list_methods(std::list< _Tp, _Alloc >); +#endif + + %std_list_methods(list); + }; + + template + class list< _Tp*, _Alloc> { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::list< _Tp*, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdListTraits") { + namespace swig { + template <> struct traits > { + typedef value_category category; + static const char* type_name() { + return "std::list<" #_Tp " *," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_LIST, std::list< _Tp*, _Alloc >); + +#ifdef %swig_list_methods_val + // Add swig/language extra methods + %swig_list_methods_val(std::list< _Tp*, _Alloc >); +#endif + + %std_list_methods_val(list); + }; + +} + +%define %std_extequal_list(...) +%extend std::list< __VA_ARGS__ > { + void remove(const value_type& x) { self->remove(x); } + void merge(std::list< __VA_ARGS__ >& x){ self->merge(x); } + void unique() { self->unique(); } + void sort() { self->sort(); } +} +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_map.i b/macx64/bin/swig/share/swig/4.0.0/std/std_map.i new file mode 100644 index 00000000..62f5cb37 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_map.i @@ -0,0 +1,125 @@ +// +// std::map +// + +%include +%include + +%define %std_map_methods_common(map...) + %std_container_methods(map); + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + void erase(iterator position) { $self->erase(position); } + void erase(iterator first, iterator last) { $self->erase(first, last); } +} + + iterator find(const key_type& x); + iterator lower_bound(const key_type& x); + iterator upper_bound(const key_type& x); +#endif +%enddef + +%define %std_map_methods(map...) + %std_map_methods_common(map); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +// iterator insert(const value_type& x); + #endif +%enddef + + +// ------------------------------------------------------------------------ +// std::map +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::map), f(const std::map&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::map can be passed. +// -- f(std::map&), f(std::map*): +// the parameter may be modified; therefore, only a wrapped std::map +// can be passed. +// -- std::map f(), const std::map& f(): +// the map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::map& f(), std::map* f(): +// the map is returned by reference; therefore, a wrapped std::map +// is returned +// -- const std::map* f(), f(const std::map*): +// for consistency, they expect and return a plain map pointer. +// ------------------------------------------------------------------------ + +%{ +#include +%} +%fragment(""); +%fragment(""); + +// exported class + +namespace std { + + template, + class _Alloc = allocator > > + class map { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair< const _Key, _Tp > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::pair< _Key, _Tp >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment=SWIG_Traits_frag(_Tp), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #_Key "," #_Tp " >"; + } + }; + } + } + + %fragment(SWIG_Traits_frag(std::map< _Key, _Tp, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair< _Key, _Tp >), + fragment="StdMapTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::map<" #_Key "," #_Tp "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MAP, std::map< _Key, _Tp, _Compare, _Alloc >); + + map(const _Compare& other); + +#ifdef %swig_map_methods + // Add swig/language extra methods + %swig_map_methods(std::map< _Key, _Tp, _Compare, _Alloc >); +#endif + + %std_map_methods(map); + }; + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_multimap.i b/macx64/bin/swig/share/swig/4.0.0/std/std_multimap.i new file mode 100644 index 00000000..03e76534 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_multimap.i @@ -0,0 +1,100 @@ +// +// std::multimap +// + +%include + + +%define %std_multimap_methods(mmap...) + %std_map_methods_common(mmap); + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair equal_range(const key_type& x); + std::pair equal_range(const key_type& x) const; +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::multimap +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::multimap), f(const std::multimap&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::multimap can be passed. +// -- f(std::multimap&), f(std::multimap*): +// the parameter may be modified; therefore, only a wrapped std::multimap +// can be passed. +// -- std::multimap f(), const std::multimap& f(): +// the map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::multimap& f(), std::multimap* f(): +// the map is returned by reference; therefore, a wrapped std::multimap +// is returned +// -- const std::multimap* f(), f(const std::multimap*): +// for consistency, they expect and return a plain map pointer. +// ------------------------------------------------------------------------ + + +// exported class + + +namespace std { + template, + class _Alloc = allocator > > + class multimap { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair< const _Key, _Tp > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::pair< _Key, _Tp >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment=SWIG_Traits_frag(_Tp), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #_Key "," #_Tp " >"; + } + }; + } + } + + %fragment(SWIG_Traits_frag(std::multimap< _Key, _Tp, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair< _Key, _Tp >), + fragment="StdMultimapTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::multimap<" #_Key "," #_Tp "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTIMAP, std::multimap< _Key, _Tp, _Compare, _Alloc >); + + multimap(const _Compare& other); + +#ifdef %swig_multimap_methods + // Add swig/language extra methods + %swig_multimap_methods(std::multimap< _Key, _Tp, _Compare, _Alloc >); +#endif + + %std_multimap_methods(multimap); + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_multiset.i b/macx64/bin/swig/share/swig/4.0.0/std/std_multiset.i new file mode 100644 index 00000000..a1d0db81 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_multiset.i @@ -0,0 +1,83 @@ +// +// std::multiset +// + +%include + +// Multiset + +%define %std_multiset_methods(multiset...) + %std_set_methods_common(multiset); +%enddef + + +// ------------------------------------------------------------------------ +// std::multiset +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::multiset), f(const std::multiset&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::multiset can be passed. +// -- f(std::multiset&), f(std::multiset*): +// the parameter may be modified; therefore, only a wrapped std::multiset +// can be passed. +// -- std::multiset f(), const std::multiset& f(): +// the set is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::multiset& f(), std::multiset* f(): +// the set is returned by reference; therefore, a wrapped std::multiset +// is returned +// -- const std::multiset* f(), f(const std::multiset*): +// for consistency, they expect and return a plain set pointer. +// ------------------------------------------------------------------------ + + +// exported classes + +namespace std { + + //multiset + + template , + class _Alloc = allocator< _Key > > + class multiset { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::multiset< _Key, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdMultisetTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::multiset<" #_Key "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTISET, std::multiset< _Key, _Compare, _Alloc >); + + multiset(const _Compare& other); + +#ifdef %swig_multiset_methods + // Add swig/language extra methods + %swig_multiset_methods(std::multiset< _Key, _Compare, _Alloc >); +#endif + + %std_multiset_methods(multiset); + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/std/std_pair.i new file mode 100644 index 00000000..800155f2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_pair.i @@ -0,0 +1,163 @@ +%include + +%{ +#include +%} + + +namespace std { + template struct pair { + typedef T first_type; + typedef U second_type; + + %traits_swigtype(T); + %traits_swigtype(U); + + %fragment(SWIG_Traits_frag(std::pair< T, U >), "header", + fragment=SWIG_Traits_frag(T), + fragment=SWIG_Traits_frag(U), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #T "," #U " >"; + } + }; + } + } + +#ifndef SWIG_STD_PAIR_ASVAL + %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair< T, U >); +#else + %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair< T, U >); +#endif + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair< U1, U2 > &other); + + T first; + U second; + +#ifdef %swig_pair_methods + // Add swig/language extra methods + %swig_pair_methods(std::pair< T, U >) +#endif + }; + + // *** + // The following specializations should disappear or get + // simplified when a 'const SWIGTYPE*&' can be defined + // *** + template struct pair< T, U* > { + typedef T first_type; + typedef U* second_type; + + %traits_swigtype(T); + %traits_swigtype(U); + + %fragment(SWIG_Traits_frag(std::pair< T, U* >), "header", + fragment=SWIG_Traits_frag(T), + fragment=SWIG_Traits_frag(U), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #T "," #U " * >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair< T, U* >); + + pair(); + pair(T first, U* second); + pair(const pair& other); + + T first; + U* second; + +#ifdef %swig_pair_methods + // Add swig/language extra methods + %swig_pair_methods(std::pair< T, U* >) +#endif + }; + + template struct pair< T*, U > { + typedef T* first_type; + typedef U second_type; + + %traits_swigtype(T); + %traits_swigtype(U); + + %fragment(SWIG_Traits_frag(std::pair< T*, U >), "header", + fragment=SWIG_Traits_frag(T), + fragment=SWIG_Traits_frag(U), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #T " *," #U " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair< T*, U >); + + pair(); + pair(T* first, U second); + pair(const pair& other); + + T* first; + U second; + +#ifdef %swig_pair_methods + // Add swig/language extra methods + %swig_pair_methods(std::pair< T*, U >) +#endif + }; + + template struct pair< T*, U* > { + typedef T* first_type; + typedef U* second_type; + + %traits_swigtype(T); + %traits_swigtype(U); + + %fragment(SWIG_Traits_frag(std::pair< T*, U* >), "header", + fragment=SWIG_Traits_frag(T), + fragment=SWIG_Traits_frag(U), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #T " *," #U " * >"; + } + }; + } + } + + %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair< T*, U* >); + + pair(); + pair(T* first, U* second); + pair(const pair& other); + + T* first; + U* second; + +#ifdef %swig_pair_methods + // Add swig/language extra methods + %swig_pair_methods(std::pair< T*, U* >) +#endif + }; + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_queue.i b/macx64/bin/swig/share/swig/4.0.0/std/std_queue.i new file mode 100644 index 00000000..51bb0447 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_queue.i @@ -0,0 +1,129 @@ +/** + * @file std_queue.i + * @date Sun May 6 01:48:07 2007 + * + * @brief A wrapping of std::queue for Ruby. + * + * + */ + +%include + +// Queue + +%define %std_queue_methods(queue...) + queue(); + queue(const _Sequence& other); + + bool empty() const; + size_type size() const; + const value_type& front() const; + const value_type& back() const; + void pop(); + void push(const value_type& value); +%enddef + +%define %std_queue_methods_val(queue...) + %std_queue_methods(queue) +%enddef + +// ------------------------------------------------------------------------ +// std::queue +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::queue), f(const std::queue&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::queue can be passed. +// -- f(std::queue&), f(std::queue*): +// the parameter may be modified; therefore, only a wrapped std::queue +// can be passed. +// -- std::queue f(), const std::queue& f(): +// the queue is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::queue& f(), std::queue* f(): +// the queue is returned by reference; therefore, a wrapped std::queue +// is returned +// -- const std::queue* f(), f(const std::queue*): +// for consistency, they expect and return a plain queue pointer. +// ------------------------------------------------------------------------ + +%{ +#include +%} + +// exported classes + +namespace std { + + template > + class queue { + public: + typedef size_t size_type; + typedef _Tp value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Sequence container_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::queue< _Tp, _Sequence >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdQueueTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::queue<" #_Tp "," #_Sequence " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_QUEUE, std::queue< _Tp, _Sequence >); + +#ifdef %swig_queue_methods + // Add swig/language extra methods + %swig_queue_methods(std::queue< _Tp, _Sequence >); +#endif + + %std_queue_methods(queue); + }; + + template + class queue< _Tp*, _Sequence > { + public: + typedef size_t size_type; + typedef _Tp value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Sequence container_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::queue< _Tp*, _Sequence >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdQueueTraits") { + namespace swig { + template <> struct traits > { + typedef value_category category; + static const char* type_name() { + return "std::queue<" #_Tp "," #_Sequence " * >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_QUEUE, std::queue< _Tp*, _Sequence >); + +#ifdef %swig_queue_methods_val + // Add swig/language extra methods + %swig_queue_methods_val(std::queue< _Tp*, _Sequence >); +#endif + + %std_queue_methods_val(queue); + }; + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_set.i b/macx64/bin/swig/share/swig/4.0.0/std/std_set.i new file mode 100644 index 00000000..0e05aca4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_set.i @@ -0,0 +1,122 @@ +// +// std::set +// + +%include +%include + +// Set +%define %std_set_methods_common(set...) + set(); + set(const set& other); + + bool empty() const; + size_type size() const; + void clear(); + + void swap(set& v); + + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + class iterator; + class reverse_iterator; + + iterator begin(); + iterator end(); + reverse_iterator rbegin(); + reverse_iterator rend(); + +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + void erase(iterator pos) { $self->erase(pos); } + void erase(iterator first, iterator last) { $self->erase(first, last); } +} + + iterator find(const key_type& x); + iterator lower_bound(const key_type& x); + iterator upper_bound(const key_type& x); + std::pair equal_range(const key_type& x); +#endif +%enddef + +%define %std_set_methods(set...) + %std_set_methods_common(set); +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair insert(const value_type& __x); +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::set +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::set), f(const std::set&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::set can be passed. +// -- f(std::set&), f(std::set*): +// the parameter may be modified; therefore, only a wrapped std::set +// can be passed. +// -- std::set f(), const std::set& f(): +// the set is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::set& f(), std::set* f(): +// the set is returned by reference; therefore, a wrapped std::set +// is returned +// -- const std::set* f(), f(const std::set*): +// for consistency, they expect and return a plain set pointer. +// ------------------------------------------------------------------------ + +%{ +#include +%} + +// exported classes + +namespace std { + + template , + class _Alloc = allocator< _Key > > + class set { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::set< _Key, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdSetTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::set<" #_Key "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_SET, std::set< _Key, _Compare, _Alloc >); + + set(const _Compare& other); + +#ifdef %swig_set_methods + // Add swig/language extra methods + %swig_set_methods(std::set< _Key, _Compare, _Alloc >); +#endif + + %std_set_methods(set); + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_sstream.i b/macx64/bin/swig/share/swig/4.0.0/std/std_sstream.i new file mode 100644 index 00000000..12bccef2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_sstream.i @@ -0,0 +1,195 @@ +/* + For wchar support, you need to include the wchar.i file + before this file, ie: + + %include + %include + + or equivalently, just include + + %include +*/ + +%include +%include +%include +%include +#if defined(SWIG_WCHAR) +%include +#endif +%include +%include + +%{ +#include +%} + + +namespace std +{ + template, + typename _Alloc = allocator<_CharT> > + class basic_stringbuf : public basic_streambuf<_CharT, _Traits> + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; +// 251. basic_stringbuf missing allocator_type + typedef _Alloc allocator_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + public: + // Constructors: + explicit + basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out); + + explicit + basic_stringbuf(const basic_string<_CharT, _Traits, _Alloc>& __str, + ios_base::openmode __mode = ios_base::in | ios_base::out); + + // Get and set: + basic_string<_CharT, _Traits, _Alloc> + str() const; + + void + str(const basic_string<_CharT, _Traits, _Alloc>& __s); + + }; + + + // 27.7.2 Template class basic_istringstream + template, + typename _Alloc = allocator<_CharT> > + class basic_istringstream : public basic_istream<_CharT, _Traits> + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; +// 251. basic_stringbuf missing allocator_type + typedef _Alloc allocator_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + + public: + // Constructors: + explicit + basic_istringstream(ios_base::openmode __mode = ios_base::in); + + explicit + basic_istringstream(const basic_string<_CharT, _Traits, _Alloc>& __str, + ios_base::openmode __mode = ios_base::in); + + ~basic_istringstream(); + + // Members: + basic_stringbuf<_CharT, _Traits, _Alloc>* + rdbuf() const; + + basic_string<_CharT, _Traits, _Alloc> + str() const; + + void + str(const basic_string<_CharT, _Traits, _Alloc>& __s); + }; + + + // 27.7.3 Template class basic_ostringstream + template, + typename _Alloc = allocator<_CharT> > + class basic_ostringstream : public basic_ostream<_CharT, _Traits> + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; +// 251. basic_stringbuf missing allocator_type + typedef _Alloc allocator_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + + public: + // Constructors/destructor: + explicit + basic_ostringstream(ios_base::openmode __mode = ios_base::out); + + explicit + basic_ostringstream(const basic_string<_CharT, _Traits, _Alloc>& __str, + ios_base::openmode __mode = ios_base::out); + + ~basic_ostringstream(); + + // Members: + basic_stringbuf<_CharT, _Traits, _Alloc>* + rdbuf() const; + + basic_string<_CharT, _Traits, _Alloc> + str() const; + +#if 0 + void + str(const basic_string<_CharT, _Traits, _Alloc>& __s); +#endif + }; + + + // 27.7.4 Template class basic_stringstream + template, + typename _Alloc = allocator<_CharT> > + class basic_stringstream : public basic_iostream<_CharT, _Traits> + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; +// 251. basic_stringbuf missing allocator_type + typedef _Alloc allocator_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + public: + // Constructors/destructors + explicit + basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in); + + explicit + basic_stringstream(const basic_string<_CharT, _Traits, _Alloc>& __str, + ios_base::openmode __m = ios_base::out | ios_base::in); + + ~basic_stringstream(); + + // Members: + basic_stringbuf<_CharT, _Traits, _Alloc>* + rdbuf() const; + + basic_string<_CharT, _Traits, _Alloc> + str() const; + + void + str(const basic_string<_CharT, _Traits, _Alloc>& __s); + }; + + +} // namespace std + + +namespace std { + %template(istringstream) basic_istringstream; + %template(ostringstream) basic_ostringstream; + %template(stringstream) basic_stringstream; + + +#if defined(SWIG_WCHAR) + %template(wistringstream) basic_istringstream; + %template(wostringstream) basic_ostringstream; + %template(wstringstream) basic_stringstream; +#endif +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_stack.i b/macx64/bin/swig/share/swig/4.0.0/std/std_stack.i new file mode 100644 index 00000000..ff714d09 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_stack.i @@ -0,0 +1,128 @@ +/** + * @file std_stack.i + * @date Sun May 6 01:48:07 2007 + * + * @brief A wrapping of std::stack for Ruby. + * + * + */ + +%include + +// Stack + +%define %std_stack_methods(stack...) + stack(); + stack(const _Sequence& other); + + bool empty() const; + size_type size() const; + const value_type& top() const; + void pop(); + void push(const value_type& value); +%enddef + +%define %std_stack_methods_val(stack...) + %std_stack_methods(stack) +%enddef + +// ------------------------------------------------------------------------ +// std::stack +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::stack), f(const std::stack&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::stack can be passed. +// -- f(std::stack&), f(std::stack*): +// the parameter may be modified; therefore, only a wrapped std::stack +// can be passed. +// -- std::stack f(), const std::stack& f(): +// the stack is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::stack& f(), std::stack* f(): +// the stack is returned by reference; therefore, a wrapped std::stack +// is returned +// -- const std::stack* f(), f(const std::stack*): +// for consistency, they expect and return a plain stack pointer. +// ------------------------------------------------------------------------ + +%{ +#include +%} + +// exported classes + +namespace std { + + template > + class stack { + public: + typedef size_t size_type; + typedef _Tp value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Sequence container_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::stack< _Tp, _Sequence >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdStackTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::stack<" #_Tp "," #_Sequence " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_STACK, std::stack< _Tp, _Sequence >); + +#ifdef %swig_stack_methods + // Add swig/language extra methods + %swig_stack_methods(std::stack< _Tp, _Sequence >); +#endif + + %std_stack_methods(stack); + }; + + template + class stack< _Tp*, _Sequence > { + public: + typedef size_t size_type; + typedef _Sequence::value_type value_type; + typedef value_type reference; + typedef value_type const_reference; + typedef _Sequence container_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::stack< _Tp*, _Sequence >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdStackTraits") { + namespace swig { + template <> struct traits > { + typedef value_category category; + static const char* type_name() { + return "std::stack<" #_Tp "," #_Sequence " * >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_STACK, std::stack< _Tp*, _Sequence >); + +#ifdef %swig_stack_methods_val + // Add swig/language extra methods + %swig_stack_methods_val(std::stack< _Tp*, _Sequence >); +#endif + + %std_stack_methods_val(stack); + }; + +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_streambuf.i b/macx64/bin/swig/share/swig/4.0.0/std/std_streambuf.i new file mode 100644 index 00000000..e1724913 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_streambuf.i @@ -0,0 +1,94 @@ +%include +%{ +#ifndef SWIG_STD_NOMODERN_STL +#include +#else +#include +#endif +%} + +namespace std { + + template > + class basic_streambuf + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + public: + virtual + ~basic_streambuf(); + + // Locales: + locale + pubimbue(const locale &__loc); + + locale + getloc() const; + + // Buffer and positioning: + basic_streambuf<_CharT, _Traits>* + pubsetbuf(char_type* __s, streamsize __n); + + pos_type + pubseekoff(off_type __off, ios_base::seekdir __way, + ios_base::openmode __mode = std::ios_base::in | std::ios_base::out); + + pos_type + pubseekpos(pos_type __sp, + ios_base::openmode __mode = std::ios_base::in | std::ios_base::out); + + int + pubsync() ; + + // Get and put areas: + // Get area: + streamsize + in_avail(); + + int_type + snextc(); + + int_type + sbumpc(); + + int_type + sgetc(); + + streamsize + sgetn(char_type* __s, streamsize __n); + + // Putback: + int_type + sputbackc(char_type __c); + + int_type + sungetc(); + + // Put area: + int_type + sputc(char_type __c); + + streamsize + sputn(const char_type* __s, streamsize __n); + + protected: + basic_streambuf(); + + private: + basic_streambuf(const basic_streambuf& other); + + }; +} + +namespace std { + %template(streambuf) basic_streambuf; +#if defined(SWIG_WCHAR) + %template(wstreambuf) basic_streambuf; +#endif +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_string.i b/macx64/bin/swig/share/swig/4.0.0/std/std_string.i new file mode 100644 index 00000000..35fcdd16 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_string.i @@ -0,0 +1,13 @@ +%include + +/* plain strings */ + +namespace std +{ + %std_comp_methods(basic_string); + %naturalvar string; + typedef basic_string string; +} + + +%template(string) std::basic_string; diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_map.i b/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_map.i new file mode 100644 index 00000000..1fd1eb98 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_map.i @@ -0,0 +1,122 @@ +// +// std::unordered_map +// +%include +%include + +%define %std_unordered_map_methods_common(unordered_map...) + %std_container_methods_without_reverse_iterators(unordered_map); + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + void erase(iterator position) { $self->erase(position); } + void erase(iterator first, iterator last) { $self->erase(first, last); } +} + + iterator find(const key_type& x); +#endif +%enddef + +%define %std_unordered_map_methods(unordered_map...) + %std_unordered_map_methods_common(unordered_map); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +// iterator insert(const value_type& x); + #endif +%enddef + + +// ------------------------------------------------------------------------ +// std::unordered_map +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_map), f(const std::unordered_map&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_map can be passed. +// -- f(std::unordered_map&), f(std::unordered_map*): +// the parameter may be modified; therefore, only a wrapped std::unordered_map +// can be passed. +// -- std::unordered_map f(), const std::unordered_map& f(): +// the unordered_map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_map& f(), std::unordered_map* f(): +// the unordered_map is returned by reference; therefore, a wrapped std::unordered_map +// is returned +// -- const std::unordered_map* f(), f(const std::unordered_map*): +// for consistency, they expect and return a plain unordered_map pointer. +// ------------------------------------------------------------------------ + +%{ +#include +%} +%fragment(""); +%fragment(""); + +// exported class + +namespace std { + + template, class _Pred = std::equal_to< _Key >, + class _Alloc = allocator > > + class unordered_map { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair< const _Key, _Tp > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Hash hasher; + typedef _Compare key_equal; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::pair< _Key, _Tp >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment=SWIG_Traits_frag(_Tp), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #_Key "," #_Tp " >"; + } + }; + } + } + + %fragment(SWIG_Traits_frag(std::unordered_map< _Key, _Tp, _Hash, _Pred, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair< _Key, _Tp >), + fragment="StdUnorderedMapTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_map<" #_Key "," #_Tp "," #_Hash "," #_Pred "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MAP, std::unordered_map< _Key, _Tp, _Hash, _Pred, _Alloc >); + +#ifdef %swig_unordered_map_methods + // Add swig/language extra methods + %swig_unordered_map_methods(std::unordered_map< _Key, _Tp, _Hash, _Pred, _Alloc >); +#endif + + %std_unordered_map_methods(unordered_map); + }; + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_multimap.i b/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_multimap.i new file mode 100644 index 00000000..4be6aa49 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_multimap.i @@ -0,0 +1,85 @@ +// +// std::unordered_multimap +// + +%include + +%define %std_unordered_multimap_methods(mmap...) + %std_unordered_map_methods_common(mmap); + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair equal_range(const key_type& x); + std::pair equal_range(const key_type& x) const; +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::unordered_multimap +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_multimap), f(const std::unordered_multimap&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_multimap can be passed. +// -- f(std::unordered_multimap&), f(std::unordered_multimap*): +// the parameter may be modified; therefore, only a wrapped std::unordered_multimap +// can be passed. +// -- std::unordered_multimap f(), const std::unordered_multimap& f(): +// the map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_multimap& f(), std::unordered_multimap* f(): +// the map is returned by reference; therefore, a wrapped std::unordered_multimap +// is returned +// -- const std::unordered_multimap* f(), f(const std::unordered_multimap*): +// for consistency, they expect and return a plain map pointer. +// ------------------------------------------------------------------------ + + +// exported class + + +namespace std { + template, class _Pred = std::equal_to< _Key >, + class _Alloc = allocator > > + class unordered_multimap { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair< const _Key, _Tp > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Hash hasher; + typedef _Compare key_equal; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::unordered_multimap< _Key, _Tp, _Hash, _Pred, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair< _Key, _Tp >), + fragment="StdUnorderedMultimapTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_multimap<" #_Key "," #_Tp "," #_Hash "," #_Pred "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTIMAP, std::unordered_multimap< _Key, _Tp, _Hash, _Pred, _Alloc >); + +#ifdef %swig_unordered_multimap_methods + // Add swig/language extra methods + %swig_unordered_multimap_methods(std::unordered_multimap< _Key, _Tp, _Hash, _Pred, _Alloc >); +#endif + + %std_unordered_multimap_methods(unordered_multimap); + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_multiset.i b/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_multiset.i new file mode 100644 index 00000000..2910fb6f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_multiset.i @@ -0,0 +1,85 @@ +// +// std::unordered_multiset +// + +%include + +// Unordered Multiset + +%define %std_unordered_multiset_methods(unordered_multiset...) + %std_unordered_set_methods_common(unordered_multiset); +%enddef + + +// ------------------------------------------------------------------------ +// std::unordered_multiset +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_multiset), f(const std::unordered_multiset&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_multiset can be passed. +// -- f(std::unordered_multiset&), f(std::unordered_multiset*): +// the parameter may be modified; therefore, only a wrapped std::unordered_multiset +// can be passed. +// -- std::unordered_multiset f(), const std::unordered_multiset& f(): +// the set is returned by copy; therefore, a sequence of Key:s +// is returned which is most easily used in other functions +// -- std::unordered_multiset& f(), std::unordered_multiset* f(): +// the set is returned by reference; therefore, a wrapped std::unordered_multiset +// is returned +// -- const std::unordered_multiset* f(), f(const std::unordered_multiset*): +// for consistency, they expect and return a plain set pointer. +// ------------------------------------------------------------------------ + + +// exported classes + +namespace std { + + //unordered_multiset + + template , + class _Compare = std::equal_to< _Key >, + class _Alloc = allocator< _Key > > + class unordered_multiset { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Hash hasher; + typedef _Compare key_equal; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::unordered_multiset< _Key, _Hash, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdUnorderedMultisetTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_multiset<" #_Key "," #_Hash "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTISET, std::unordered_multiset< _Key, _Hash, _Compare, _Alloc >); + +#ifdef %swig_unordered_multiset_methods + // Add swig/language extra methods + %swig_unordered_multiset_methods(std::unordered_multiset< _Key, _Hash, _Compare, _Alloc >); +#endif + + %std_unordered_multiset_methods(unordered_multiset); + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_set.i b/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_set.i new file mode 100644 index 00000000..91e80742 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_unordered_set.i @@ -0,0 +1,119 @@ +// +// std::unordered_set +// + +%include +%include + +// Unordered Set +%define %std_unordered_set_methods_common(unordered_set...) + unordered_set(); + unordered_set(const unordered_set& other); + + bool empty() const; + size_type size() const; + void clear(); + + void swap(unordered_set& v); + + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + class iterator; + + iterator begin(); + iterator end(); + +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + void erase(iterator pos) { $self->erase(pos); } + void erase(iterator first, iterator last) { $self->erase(first, last); } +} + + iterator find(const key_type& x); + std::pair equal_range(const key_type& x); +#endif +%enddef + +%define %std_unordered_set_methods(unordered_set...) + %std_unordered_set_methods_common(unordered_set); +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair insert(const value_type& __x); +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::unordered_set +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_set), f(const std::unordered_set&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_set can be passed. +// -- f(std::unordered_set&), f(std::unordered_set*): +// the parameter may be modified; therefore, only a wrapped std::unordered_set +// can be passed. +// -- std::unordered_set f(), const std::unordered_set& f(): +// the unordered_set is returned by copy; therefore, a sequence of Key:s +// is returned which is most easily used in other functions +// -- std::unordered_set& f(), std::unordered_set* f(): +// the unordered_set is returned by reference; therefore, a wrapped std::unordered_set +// is returned +// -- const std::unordered_set* f(), f(const std::unordered_set*): +// for consistency, they expect and return a plain unordered_set pointer. +// ------------------------------------------------------------------------ + +%{ +#include +%} + +// exported classes + +namespace std { + + template , + class _Compare = std::equal_to< _Key >, + class _Alloc = allocator< _Key > > + class unordered_set { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Hash hasher; + typedef _Compare key_equal; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::unordered_set< _Key, _Hash, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdUnorderedSetTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_set<" #_Key "," #_Hash "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_SET, std::unordered_set< _Key, _Hash, _Compare, _Alloc >); + +#ifdef %swig_unordered_set_methods + // Add swig/language extra methods + %swig_unordered_set_methods(std::unordered_set< _Key, _Hash, _Compare, _Alloc >); +#endif + + %std_unordered_set_methods(unordered_set); + }; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/std/std_vector.i new file mode 100644 index 00000000..b35f03be --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_vector.i @@ -0,0 +1,225 @@ +// +// std::vector +// + +%include + +// Vector + +%define %std_vector_methods(vector...) + %std_sequence_methods(vector) + + void reserve(size_type n); + size_type capacity() const; +%enddef + + +%define %std_vector_methods_val(vector...) + %std_sequence_methods_val(vector) + + void reserve(size_type n); + size_type capacity() const; +%enddef + + +// ------------------------------------------------------------------------ +// std::vector +// +// The aim of all that follows would be to integrate std::vector with +// as much as possible, namely, to allow the user to pass and +// be returned tuples or lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::vector), f(const std::vector&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::vector can be passed. +// -- f(std::vector&), f(std::vector*): +// the parameter may be modified; therefore, only a wrapped std::vector +// can be passed. +// -- std::vector f(), const std::vector& f(): +// the vector is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::vector& f(), std::vector* f(): +// the vector is returned by reference; therefore, a wrapped std::vector +// is returned +// -- const std::vector* f(), f(const std::vector*): +// for consistency, they expect and return a plain vector pointer. +// ------------------------------------------------------------------------ + +%{ +#include +%} + +// exported classes + + +namespace std { + + template > + class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + %traits_enum(_Tp); + + %fragment(SWIG_Traits_frag(std::vector< _Tp, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdVectorTraits") { + namespace swig { + template <> struct traits > { + typedef pointer_category category; + static const char* type_name() { + return "std::vector<" #_Tp "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector< _Tp, _Alloc >); + +#ifdef %swig_vector_methods + // Add swig/language extra methods + %swig_vector_methods(std::vector< _Tp, _Alloc >); +#endif + + %std_vector_methods(vector); + }; + + // *** + // This specialization should disappear or get simplified when + // a 'const SWIGTYPE*&' can be defined + // *** + template + class vector< _Tp*, _Alloc > { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::vector< _Tp*, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdVectorTraits") { + namespace swig { + template <> struct traits > { + typedef value_category category; + static const char* type_name() { + return "std::vector<" #_Tp " *," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector< _Tp*, _Alloc >); + +#ifdef %swig_vector_methods_val + // Add swig/language extra methods + %swig_vector_methods_val(std::vector< _Tp*, _Alloc >); +#endif + + %std_vector_methods_val(vector); + }; + + // *** + // const pointer specialization + // *** + template + class vector< _Tp const *, _Alloc > { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp const * value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::vector< _Tp const*, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdVectorTraits") { + namespace swig { + template <> struct traits > { + typedef value_category category; + static const char* type_name() { + return "std::vector<" #_Tp " const*," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector< _Tp const*, _Alloc >); + +#ifdef %swig_vector_methods_val + // Add swig/language extra methods + %swig_vector_methods_val(std::vector< _Tp const*, _Alloc >); +#endif + + %std_vector_methods_val(vector); + }; + + // *** + // bool specialization + // *** + + template + class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef bool value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef bool const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(bool); + + %fragment(SWIG_Traits_frag(std::vector), "header", + fragment=SWIG_Traits_frag(bool), + fragment="StdVectorTraits") { + namespace swig { + template <> struct traits > { + typedef value_category category; + static const char* type_name() { + return "std::vector"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); + + +#ifdef %swig_vector_methods_val + // Add swig/language extra methods + %swig_vector_methods_val(std::vector); +#endif + + %std_vector_methods_val(vector); + +#if defined(SWIG_STD_MODERN_STL) && !defined(SWIG_STD_NOMODERN_STL) + void flip(); +#endif + + }; + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_vectora.i b/macx64/bin/swig/share/swig/4.0.0/std/std_vectora.i new file mode 100644 index 00000000..0e83dc9b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_vectora.i @@ -0,0 +1,7 @@ +// +// We keep this file only for backward compatibility, since std_vector.i +// now uses the std::allocator parameter. +// + +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_wios.i b/macx64/bin/swig/share/swig/4.0.0/std/std_wios.i new file mode 100644 index 00000000..e9c5dd4d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_wios.i @@ -0,0 +1,7 @@ +/* + Provide 'std_ios.i' with wchar support. +*/ + +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_wiostream.i b/macx64/bin/swig/share/swig/4.0.0/std/std_wiostream.i new file mode 100644 index 00000000..b9bef903 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_wiostream.i @@ -0,0 +1,7 @@ +/* + Provide 'std_iostream.i' with wchar support. +*/ + +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_wsstream.i b/macx64/bin/swig/share/swig/4.0.0/std/std_wsstream.i new file mode 100644 index 00000000..4c663fc4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_wsstream.i @@ -0,0 +1,7 @@ +/* + Provide 'std_sstream.i' with wchar support. +*/ + +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_wstreambuf.i b/macx64/bin/swig/share/swig/4.0.0/std/std_wstreambuf.i new file mode 100644 index 00000000..86ac6af6 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_wstreambuf.i @@ -0,0 +1,7 @@ +/* + Provide 'std_streambuf.i' with wchar support. +*/ + +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/std/std_wstring.i b/macx64/bin/swig/share/swig/4.0.0/std/std_wstring.i new file mode 100644 index 00000000..e54d2120 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std/std_wstring.i @@ -0,0 +1,14 @@ +%include +%include + +/* wide strings */ + +namespace std +{ + %std_comp_methods(basic_string); + %naturalvar wstring; + typedef basic_string wstring; +} + +%template(wstring) std::basic_string; + diff --git a/macx64/bin/swig/share/swig/4.0.0/std_except.i b/macx64/bin/swig/share/swig/4.0.0/std_except.i new file mode 100644 index 00000000..0f8b23e7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/std_except.i @@ -0,0 +1,57 @@ +/* ----------------------------------------------------------------------------- + * std_except.i + * + * SWIG library file with typemaps to handle and throw STD exceptions in a + * language and STL independent way, i.e., the target language doesn't + * require to support STL but only the 'exception.i' mechanism. + * + * These typemaps are used when methods are declared with an STD + * exception specification, such as + * + * size_t at() const throw (std::out_of_range); + * + * The typemaps here are based on the language independent + * 'exception.i' library. If that is working in your target language, + * this file will work. + * + * If the target language doesn't implement a robust 'exception.i' + * mechanism, or you prefer other ways to map the STD exceptions, write + * a new std_except.i file in the target library directory. + * ----------------------------------------------------------------------------- */ + +#if defined(SWIGJAVA) || defined(SWIGCSHARP) || defined(SWIGGUILE) || defined(SWIGUTL) || defined(SWIGD) || defined(SWIGOCAML) +#error "This version of std_except.i should not be used" +#endif + +%{ +#include +#include +%} + +%include + + +%define %std_exception_map(Exception, Code) + %typemap(throws,noblock=1) Exception { + SWIG_exception(Code, $1.what()); + } + %ignore Exception; + struct Exception { + }; +%enddef + +namespace std { + %std_exception_map(bad_cast, SWIG_TypeError); + %std_exception_map(bad_exception, SWIG_SystemError); + %std_exception_map(domain_error, SWIG_ValueError); + %std_exception_map(exception, SWIG_SystemError); + %std_exception_map(invalid_argument, SWIG_ValueError); + %std_exception_map(length_error, SWIG_IndexError); + %std_exception_map(logic_error, SWIG_RuntimeError); + %std_exception_map(out_of_range, SWIG_IndexError); + %std_exception_map(overflow_error, SWIG_OverflowError); + %std_exception_map(range_error, SWIG_OverflowError); + %std_exception_map(runtime_error, SWIG_RuntimeError); + %std_exception_map(underflow_error, SWIG_OverflowError); +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/stdint.i b/macx64/bin/swig/share/swig/4.0.0/stdint.i new file mode 100644 index 00000000..14fe6195 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/stdint.i @@ -0,0 +1,106 @@ +/* ----------------------------------------------------------------------------- + * stdint.i + * + * SWIG library file for ISO C99 types: 7.18 Integer types + * ----------------------------------------------------------------------------- */ + +%{ +#include // Use the C99 official header +%} + +%include + +/* Exact integral types. */ + +/* Signed. */ + +typedef signed char int8_t; +typedef short int int16_t; +typedef int int32_t; +#if defined(SWIGWORDSIZE64) +typedef long int int64_t; +#else +typedef long long int int64_t; +#endif + +/* Unsigned. */ +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; +typedef unsigned int uint32_t; +#if defined(SWIGWORDSIZE64) +typedef unsigned long int uint64_t; +#else +typedef unsigned long long int uint64_t; +#endif + + +/* Small types. */ + +/* Signed. */ +typedef signed char int_least8_t; +typedef short int int_least16_t; +typedef int int_least32_t; +#if defined(SWIGWORDSIZE64) +typedef long int int_least64_t; +#else +typedef long long int int_least64_t; +#endif + +/* Unsigned. */ +typedef unsigned char uint_least8_t; +typedef unsigned short int uint_least16_t; +typedef unsigned int uint_least32_t; +#if defined(SWIGWORDSIZE64) +typedef unsigned long int uint_least64_t; +#else +typedef unsigned long long int uint_least64_t; +#endif + + +/* Fast types. */ + +/* Signed. */ +typedef signed char int_fast8_t; +#if defined(SWIGWORDSIZE64) +typedef long int int_fast16_t; +typedef long int int_fast32_t; +typedef long int int_fast64_t; +#else +typedef int int_fast16_t; +typedef int int_fast32_t; +typedef long long int int_fast64_t; +#endif + +/* Unsigned. */ +typedef unsigned char uint_fast8_t; +#if defined(SWIGWORDSIZE64) +typedef unsigned long int uint_fast16_t; +typedef unsigned long int uint_fast32_t; +typedef unsigned long int uint_fast64_t; +#else +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; +typedef unsigned long long int uint_fast64_t; +#endif + + +/* Types for `void *' pointers. */ +#if defined(SWIGWORDSIZE64) +typedef long int intptr_t; +typedef unsigned long int uintptr_t; +#else +typedef int intptr_t; +typedef unsigned int uintptr_t; +#endif + + +/* Largest integral types. */ +#if defined(SWIGWORDSIZE64) +typedef long int intmax_t; +typedef unsigned long int uintmax_t; +#else +typedef long long int intmax_t; +typedef unsigned long long int uintmax_t; +#endif + + diff --git a/macx64/bin/swig/share/swig/4.0.0/stl.i b/macx64/bin/swig/share/swig/4.0.0/stl.i new file mode 100644 index 00000000..0b236afd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/stl.i @@ -0,0 +1,7 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +#warning "stl.i not implemented for this target" +#define SWIG_STL_UNIMPL + diff --git a/macx64/bin/swig/share/swig/4.0.0/swig.swg b/macx64/bin/swig/share/swig/4.0.0/swig.swg new file mode 100644 index 00000000..6dc215dc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swig.swg @@ -0,0 +1,701 @@ +/* ----------------------------------------------------------------------------- + * swig.swg + * + * Common macro definitions for various SWIG directives. This file is always + * included at the top of each input file. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * User Directives + * ----------------------------------------------------------------------------- */ + +/* Deprecated SWIG-1.1 directives */ + +#define %disabledoc %warn "104:%disabledoc is deprecated" +#define %enabledoc %warn "105:%enabledoc is deprecated" +#define %doconly %warn "106:%doconly is deprecated" +#define %style %warn "107:%style is deprecated" /##/ +#define %localstyle %warn "108:%localstyle is deprecated" /##/ +#define %title %warn "109:%title is deprecated" /##/ +#define %section %warn "110:%section is deprecated" /##/ +#define %subsection %warn "111:%subsection is deprecated" /##/ +#define %subsubsection %warn "112:%subsubsection is deprecated" /##/ +#define %new %warn "117:%new is deprecated. Use %newobject" +#define %text %insert("null") + +/* Code insertion directives such as %wrapper %{ ... %} */ + +#define %begin %insert("begin") +#define %runtime %insert("runtime") +#define %header %insert("header") +#define %wrapper %insert("wrapper") +#define %init %insert("init") + +/* Class extension */ + +#define %addmethods %warn "113:%addmethods is now %extend" %extend + +/* %ignore directive */ + +#define %ignore %rename($ignore) +#define %ignorewarn(x) %rename("$ignore:" x) + +/* Access control directives */ + +#define %readonly %warn "114:%readonly is deprecated. Use %immutable; " %feature("immutable"); +#define %readwrite %warn "115:%readwrite is deprecated. Use %mutable; " %feature("immutable",""); + +#define %immutable %feature("immutable") +#define %noimmutable %feature("immutable","0") +#define %clearimmutable %feature("immutable","") +#define %mutable %clearimmutable + +/* Generation of default constructors/destructors (old form, don't use) */ +#define %nodefault %feature("nodefault","1") +#define %default %feature("nodefault","0") +#define %clearnodefault %feature("nodefault","") +#define %makedefault %clearnodefault + +/* Disable the generation of implicit default constructor */ +#define %nodefaultctor %feature("nodefaultctor","1") +#define %defaultctor %feature("nodefaultctor","0") +#define %clearnodefaultctor %feature("nodefaultctor","") + +/* Disable the generation of implicit default destructor (dangerous) */ +#define %nodefaultdtor %feature("nodefaultdtor","1") +#define %defaultdtor %feature("nodefaultdtor","0") +#define %clearnodefaultdtor %feature("nodefaultdtor","") + +/* Enable the generation of copy constructor */ +#define %copyctor %feature("copyctor","1") +#define %nocopyctor %feature("copyctor","0") +#define %clearcopyctor %feature("copyctor","") + +/* Force the old nodefault behavior, ie disable both constructor and destructor */ +#define %oldnodefault %feature("oldnodefault","1") +#define %nooldnodefault %feature("oldnodefault","0") +#define %clearoldnodefault %feature("oldnodefault","") + +/* the %exception directive */ +#if defined(SWIGCSHARP) || defined(SWIGD) +#define %exception %feature("except", canthrow=1) +#else +#define %exception %feature("except") +#endif +#define %noexception %feature("except","0") +#define %clearexception %feature("except","") + +/* the %allowexception directive allows the %exception feature to + be applied to set/get variable methods */ +#define %allowexception %feature("allowexcept") +#define %noallowexception %feature("allowexcept","0") +#define %clearallowexception %feature("allowexcept","") + +/* the %exceptionvar directive, as %exception but it is only applied + to set/get variable methods. You don't need to use the + %allowexception directive when using %exceptionvar. +*/ +#if defined(SWIGCSHARP) || defined(SWIGD) +#define %exceptionvar %feature("exceptvar", canthrow=1) +#else +#define %exceptionvar %feature("exceptvar") +#endif +#define %noexceptionvar %feature("exceptvar","0") +#define %clearexceptionvar %feature("exceptvar","") + +/* the %catches directive */ +#define %catches(tlist...) %feature("catches","("`tlist`")") +#define %clearcatches %feature("catches","") + +/* the %exceptionclass directive */ +#define %exceptionclass %feature("exceptionclass") +#define %noexceptionclass %feature("exceptionclass","0") +#define %clearexceptionclass %feature("exceptionclass","") + +/* the %newobject directive */ +#define %newobject %feature("new") +#define %nonewobject %feature("new","0") +#define %clearnewobject %feature("new","") + +/* the %delobject directive */ +#define %delobject %feature("del") +#define %nodelobject %feature("del","0") +#define %cleardelobject %feature("del","") + +/* the %refobject/%unrefobject directives */ +#define %refobject %feature("ref") +#define %norefobject %feature("ref","0") +#define %clearrefobject %feature("ref","") + +#define %unrefobject %feature("unref") +#define %nounrefobject %feature("unref","0") +#define %clearunrefobject %feature("unref","") + +/* Directives for callback functions (experimental) */ +#define %callback(x) %feature("callback",`x`) +#define %nocallback %feature("callback","0") +#define %clearcallback %feature("callback","") + +/* the %nestedworkaround directive (deprecated) */ +#define %nestedworkaround %feature("nestedworkaround") +#define %nonestedworkaround %feature("nestedworkaround","0") +#define %clearnestedworkaround %feature("nestedworkaround","") + +/* the %flatnested directive */ +#define %flatnested %feature("flatnested") +#define %noflatnested %feature("flatnested","0") +#define %clearflatnested %feature("flatnested","") + +/* the %fastdispatch directive */ +#define %fastdispatch %feature("fastdispatch") +#define %nofastdispatch %feature("fastdispatch","0") +#define %clearfastdispatch %feature("fastdispatch","") + +/* directors directives */ +#define %director %feature("director") +#define %nodirector %feature("director","0") +#define %cleardirector %feature("director","") + +/* naturalvar directives */ +#define %naturalvar %feature("naturalvar") +#define %nonaturalvar %feature("naturalvar","0") +#define %clearnaturalvar %feature("naturalvar","") + +/* nspace directives */ +#define %nspace %feature("nspace") +#define %nonspace %feature("nspace","0") +#define %clearnspace %feature("nspace","") + +/* valuewrapper directives */ +#define %valuewrapper %feature("valuewrapper") +#define %clearvaluewrapper %feature("valuewrapper","") +#define %novaluewrapper %feature("novaluewrapper") +#define %clearnovaluewrapper %feature("novaluewrapper","") + +/* Contract support - Experimental and undocumented */ +#define %contract %feature("contract") +#define %nocontract %feature("contract","0") +#define %clearcontract %feature("contract","") + +/* Macro for setting a dynamic cast function */ +%define DYNAMIC_CAST(mangle,func) +%init %{ + mangle->dcast = (swig_dycast_func) func; +%} +%enddef + +/* aggregation support */ +/* + This macro performs constant aggregation. Basically the idea of + constant aggregation is that you can group a collection of constants + together. For example, suppose you have some code like this: + + #define UP 1 + #define DOWN 2 + #define LEFT 3 + #define RIGHT 4 + + Now, suppose you had a function like this: + + int move(int direction) + + In this case, you might want to restrict the direction argument to + one of the supplied constant names. To do this, you could write some + typemap code by hand. Alternatively, you can use the + %aggregate_check macro defined here to create a simple check + function for you. Here is an example: + + %aggregate_check(int, check_direction, UP, DOWN, LEFT, RIGHT); + + Now, using a typemap + + %typemap(check) int direction { + if (!check_direction($1)) SWIG_exception(SWIG_ValueError,"Bad direction."); + } + + or a contract (better) + + %contract move(int x) { + require: + check_direction(x); + } + +*/ + +%define %aggregate_check(TYPE, NAME, FIRST, ...) +%wrapper %{ +static int NAME(TYPE x) { + static TYPE values[] = { FIRST, ##__VA_ARGS__ }; + static int size = sizeof(values); + int i,j; + for (i = 0, j = 0; i < size; i+=sizeof(TYPE),j++) { + if (x == values[j]) return 1; + } + return 0; +} +%} +%enddef + + +/* ----------------------------------------------------------------------------- + * %rename predicates + * ----------------------------------------------------------------------------- */ +/* + Predicates to be used with %rename, for example: + + - to rename all the functions: + + %rename("%(utitle)s", %$isfunction) ""; + + - to rename only the member methods: + + %rename("m_%(utitle)s", %$isfunction, %$ismember) ""; + + - to rename only the global functions: + + %rename("m_%(utitle)s", %$isfunction, %$not %$ismember) ""; + + or + + %rename("g_%(utitle)s", %$isfunction, %$isglobal) ""; + + - to ignore the enumitems in a given class: + + %rename("$ignore", %$isenumitem, %$classname="MyClass") ""; + + we use the prefix '%$' to avoid clashes with other swig + macros/directives. + +*/ + +%define %$not "not" %enddef +%define %$isenum "match"="enum" %enddef +%define %$isenumitem "match"="enumitem" %enddef +%define %$isaccess "match"="access" %enddef +%define %$isclass "match"="class","notmatch$template$templatetype"="class" %enddef +%define %$isextend "match"="extend" %enddef +%define %$isconstructor "match"="constructor" %enddef +%define %$isdestructor "match"="destructor" %enddef +%define %$isnamespace "match"="namespace" %enddef +%define %$istemplate "match"="template" %enddef +%define %$isconstant "match"="constant" %enddef /* %constant definition */ + +%define %$isunion "match$kind"="union" %enddef +%define %$isfunction "match$kind"="function" %enddef +%define %$isvariable "match$kind"="variable" %enddef +%define %$isimmutable "match$feature:immutable"="1" %enddef +%define %$hasconsttype "match$hasconsttype"="1" %enddef +%define %$hasvalue "match$hasvalue"="1" %enddef +%define %$isextension "match$isextension"="1" %enddef + +%define %$isstatic "match$storage"="static" %enddef +%define %$isfriend "match$storage"="friend" %enddef +%define %$istypedef "match$storage"="typedef" %enddef +%define %$isvirtual "match$storage"="virtual" %enddef +%define %$isexplicit "match$storage"="explicit" %enddef +%define %$isextern "match$storage"="extern" %enddef + +%define %$ismember "match$ismember"="1" %enddef +%define %$isglobal %$not %$ismember %enddef +%define %$isextendmember "match$isextendmember"="1" %enddef +%define %$innamespace "match$parentNode$nodeType"="namespace" %enddef + +%define %$ispublic "match$access"="public" %enddef +%define %$isprotected "match$access"="protected" %enddef +%define %$isprivate "match$access"="private" %enddef + +%define %$ismemberget "match$memberget"="1" %enddef +%define %$ismemberset "match$memberset"="1" %enddef + +%define %$classname %$ismember,"match$parentNode$name" %enddef +%define %$isnested "match$nested"="1" %enddef + +/* ----------------------------------------------------------------------------- + * Common includes for warning labels, macros, fragments etc + * ----------------------------------------------------------------------------- */ + +%include +%include + +/* ----------------------------------------------------------------------------- + * Overloading support + * ----------------------------------------------------------------------------- */ + +/* + * Function/method overloading support. This is done through typemaps, + * but also involves a precedence level. + */ + +/* Macro for overload resolution */ + +%define %typecheck(_x...) %typemap(typecheck, precedence=_x) %enddef + +/* Macros for precedence levels */ + +%define SWIG_TYPECHECK_POINTER 0 %enddef +%define SWIG_TYPECHECK_ITERATOR 5 %enddef +%define SWIG_TYPECHECK_VOIDPTR 10 %enddef +%define SWIG_TYPECHECK_BOOL 15 %enddef +%define SWIG_TYPECHECK_UINT8 20 %enddef +%define SWIG_TYPECHECK_INT8 25 %enddef +%define SWIG_TYPECHECK_UINT16 30 %enddef +%define SWIG_TYPECHECK_INT16 35 %enddef +%define SWIG_TYPECHECK_UINT32 40 %enddef +%define SWIG_TYPECHECK_INT32 45 %enddef +%define SWIG_TYPECHECK_SIZE 47 %enddef +%define SWIG_TYPECHECK_PTRDIFF 48 %enddef +%define SWIG_TYPECHECK_UINT64 50 %enddef +%define SWIG_TYPECHECK_INT64 55 %enddef +%define SWIG_TYPECHECK_UINT128 60 %enddef +%define SWIG_TYPECHECK_INT128 65 %enddef +%define SWIG_TYPECHECK_INTEGER 70 %enddef +%define SWIG_TYPECHECK_FLOAT 80 %enddef +%define SWIG_TYPECHECK_DOUBLE 90 %enddef +%define SWIG_TYPECHECK_CPLXFLT 95 %enddef +%define SWIG_TYPECHECK_CPLXDBL 100 %enddef +%define SWIG_TYPECHECK_COMPLEX 105 %enddef +%define SWIG_TYPECHECK_UNICHAR 110 %enddef +%define SWIG_TYPECHECK_STDUNISTRING 115 %enddef +%define SWIG_TYPECHECK_UNISTRING 120 %enddef +%define SWIG_TYPECHECK_CHAR 130 %enddef +%define SWIG_TYPECHECK_STDSTRING 135 %enddef +%define SWIG_TYPECHECK_STRING 140 %enddef +%define SWIG_TYPECHECK_PAIR 150 %enddef +%define SWIG_TYPECHECK_STDARRAY 155 %enddef +%define SWIG_TYPECHECK_VECTOR 160 %enddef +%define SWIG_TYPECHECK_DEQUE 170 %enddef +%define SWIG_TYPECHECK_LIST 180 %enddef +%define SWIG_TYPECHECK_SET 190 %enddef +%define SWIG_TYPECHECK_MULTISET 200 %enddef +%define SWIG_TYPECHECK_MAP 210 %enddef +%define SWIG_TYPECHECK_MULTIMAP 220 %enddef +%define SWIG_TYPECHECK_STACK 230 %enddef +%define SWIG_TYPECHECK_QUEUE 240 %enddef + +%define SWIG_TYPECHECK_BOOL_ARRAY 1015 %enddef +%define SWIG_TYPECHECK_INT8_ARRAY 1025 %enddef +%define SWIG_TYPECHECK_INT16_ARRAY 1035 %enddef +%define SWIG_TYPECHECK_INT32_ARRAY 1045 %enddef +%define SWIG_TYPECHECK_INT64_ARRAY 1055 %enddef +%define SWIG_TYPECHECK_INT128_ARRAY 1065 %enddef +%define SWIG_TYPECHECK_FLOAT_ARRAY 1080 %enddef +%define SWIG_TYPECHECK_DOUBLE_ARRAY 1090 %enddef +%define SWIG_TYPECHECK_CHAR_ARRAY 1130 %enddef +%define SWIG_TYPECHECK_STRING_ARRAY 1140 %enddef +%define SWIG_TYPECHECK_OBJECT_ARRAY 1150 %enddef + +%define SWIG_TYPECHECK_BOOL_PTR 2015 %enddef +%define SWIG_TYPECHECK_UINT8_PTR 2020 %enddef +%define SWIG_TYPECHECK_INT8_PTR 2025 %enddef +%define SWIG_TYPECHECK_UINT16_PTR 2030 %enddef +%define SWIG_TYPECHECK_INT16_PTR 2035 %enddef +%define SWIG_TYPECHECK_UINT32_PTR 2040 %enddef +%define SWIG_TYPECHECK_INT32_PTR 2045 %enddef +%define SWIG_TYPECHECK_UINT64_PTR 2050 %enddef +%define SWIG_TYPECHECK_INT64_PTR 2055 %enddef +%define SWIG_TYPECHECK_FLOAT_PTR 2080 %enddef +%define SWIG_TYPECHECK_DOUBLE_PTR 2090 %enddef +%define SWIG_TYPECHECK_CHAR_PTR 2130 %enddef + +%define SWIG_TYPECHECK_SWIGOBJECT 5000 %enddef + + +/* ----------------------------------------------------------------------------- + * Default handling of certain overloaded operators + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +%ignoreoperator(NEW) operator new; +%ignoreoperator(DELETE) operator delete; +%ignoreoperator(NEWARR) operator new[]; +%ignoreoperator(DELARR) operator delete[]; + +/* add C++ operator aliases */ +%rename("operator &&") operator and; // `and' `&&' +%rename("operator ||") operator or; // `or' `||' +%rename("operator !") operator not; // `not' `!' +%rename("operator &=") operator and_eq; // `and_eq' `&=' +%rename("operator &") operator bitand; // `bitand' `&' +%rename("operator |") operator bitor; // `bitor' `|' +%rename("operator ~") operator compl; // `compl' `~' +%rename("operator !=") operator not_eq; // `not_eq' `!=' +%rename("operator |=") operator or_eq; // `or_eq' `|=' +%rename("operator ^") operator xor; // `xor' `^' +%rename("operator ^=") operator xor_eq; // `xor_eq' `^=' + +/* Smart pointer handling */ + +%rename(__deref__) *::operator->; +%rename(__ref__) *::operator*(); +%rename(__ref__) *::operator*() const; + +/* Define std namespace */ +namespace std { + /* Warn about std::initializer_list usage. The constructor/method where used should probably be ignored. See docs. */ + template class initializer_list {}; + %typemap(in, warning=SWIGWARN_TYPEMAP_INITIALIZER_LIST_MSG) initializer_list "" + %typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) initializer_list "" +} +#endif + +/* ----------------------------------------------------------------------------- + * Default char * and C array typemaps + * ----------------------------------------------------------------------------- */ + +/* Set up the typemap for handling new return strings */ + +#ifdef __cplusplus +%typemap(newfree) char * "delete [] $1;"; +#else +%typemap(newfree) char * "free($1);"; +#endif + +/* Default typemap for handling char * members */ + +#ifdef __cplusplus +%typemap(memberin) char * { + delete [] $1; + if ($input) { + $1 = ($1_type) (new char[strlen((const char *)$input)+1]); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(memberin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const char * { + if ($input) { + $1 = ($1_type) (new char[strlen((const char *)$input)+1]); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(globalin) char * { + delete [] $1; + if ($input) { + $1 = ($1_type) (new char[strlen((const char *)$input)+1]); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(globalin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const char * { + if ($input) { + $1 = ($1_type) (new char[strlen((const char *)$input)+1]); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +#else +%typemap(memberin) char * { + free($1); + if ($input) { + $1 = ($1_type) malloc(strlen((const char *)$input)+1); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(memberin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const char * { + if ($input) { + $1 = ($1_type) malloc(strlen((const char *)$input)+1); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(globalin) char * { + free($1); + if ($input) { + $1 = ($1_type) malloc(strlen((const char *)$input)+1); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(globalin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const char * { + if ($input) { + $1 = ($1_type) malloc(strlen((const char *)$input)+1); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} + +#endif + +/* Character array handling */ + +%typemap(memberin) char [ANY] { + if($input) { + strncpy((char*)$1, (const char *)$input, $1_dim0-1); + $1[$1_dim0-1] = 0; + } else { + $1[0] = 0; + } +} + +%typemap(globalin) char [ANY] { + if($input) { + strncpy((char*)$1, (const char *)$input, $1_dim0-1); + $1[$1_dim0-1] = 0; + } else { + $1[0] = 0; + } +} + +%typemap(memberin) char [] { + if ($input) strcpy((char *)$1, (const char *)$input); + else $1[0] = 0; +} + +%typemap(globalin) char [] { + if ($input) strcpy((char *)$1, (const char *)$input); + else $1[0] = 0; +} + +/* memberin/globalin typemap for arrays. */ + +%typemap(memberin) SWIGTYPE [ANY] { + size_t ii; + $1_basetype *b = ($1_basetype *) $1; + for (ii = 0; ii < (size_t)$1_size; ii++) b[ii] = *(($1_basetype *) $input + ii); +} + +%typemap(globalin) SWIGTYPE [ANY] { + size_t ii; + $1_basetype *b = ($1_basetype *) $1; + for (ii = 0; ii < (size_t)$1_size; ii++) b[ii] = *(($1_basetype *) $input + ii); +} + +/* memberin/globalin typemap for double arrays. */ + +%typemap(memberin) SWIGTYPE [ANY][ANY] { + $basetype (*inp)[$1_dim1] = ($basetype (*)[$1_dim1])($input); + $basetype (*dest)[$1_dim1] = ($basetype (*)[$1_dim1])($1); + size_t ii = 0; + for (; ii < $1_dim0; ++ii) { + $basetype *ip = inp[ii]; + $basetype *dp = dest[ii]; + size_t jj = 0; + for (; jj < $1_dim1; ++jj) dp[jj] = ip[jj]; + } +} + +%typemap(globalin) SWIGTYPE [ANY][ANY] { + $basetype (*inp)[$1_dim1] = ($basetype (*)[$1_dim1])($input); + $basetype (*dest)[$1_dim1] = ($basetype (*)[$1_dim1])($1); + size_t ii = 0; + for (; ii < $1_dim0; ++ii) { + $basetype *ip = inp[ii]; + $basetype *dp = dest[ii]; + size_t jj = 0; + for (; jj < $1_dim1; ++jj) dp[jj] = ip[jj]; + } +} + +/* ----------------------------------------------------------------------------- + * Runtime code + * ----------------------------------------------------------------------------- */ + +/* The SwigValueWrapper class */ + +/* + * This template wrapper is used to handle C++ objects that are passed or + * returned by value. This is necessary to handle objects that define + * no default-constructor (making it difficult for SWIG to properly declare + * local variables). + * + * The wrapper is used as follows. First consider a function like this: + * + * Vector cross_product(Vector a, Vector b) + * + * Now, if Vector is defined as a C++ class with no default constructor, + * code is generated as follows: + * + * Vector *wrap_cross_product(Vector *inarg1, Vector *inarg2) { + * SwigValueWrapper arg1; + * SwigValueWrapper arg2; + * SwigValueWrapper result; + * + * arg1 = *inarg1; + * arg2 = *inarg2; + * ... + * result = cross_product(arg1,arg2); + * ... + * return new Vector(result); + * } + * + * In the wrappers, the template SwigValueWrapper simply provides a thin + * layer around a Vector *. However, it does this in a way that allows + * the object to be bound after the variable declaration (which is not possible + * with the bare object when it lacks a default constructor). + * + * An observant reader will notice that the code after the variable declarations + * is *identical* to the code used for classes that do define default constructors. + * Thus, this neat trick allows us to fix this special case without having to + * make massive changes to typemaps and other parts of the SWIG code generator. + * + * Note: this code is not included when SWIG runs in C-mode, when classes + * define default constructors, or when pointers and references are used. + * SWIG tries to avoid doing this except in very special circumstances. + * + * Note: This solution suffers from making a large number of copies + * of the underlying object. However, this is needed in the interest of + * safety and in order to cover all of the possible ways in which a value + * might be assigned. For example: + * + * arg1 = *inarg1; // Assignment from a pointer + * arg1 = Vector(1,2,3); // Assignment from a value + * + * The class offers a strong guarantee of exception safety. + * With regards to the implementation, the private SwigMovePointer nested class is + * a simple smart pointer with move semantics, much like std::auto_ptr. + * + * This wrapping technique was suggested by William Fulton and is henceforth + * known as the "Fulton Transform" :-). + */ + +#ifdef __cplusplus +%insert("runtime") %{ +#ifdef __cplusplus +/* SwigValueWrapper is described in swig.swg */ +template class SwigValueWrapper { + struct SwigMovePointer { + T *ptr; + SwigMovePointer(T *p) : ptr(p) { } + ~SwigMovePointer() { delete ptr; } + SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } + } pointer; + SwigValueWrapper& operator=(const SwigValueWrapper& rhs); + SwigValueWrapper(const SwigValueWrapper& rhs); +public: + SwigValueWrapper() : pointer(0) { } + SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } + operator T&() const { return *pointer.ptr; } + T *operator&() { return pointer.ptr; } +};%} + +/* + * SwigValueInit() is a generic initialisation solution as the following approach: + * + * T c_result = T(); + * + * doesn't compile for all types for example: + * + * unsigned int c_result = unsigned int(); + */ +%insert("runtime") %{ +template T SwigValueInit() { + return T(); +} +#endif +%} +#endif + +/* The swiglabels */ + +%insert("runtime") "swiglabels.swg" + + diff --git a/macx64/bin/swig/share/swig/4.0.0/swigarch.i b/macx64/bin/swig/share/swig/4.0.0/swigarch.i new file mode 100644 index 00000000..bf4ee8ef --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swigarch.i @@ -0,0 +1,62 @@ +/* ----------------------------------------------------------------------------- + * swigarch.i + * + * SWIG library file for 32bit/64bit code specialization and checking. + * + * Use only in extreme cases, when no arch. independent code can be + * generated + * + * To activate architecture specific code, use + * + * swig -DSWIGWORDSIZE32 + * + * or + * + * swig -DSWIGWORDSIZE64 + * + * Note that extra checking code will be added to the wrapped code, + * which will prevent the compilation in a different architecture. + * + * If you don't specify the SWIGWORDSIZE (the default case), swig will + * generate architecture independent and/or 32bits code, with no extra + * checking code added. + * ----------------------------------------------------------------------------- */ + +#if !defined(SWIGWORDSIZE32) && !defined(SWIGWORDSIZE64) +# if (__WORDSIZE == 32) +# define SWIGWORDSIZE32 +# endif +#endif + +#if !defined(SWIGWORDSIZE64) && !defined(SWIGWORDSIZE32) +# if defined(__x86_64) || defined(__x86_64__) || (__WORDSIZE == 64) +# define SWIGWORDSIZE64 +# endif +#endif + + +#ifdef SWIGWORDSIZE32 +%{ +#define SWIGWORDSIZE32 +#ifndef LONG_MAX +#include +#endif +#if (__WORDSIZE == 64) || (LONG_MAX != INT_MAX) +# error "SWIG wrapped code invalid in 64 bit architecture, regenerate code using -DSWIGWORDSIZE64" +#endif +%} +#endif + +#ifdef SWIGWORDSIZE64 +%{ +#define SWIGWORDSIZE64 +#ifndef LONG_MAX +#include +#endif +#if (__WORDSIZE == 32) || (LONG_MAX == INT_MAX) +# error "SWIG wrapped code invalid in 32 bit architecture, regenerate code using -DSWIGWORDSIZE32" +#endif +%} +#endif + + diff --git a/macx64/bin/swig/share/swig/4.0.0/swigerrors.swg b/macx64/bin/swig/share/swig/4.0.0/swigerrors.swg new file mode 100644 index 00000000..1a6d2036 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swigerrors.swg @@ -0,0 +1,16 @@ +/* Errors in SWIG */ +#define SWIG_UnknownError -1 +#define SWIG_IOError -2 +#define SWIG_RuntimeError -3 +#define SWIG_IndexError -4 +#define SWIG_TypeError -5 +#define SWIG_DivisionByZero -6 +#define SWIG_OverflowError -7 +#define SWIG_SyntaxError -8 +#define SWIG_ValueError -9 +#define SWIG_SystemError -10 +#define SWIG_AttributeError -11 +#define SWIG_MemoryError -12 +#define SWIG_NullReferenceError -13 + + diff --git a/macx64/bin/swig/share/swig/4.0.0/swigfragments.swg b/macx64/bin/swig/share/swig/4.0.0/swigfragments.swg new file mode 100644 index 00000000..2cbef7cc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swigfragments.swg @@ -0,0 +1,86 @@ +/* ----------------------------------------------------------------------------- + * swigfragments.swg + * + * Common fragments + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * Fragments for C header files + * ----------------------------------------------------------------------------- */ + +%fragment("", "header") %{ +#include +%} + +/* Default compiler options for gcc allow long_long but not LLONG_MAX. + * Define SWIG_NO_LLONG_MAX if this added limits support is not wanted. */ +%fragment("", "header") %{ +#include +#if !defined(SWIG_NO_LLONG_MAX) +# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) +# define LLONG_MAX __LONG_LONG_MAX__ +# define LLONG_MIN (-LLONG_MAX - 1LL) +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +# endif +#endif +%} + +%fragment("", "header") %{ +#include +%} + +%fragment("", "header") %{ +#include +%} + +%fragment("", "header") %{ +#include +#if (defined(_MSC_VER) && (_MSC_VER < 1900)) || defined(__BORLANDC__) || defined(_WATCOM) +# ifndef snprintf +# define snprintf _snprintf +# endif +#endif +%} + +%fragment("", "header") %{ +#include +#ifdef _MSC_VER +# ifndef strtoull +# define strtoull _strtoui64 +# endif +# ifndef strtoll +# define strtoll _strtoi64 +# endif +#endif +%} + +%fragment("", "header") %{ +#include +#include +#ifndef WCHAR_MIN +# define WCHAR_MIN 0 +#endif +#ifndef WCHAR_MAX +# define WCHAR_MAX 65535 +#endif +%} + +/* ----------------------------------------------------------------------------- + * Fragments for C++ header files + * ----------------------------------------------------------------------------- */ + +%fragment("", "header") %{ +#include +%} + +%fragment("", "header") %{ +#include +%} + +%fragment("", "header") %{ +#include +%} + +%fragment("", "header") %{ +#include +%} diff --git a/macx64/bin/swig/share/swig/4.0.0/swiginit.swg b/macx64/bin/swig/share/swig/4.0.0/swiginit.swg new file mode 100644 index 00000000..33926b10 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swiginit.swg @@ -0,0 +1,230 @@ +/* ----------------------------------------------------------------------------- + * Type initialization: + * This problem is tough by the requirement that no dynamic + * memory is used. Also, since swig_type_info structures store pointers to + * swig_cast_info structures and swig_cast_info structures store pointers back + * to swig_type_info structures, we need some lookup code at initialization. + * The idea is that swig generates all the structures that are needed. + * The runtime then collects these partially filled structures. + * The SWIG_InitializeModule function takes these initial arrays out of + * swig_module, and does all the lookup, filling in the swig_module.types + * array with the correct data and linking the correct swig_cast_info + * structures together. + * + * The generated swig_type_info structures are assigned statically to an initial + * array. We just loop through that array, and handle each type individually. + * First we lookup if this type has been already loaded, and if so, use the + * loaded structure instead of the generated one. Then we have to fill in the + * cast linked list. The cast data is initially stored in something like a + * two-dimensional array. Each row corresponds to a type (there are the same + * number of rows as there are in the swig_type_initial array). Each entry in + * a column is one of the swig_cast_info structures for that type. + * The cast_initial array is actually an array of arrays, because each row has + * a variable number of columns. So to actually build the cast linked list, + * we find the array of casts associated with the type, and loop through it + * adding the casts to the list. The one last trick we need to do is making + * sure the type pointer in the swig_cast_info struct is correct. + * + * First off, we lookup the cast->type name to see if it is already loaded. + * There are three cases to handle: + * 1) If the cast->type has already been loaded AND the type we are adding + * casting info to has not been loaded (it is in this module), THEN we + * replace the cast->type pointer with the type pointer that has already + * been loaded. + * 2) If BOTH types (the one we are adding casting info to, and the + * cast->type) are loaded, THEN the cast info has already been loaded by + * the previous module so we just ignore it. + * 3) Finally, if cast->type has not already been loaded, then we add that + * swig_cast_info to the linked list (because the cast->type) pointer will + * be correct. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* c-mode */ +#endif +#endif + +#if 0 +#define SWIGRUNTIME_DEBUG +#endif + + +SWIGRUNTIME void +SWIG_InitializeModule(void *clientdata) { + size_t i; + swig_module_info *module_head, *iter; + int init; + + /* check to see if the circular list has been setup, if not, set it up */ + if (swig_module.next==0) { + /* Initialize the swig_module */ + swig_module.type_initial = swig_type_initial; + swig_module.cast_initial = swig_cast_initial; + swig_module.next = &swig_module; + init = 1; + } else { + init = 0; + } + + /* Try and load any already created modules */ + module_head = SWIG_GetModule(clientdata); + if (!module_head) { + /* This is the first module loaded for this interpreter */ + /* so set the swig module into the interpreter */ + SWIG_SetModule(clientdata, &swig_module); + } else { + /* the interpreter has loaded a SWIG module, but has it loaded this one? */ + iter=module_head; + do { + if (iter==&swig_module) { + /* Our module is already in the list, so there's nothing more to do. */ + return; + } + iter=iter->next; + } while (iter!= module_head); + + /* otherwise we must add our module into the list */ + swig_module.next = module_head->next; + module_head->next = &swig_module; + } + + /* When multiple interpreters are used, a module could have already been initialized in + a different interpreter, but not yet have a pointer in this interpreter. + In this case, we do not want to continue adding types... everything should be + set up already */ + if (init == 0) return; + + /* Now work on filling in swig_module.types */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: size %lu\n", (unsigned long)swig_module.size); +#endif + for (i = 0; i < swig_module.size; ++i) { + swig_type_info *type = 0; + swig_type_info *ret; + swig_cast_info *cast; + +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name); +#endif + + /* if there is another module already loaded */ + if (swig_module.next != &swig_module) { + type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); + } + if (type) { + /* Overwrite clientdata field */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found type %s\n", type->name); +#endif + if (swig_module.type_initial[i]->clientdata) { + type->clientdata = swig_module.type_initial[i]->clientdata; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); +#endif + } + } else { + type = swig_module.type_initial[i]; + } + + /* Insert casting types */ + cast = swig_module.cast_initial[i]; + while (cast->type) { + + /* Don't need to add information already in the list */ + ret = 0; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); +#endif + if (swig_module.next != &swig_module) { + ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); +#ifdef SWIGRUNTIME_DEBUG + if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); +#endif + } + if (ret) { + if (type == swig_module.type_initial[i]) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: skip old type %s\n", ret->name); +#endif + cast->type = ret; + ret = 0; + } else { + /* Check for casting already in the list */ + swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); +#ifdef SWIGRUNTIME_DEBUG + if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); +#endif + if (!ocast) ret = 0; + } + } + + if (!ret) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); +#endif + if (type->cast) { + type->cast->prev = cast; + cast->next = type->cast; + } + type->cast = cast; + } + cast++; + } + /* Set entry in modules->types array equal to the type */ + swig_module.types[i] = type; + } + swig_module.types[i] = 0; + +#ifdef SWIGRUNTIME_DEBUG + printf("**** SWIG_InitializeModule: Cast List ******\n"); + for (i = 0; i < swig_module.size; ++i) { + int j = 0; + swig_cast_info *cast = swig_module.cast_initial[i]; + printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name); + while (cast->type) { + printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); + cast++; + ++j; + } + printf("---- Total casts: %d\n",j); + } + printf("**** SWIG_InitializeModule: Cast List ******\n"); +#endif +} + +/* This function will propagate the clientdata field of type to +* any new swig_type_info structures that have been added into the list +* of equivalent types. It is like calling +* SWIG_TypeClientData(type, clientdata) a second time. +*/ +SWIGRUNTIME void +SWIG_PropagateClientData(void) { + size_t i; + swig_cast_info *equiv; + static int init_run = 0; + + if (init_run) return; + init_run = 1; + + for (i = 0; i < swig_module.size; i++) { + if (swig_module.types[i]->clientdata) { + equiv = swig_module.types[i]->cast; + while (equiv) { + if (!equiv->converter) { + if (equiv->type && !equiv->type->clientdata) + SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); + } + equiv = equiv->next; + } + } + } +} + +#ifdef __cplusplus +#if 0 +{ /* c-mode */ +#endif +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/swiglabels.swg b/macx64/bin/swig/share/swig/4.0.0/swiglabels.swg new file mode 100644 index 00000000..b3855665 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swiglabels.swg @@ -0,0 +1,123 @@ +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIG_MSC_UNSUPPRESS_4505 +# if defined(_MSC_VER) +# pragma warning(disable : 4505) /* unreferenced local function has been removed */ +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if defined(__GNUC__) +# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + +/* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */ +#if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES) +# define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0 +#endif + +/* Intel's compiler complains if a variable which was never initialised is + * cast to void, which is a common idiom which we use to indicate that we + * are aware a variable isn't used. So we just silence that warning. + * See: https://github.com/swig/swig/issues/192 for more discussion. + */ +#ifdef __INTEL_COMPILER +# pragma warning disable 592 +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/swigrun.i b/macx64/bin/swig/share/swig/4.0.0/swigrun.i new file mode 100644 index 00000000..6026a915 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swigrun.i @@ -0,0 +1,8 @@ +/* ----------------------------------------------------------------------------- + * swigrun.i + * + * Empty module (for now). Placeholder for runtime libs + * ----------------------------------------------------------------------------- */ + +%module swigrun + diff --git a/macx64/bin/swig/share/swig/4.0.0/swigrun.swg b/macx64/bin/swig/share/swig/4.0.0/swigrun.swg new file mode 100644 index 00000000..59118eca --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swigrun.swg @@ -0,0 +1,573 @@ +/* ----------------------------------------------------------------------------- + * swigrun.swg + * + * This file contains generic C API SWIG runtime support for pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +/* This should only be incremented when either the layout of swig_type_info changes, + or for whatever reason, the runtime changes incompatibly */ +#define SWIG_RUNTIME_VERSION "4" + +/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ +#ifdef SWIG_TYPE_TABLE +# define SWIG_QUOTE_STRING(x) #x +# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) +# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) +#else +# define SWIG_TYPE_TABLE_NAME +#endif + +/* + You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for + creating a static or dynamic library from the SWIG runtime code. + In 99.9% of the cases, SWIG just needs to declare them as 'static'. + + But only do this if strictly necessary, ie, if you have problems + with your compiler or suchlike. +*/ + +#ifndef SWIGRUNTIME +# define SWIGRUNTIME SWIGINTERN +#endif + +#ifndef SWIGRUNTIMEINLINE +# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE +#endif + +/* Generic buffer size */ +#ifndef SWIG_BUFFER_SIZE +# define SWIG_BUFFER_SIZE 1024 +#endif + +/* Flags for pointer conversions */ +#define SWIG_POINTER_DISOWN 0x1 +#define SWIG_CAST_NEW_MEMORY 0x2 +#define SWIG_POINTER_NO_NULL 0x4 + +/* Flags for new pointer objects */ +#define SWIG_POINTER_OWN 0x1 + + +/* + Flags/methods for returning states. + + The SWIG conversion methods, as ConvertPtr, return an integer + that tells if the conversion was successful or not. And if not, + an error code can be returned (see swigerrors.swg for the codes). + + Use the following macros/flags to set or process the returning + states. + + In old versions of SWIG, code such as the following was usually written: + + if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { + // success code + } else { + //fail code + } + + Now you can be more explicit: + + int res = SWIG_ConvertPtr(obj,vptr,ty.flags); + if (SWIG_IsOK(res)) { + // success code + } else { + // fail code + } + + which is the same really, but now you can also do + + Type *ptr; + int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); + if (SWIG_IsOK(res)) { + // success code + if (SWIG_IsNewObj(res) { + ... + delete *ptr; + } else { + ... + } + } else { + // fail code + } + + I.e., now SWIG_ConvertPtr can return new objects and you can + identify the case and take care of the deallocation. Of course that + also requires SWIG_ConvertPtr to return new result values, such as + + int SWIG_ConvertPtr(obj, ptr,...) { + if () { + if () { + *ptr = ; + return SWIG_NEWOBJ; + } else { + *ptr = ; + return SWIG_OLDOBJ; + } + } else { + return SWIG_BADOBJ; + } + } + + Of course, returning the plain '0(success)/-1(fail)' still works, but you can be + more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the + SWIG errors code. + + Finally, if the SWIG_CASTRANK_MODE is enabled, the result code + allows to return the 'cast rank', for example, if you have this + + int food(double) + int fooi(int); + + and you call + + food(1) // cast rank '1' (1 -> 1.0) + fooi(1) // cast rank '0' + + just use the SWIG_AddCast()/SWIG_CheckState() +*/ + +#define SWIG_OK (0) +#define SWIG_ERROR (-1) +#define SWIG_IsOK(r) (r >= 0) +#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) + +/* The CastRankLimit says how many bits are used for the cast rank */ +#define SWIG_CASTRANKLIMIT (1 << 8) +/* The NewMask denotes the object was created (using new/malloc) */ +#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) +/* The TmpMask is for in/out typemaps that use temporal objects */ +#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) +/* Simple returning values */ +#define SWIG_BADOBJ (SWIG_ERROR) +#define SWIG_OLDOBJ (SWIG_OK) +#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) +#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) +/* Check, add and del mask methods */ +#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) +#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) +#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) +#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) +#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) +#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) + +/* Cast-Rank Mode */ +#if defined(SWIG_CASTRANK_MODE) +# ifndef SWIG_TypeRank +# define SWIG_TypeRank unsigned long +# endif +# ifndef SWIG_MAXCASTRANK /* Default cast allowed */ +# define SWIG_MAXCASTRANK (2) +# endif +# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) +# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) +SWIGINTERNINLINE int SWIG_AddCast(int r) { + return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; +} +SWIGINTERNINLINE int SWIG_CheckState(int r) { + return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; +} +#else /* no cast-rank mode */ +# define SWIG_AddCast(r) (r) +# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) +#endif + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void *(*swig_converter_func)(void *, int *); +typedef struct swig_type_info *(*swig_dycast_func)(void **); + +/* Structure to store information on one type */ +typedef struct swig_type_info { + const char *name; /* mangled name of this type */ + const char *str; /* human readable name of this type */ + swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ + struct swig_cast_info *cast; /* linked list of types that can cast into this type */ + void *clientdata; /* language specific type data */ + int owndata; /* flag if the structure owns the clientdata */ +} swig_type_info; + +/* Structure to store a type and conversion function used for casting */ +typedef struct swig_cast_info { + swig_type_info *type; /* pointer to type that is equivalent to this type */ + swig_converter_func converter; /* function to cast the void pointers */ + 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; + +/* 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.*/ +typedef struct swig_module_info { + swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ + size_t size; /* Number of types in this module */ + struct swig_module_info *next; /* Pointer to next element in circularly linked list */ + swig_type_info **type_initial; /* Array of initially generated type structures */ + swig_cast_info **cast_initial; /* Array of initially generated casting structures */ + void *clientdata; /* Language specific module data */ +} swig_module_info; + +/* + Compare two type names skipping the space characters, therefore + "char*" == "char *" and "Class" == "Class", etc. + + Return 0 when the two name types are equivalent, as in + strncmp, but skipping ' '. +*/ +SWIGRUNTIME int +SWIG_TypeNameComp(const char *f1, const char *l1, + const char *f2, const char *l2) { + for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { + while ((*f1 == ' ') && (f1 != l1)) ++f1; + while ((*f2 == ' ') && (f2 != l2)) ++f2; + if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; + } + return (int)((l1 - f1) - (l2 - f2)); +} + +/* + Check type equivalence in a name list like ||... + Return 0 if equal, -1 if nb < tb, 1 if nb > tb +*/ +SWIGRUNTIME int +SWIG_TypeCmp(const char *nb, const char *tb) { + int equiv = 1; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (equiv != 0 && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = SWIG_TypeNameComp(nb, ne, tb, te); + if (*ne) ++ne; + } + return equiv; +} + +/* + Check type equivalence in a name list like ||... + Return 0 if not equal, 1 if equal +*/ +SWIGRUNTIME int +SWIG_TypeEquiv(const char *nb, const char *tb) { + return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0; +} + +/* + Check the typename +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheck(const char *c, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (strcmp(iter->type->name, c) == 0) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (iter->type == from) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Cast a pointer up an inheritance hierarchy +*/ +SWIGRUNTIMEINLINE void * +SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { + return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); +} + +/* + Dynamic pointer casting. Down an inheritance hierarchy +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { + swig_type_info *lastty = ty; + if (!ty || !ty->dcast) return ty; + while (ty && (ty->dcast)) { + ty = (*ty->dcast)(ptr); + if (ty) lastty = ty; + } + return lastty; +} + +/* + Return the name associated with this type +*/ +SWIGRUNTIMEINLINE const char * +SWIG_TypeName(const swig_type_info *ty) { + return ty->name; +} + +/* + Return the pretty name associated with this type, + that is an unmangled type name in a form presentable to the user. +*/ +SWIGRUNTIME const char * +SWIG_TypePrettyName(const swig_type_info *type) { + /* The "str" field contains the equivalent pretty names of the + type, separated by vertical-bar characters. We choose + to print the last name, as it is often (?) the most + specific. */ + if (!type) return NULL; + if (type->str != NULL) { + const char *last_name = type->str; + const char *s; + for (s = type->str; *s; s++) + if (*s == '|') last_name = s+1; + return last_name; + } + else + return type->name; +} + +/* + Set the clientdata field for a type +*/ +SWIGRUNTIME void +SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { + swig_cast_info *cast = ti->cast; + /* if (ti->clientdata == clientdata) return; */ + ti->clientdata = clientdata; + + while (cast) { + if (!cast->converter) { + swig_type_info *tc = cast->type; + if (!tc->clientdata) { + SWIG_TypeClientData(tc, clientdata); + } + } + cast = cast->next; + } +} +SWIGRUNTIME void +SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { + SWIG_TypeClientData(ti, clientdata); + ti->owndata = 1; +} + +/* + Search for a swig_type_info structure only by mangled name + Search is a O(log #types) + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_MangledTypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + swig_module_info *iter = start; + do { + if (iter->size) { + size_t l = 0; + size_t r = iter->size - 1; + do { + /* since l+r >= 0, we can (>> 1) instead (/ 2) */ + size_t i = (l + r) >> 1; + const char *iname = iter->types[i]->name; + if (iname) { + int compare = strcmp(name, iname); + if (compare == 0) { + return iter->types[i]; + } else if (compare < 0) { + if (i) { + r = i - 1; + } else { + break; + } + } else if (compare > 0) { + l = i + 1; + } + } else { + break; /* should never happen */ + } + } while (l <= r); + } + iter = iter->next; + } while (iter != end); + return 0; +} + +/* + Search for a swig_type_info structure for either a mangled name or a human readable name. + It first searches the mangled names of the types, which is a O(log #types) + If a type is not found it then searches the human readable names, which is O(#types). + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + /* STEP 1: Search the name field using binary search */ + swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); + if (ret) { + return ret; + } else { + /* STEP 2: If the type hasn't been found, do a complete search + of the str field (the human readable name) */ + swig_module_info *iter = start; + do { + size_t i = 0; + for (; i < iter->size; ++i) { + if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) + return iter->types[i]; + } + iter = iter->next; + } while (iter != end); + } + + /* neither found a match */ + return 0; +} + +/* + Pack binary data into a string +*/ +SWIGRUNTIME char * +SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + const unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} + +/* + Unpack binary data from a string +*/ +SWIGRUNTIME const char * +SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + char d = *(c++); + unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = (unsigned char)((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = (unsigned char)((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (unsigned char)(d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (unsigned char)(d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} + +/* + Pack 'void *' into a string buffer. +*/ +SWIGRUNTIME char * +SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { + char *r = buff; + if ((2*sizeof(void *) + 2) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,&ptr,sizeof(void *)); + if (strlen(name) + 1 > (bsz - (r - buff))) return 0; + strcpy(r,name); + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + *ptr = (void *) 0; + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sizeof(void *)); +} + +SWIGRUNTIME char * +SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { + char *r = buff; + size_t lname = (name ? strlen(name) : 0); + if ((2*sz + 2 + lname) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + if (lname) { + strncpy(r,name,lname+1); + } else { + *r = 0; + } + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + memset(ptr,0,sz); + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sz); +} + +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/swigwarn.swg b/macx64/bin/swig/share/swig/4.0.0/swigwarn.swg new file mode 100644 index 00000000..ee3be116 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swigwarn.swg @@ -0,0 +1,301 @@ +/* SWIG warning codes - generated from swigwarn.h - do not edit */ + + +%define SWIGWARN_NONE 0 %enddef + +/* -- Deprecated features -- */ + +%define SWIGWARN_DEPRECATED_EXTERN 101 %enddef +%define SWIGWARN_DEPRECATED_VAL 102 %enddef +%define SWIGWARN_DEPRECATED_OUT 103 %enddef +%define SWIGWARN_DEPRECATED_DISABLEDOC 104 %enddef +%define SWIGWARN_DEPRECATED_ENABLEDOC 105 %enddef +%define SWIGWARN_DEPRECATED_DOCONLY 106 %enddef +%define SWIGWARN_DEPRECATED_STYLE 107 %enddef +%define SWIGWARN_DEPRECATED_LOCALSTYLE 108 %enddef +%define SWIGWARN_DEPRECATED_TITLE 109 %enddef +%define SWIGWARN_DEPRECATED_SECTION 110 %enddef +%define SWIGWARN_DEPRECATED_SUBSECTION 111 %enddef +%define SWIGWARN_DEPRECATED_SUBSUBSECTION 112 %enddef +%define SWIGWARN_DEPRECATED_ADDMETHODS 113 %enddef +%define SWIGWARN_DEPRECATED_READONLY 114 %enddef +%define SWIGWARN_DEPRECATED_READWRITE 115 %enddef +%define SWIGWARN_DEPRECATED_EXCEPT 116 %enddef +%define SWIGWARN_DEPRECATED_NEW 117 %enddef +%define SWIGWARN_DEPRECATED_EXCEPT_TM 118 %enddef +%define SWIGWARN_DEPRECATED_IGNORE_TM 119 %enddef +%define SWIGWARN_DEPRECATED_OPTC 120 %enddef +%define SWIGWARN_DEPRECATED_NAME 121 %enddef +%define SWIGWARN_DEPRECATED_NOEXTERN 122 %enddef +%define SWIGWARN_DEPRECATED_NODEFAULT 123 %enddef +%define SWIGWARN_DEPRECATED_TYPEMAP_LANG 124 %enddef +%define SWIGWARN_DEPRECATED_INPUT_FILE 125 %enddef +%define SWIGWARN_DEPRECATED_NESTED_WORKAROUND 126 %enddef + +/* -- Preprocessor -- */ + +%define SWIGWARN_PP_MISSING_FILE 201 %enddef +%define SWIGWARN_PP_EVALUATION 202 %enddef +%define SWIGWARN_PP_INCLUDEALL_IMPORTALL 203 %enddef +%define SWIGWARN_PP_CPP_WARNING 204 %enddef +%define SWIGWARN_PP_CPP_ERROR 205 %enddef +%define SWIGWARN_PP_UNEXPECTED_TOKENS 206 %enddef + +/* -- C/C++ Parser -- */ + +%define SWIGWARN_PARSE_CLASS_KEYWORD 301 %enddef +%define SWIGWARN_PARSE_REDEFINED 302 %enddef +%define SWIGWARN_PARSE_EXTEND_UNDEF 303 %enddef +%define SWIGWARN_PARSE_UNSUPPORTED_VALUE 304 %enddef +%define SWIGWARN_PARSE_BAD_VALUE 305 %enddef +%define SWIGWARN_PARSE_PRIVATE 306 %enddef +%define SWIGWARN_PARSE_BAD_DEFAULT 307 %enddef +%define SWIGWARN_PARSE_NAMESPACE_ALIAS 308 %enddef +%define SWIGWARN_PARSE_PRIVATE_INHERIT 309 %enddef +%define SWIGWARN_PARSE_TEMPLATE_REPEAT 310 %enddef +%define SWIGWARN_PARSE_TEMPLATE_PARTIAL 311 %enddef +%define SWIGWARN_PARSE_UNNAMED_NESTED_CLASS 312 %enddef +%define SWIGWARN_PARSE_UNDEFINED_EXTERN 313 %enddef +%define SWIGWARN_PARSE_KEYWORD 314 %enddef +%define SWIGWARN_PARSE_USING_UNDEF 315 %enddef +%define SWIGWARN_PARSE_MODULE_REPEAT 316 %enddef +%define SWIGWARN_PARSE_TEMPLATE_SP_UNDEF 317 %enddef +%define SWIGWARN_PARSE_TEMPLATE_AMBIG 318 %enddef +%define SWIGWARN_PARSE_NO_ACCESS 319 %enddef +%define SWIGWARN_PARSE_EXPLICIT_TEMPLATE 320 %enddef +%define SWIGWARN_PARSE_BUILTIN_NAME 321 %enddef +%define SWIGWARN_PARSE_REDUNDANT 322 %enddef +%define SWIGWARN_PARSE_REC_INHERITANCE 323 %enddef +%define SWIGWARN_PARSE_NESTED_TEMPLATE 324 %enddef +%define SWIGWARN_PARSE_NAMED_NESTED_CLASS 325 %enddef +%define SWIGWARN_PARSE_EXTEND_NAME 326 %enddef + +%define SWIGWARN_CPP11_LAMBDA 340 %enddef +%define SWIGWARN_CPP11_ALIAS_DECLARATION 341 %enddef /* redundant now */ +%define SWIGWARN_CPP11_ALIAS_TEMPLATE 342 %enddef /* redundant now */ +%define SWIGWARN_CPP11_VARIADIC_TEMPLATE 343 %enddef + +%define SWIGWARN_IGNORE_OPERATOR_NEW 350 %enddef /* new */ +%define SWIGWARN_IGNORE_OPERATOR_DELETE 351 %enddef /* delete */ +%define SWIGWARN_IGNORE_OPERATOR_PLUS 352 %enddef /* + */ +%define SWIGWARN_IGNORE_OPERATOR_MINUS 353 %enddef /* - */ +%define SWIGWARN_IGNORE_OPERATOR_MUL 354 %enddef /* * */ +%define SWIGWARN_IGNORE_OPERATOR_DIV 355 %enddef /* / */ +%define SWIGWARN_IGNORE_OPERATOR_MOD 356 %enddef /* % */ +%define SWIGWARN_IGNORE_OPERATOR_XOR 357 %enddef /* ^ */ +%define SWIGWARN_IGNORE_OPERATOR_AND 358 %enddef /* & */ +%define SWIGWARN_IGNORE_OPERATOR_OR 359 %enddef /* | */ +%define SWIGWARN_IGNORE_OPERATOR_NOT 360 %enddef /* ~ */ +%define SWIGWARN_IGNORE_OPERATOR_LNOT 361 %enddef /* ! */ +%define SWIGWARN_IGNORE_OPERATOR_EQ 362 %enddef /* = */ +%define SWIGWARN_IGNORE_OPERATOR_LT 363 %enddef /* < */ +%define SWIGWARN_IGNORE_OPERATOR_GT 364 %enddef /* > */ +%define SWIGWARN_IGNORE_OPERATOR_PLUSEQ 365 %enddef /* += */ +%define SWIGWARN_IGNORE_OPERATOR_MINUSEQ 366 %enddef /* -= */ +%define SWIGWARN_IGNORE_OPERATOR_MULEQ 367 %enddef /* *= */ +%define SWIGWARN_IGNORE_OPERATOR_DIVEQ 368 %enddef /* /= */ +%define SWIGWARN_IGNORE_OPERATOR_MODEQ 369 %enddef /* %= */ +%define SWIGWARN_IGNORE_OPERATOR_XOREQ 370 %enddef /* ^= */ +%define SWIGWARN_IGNORE_OPERATOR_ANDEQ 371 %enddef /* &= */ +%define SWIGWARN_IGNORE_OPERATOR_OREQ 372 %enddef /* |= */ +%define SWIGWARN_IGNORE_OPERATOR_LSHIFT 373 %enddef /* << */ +%define SWIGWARN_IGNORE_OPERATOR_RSHIFT 374 %enddef /* >> */ +%define SWIGWARN_IGNORE_OPERATOR_LSHIFTEQ 375 %enddef /* <<= */ +%define SWIGWARN_IGNORE_OPERATOR_RSHIFTEQ 376 %enddef /* >>= */ +%define SWIGWARN_IGNORE_OPERATOR_EQUALTO 377 %enddef /* == */ +%define SWIGWARN_IGNORE_OPERATOR_NOTEQUAL 378 %enddef /* != */ +%define SWIGWARN_IGNORE_OPERATOR_LTEQUAL 379 %enddef /* <= */ +%define SWIGWARN_IGNORE_OPERATOR_GTEQUAL 380 %enddef /* >= */ +%define SWIGWARN_IGNORE_OPERATOR_LAND 381 %enddef /* && */ +%define SWIGWARN_IGNORE_OPERATOR_LOR 382 %enddef /* || */ +%define SWIGWARN_IGNORE_OPERATOR_PLUSPLUS 383 %enddef /* ++ */ +%define SWIGWARN_IGNORE_OPERATOR_MINUSMINUS 384 %enddef /* -- */ +%define SWIGWARN_IGNORE_OPERATOR_COMMA 385 %enddef /* , */ +%define SWIGWARN_IGNORE_OPERATOR_ARROWSTAR 386 %enddef /* ->* */ +%define SWIGWARN_IGNORE_OPERATOR_ARROW 387 %enddef /* -> */ +%define SWIGWARN_IGNORE_OPERATOR_CALL 388 %enddef /* () */ +%define SWIGWARN_IGNORE_OPERATOR_INDEX 389 %enddef /* [] */ +%define SWIGWARN_IGNORE_OPERATOR_UPLUS 390 %enddef /* + */ +%define SWIGWARN_IGNORE_OPERATOR_UMINUS 391 %enddef /* - */ +%define SWIGWARN_IGNORE_OPERATOR_UMUL 392 %enddef /* * */ +%define SWIGWARN_IGNORE_OPERATOR_UAND 393 %enddef /* & */ +%define SWIGWARN_IGNORE_OPERATOR_NEWARR 394 %enddef /* new [] */ +%define SWIGWARN_IGNORE_OPERATOR_DELARR 395 %enddef /* delete [] */ +%define SWIGWARN_IGNORE_OPERATOR_REF 396 %enddef /* operator *() */ + +/* 394-399 are reserved */ + +/* -- Type system and typemaps -- */ + +%define SWIGWARN_TYPE_UNDEFINED_CLASS 401 %enddef +%define SWIGWARN_TYPE_INCOMPLETE 402 %enddef +%define SWIGWARN_TYPE_ABSTRACT 403 %enddef +%define SWIGWARN_TYPE_REDEFINED 404 %enddef +%define SWIGWARN_TYPE_RVALUE_REF_QUALIFIER_IGNORED 405 %enddef + +%define SWIGWARN_TYPEMAP_SOURCETARGET 450 %enddef +%define SWIGWARN_TYPEMAP_CHARLEAK 451 %enddef +%define SWIGWARN_TYPEMAP_SWIGTYPE 452 %enddef +%define SWIGWARN_TYPEMAP_APPLY_UNDEF 453 %enddef +%define SWIGWARN_TYPEMAP_SWIGTYPELEAK 454 %enddef + +%define SWIGWARN_TYPEMAP_IN_UNDEF 460 %enddef +%define SWIGWARN_TYPEMAP_OUT_UNDEF 461 %enddef +%define SWIGWARN_TYPEMAP_VARIN_UNDEF 462 %enddef +%define SWIGWARN_TYPEMAP_VAROUT_UNDEF 463 %enddef +%define SWIGWARN_TYPEMAP_CONST_UNDEF 464 %enddef +%define SWIGWARN_TYPEMAP_UNDEF 465 %enddef +%define SWIGWARN_TYPEMAP_VAR_UNDEF 466 %enddef +%define SWIGWARN_TYPEMAP_TYPECHECK 467 %enddef +%define SWIGWARN_TYPEMAP_THROW 468 %enddef +%define SWIGWARN_TYPEMAP_DIRECTORIN_UNDEF 469 %enddef +%define SWIGWARN_TYPEMAP_THREAD_UNSAFE 470 %enddef /* mostly used in directorout typemaps */ +%define SWIGWARN_TYPEMAP_DIRECTOROUT_UNDEF 471 %enddef +%define SWIGWARN_TYPEMAP_TYPECHECK_UNDEF 472 %enddef +%define SWIGWARN_TYPEMAP_DIRECTOROUT_PTR 473 %enddef +%define SWIGWARN_TYPEMAP_OUT_OPTIMAL_IGNORED 474 %enddef +%define SWIGWARN_TYPEMAP_OUT_OPTIMAL_MULTIPLE 475 %enddef +%define SWIGWARN_TYPEMAP_INITIALIZER_LIST 476 %enddef +%define SWIGWARN_TYPEMAP_DIRECTORTHROWS_UNDEF 477 %enddef + +/* -- Fragments -- */ +%define SWIGWARN_FRAGMENT_NOT_FOUND 490 %enddef + +/* -- General code generation -- */ + +%define SWIGWARN_LANG_OVERLOAD_DECL 501 %enddef +%define SWIGWARN_LANG_OVERLOAD_CONSTRUCT 502 %enddef +%define SWIGWARN_LANG_IDENTIFIER 503 %enddef +%define SWIGWARN_LANG_RETURN_TYPE 504 %enddef +%define SWIGWARN_LANG_VARARGS 505 %enddef +%define SWIGWARN_LANG_VARARGS_KEYWORD 506 %enddef +%define SWIGWARN_LANG_NATIVE_UNIMPL 507 %enddef +%define SWIGWARN_LANG_DEREF_SHADOW 508 %enddef +%define SWIGWARN_LANG_OVERLOAD_SHADOW 509 %enddef +%define SWIGWARN_LANG_FRIEND_IGNORE 510 %enddef +%define SWIGWARN_LANG_OVERLOAD_KEYWORD 511 %enddef +%define SWIGWARN_LANG_OVERLOAD_CONST 512 %enddef +%define SWIGWARN_LANG_CLASS_UNNAMED 513 %enddef +%define SWIGWARN_LANG_DIRECTOR_VDESTRUCT 514 %enddef +%define SWIGWARN_LANG_DISCARD_CONST 515 %enddef +%define SWIGWARN_LANG_OVERLOAD_IGNORED 516 %enddef +%define SWIGWARN_LANG_DIRECTOR_ABSTRACT 517 %enddef +%define SWIGWARN_LANG_PORTABILITY_FILENAME 518 %enddef +%define SWIGWARN_LANG_TEMPLATE_METHOD_IGNORE 519 %enddef +%define SWIGWARN_LANG_SMARTPTR_MISSING 520 %enddef +%define SWIGWARN_LANG_ILLEGAL_DESTRUCTOR 521 %enddef +%define SWIGWARN_LANG_EXTEND_CONSTRUCTOR 522 %enddef +%define SWIGWARN_LANG_EXTEND_DESTRUCTOR 523 %enddef +%define SWIGWARN_LANG_EXPERIMENTAL 524 %enddef +%define SWIGWARN_LANG_DIRECTOR_FINAL 525 %enddef + +/* -- Doxygen comments -- */ + +%define SWIGWARN_DOXYGEN_UNKNOWN_COMMAND 560 %enddef +%define SWIGWARN_DOXYGEN_UNEXPECTED_END_OF_COMMENT 561 %enddef +%define SWIGWARN_DOXYGEN_COMMAND_EXPECTED 562 %enddef +%define SWIGWARN_DOXYGEN_HTML_ERROR 563 %enddef +%define SWIGWARN_DOXYGEN_COMMAND_ERROR 564 %enddef +%define SWIGWARN_DOXYGEN_UNKNOWN_CHARACTER 565 %enddef + +/* -- Reserved (600-799) -- */ + +/* -- Language module specific warnings (700 - 899) -- */ + + +%define SWIGWARN_D_TYPEMAP_CTYPE_UNDEF 700 %enddef +%define SWIGWARN_D_TYPEMAP_IMTYPE_UNDEF 701 %enddef +%define SWIGWARN_D_TYPEMAP_DTYPE_UNDEF 702 %enddef +%define SWIGWARN_D_MULTIPLE_INHERITANCE 703 %enddef +%define SWIGWARN_D_TYPEMAP_CLASSMOD_UNDEF 704 %enddef +%define SWIGWARN_D_TYPEMAP_DBODY_UNDEF 705 %enddef +%define SWIGWARN_D_TYPEMAP_DOUT_UNDEF 706 %enddef +%define SWIGWARN_D_TYPEMAP_DIN_UNDEF 707 %enddef +%define SWIGWARN_D_TYPEMAP_DDIRECTORIN_UNDEF 708 %enddef +%define SWIGWARN_D_TYPEMAP_DCONSTRUCTOR_UNDEF 709 %enddef +%define SWIGWARN_D_EXCODE_MISSING 710 %enddef +%define SWIGWARN_D_CANTHROW_MISSING 711 %enddef +%define SWIGWARN_D_NO_DIRECTORCONNECT_ATTR 712 %enddef +%define SWIGWARN_D_NAME_COLLISION 713 %enddef + +/* please leave 700-719 free for D */ + +%define SWIGWARN_SCILAB_TRUNCATED_NAME 720 %enddef + +/* please leave 720-739 free for Scilab */ + +%define SWIGWARN_PYTHON_INDENT_MISMATCH 740 %enddef + +/* please leave 740-759 free for Python */ + +%define SWIGWARN_RUBY_WRONG_NAME 801 %enddef +%define SWIGWARN_RUBY_MULTIPLE_INHERITANCE 802 %enddef + +/* please leave 800-809 free for Ruby */ + +%define SWIGWARN_JAVA_TYPEMAP_JNI_UNDEF 810 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JTYPE_UNDEF 811 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JSTYPE_UNDEF 812 %enddef +%define SWIGWARN_JAVA_MULTIPLE_INHERITANCE 813 %enddef +%define SWIGWARN_JAVA_TYPEMAP_GETCPTR_UNDEF 814 %enddef +%define SWIGWARN_JAVA_TYPEMAP_CLASSMOD_UNDEF 815 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVABODY_UNDEF 816 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVAOUT_UNDEF 817 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVAIN_UNDEF 818 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVADIRECTORIN_UNDEF 819 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVADIRECTOROUT_UNDEF 820 %enddef +%define SWIGWARN_JAVA_TYPEMAP_INTERFACECODE_UNDEF 821 %enddef +%define SWIGWARN_JAVA_COVARIANT_RET 822 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVACONSTRUCT_UNDEF 823 %enddef +%define SWIGWARN_JAVA_TYPEMAP_DIRECTORIN_NODESC 824 %enddef +%define SWIGWARN_JAVA_NO_DIRECTORCONNECT_ATTR 825 %enddef +%define SWIGWARN_JAVA_NSPACE_WITHOUT_PACKAGE 826 %enddef + +/* please leave 810-829 free for Java */ + +%define SWIGWARN_CSHARP_TYPEMAP_CTYPE_UNDEF 830 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSTYPE_UNDEF 831 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSWTYPE_UNDEF 832 %enddef +%define SWIGWARN_CSHARP_MULTIPLE_INHERITANCE 833 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_GETCPTR_UNDEF 834 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CLASSMOD_UNDEF 835 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSBODY_UNDEF 836 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSOUT_UNDEF 837 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSIN_UNDEF 838 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSDIRECTORIN_UNDEF 839 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSDIRECTOROUT_UNDEF 840 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_INTERFACECODE_UNDEF 841 %enddef +%define SWIGWARN_CSHARP_COVARIANT_RET 842 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSCONSTRUCT_UNDEF 843 %enddef +%define SWIGWARN_CSHARP_EXCODE 844 %enddef +%define SWIGWARN_CSHARP_CANTHROW 845 %enddef +%define SWIGWARN_CSHARP_NO_DIRECTORCONNECT_ATTR 846 %enddef + +/* please leave 830-849 free for C# */ + +%define SWIGWARN_MODULA3_TYPEMAP_TYPE_UNDEF 850 %enddef +%define SWIGWARN_MODULA3_TYPEMAP_GETCPTR_UNDEF 851 %enddef +%define SWIGWARN_MODULA3_TYPEMAP_CLASSMOD_UNDEF 852 %enddef +%define SWIGWARN_MODULA3_TYPEMAP_PTRCONSTMOD_UNDEF 853 %enddef +%define SWIGWARN_MODULA3_TYPEMAP_MULTIPLE_RETURN 854 %enddef +%define SWIGWARN_MODULA3_MULTIPLE_INHERITANCE 855 %enddef +%define SWIGWARN_MODULA3_TYPECONSTRUCTOR_UNKNOWN 856 %enddef +%define SWIGWARN_MODULA3_UNKNOWN_PRAGMA 857 %enddef +%define SWIGWARN_MODULA3_BAD_ENUMERATION 858 %enddef +%define SWIGWARN_MODULA3_DOUBLE_ID 859 %enddef +%define SWIGWARN_MODULA3_BAD_IMPORT 860 %enddef + +/* please leave 850-869 free for Modula 3 */ + +%define SWIGWARN_PHP_MULTIPLE_INHERITANCE 870 %enddef +%define SWIGWARN_PHP_UNKNOWN_PRAGMA 871 %enddef +%define SWIGWARN_PHP_PUBLIC_BASE 872 %enddef + +/* please leave 870-889 free for PHP */ + +%define SWIGWARN_GO_NAME_CONFLICT 890 %enddef + +/* please leave 890-899 free for Go */ + +/* -- User defined warnings (900 - 999) -- */ + diff --git a/macx64/bin/swig/share/swig/4.0.0/swigwarnings.swg b/macx64/bin/swig/share/swig/4.0.0/swigwarnings.swg new file mode 100644 index 00000000..34c98fbd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/swigwarnings.swg @@ -0,0 +1,129 @@ +/* + Include the internal swig macro codes. These macros correspond to + the one found in Source/Include/swigwarn.h plus the 'SWIG' prefix. + + For example, in the include file 'swigwarn.h' you will find + + #define WARN_TYPEMAP_CHARLEAK ... + + and in the 'swigwarn.swg' interface, you will see + + %define SWIGWARN_TYPEMAP_CHARLEAK ... + + This code can be used in warning filters as follows: + + %warnfilter(SWIGWARN_TYPEMAP_CHARLEAK); + + Warnings messages used in typemaps. Message names will be the same + as those in Lib/swigwarn.swg but with the suffix _MSG. + + For example, for the code SWIGWARN_TYPEMAP_CHARLEAK, once you use + + %typemapmsg(CHARLEAK,); + + you use the message in your typemap as + + %typemap(varin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) char * + + while you suppress the warning using + + %warnfilter(SWIGWARN_TYPEMAP_CHARLEAK); + + as described above. +*/ + +/* ----------------------------------------------------------------------------- + * SWIG warning codes + * ----------------------------------------------------------------------------- */ + +%include + +/* ----------------------------------------------------------------------------- + * Auxiliary macros + * ----------------------------------------------------------------------------- */ + +/* Macro to define warning messages */ +#define %_warningmsg(Val, Msg...) `Val`":"Msg +#define %warningmsg(Val, Msg...) %_warningmsg(Val, Msg) + +/* ----------------------------------------------------------------------------- + * Typemap related warning messages + * ----------------------------------------------------------------------------- */ + +%define SWIGWARN_TYPEMAP_CHARLEAK_MSG "451:Setting a const char * variable may leak memory." %enddef +%define SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG "454:Setting a pointer/reference variable may leak memory." %enddef +%define SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG "470:Thread/reentrant unsafe wrapping, consider returning by value instead." %enddef +%define SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG "473:Returning a pointer or reference in a director method is not recommended." %enddef +%define SWIGWARN_TYPEMAP_INITIALIZER_LIST_MSG "476:Initialization using std::initializer_list." %enddef + +/* ----------------------------------------------------------------------------- + * Operator related warning messages + * ----------------------------------------------------------------------------- */ + +%define SWIGWARN_IGNORE_OPERATOR_NEW_MSG "350:operator new ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_DELETE_MSG "351:operator delete ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_PLUS_MSG "352:operator+ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MINUS_MSG "353:operator- ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MUL_MSG "354:operator* ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_DIV_MSG "355:operator/ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MOD_MSG "356:operator% ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_XOR_MSG "357:operator^ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_AND_MSG "358:operator& ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_OR_MSG "359:operator| ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_NOT_MSG "360:operator~ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LNOT_MSG "361:operator! ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_EQ_MSG "362:operator= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LT_MSG "363:operator< ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_GT_MSG "364:operator> ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_PLUSEQ_MSG "365:operator+= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MINUSEQ_MSG "366:operator-= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MULEQ_MSG "367:operator*= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_DIVEQ_MSG "368:operator/= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MODEQ_MSG "369:operator%= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_XOREQ_MSG "370:operator^= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_ANDEQ_MSG "371:operator&= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_OREQ_MSG "372:operator|= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LSHIFT_MSG "373:operator<< ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_RSHIFT_MSG "374:operator>> ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LSHIFTEQ_MSG "375:operator<<= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_RSHIFTEQ_MSG "376:operator>>= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_EQUALTO_MSG "377:operator== ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_NOTEQUAL_MSG "378:operator!= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LTEQUAL_MSG "379:operator<= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_GTEQUAL_MSG "380:operator>= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LAND_MSG "381:operator&& ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LOR_MSG "382:operator|| ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_PLUSPLUS_MSG "383:operator++ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MINUSMINUS_MSG "384:operator-- ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_COMMA_MSG "385:operator-- ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_ARROWSTAR_MSG "386:operator->* ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_ARROW_MSG "387:operator-> ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_CALL_MSG "388:operator() ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_INDEX_MSG "389:operator[] ignored (consider using %%extend)" %enddef +%define SWIGWARN_IGNORE_OPERATOR_UPLUS_MSG "390:operator+ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_UMINUS_MSG "391:operator- ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_UMUL_MSG "392:operator* ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_UAND_MSG "393:operator& ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_NEWARR_MSG "394:operator new[] ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_DELARR_MSG "395:operator delete[] ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_REF_MSG "396:operator*() ignored" %enddef + +#define %ignoreoperator(Oper) %ignorewarn(SWIGWARN_IGNORE_OPERATOR_##Oper##_MSG) + +/* ----------------------------------------------------------------------------- + * Macros for keyword and built-in names + * ----------------------------------------------------------------------------- */ + +#define %keywordwarn(msg...) %namewarn(%warningmsg(SWIGWARN_PARSE_KEYWORD, msg)) +#define %builtinwarn(msg...) %namewarn(%warningmsg(SWIGWARN_PARSE_BUILTIN_NAME, msg), %$isfunction) + + +/* ----------------------------------------------------------------------------- + * Warning filter feature + * ----------------------------------------------------------------------------- */ + +#define %_warnfilter(filter...) %feature("warnfilter",`filter`) +#define %warnfilter(filter...) %_warnfilter(filter) + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/attribute.i b/macx64/bin/swig/share/swig/4.0.0/tcl/attribute.i new file mode 100644 index 00000000..779716cd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/attribute.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/carrays.i b/macx64/bin/swig/share/swig/4.0.0/tcl/carrays.i new file mode 100644 index 00000000..0236672d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/carrays.i @@ -0,0 +1,4 @@ +%include + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/cdata.i b/macx64/bin/swig/share/swig/4.0.0/tcl/cdata.i new file mode 100644 index 00000000..36796599 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/cdata.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/cmalloc.i b/macx64/bin/swig/share/swig/4.0.0/tcl/cmalloc.i new file mode 100644 index 00000000..248f06b9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/cmalloc.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/cpointer.i b/macx64/bin/swig/share/swig/4.0.0/tcl/cpointer.i new file mode 100644 index 00000000..d824792f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/cpointer.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/cstring.i b/macx64/bin/swig/share/swig/4.0.0/tcl/cstring.i new file mode 100644 index 00000000..ede9c596 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/cstring.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/cwstring.i b/macx64/bin/swig/share/swig/4.0.0/tcl/cwstring.i new file mode 100644 index 00000000..b17ca763 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/cwstring.i @@ -0,0 +1,2 @@ +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/exception.i b/macx64/bin/swig/share/swig/4.0.0/tcl/exception.i new file mode 100644 index 00000000..4d22797c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/exception.i @@ -0,0 +1,6 @@ +%include + + +%insert("runtime") { + %define_as(SWIG_exception(code, msg), %block(%error(code, msg); return TCL_ERROR;)) +} diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/factory.i b/macx64/bin/swig/share/swig/4.0.0/tcl/factory.i new file mode 100644 index 00000000..46a0a873 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/factory.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/std_common.i b/macx64/bin/swig/share/swig/4.0.0/tcl/std_common.i new file mode 100644 index 00000000..0718facb --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/std_common.i @@ -0,0 +1,17 @@ +/* ----------------------------------------------------------------------------- + * std_common.i + * + * SWIG typemaps for STL - common utilities + * ----------------------------------------------------------------------------- */ + +%include + +%types(std::size_t); +%apply size_t { std::size_t }; +%apply const unsigned long& { const std::size_t& }; + +%types(std::ptrdiff_t); +%apply long { std::ptrdiff_t }; +%apply const long& { const std::ptrdiff_t& }; + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/std_deque.i b/macx64/bin/swig/share/swig/4.0.0/tcl/std_deque.i new file mode 100644 index 00000000..cb98f6c2 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/std_except.i b/macx64/bin/swig/share/swig/4.0.0/tcl/std_except.i new file mode 100644 index 00000000..af98428f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/std_except.i @@ -0,0 +1 @@ +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/std_map.i b/macx64/bin/swig/share/swig/4.0.0/tcl/std_map.i new file mode 100644 index 00000000..2c7f40ac --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/std_map.i @@ -0,0 +1,79 @@ +// +// SWIG typemaps for std::map +// +// Common implementation + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +%} +%fragment(""); +%fragment(""); + +// exported class + +namespace std { + + template > class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + typedef std::pair< const K, T > value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + map(); + map(const map& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map< K, T, C >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map< K, T, C >::iterator i = self->find(key); + return i != self->end(); + } + } + }; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/std_pair.i b/macx64/bin/swig/share/swig/4.0.0/tcl/std_pair.i new file mode 100644 index 00000000..39ef008d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/std_pair.i @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * Typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + typedef T first_type; + typedef U second_type; + + pair(); + pair(T first, U second); + pair(const pair& other); + + template pair(const pair &other); + + T first; + U second; + }; + + // add specializations here + +} diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/std_string.i b/macx64/bin/swig/share/swig/4.0.0/tcl/std_string.i new file mode 100644 index 00000000..5b31b28c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/std_string.i @@ -0,0 +1,2 @@ +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/std_vector.i b/macx64/bin/swig/share/swig/4.0.0/tcl/std_vector.i new file mode 100644 index 00000000..5fba5379 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/std_vector.i @@ -0,0 +1,435 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * ----------------------------------------------------------------------------- */ + +%include + +// ------------------------------------------------------------------------ +// std::vector +// +// The aim of all that follows would be to integrate std::vector with +// Tcl as much as possible, namely, to allow the user to pass and +// be returned Tcl lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::vector< T >), f(const std::vector< T >&), f(const std::vector< T >*): +// the parameter being read-only, either a Tcl list or a +// previously wrapped std::vector< T > can be passed. +// -- f(std::vector< T >&), f(std::vector< T >*): +// the parameter must be modified; therefore, only a wrapped std::vector +// can be passed. +// -- std::vector< T > f(): +// the vector is returned by copy; therefore, a Tcl list of T:s +// is returned which is most easily used in other Tcl functions procs +// -- std::vector< T >& f(), std::vector< T >* f(), const std::vector< T >& f(), +// const std::vector< T >* f(): +// the vector is returned by reference; therefore, a wrapped std::vector +// is returned +// ------------------------------------------------------------------------ + +%fragment(""); +%fragment(""); +%fragment(""); +%{ +#include + +Tcl_Obj* SwigString_FromString(const std::string &s) { + return Tcl_NewStringObj(s.data(), (int)s.length()); +} + +int Tcl_GetBoolFromObj(Tcl_Interp *interp, Tcl_Obj *o, bool *val) { + int v; + int res = Tcl_GetBooleanFromObj(interp, o, &v); + if (res == TCL_OK) { + *val = v ? true : false; + } + return res; +} + +int SwigString_AsString(Tcl_Interp *interp, Tcl_Obj *o, std::string *val) { + int len; + const char* temp = Tcl_GetStringFromObj(o, &len); + if (temp == NULL) + return TCL_ERROR; + val->assign(temp, len); + return TCL_OK; +} + +// behaviour of this is such as the real Tcl_GetIntFromObj +template +int SwigInt_As(Tcl_Interp *interp, Tcl_Obj *o, Type *val) { + int temp_val, return_val; + return_val = Tcl_GetIntFromObj(interp, o, &temp_val); + *val = (Type) temp_val; + return return_val; +} + +// behaviour of this is such as the real Tcl_GetDoubleFromObj +template +int SwigDouble_As(Tcl_Interp *interp, Tcl_Obj *o, Type *val) { + int return_val; + double temp_val; + return_val = Tcl_GetDoubleFromObj(interp, o, &temp_val); + *val = (Type) temp_val; + return return_val; +} + +%} + +// exported class + +namespace std { + + template class vector { + %typemap(in) vector< T > (std::vector< T > *v) { + Tcl_Obj **listobjv; + int nitems; + int i; + T* temp; + + if (SWIG_ConvertPtr($input, (void **) &v, \ + $&1_descriptor, 0) == 0){ + $1 = *v; + } else { + // It isn't a vector< T > so it should be a list of T's + if(Tcl_ListObjGetElements(interp, $input, \ + &nitems, &listobjv) == TCL_ERROR) + return TCL_ERROR; + $1 = std::vector< T >(); + for (i = 0; i < nitems; i++) { + if ((SWIG_ConvertPtr(listobjv[i],(void **) &temp, + $descriptor(T *),0)) != 0) { + char message[] = + "list of " #T " expected"; + Tcl_SetResult(interp, message, TCL_VOLATILE); + return TCL_ERROR; + } + $1.push_back(*temp); + } + } + } + + %typemap(in) const vector< T >* (std::vector< T > *v, std::vector< T > w), + const vector< T >& (std::vector< T > *v, std::vector< T > w) { + Tcl_Obj **listobjv; + int nitems; + int i; + T* temp; + + if(SWIG_ConvertPtr($input, (void **) &v, \ + $&1_descriptor, 0) == 0) { + $1 = v; + } else { + // It isn't a vector< T > so it should be a list of T's + if(Tcl_ListObjGetElements(interp, $input, + &nitems, &listobjv) == TCL_ERROR) + return TCL_ERROR; + w = std::vector< T >(); + for (i = 0; i < nitems; i++) { + if ((SWIG_ConvertPtr(listobjv[i],(void **) &temp, + $descriptor(T *),0)) != 0) { + char message[] = + "list of " #T " expected"; + Tcl_SetResult(interp, message, TCL_VOLATILE); + return TCL_ERROR; + } + w.push_back(*temp); + } + $1 = &w; + } + } + + %typemap(out) vector< T > { + for (unsigned int i=0; i<$1.size(); i++) { + T* ptr = new T((($1_type &)$1)[i]); + Tcl_ListObjAppendElement(interp, $result, \ + SWIG_NewInstanceObj(ptr, + $descriptor(T *), + 0)); + } + } + + %typecheck(SWIG_TYPECHECK_VECTOR) vector< T > { + Tcl_Obj **listobjv; + int nitems; + T* temp; + std::vector< T > *v; + + if(SWIG_ConvertPtr($input, (void **) &v, \ + $&1_descriptor, 0) == 0) { + /* wrapped vector */ + $1 = 1; + } else { + // It isn't a vector< T > so it should be a list of T's + if(Tcl_ListObjGetElements(interp, $input, + &nitems, &listobjv) == TCL_ERROR) + $1 = 0; + else + if (nitems == 0) + $1 = 1; + //check the first value to see if it is of correct type + else if ((SWIG_ConvertPtr(listobjv[0], + (void **) &temp, + $descriptor(T *),0)) != 0) + $1 = 0; + else + $1 = 1; + } + } + + %typecheck(SWIG_TYPECHECK_VECTOR) const vector< T >&, + const vector< T >* { + Tcl_Obj **listobjv; + int nitems; + T* temp; + std::vector< T > *v; + + if(SWIG_ConvertPtr($input, (void **) &v, \ + $1_descriptor, 0) == 0){ + /* wrapped vector */ + $1 = 1; + } else { + // It isn't a vector< T > so it should be a list of T's + if(Tcl_ListObjGetElements(interp, $input, + &nitems, &listobjv) == TCL_ERROR) + $1 = 0; + else + if (nitems == 0) + $1 = 1; + //check the first value to see if it is of correct type + else if ((SWIG_ConvertPtr(listobjv[0], + (void **) &temp, + $descriptor(T *),0)) != 0) + $1 = 0; + else + $1 = 1; + } + } + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, const T& value); + vector(const vector& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %rename(push) push_back; + void push_back(const T& x); + %extend { + T pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T x = self->back(); + self->pop_back(); + return x; + } + T& get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i<0) i += size; + if (i>=0 && isize()); + if (i<0) i+= size; + if (i>=0 && i class vector< T > { + + %typemap(in) vector< T > (std::vector< T > *v){ + Tcl_Obj **listobjv; + int nitems; + int i; + T temp; + + if(SWIG_ConvertPtr($input, (void **) &v, \ + $&1_descriptor, 0) == 0) { + $1 = *v; + } else { + // It isn't a vector< T > so it should be a list of T's + if(Tcl_ListObjGetElements(interp, $input, + &nitems, &listobjv) == TCL_ERROR) + return TCL_ERROR; + $1 = std::vector< T >(); + for (i = 0; i < nitems; i++) { + if (CONVERT_FROM(interp, listobjv[i], &temp) == TCL_ERROR) + return TCL_ERROR; + $1.push_back(temp); + } + } + } + + %typemap(in) const vector< T >& (std::vector< T > *v,std::vector< T > w), + const vector< T >* (std::vector< T > *v,std::vector< T > w) { + Tcl_Obj **listobjv; + int nitems; + int i; + T temp; + + if(SWIG_ConvertPtr($input, (void **) &v, \ + $1_descriptor, 0) == 0) { + $1 = v; + } else { + // It isn't a vector< T > so it should be a list of T's + if(Tcl_ListObjGetElements(interp, $input, + &nitems, &listobjv) == TCL_ERROR) + return TCL_ERROR; + w = std::vector< T >(); + for (i = 0; i < nitems; i++) { + if (CONVERT_FROM(interp, listobjv[i], &temp) == TCL_ERROR) + return TCL_ERROR; + w.push_back(temp); + } + $1 = &w; + } + } + + %typemap(out) vector< T > { + for (unsigned int i=0; i<$1.size(); i++) { + Tcl_ListObjAppendElement(interp, $result, \ + CONVERT_TO((($1_type &)$1)[i])); + } + } + + %typecheck(SWIG_TYPECHECK_VECTOR) vector< T > { + Tcl_Obj **listobjv; + int nitems; + T temp; + std::vector< T > *v; + + if(SWIG_ConvertPtr($input, (void **) &v, \ + $&1_descriptor, 0) == 0){ + /* wrapped vector */ + $1 = 1; + } else { + // It isn't a vector< T > so it should be a list of T's + if(Tcl_ListObjGetElements(interp, $input, + &nitems, &listobjv) == TCL_ERROR) + $1 = 0; + else + if (nitems == 0) + $1 = 1; + //check the first value to see if it is of correct type + if (CONVERT_FROM(interp, listobjv[0], &temp) == TCL_ERROR) + $1 = 0; + else + $1 = 1; + } + } + + %typecheck(SWIG_TYPECHECK_VECTOR) const vector< T >&, + const vector< T >*{ + Tcl_Obj **listobjv; + int nitems; + T temp; + std::vector< T > *v; + + if(SWIG_ConvertPtr($input, (void **) &v, \ + $1_descriptor, 0) == 0){ + /* wrapped vector */ + $1 = 1; + } else { + // It isn't a vector< T > so it should be a list of T's + if(Tcl_ListObjGetElements(interp, $input, + &nitems, &listobjv) == TCL_ERROR) + $1 = 0; + else + if (nitems == 0) + $1 = 1; + //check the first value to see if it is of correct type + if (CONVERT_FROM(interp, listobjv[0], &temp) == TCL_ERROR) + $1 = 0; + else + $1 = 1; + } + } + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + vector(unsigned int size = 0); + vector(unsigned int size, const T& value); + vector(const vector& other); + + unsigned int size() const; + bool empty() const; + void clear(); + %rename(push) push_back; + void push_back(T x); + %extend { + T pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty vector"); + T x = self->back(); + self->pop_back(); + return x; + } + T get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i<0) i += size; + if (i>=0 && isize()); + if (i<0) i+= size; + if (i>=0 && i,Tcl_NewIntObj); + specialize_std_vector(int, Tcl_GetIntFromObj,Tcl_NewIntObj); + specialize_std_vector(short, SwigInt_As, Tcl_NewIntObj); + specialize_std_vector(long, SwigInt_As, Tcl_NewIntObj); + specialize_std_vector(unsigned char, + SwigInt_As, Tcl_NewIntObj); + specialize_std_vector(unsigned int, + SwigInt_As, Tcl_NewIntObj); + specialize_std_vector(unsigned short, + SwigInt_As, Tcl_NewIntObj); + specialize_std_vector(unsigned long, + SwigInt_As, Tcl_NewIntObj); + specialize_std_vector(double, Tcl_GetDoubleFromObj, Tcl_NewDoubleObj); + specialize_std_vector(float, SwigDouble_As, Tcl_NewDoubleObj); + specialize_std_vector(std::string, + SwigString_AsString, SwigString_FromString); + +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/std_wstring.i b/macx64/bin/swig/share/swig/4.0.0/tcl/std_wstring.i new file mode 100644 index 00000000..f1326149 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/std_wstring.i @@ -0,0 +1,2 @@ +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/stl.i b/macx64/bin/swig/share/swig/4.0.0/tcl/stl.i new file mode 100644 index 00000000..04f86014 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/stl.i @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include +%include +%include +%include +%include + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tcl8.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tcl8.swg new file mode 100644 index 00000000..5da1bc07 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tcl8.swg @@ -0,0 +1,42 @@ +/* ----------------------------------------------------------------------------- + * tcl8.swg + * + * Tcl configuration module. + * ----------------------------------------------------------------------------- */ + +/* ------------------------------------------------------------ + * Inner macros + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * The runtime part + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Special user directives + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Typemap specializations + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Overloaded operator support + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * Warnings for Tcl keywords + * ------------------------------------------------------------ */ +%include + +/* ------------------------------------------------------------ + * The Tcl initialization function + * ------------------------------------------------------------ */ +%include + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclapi.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclapi.swg new file mode 100644 index 00000000..2187de52 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclapi.swg @@ -0,0 +1,108 @@ +/* ----------------------------------------------------------------------------- + * SWIG API. Portion that goes into the runtime + * ----------------------------------------------------------------------------- */ +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------------------------------------------------------- + * Constant declarations + * ----------------------------------------------------------------------------- */ + +/* Constant Types */ +#define SWIG_TCL_POINTER 4 +#define SWIG_TCL_BINARY 5 + +/* Constant information structure */ +typedef struct swig_const_info { + int type; + const char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_const_info; + +typedef int (*swig_wrapper)(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST []); +typedef int (*swig_wrapper_func)(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST []); +typedef char *(*swig_variable_func)(ClientData, Tcl_Interp *, char *, char *, int); +typedef void (*swig_delete_func)(ClientData); + +typedef struct swig_method { + const char *name; + swig_wrapper method; +} swig_method; + +typedef struct swig_attribute { + const char *name; + swig_wrapper getmethod; + swig_wrapper setmethod; +} swig_attribute; + +typedef struct swig_class { + const char *name; + swig_type_info **type; + swig_wrapper constructor; + void (*destructor)(void *); + swig_method *methods; + swig_attribute *attributes; + struct swig_class **bases; + const char **base_names; + swig_module_info *module; + Tcl_HashTable hashtable; +} swig_class; + +typedef struct swig_instance { + Tcl_Obj *thisptr; + void *thisvalue; + swig_class *classptr; + int destroy; + Tcl_Command cmdtok; +} swig_instance; + +/* Structure for command table */ +typedef struct { + const char *name; + int (*wrapper)(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST []); + ClientData clientdata; +} swig_command_info; + +/* Structure for variable linking table */ +typedef struct { + const char *name; + void *addr; + char * (*get)(ClientData, Tcl_Interp *, char *, char *, int); + char * (*set)(ClientData, Tcl_Interp *, char *, char *, int); +} swig_var_info; + + +/* -----------------------------------------------------------------------------* + * Install a constant object + * -----------------------------------------------------------------------------*/ + +static Tcl_HashTable swigconstTable; +static int swigconstTableinit = 0; + +SWIGINTERN void +SWIG_Tcl_SetConstantObj(Tcl_Interp *interp, const char* name, Tcl_Obj *obj) { + int newobj; + Tcl_ObjSetVar2(interp,Tcl_NewStringObj(name,-1), NULL, obj, TCL_GLOBAL_ONLY); + Tcl_SetHashValue(Tcl_CreateHashEntry(&swigconstTable, name, &newobj), (ClientData) obj); +} + +SWIGINTERN Tcl_Obj * +SWIG_Tcl_GetConstantObj(const char *key) { + Tcl_HashEntry *entryPtr; + if (!swigconstTableinit) return 0; + entryPtr = Tcl_FindHashEntry(&swigconstTable, key); + if (entryPtr) { + return (Tcl_Obj *) Tcl_GetHashValue(entryPtr); + } + return 0; +} + +#ifdef __cplusplus +} +#endif + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclerrors.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclerrors.swg new file mode 100644 index 00000000..889d3ad5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclerrors.swg @@ -0,0 +1,76 @@ +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGINTERN const char* +SWIG_Tcl_ErrorType(int code) { + const char* type = 0; + switch(code) { + case SWIG_MemoryError: + type = "MemoryError"; + break; + case SWIG_IOError: + type = "IOError"; + break; + case SWIG_RuntimeError: + type = "RuntimeError"; + break; + case SWIG_IndexError: + type = "IndexError"; + break; + case SWIG_TypeError: + type = "TypeError"; + break; + case SWIG_DivisionByZero: + type = "ZeroDivisionError"; + break; + case SWIG_OverflowError: + type = "OverflowError"; + break; + case SWIG_SyntaxError: + type = "SyntaxError"; + break; + case SWIG_ValueError: + type = "ValueError"; + break; + case SWIG_SystemError: + type = "SystemError"; + break; + case SWIG_AttributeError: + type = "AttributeError"; + break; + default: + type = "RuntimeError"; + } + return type; +} + + +SWIGINTERN void +SWIG_Tcl_SetErrorObj(Tcl_Interp *interp, const char *ctype, Tcl_Obj *obj) +{ + Tcl_ResetResult(interp); + Tcl_SetObjResult(interp, obj); + Tcl_SetErrorCode(interp, "SWIG", ctype, NULL); +} + +SWIGINTERN void +SWIG_Tcl_SetErrorMsg(Tcl_Interp *interp, const char *ctype, const char *mesg) +{ + Tcl_ResetResult(interp); + Tcl_SetErrorCode(interp, "SWIG", ctype, NULL); + Tcl_AppendResult(interp, ctype, " ", mesg, NULL); + /* + Tcl_AddErrorInfo(interp, ctype); + Tcl_AddErrorInfo(interp, " "); + Tcl_AddErrorInfo(interp, mesg); + */ +} + +SWIGINTERNINLINE void +SWIG_Tcl_AddErrorMsg(Tcl_Interp *interp, const char* mesg) +{ + Tcl_AddErrorInfo(interp, mesg); +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclfragments.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclfragments.swg new file mode 100644 index 00000000..ba6398c7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclfragments.swg @@ -0,0 +1,22 @@ +/* + + Create a file with this name, 'tclfragments.swg', in your working + directory and add all the %fragments you want to take precedence + over the ones defined by default by swig. + + For example, if you add: + + %fragment(SWIG_AsVal_frag(int),"header") { + SWIGINTERNINLINE int + SWIG_AsVal_dec(int)(TclObject *obj, int *val) + { + ; + } + } + + this will replace the code used to retrieve an integer value for all + the typemaps that need it, including: + + int, std::vector, std::list >, etc. + +*/ diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclinit.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclinit.swg new file mode 100644 index 00000000..3140bdcd --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclinit.swg @@ -0,0 +1,141 @@ +/* ------------------------------------------------------------ + * The start of the Tcl initialization function + * ------------------------------------------------------------ */ + +%insert(init) "swiginit.swg" + +/* This initialization code exports the module initialization function */ + +%header %{ + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef MAC_TCL +#pragma export on +#endif +SWIGEXPORT int SWIG_init(Tcl_Interp *); +#ifdef MAC_TCL +#pragma export off +#endif +#ifdef __cplusplus +} +#endif + +/* Compatibility version for TCL stubs */ +#ifndef SWIG_TCL_STUBS_VERSION +#define SWIG_TCL_STUBS_VERSION "8.1" +#endif + +%} + +%init %{ +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------------------------------------------------------- + * constants/methods manipulation + * ----------------------------------------------------------------------------- */ + +/* Install Constants */ + +SWIGINTERN void +SWIG_Tcl_InstallConstants(Tcl_Interp *interp, swig_const_info constants[]) { + size_t i; + Tcl_Obj *obj; + + if (!swigconstTableinit) { + Tcl_InitHashTable(&swigconstTable, TCL_STRING_KEYS); + swigconstTableinit = 1; + } + for (i = 0; constants[i].type; i++) { + switch(constants[i].type) { + case SWIG_TCL_POINTER: + obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); + break; + case SWIG_TCL_BINARY: + obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); + break; + default: + obj = 0; + break; + } + if (obj) { + SWIG_Tcl_SetConstantObj(interp, constants[i].name, obj); + } + } +} + +/* Create fast method lookup tables */ + +SWIGINTERN void +SWIG_Tcl_InstallMethodLookupTables(void) { + size_t i; + + for (i = 0; i < swig_module.size; ++i) { + swig_type_info *type = swig_module.type_initial[i]; + if (type->clientdata) { + swig_class* klass = (swig_class*) type->clientdata; + swig_method* meth; + Tcl_InitHashTable(&(klass->hashtable), TCL_STRING_KEYS); + for (meth = klass->methods; meth && meth->name; ++meth) { + int newEntry; + Tcl_HashEntry* hashentry = Tcl_CreateHashEntry(&(klass->hashtable), meth->name, &newEntry); + Tcl_SetHashValue(hashentry, (ClientData)meth->method); + } + } + } +} + +#ifdef __cplusplus +} +#endif + +/* -----------------------------------------------------------------------------* + * Partial Init method + * -----------------------------------------------------------------------------*/ + +SWIGEXPORT int SWIG_init(Tcl_Interp *interp) { + size_t i; + if (interp == 0) return TCL_ERROR; +#ifdef USE_TCL_STUBS + /* (char*) cast is required to avoid compiler warning/error for Tcl < 8.4. */ + if (Tcl_InitStubs(interp, (char*)SWIG_TCL_STUBS_VERSION, 0) == NULL) { + return TCL_ERROR; + } +#endif +#ifdef USE_TK_STUBS + /* (char*) cast is required to avoid compiler warning/error. */ + if (Tk_InitStubs(interp, (char*)SWIG_TCL_STUBS_VERSION, 0) == NULL) { + return TCL_ERROR; + } +#endif + + Tcl_PkgProvide(interp, (char*)SWIG_name, (char*)SWIG_version); + +#ifdef SWIG_namespace + Tcl_Eval(interp, "namespace eval " SWIG_namespace " { }"); +#endif + + SWIG_InitializeModule((void *) interp); + SWIG_PropagateClientData(); + + for (i = 0; swig_commands[i].name; i++) { + Tcl_CreateObjCommand(interp, (char *) swig_commands[i].name, (swig_wrapper_func) swig_commands[i].wrapper, + swig_commands[i].clientdata, NULL); + } + for (i = 0; swig_variables[i].name; i++) { + Tcl_SetVar(interp, (char *) swig_variables[i].name, (char *) "", TCL_GLOBAL_ONLY); + Tcl_TraceVar(interp, (char *) swig_variables[i].name, TCL_TRACE_READS | TCL_GLOBAL_ONLY, + (Tcl_VarTraceProc *) swig_variables[i].get, (ClientData) swig_variables[i].addr); + Tcl_TraceVar(interp, (char *) swig_variables[i].name, TCL_TRACE_WRITES | TCL_GLOBAL_ONLY, + (Tcl_VarTraceProc *) swig_variables[i].set, (ClientData) swig_variables[i].addr); + } + + SWIG_Tcl_InstallConstants(interp, swig_constants); + SWIG_Tcl_InstallMethodLookupTables(); + +%} + +/* Note: the initialization function is closed after all code is generated */ diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclinterp.i b/macx64/bin/swig/share/swig/4.0.0/tcl/tclinterp.i new file mode 100644 index 00000000..3b45b6d4 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclinterp.i @@ -0,0 +1,17 @@ +/* ----------------------------------------------------------------------------- + * tclinterp.i + * + * Tcl_Interp *interp + * + * Passes the current Tcl_Interp value directly to a C function. + * This can be used to work with existing wrapper functions or + * if you just need the interp value for some reason. When used, + * the 'interp' parameter becomes hidden in the Tcl interface--that + * is, you don't specify it explicitly. SWIG fills in its value + * automatically. + * ----------------------------------------------------------------------------- */ + +%typemap(in,numinputs=0) Tcl_Interp *interp { + $1 = interp; +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclkw.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclkw.swg new file mode 100644 index 00000000..e96e885d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclkw.swg @@ -0,0 +1,10 @@ +#ifndef TCL_TCLKW_SWG_ +#define TCL_TCLKW_SWG_ + +// Some special reserved words in classes + +%keywordwarn("cget is a tcl reserved method name") *::cget; +%keywordwarn("configure is a tcl reserved method name") *::configure; + + +#endif //_TCL_TCLKW_SWG_ diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclmacros.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclmacros.swg new file mode 100644 index 00000000..ab7bace5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclmacros.swg @@ -0,0 +1,4 @@ +%include + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclopers.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclopers.swg new file mode 100644 index 00000000..f113ccd1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclopers.swg @@ -0,0 +1,43 @@ +/* ----------------------------------------------------------------------------- + * tclopers.swg + * + * C++ overloaded operators. + * + * These declarations define how SWIG is going to rename C++ + * overloaded operators in Tcl. Since Tcl allows identifiers + * to be essentially any valid string, we'll just use the + * normal operator names. + * ----------------------------------------------------------------------------- */ + + +#ifdef __cplusplus +%rename("+") *::operator+; +//%rename("u+") *::operator+(); // Unary + +//%rename("u+") *::operator+() const; // Unary + +%rename("-") *::operator-; +//%rename("u-") *::operator-(); // Unary - +//%rename("u-") *::operator-() const; // Unary - +%rename("*") *::operator*; +%rename("/") *::operator/; +%rename("<<") *::operator<<; +%rename(">>") *::operator>>; +%rename("&") *::operator&; +%rename("|") *::operator|; +%rename("^") *::operator^; +%rename("%") *::operator%; +%rename("=") *::operator=; + +/* Ignored operators */ +%ignoreoperator(NOTEQUAL) operator!=; +%ignoreoperator(PLUSEQ) operator+=; +%ignoreoperator(MINUSEQ) operator-=; +%ignoreoperator(MULEQ) operator*=; +%ignoreoperator(DIVEQ) operator/=; +%ignoreoperator(MODEQ) operator%=; +%ignoreoperator(LSHIFTEQ) operator<<=; +%ignoreoperator(RSHIFTEQ) operator>>=; +%ignoreoperator(ANDEQ) operator&=; +%ignoreoperator(OREQ) operator|=; +%ignoreoperator(XOREQ) operator^=; + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclprimtypes.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclprimtypes.swg new file mode 100644 index 00000000..3b6d04f5 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclprimtypes.swg @@ -0,0 +1,247 @@ +/* ------------------------------------------------------------ + * Primitive Types + * ------------------------------------------------------------ */ + +/* boolean */ + +%fragment(SWIG_From_frag(bool),"header") { + %define_as(SWIG_From_dec(bool), Tcl_NewBooleanObj) +} + +%fragment(SWIG_AsVal_frag(bool),"header") { +SWIGINTERN int +SWIG_AsVal_dec(bool)(Tcl_Obj *obj, bool *val) +{ + int v; + if (Tcl_GetBooleanFromObj(0, obj, &v) == TCL_OK) { + if (val) *val = v ? true : false; + return SWIG_OK; + } + return SWIG_TypeError; +} +} + +/* long */ + +%fragment(SWIG_From_frag(long),"header", + fragment="") { +SWIGINTERNINLINE Tcl_Obj* +SWIG_From_dec(long)(long value) +{ + if (((long) INT_MIN <= value) && (value <= (long) INT_MAX)) { + return Tcl_NewIntObj(%numeric_cast(value,int)); + } else { + return Tcl_NewLongObj(value); + } +} +} + +%fragment(SWIG_AsVal_frag(long),"header") { +SWIGINTERN int +SWIG_AsVal_dec(long)(Tcl_Obj *obj, long* val) +{ + long v; + if (Tcl_GetLongFromObj(0,obj, &v) == TCL_OK) { + if (val) *val = (long) v; + return SWIG_OK; + } + return SWIG_TypeError; +} +} + +/* unsigned long */ + +%fragment(SWIG_From_frag(unsigned long),"header", + fragment=SWIG_From_frag(long), + fragment="") { +SWIGINTERNINLINE Tcl_Obj* +SWIG_From_dec(unsigned long)(unsigned long value) +{ + if (value < (unsigned long) LONG_MAX) { + return SWIG_From(long)(%numeric_cast(value, long)); + } else { + char temp[256]; + sprintf(temp, "%lu", value); + return Tcl_NewStringObj(temp,-1); + } +} +} + +%fragment(SWIG_AsVal_frag(unsigned long),"header", + fragment="") { +SWIGINTERN int +SWIG_AsVal_dec(unsigned long)(Tcl_Obj *obj, unsigned long *val) { + long v; + if (Tcl_GetLongFromObj(0,obj, &v) == TCL_OK) { + if (v >= 0) { + if (val) *val = (unsigned long) v; + return SWIG_OK; + } + /* If v is negative, then this could be a negative number, or an + unsigned value which doesn't fit in a signed long, so try to + get it as a string so we can distinguish these cases. */ + } + { + int len = 0; + const char *nptr = Tcl_GetStringFromObj(obj, &len); + if (nptr && len > 0) { + char *endptr; + unsigned long v; + if (*nptr == '-') return SWIG_OverflowError; + errno = 0; + v = strtoul(nptr, &endptr,0); + if (nptr[0] == '\0' || *endptr != '\0') + return SWIG_TypeError; + if (v == ULONG_MAX && errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_OK; + } + } + } + } + + return SWIG_TypeError; +} +} + +/* long long */ + +%fragment(SWIG_From_frag(long long),"header", + fragment=SWIG_From_frag(long), + fragment="SWIG_LongLongAvailable", + fragment="") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE Tcl_Obj* +SWIG_From_dec(long long)(long long value) +{ + if (((long long) LONG_MIN <= value) && (value <= (long long) LONG_MAX)) { + return SWIG_From(long)(%numeric_cast(value,long)); + } else { + char temp[256]; + sprintf(temp, "%lld", value); + return Tcl_NewStringObj(temp,-1); + } +} +%#endif +} + +%fragment(SWIG_AsVal_frag(long long),"header", + fragment="SWIG_LongLongAvailable", + fragment="") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(long long)(Tcl_Obj *obj, long long *val) +{ + long v; + if (Tcl_GetLongFromObj(0,obj, &v) == TCL_OK) { + if (val) *val = v; + return SWIG_OK; + } else { + int len = 0; + const char *nptr = Tcl_GetStringFromObj(obj, &len); + if (nptr && len > 0) { + char *endptr; + long long v; + errno = 0; + v = strtoll(nptr, &endptr,0); + if (nptr[0] == '\0' || *endptr != '\0') + return SWIG_TypeError; + if ((v == LLONG_MAX || v == LLONG_MIN) && errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_OK; + } + } + } + } + return SWIG_TypeError; +} +%#endif +} + +/* unsigned long long */ + +%fragment(SWIG_From_frag(unsigned long long),"header", + fragment=SWIG_From_frag(long long), + fragment="SWIG_LongLongAvailable", + fragment="") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE Tcl_Obj* +SWIG_From_dec(unsigned long long)(unsigned long long value) +{ + if (value < (unsigned long long) LONG_MAX) { + return SWIG_From(long long)(%numeric_cast(value, long long)); + } else { + char temp[256]; + sprintf(temp, "%llu", value); + return Tcl_NewStringObj(temp,-1); + } +} +%#endif +} + +%fragment(SWIG_AsVal_frag(unsigned long long),"header", + fragment=SWIG_AsVal_frag(unsigned long), + fragment="SWIG_LongLongAvailable", + fragment="") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(unsigned long long)(Tcl_Obj *obj, unsigned long long *val) +{ + long v; + if (Tcl_GetLongFromObj(0,obj, &v) == TCL_OK) { + if (val) *val = (unsigned long) v; + return SWIG_OK; + } else { + int len = 0; + const char *nptr = Tcl_GetStringFromObj(obj, &len); + if (nptr && len > 0) { + char *endptr; + unsigned long long v; + if (*nptr == '-') return SWIG_OverflowError; + errno = 0; + v = strtoull(nptr, &endptr,0); + if (nptr[0] == '\0' || *endptr != '\0') + return SWIG_TypeError; + if (v == ULLONG_MAX && errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_OK; + } + } + } + } + return SWIG_TypeError; +} +%#endif +} + +/* double */ + +%fragment(SWIG_From_frag(double),"header") { + %define_as(SWIG_From(double), Tcl_NewDoubleObj) +} + +%fragment(SWIG_AsVal_frag(double),"header") { +SWIGINTERN int +SWIG_AsVal_dec(double)(Tcl_Obj *obj, double *val) +{ + double v; + if (Tcl_GetDoubleFromObj(0, obj, &v) == TCL_OK) { + if (val) *val = v; + return SWIG_OK; + } + return SWIG_TypeError; +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclresult.i b/macx64/bin/swig/share/swig/4.0.0/tcl/tclresult.i new file mode 100644 index 00000000..c63b3ee1 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclresult.i @@ -0,0 +1,27 @@ +/* ----------------------------------------------------------------------------- + * tclresult.i + * ----------------------------------------------------------------------------- */ + +/* +int Tcl_Result + + Makes the integer return code of a function the return value + of a SWIG generated wrapper function. For example : + + int foo() { + ... do stuff ... + return TCL_OK; + } + + could be wrapped as follows : + + %include typemaps.i + %apply int Tcl_Result { int foo }; + int foo(); +*/ + +// If return code is a Tcl_Result, simply pass it on + +%typemap(out) int Tcl_Result { + return $1; +} diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclrun.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclrun.swg new file mode 100644 index 00000000..9010b9c8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclrun.swg @@ -0,0 +1,691 @@ +/* ----------------------------------------------------------------------------- + * tclrun.swg + * + * This file contains the runtime support for Tcl modules and includes + * code for managing global variables and pointer type checking. + * ----------------------------------------------------------------------------- */ + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_ConvertPtr(oc, ptr, ty, flags) SWIG_Tcl_ConvertPtr(interp, oc, ptr, ty, flags) +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Tcl_NewPointerObj(ptr, type, flags) + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Tcl_ConvertPacked(interp, obj, ptr, sz, ty) +#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Tcl_NewPackedObj(ptr, sz, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_Tcl_ConvertPtr(interp, obj, pptr, type, flags) +#define SWIG_NewInstanceObj(thisvalue, type, flags) SWIG_Tcl_NewInstanceObj(interp, thisvalue, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Tcl_ConvertPtr(interp, obj, pptr, type, 0) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Tcl_NewPointerObj(ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Tcl_ConvertPacked(interp,obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Tcl_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Tcl_GetModule((Tcl_Interp *) (clientdata)) +#define SWIG_SetModule(clientdata, pointer) SWIG_Tcl_SetModule((Tcl_Interp *) (clientdata), pointer) + + +/* Error manipulation */ + +#define SWIG_ErrorType(code) SWIG_Tcl_ErrorType(code) +#define SWIG_Error(code, msg) SWIG_Tcl_SetErrorMsg(interp, SWIG_Tcl_ErrorType(code), msg) +#define SWIG_fail goto fail + + +/* Tcl-specific SWIG API */ + +#define SWIG_Acquire(ptr) SWIG_Tcl_Acquire(ptr) +#define SWIG_MethodCommand SWIG_Tcl_MethodCommand +#define SWIG_Disown(ptr) SWIG_Tcl_Disown(ptr) +#define SWIG_ConvertPtrFromString(c, ptr, ty, flags) SWIG_Tcl_ConvertPtrFromString(interp, c, ptr, ty, flags) +#define SWIG_MakePtr(c, ptr, ty, flags) SWIG_Tcl_MakePtr(c, ptr, ty, flags) +#define SWIG_PointerTypeFromString(c) SWIG_Tcl_PointerTypeFromString(c) +#define SWIG_GetArgs SWIG_Tcl_GetArgs +#define SWIG_GetConstantObj(key) SWIG_Tcl_GetConstantObj(key) +#define SWIG_ObjectConstructor SWIG_Tcl_ObjectConstructor +#define SWIG_Thisown(ptr) SWIG_Tcl_Thisown(ptr) +#define SWIG_ObjectDelete SWIG_Tcl_ObjectDelete + + +#define SWIG_TCL_DECL_ARGS_2(arg1, arg2) (Tcl_Interp *interp SWIGUNUSED, arg1, arg2) +#define SWIG_TCL_CALL_ARGS_2(arg1, arg2) (interp, arg1, arg2) +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +/* For backward compatibility only */ +#define SWIG_POINTER_EXCEPTION 0 +#define SWIG_GetConstant SWIG_GetConstantObj +#define SWIG_Tcl_GetConstant SWIG_Tcl_GetConstantObj + +#if TCL_MAJOR_VERSION >= 8 && TCL_MINOR_VERSION >= 5 +#define SWIG_TCL_HASHTABLE_INIT {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +#else +#define SWIG_TCL_HASHTABLE_INIT {0} +#endif + +#include "assert.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Object support */ + +SWIGRUNTIME Tcl_HashTable* +SWIG_Tcl_ObjectTable(void) { + static Tcl_HashTable swigobjectTable; + static int swigobjectTableinit = 0; + if (!swigobjectTableinit) { + Tcl_InitHashTable(&swigobjectTable, TCL_ONE_WORD_KEYS); + swigobjectTableinit = 1; + } + return &swigobjectTable; +} + +/* Acquire ownership of a pointer */ +SWIGRUNTIME void +SWIG_Tcl_Acquire(void *ptr) { + int newobj; + Tcl_CreateHashEntry(SWIG_Tcl_ObjectTable(), (char *) ptr, &newobj); +} + +SWIGRUNTIME int +SWIG_Tcl_Thisown(void *ptr) { + if (Tcl_FindHashEntry(SWIG_Tcl_ObjectTable(), (char *) ptr)) { + return 1; + } + return 0; +} + +/* Disown a pointer. Returns 1 if we owned it to begin with */ +SWIGRUNTIME int +SWIG_Tcl_Disown(void *ptr) { + Tcl_HashEntry *entryPtr = Tcl_FindHashEntry(SWIG_Tcl_ObjectTable(), (char *) ptr); + if (entryPtr) { + Tcl_DeleteHashEntry(entryPtr); + return 1; + } + return 0; +} + +/* Convert a pointer value */ +SWIGRUNTIME int +SWIG_Tcl_ConvertPtrFromString(Tcl_Interp *interp, const char *c, void **ptr, swig_type_info *ty, int flags) { + swig_cast_info *tc; + /* Pointer values must start with leading underscore */ + while (*c != '_') { + *ptr = (void *) 0; + if (strcmp(c,"NULL") == 0) + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + + /* Empty string: not a pointer */ + if (*c == 0) return SWIG_ERROR; + + /* Hmmm. It could be an object name. */ + + /* Check if this is a command at all. Prevents cget -this */ + /* from being called when c is not a command, firing the unknown proc */ + if (Tcl_VarEval(interp,"info commands ", c, (char *) NULL) == TCL_OK) { + Tcl_Obj *result = Tcl_GetObjResult(interp); + if (*(Tcl_GetStringFromObj(result, NULL)) == 0) { + /* It's not a command, so it can't be a pointer */ + Tcl_ResetResult(interp); + return SWIG_ERROR; + } + } else { + /* This will only fail if the argument is multiple words. */ + /* Multiple words are also not commands. */ + Tcl_ResetResult(interp); + return SWIG_ERROR; + } + + /* Check if this is really a SWIG pointer */ + if (Tcl_VarEval(interp,c," cget -this", (char *) NULL) != TCL_OK) { + Tcl_ResetResult(interp); + return SWIG_ERROR; + } + + c = Tcl_GetStringFromObj(Tcl_GetObjResult(interp), NULL); + } + + c++; + c = SWIG_UnpackData(c,ptr,sizeof(void *)); + if (ty) { + tc = c ? SWIG_TypeCheck(c,ty) : 0; + if (!tc) { + return SWIG_ERROR; + } + if (flags & SWIG_POINTER_DISOWN) { + SWIG_Disown((void *) *ptr); + } + { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,(void *) *ptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } + } + return SWIG_OK; +} + +/* Convert a pointer value */ +SWIGRUNTIMEINLINE int +SWIG_Tcl_ConvertPtr(Tcl_Interp *interp, Tcl_Obj *oc, void **ptr, swig_type_info *ty, int flags) { + return SWIG_Tcl_ConvertPtrFromString(interp, Tcl_GetStringFromObj(oc,NULL), ptr, ty, flags); +} + +/* Convert a pointer value */ +SWIGRUNTIME char * +SWIG_Tcl_PointerTypeFromString(char *c) { + char d; + /* Pointer values must start with leading underscore. NULL has no type */ + if (*c != '_') { + return 0; + } + c++; + /* Extract hex value from pointer */ + while ((d = *c)) { + if (!(((d >= '0') && (d <= '9')) || ((d >= 'a') && (d <= 'f')))) break; + c++; + } + return c; +} + +/* Convert a packed pointer value */ +SWIGRUNTIME int +SWIG_Tcl_ConvertPacked(Tcl_Interp *SWIGUNUSEDPARM(interp) , Tcl_Obj *obj, void *ptr, int sz, swig_type_info *ty) { + swig_cast_info *tc; + const char *c; + + if (!obj) goto type_error; + c = Tcl_GetStringFromObj(obj,NULL); + /* Pointer values must start with leading underscore */ + if (*c != '_') goto type_error; + c++; + c = SWIG_UnpackData(c,ptr,sz); + if (ty) { + tc = SWIG_TypeCheck(c,ty); + if (!tc) goto type_error; + } + return SWIG_OK; + + type_error: + + return SWIG_ERROR; +} + + +/* Take a pointer and convert it to a string */ +SWIGRUNTIME void +SWIG_Tcl_MakePtr(char *c, void *ptr, swig_type_info *ty, int SWIGUNUSEDPARM(flags)) { + if (ptr) { + *(c++) = '_'; + c = SWIG_PackData(c,&ptr,sizeof(void *)); + strcpy(c,ty->name); + } else { + strcpy(c,"NULL"); + } +} + +/* Create a new pointer object */ +SWIGRUNTIMEINLINE Tcl_Obj * +SWIG_Tcl_NewPointerObj(void *ptr, swig_type_info *type, int flags) { + Tcl_Obj *robj; + char result[SWIG_BUFFER_SIZE]; + SWIG_MakePtr(result,ptr,type,flags); + robj = Tcl_NewStringObj(result,-1); + return robj; +} + +SWIGRUNTIME Tcl_Obj * +SWIG_Tcl_NewPackedObj(void *ptr, int sz, swig_type_info *type) { + char result[1024]; + char *r = result; + if ((2*sz + 1 + strlen(type->name)) > 1000) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + strcpy(r,type->name); + return Tcl_NewStringObj(result,-1); +} + +/* -----------------------------------------------------------------------------* + * Get type list + * -----------------------------------------------------------------------------*/ + +SWIGRUNTIME swig_module_info * +SWIG_Tcl_GetModule(Tcl_Interp *interp) { + const char *data; + swig_module_info *ret = 0; + + /* first check if pointer already created */ + data = Tcl_GetVar(interp, (char *)"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TCL_GLOBAL_ONLY); + if (data) { + SWIG_UnpackData(data, &ret, sizeof(swig_type_info **)); + } + + return ret; +} + +SWIGRUNTIME void +SWIG_Tcl_SetModule(Tcl_Interp *interp, swig_module_info *module) { + char buf[SWIG_BUFFER_SIZE]; + char *data; + + /* create a new pointer */ + data = SWIG_PackData(buf, &module, sizeof(swig_type_info **)); + *data = 0; + Tcl_SetVar(interp, (char *)"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, buf, TCL_GLOBAL_ONLY); +} + +/* -----------------------------------------------------------------------------* + * Object auxiliaries + * -----------------------------------------------------------------------------*/ + + +SWIGRUNTIME void +SWIG_Tcl_ObjectDelete(ClientData clientData) { + swig_instance *si = (swig_instance *) clientData; + if (!si) return; + if (si->destroy && SWIG_Disown(si->thisvalue)) { + if (si->classptr->destructor) { + (si->classptr->destructor)(si->thisvalue); + } + } + Tcl_DecrRefCount(si->thisptr); + free(si); +} + +/* Function to invoke object methods given an instance */ +SWIGRUNTIME int +SWIG_Tcl_MethodCommand(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST _objv[]) { + char *method, *attrname; + swig_instance *inst = (swig_instance *) clientData; + swig_method *meth; + swig_attribute *attr; + Tcl_Obj *oldarg; + Tcl_Obj **objv; + int rcode; + swig_class *cls; + swig_class *cls_stack[64]; + int cls_stack_bi[64]; + int cls_stack_top = 0; + int numconf = 2; + int bi; + + objv = (Tcl_Obj **) _objv; + if (objc < 2) { + Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); + return TCL_ERROR; + } + method = Tcl_GetStringFromObj(objv[1],NULL); + if (strcmp(method,"-acquire") == 0) { + inst->destroy = 1; + SWIG_Acquire(inst->thisvalue); + return TCL_OK; + } + if (strcmp(method,"-disown") == 0) { + if (inst->destroy) { + SWIG_Disown(inst->thisvalue); + } + inst->destroy = 0; + return TCL_OK; + } + if (strcmp(method,"-delete") == 0) { + Tcl_DeleteCommandFromToken(interp,inst->cmdtok); + return TCL_OK; + } + cls_stack[cls_stack_top] = inst->classptr; + cls_stack_bi[cls_stack_top] = -1; + while (1) { + Tcl_HashEntry* hashentry; + bi = cls_stack_bi[cls_stack_top]; + cls = cls_stack[cls_stack_top]; + if (bi != -1) { + if (!cls->bases[bi] && cls->base_names[bi]) { + /* lookup and cache the base class */ + swig_type_info *info = SWIG_TypeQueryModule(cls->module, cls->module, cls->base_names[bi]); + if (info) cls->bases[bi] = (swig_class *) info->clientdata; + } + cls = cls->bases[bi]; + if (cls) { + cls_stack_bi[cls_stack_top]++; + cls_stack_top++; + cls_stack[cls_stack_top] = cls; + cls_stack_bi[cls_stack_top] = -1; + continue; + } + } + if (!cls) { + cls_stack_top--; + if (cls_stack_top < 0) break; + else continue; + } + cls_stack_bi[cls_stack_top]++; + + hashentry = Tcl_FindHashEntry(&(cls->hashtable), method); + if (hashentry) { + ClientData cd = Tcl_GetHashValue(hashentry); + swig_wrapper method_wrapper = (swig_wrapper)cd; + oldarg = objv[1]; + objv[1] = inst->thisptr; + Tcl_IncrRefCount(inst->thisptr); + rcode = (method_wrapper)(clientData,interp,objc,objv); + objv[1] = oldarg; + Tcl_DecrRefCount(inst->thisptr); + return rcode; + } + /* Check class methods for a match */ + if (strcmp(method,"cget") == 0) { + if (objc < 3) { + Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); + return TCL_ERROR; + } + attrname = Tcl_GetStringFromObj(objv[2],NULL); + attr = cls->attributes; + while (attr && attr->name) { + if ((strcmp(attr->name, attrname) == 0) && (attr->getmethod)) { + oldarg = objv[1]; + objv[1] = inst->thisptr; + Tcl_IncrRefCount(inst->thisptr); + rcode = (*attr->getmethod)(clientData,interp,2, objv); + objv[1] = oldarg; + Tcl_DecrRefCount(inst->thisptr); + return rcode; + } + attr++; + } + if (strcmp(attrname, "-this") == 0) { + Tcl_SetObjResult(interp, Tcl_DuplicateObj(inst->thisptr)); + return TCL_OK; + } + if (strcmp(attrname, "-thisown") == 0) { + if (SWIG_Thisown(inst->thisvalue)) { + Tcl_SetResult(interp,(char*)"1",TCL_STATIC); + } else { + Tcl_SetResult(interp,(char*)"0",TCL_STATIC); + } + return TCL_OK; + } + } else if (strcmp(method, "configure") == 0) { + int i; + if (objc < 4) { + Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); + return TCL_ERROR; + } + i = 2; + while (i < objc) { + attrname = Tcl_GetStringFromObj(objv[i],NULL); + attr = cls->attributes; + while (attr && attr->name) { + if ((strcmp(attr->name, attrname) == 0) && (attr->setmethod)) { + oldarg = objv[i]; + objv[i] = inst->thisptr; + Tcl_IncrRefCount(inst->thisptr); + rcode = (*attr->setmethod)(clientData,interp,3, &objv[i-1]); + objv[i] = oldarg; + Tcl_DecrRefCount(inst->thisptr); + if (rcode != TCL_OK) return rcode; + numconf += 2; + } + attr++; + } + i+=2; + } + } + } + if (strcmp(method,"configure") == 0) { + if (numconf >= objc) { + return TCL_OK; + } else { + Tcl_SetResult(interp,(char *) "Invalid attribute name.", TCL_STATIC); + return TCL_ERROR; + } + } + if (strcmp(method,"cget") == 0) { + Tcl_SetResult(interp,(char *) "Invalid attribute name.", TCL_STATIC); + return TCL_ERROR; + } + Tcl_SetResult(interp, (char *) "Invalid method. Must be one of: configure cget -acquire -disown -delete", TCL_STATIC); + cls = inst->classptr; + bi = 0; + while (cls) { + meth = cls->methods; + while (meth && meth->name) { + char *cr = (char *) Tcl_GetStringResult(interp); + size_t meth_len = strlen(meth->name); + char* where = strchr(cr,':'); + while(where) { + where = strstr(where, meth->name); + if(where) { + if(where[-1] == ' ' && (where[meth_len] == ' ' || where[meth_len]==0)) { + break; + } else { + where++; + } + } + } + + if (!where) + Tcl_AppendElement(interp, (char *) meth->name); + meth++; + } + cls = inst->classptr->bases[bi++]; + } + return TCL_ERROR; +} + +/* This function takes the current result and turns it into an object command */ +SWIGRUNTIME Tcl_Obj * +SWIG_Tcl_NewInstanceObj(Tcl_Interp *interp, void *thisvalue, swig_type_info *type, int flags) { + Tcl_Obj *robj = SWIG_NewPointerObj(thisvalue, type,0); + /* Check to see if this pointer belongs to a class or not */ + if (thisvalue && (type->clientdata) && (interp)) { + Tcl_CmdInfo ci; + char *name; + name = Tcl_GetStringFromObj(robj,NULL); + if (!Tcl_GetCommandInfo(interp,name, &ci) || (flags)) { + swig_instance *newinst = (swig_instance *) malloc(sizeof(swig_instance)); + newinst->thisptr = Tcl_DuplicateObj(robj); + Tcl_IncrRefCount(newinst->thisptr); + newinst->thisvalue = thisvalue; + newinst->classptr = (swig_class *) type->clientdata; + newinst->destroy = flags; + newinst->cmdtok = Tcl_CreateObjCommand(interp, Tcl_GetStringFromObj(robj,NULL), (swig_wrapper_func) SWIG_MethodCommand, (ClientData) newinst, (swig_delete_func) SWIG_ObjectDelete); + if (flags) { + SWIG_Acquire(thisvalue); + } + } + } + return robj; +} + +/* Function to create objects */ +SWIGRUNTIME int +SWIG_Tcl_ObjectConstructor(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + Tcl_Obj *newObj = 0; + void *thisvalue = 0; + swig_instance *newinst = 0; + swig_class *classptr = (swig_class *) clientData; + swig_wrapper cons = 0; + char *name = 0; + int firstarg = 0; + int thisarg = 0; + int destroy = 1; + + if (!classptr) { + Tcl_SetResult(interp, (char *) "swig: internal runtime error. No class object defined.", TCL_STATIC); + return TCL_ERROR; + } + cons = classptr->constructor; + if (objc > 1) { + char *s = Tcl_GetStringFromObj(objv[1],NULL); + if (strcmp(s,"-this") == 0) { + thisarg = 2; + cons = 0; + } else if (strcmp(s,"-args") == 0) { + firstarg = 1; + } else if (objc == 2) { + firstarg = 1; + name = s; + } else if (objc >= 3) { + char *s1; + name = s; + s1 = Tcl_GetStringFromObj(objv[2],NULL); + if (strcmp(s1,"-this") == 0) { + thisarg = 3; + cons = 0; + } else { + firstarg = 1; + } + } + } + if (cons) { + int result; + result = (*cons)(0, interp, objc-firstarg, &objv[firstarg]); + if (result != TCL_OK) { + return result; + } + newObj = Tcl_DuplicateObj(Tcl_GetObjResult(interp)); + if (!name) name = Tcl_GetStringFromObj(newObj,NULL); + } else if (thisarg > 0) { + if (thisarg < objc) { + destroy = 0; + newObj = Tcl_DuplicateObj(objv[thisarg]); + if (!name) name = Tcl_GetStringFromObj(newObj,NULL); + } else { + Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); + return TCL_ERROR; + } + } else { + Tcl_SetResult(interp, (char *) "No constructor available.", TCL_STATIC); + return TCL_ERROR; + } + if (SWIG_Tcl_ConvertPtr(interp,newObj, (void **) &thisvalue, *(classptr->type), 0) != SWIG_OK) { + Tcl_DecrRefCount(newObj); + return TCL_ERROR; + } + newinst = (swig_instance *) malloc(sizeof(swig_instance)); + newinst->thisptr = newObj; + Tcl_IncrRefCount(newObj); + newinst->thisvalue = thisvalue; + newinst->classptr = classptr; + newinst->destroy = destroy; + if (destroy) { + SWIG_Acquire(thisvalue); + } + newinst->cmdtok = Tcl_CreateObjCommand(interp,name, (swig_wrapper) SWIG_MethodCommand, (ClientData) newinst, (swig_delete_func) SWIG_ObjectDelete); + return TCL_OK; +} + +/* -----------------------------------------------------------------------------* + * Get arguments + * -----------------------------------------------------------------------------*/ +SWIGRUNTIME int +SWIG_Tcl_GetArgs(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], const char *fmt, ...) { + int argno = 0, opt = 0; + long tempi; + double tempd; + const char *c; + va_list ap; + void *vptr; + Tcl_Obj *obj = 0; + swig_type_info *ty; + + va_start(ap,fmt); + for (c = fmt; (*c && (*c != ':') && (*c != ';')); c++,argno++) { + if (*c == '|') { + opt = 1; + c++; + } + if (argno >= (objc-1)) { + if (!opt) { + Tcl_SetResult(interp, (char *) "Wrong number of arguments ", TCL_STATIC); + goto argerror; + } else { + va_end(ap); + return TCL_OK; + } + } + + vptr = va_arg(ap,void *); + if (vptr) { + if (isupper(*c)) { + obj = SWIG_Tcl_GetConstantObj(Tcl_GetStringFromObj(objv[argno+1],0)); + if (!obj) obj = objv[argno+1]; + } else { + obj = objv[argno+1]; + } + switch(*c) { + case 'i': case 'I': + case 'l': case 'L': + case 'h': case 'H': + case 'b': case 'B': + if (Tcl_GetLongFromObj(interp,obj,&tempi) != TCL_OK) goto argerror; + if ((*c == 'i') || (*c == 'I')) *((int *)vptr) = (int)tempi; + else if ((*c == 'l') || (*c == 'L')) *((long *)vptr) = (long)tempi; + else if ((*c == 'h') || (*c == 'H')) *((short*)vptr) = (short)tempi; + else if ((*c == 'b') || (*c == 'B')) *((unsigned char *)vptr) = (unsigned char)tempi; + break; + case 'f': case 'F': + case 'd': case 'D': + if (Tcl_GetDoubleFromObj(interp,obj,&tempd) != TCL_OK) goto argerror; + if ((*c == 'f') || (*c == 'F')) *((float *) vptr) = (float)tempd; + else if ((*c == 'd') || (*c == 'D')) *((double*) vptr) = tempd; + break; + case 's': case 'S': + if (*(c+1) == '#') { + int *vlptr = (int *) va_arg(ap, void *); + *((char **) vptr) = Tcl_GetStringFromObj(obj, vlptr); + c++; + } else { + *((char **)vptr) = Tcl_GetStringFromObj(obj,NULL); + } + break; + case 'c': case 'C': + *((char *)vptr) = *(Tcl_GetStringFromObj(obj,NULL)); + break; + case 'p': case 'P': + ty = (swig_type_info *) va_arg(ap, void *); + if (SWIG_Tcl_ConvertPtr(interp, obj, (void **) vptr, ty, 0) != SWIG_OK) goto argerror; + break; + case 'o': case 'O': + *((Tcl_Obj **)vptr) = objv[argno+1]; + break; + default: + break; + } + } + } + + if ((*c != ';') && ((objc-1) > argno)) { + Tcl_SetResult(interp, (char *) "Wrong # args.", TCL_STATIC); + goto argerror; + } + va_end(ap); + return TCL_OK; + + argerror: + { + char temp[32]; + sprintf(temp,"%d", argno+1); + c = strchr(fmt,':'); + if (!c) c = strchr(fmt,';'); + if (!c) c = (char *)""; + Tcl_AppendResult(interp,c," argument ", temp, NULL); + va_end(ap); + return TCL_ERROR; + } +} + +#ifdef __cplusplus +} +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclruntime.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclruntime.swg new file mode 100644 index 00000000..bb4edd74 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclruntime.swg @@ -0,0 +1,15 @@ +/* tcl.h has to appear first */ +%insert(runtime) %{ +#include +#include +#include +#include +#include +#include +%} + +%insert(runtime) "swigrun.swg"; /* Common C API type-checking code */ +%insert(runtime) "swigerrors.swg" /* SWIG errors */ +%insert(runtime) "tclerrors.swg"; /* Tcl Errors */ +%insert(runtime) "tclapi.swg"; /* Tcl API */ +%insert(runtime) "tclrun.swg"; /* Tcl run-time code */ diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclsh.i b/macx64/bin/swig/share/swig/4.0.0/tcl/tclsh.i new file mode 100644 index 00000000..160ba8d8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclsh.i @@ -0,0 +1,85 @@ +/* ----------------------------------------------------------------------------- + * tclsh.i + * + * SWIG File for building new tclsh program + * ----------------------------------------------------------------------------- */ + +#ifdef AUTODOC +%subsection "tclsh.i" +%text %{ +This module provides the Tcl_AppInit() function needed to build a +new version of the tclsh executable. This file should not be used +when using dynamic loading. To make an interface file work with +both static and dynamic loading, put something like this in your +interface file : + + #ifdef STATIC + %include + #endif +%} +#endif + +%{ + +/* A TCL_AppInit() function that lets you build a new copy + * of tclsh. + * + * The macro SWIG_init contains the name of the initialization + * function in the wrapper file. + */ + +#ifndef SWIG_RcFileName +char *SWIG_RcFileName = "~/.myapprc"; +#endif + + +#ifdef MAC_TCL +extern int MacintoshInit _ANSI_ARGS_((void)); +#endif + +int Tcl_AppInit(Tcl_Interp *interp){ + + if (Tcl_Init(interp) == TCL_ERROR) + return TCL_ERROR; + + /* Now initialize our functions */ + + if (SWIG_init(interp) == TCL_ERROR) + return TCL_ERROR; +#if TCL_MAJOR_VERSION > 7 || TCL_MAJOR_VERSION == 7 && TCL_MINOR_VERSION >= 5 + Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); +#else + tcl_RcFileName = SWIG_RcFileName; +#endif +#ifdef SWIG_RcRsrcName + Tcl_SetVar(interp, (char *) "tcl_rcRsrcName",SWIG_RcRsrcName,TCL_GLOBAL); +#endif + + return TCL_OK; +} + +#if TCL_MAJOR_VERSION > 7 || TCL_MAJOR_VERSION == 7 && TCL_MINOR_VERSION >= 4 +int main(int argc, char **argv) { +#ifdef MAC_TCL + char *newArgv[2]; + + if (MacintoshInit() != TCL_OK) { + Tcl_Exit(1); + } + + argc = 1; + newArgv[0] = "tclsh"; + newArgv[1] = NULL; + argv = newArgv; +#endif + + Tcl_Main(argc, argv, Tcl_AppInit); + return(0); + +} +#else +extern int main(); +#endif + +%} + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclstrings.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclstrings.swg new file mode 100644 index 00000000..540d6270 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclstrings.swg @@ -0,0 +1,31 @@ +/* ------------------------------------------------------------ + * utility methods for char strings + * ------------------------------------------------------------ */ + +%fragment("SWIG_AsCharPtrAndSize","header") { +SWIGINTERN int +SWIG_AsCharPtrAndSize(Tcl_Obj *obj, char** cptr, size_t* psize, int *alloc) +{ + int len = 0; + char *cstr = Tcl_GetStringFromObj(obj, &len); + if (cstr) { + if (cptr) *cptr = cstr; + if (psize) *psize = len + 1; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + return SWIG_TypeError; +} +} + + +%fragment("SWIG_FromCharPtrAndSize","header", + fragment="") { +SWIGINTERNINLINE Tcl_Obj * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + return (size < INT_MAX) ? Tcl_NewStringObj(carray, %numeric_cast(size,int)) : NULL; +} +} + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tcltypemaps.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tcltypemaps.swg new file mode 100644 index 00000000..ad31bcfc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tcltypemaps.swg @@ -0,0 +1,91 @@ +/* ------------------------------------------------------------ + * Typemap specializations for Tcl + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + * Fragment section + * ------------------------------------------------------------ */ + +/* + In Tcl we need to pass the interp value, so we define the decl/call + macros as needed. +*/ + +#define SWIG_AS_DECL_ARGS SWIG_TCL_DECL_ARGS_2 +#define SWIG_AS_CALL_ARGS SWIG_TCL_CALL_ARGS_2 + + +/* Include fundamental fragment definitions */ +%include + +/* Look for user fragments file. */ +%include + +/* Tcl fragments for primitive types */ +%include + +/* Tcl fragments for char* strings */ +%include + + +/* ------------------------------------------------------------ + * Unified typemap section + * ------------------------------------------------------------ */ + +/* No director support in Tcl */ +#ifdef SWIG_DIRECTOR_TYPEMAPS +#undef SWIG_DIRECTOR_TYPEMAPS +#endif + + +/* Tcl types */ +#define SWIG_Object Tcl_Obj * + +/* Overload of the output/constant/exception handling */ + +/* output */ +#define %set_output(obj) Tcl_SetObjResult(interp,obj) + +/* append output */ +#define %append_output(obj) Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),obj) + +/* set constant */ +#define SWIG_SetConstant(name, obj) SWIG_Tcl_SetConstantObj(interp, name, obj) + +/* raise */ +#define SWIG_Raise(obj,type,desc) SWIG_Tcl_SetErrorObj(interp,type,obj) + + +/* Include the unified typemap library */ +%include + + +/* ------------------------------------------------------------ + * Tcl extra typemaps / typemap overrides + * ------------------------------------------------------------ */ + +#if 1 +// Old 1.3.25 typemaps needed to avoid premature object deletion +%typemap(out,noblock=1) SWIGTYPE *INSTANCE, SWIGTYPE &INSTANCE, SWIGTYPE &&INSTANCE, SWIGTYPE INSTANCE[] { + Tcl_SetObjResult(interp, SWIG_NewInstanceObj( %as_voidptr($1), $1_descriptor,0)); +} + +%typemap(out) SWIGTYPE *DYNAMIC, SWIGTYPE &DYNAMIC { + swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor,%as_voidptrptr(&$1)); + Tcl_SetObjResult(interp,SWIG_NewInstanceObj(%as_voidptr($1), ty,0)); +} + +#endif + +%typemap(throws,noblock=1) SWIGTYPE CLASS { + SWIG_set_result(SWIG_NewInstanceObj(%as_voidptr(SWIG_new_copy($1, $1_ltype)), $&1_descriptor, 1)); + SWIG_fail; +} + +%typemap(out) SWIGTYPE = SWIGTYPE INSTANCE; +%typemap(out) SWIGTYPE * = SWIGTYPE *INSTANCE; +%typemap(out) SWIGTYPE *const = SWIGTYPE *; +%typemap(out) SWIGTYPE & = SWIGTYPE &INSTANCE; +%typemap(out) SWIGTYPE && = SWIGTYPE &&INSTANCE; +%typemap(out) SWIGTYPE [] = SWIGTYPE INSTANCE[]; +%typemap(varout) SWIGTYPE = SWIGTYPE INSTANCE; diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tcluserdir.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tcluserdir.swg new file mode 100644 index 00000000..d5b41fb9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tcluserdir.swg @@ -0,0 +1,5 @@ +/* ----------------------------------------------------------------------------- + * Special user directives + * ----------------------------------------------------------------------------- */ + + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/tclwstrings.swg b/macx64/bin/swig/share/swig/4.0.0/tcl/tclwstrings.swg new file mode 100644 index 00000000..b3b682e3 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/tclwstrings.swg @@ -0,0 +1,67 @@ +/* ----------------------------------------------------------------------------- + * tclwstrings.wg + * + * Utility methods for wchar strings + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +%fragment("SWIG_AsWCharPtrAndSize","header") { +SWIGINTERN int +SWIG_AsWCharPtrAndSize(Tcl_Obj *obj, wchar_t** cptr, size_t* psize, int *alloc) +{ + int len = 0; + Tcl_UniChar *ustr = Tcl_GetUnicodeFromObj(obj, &len); + if (ustr) { + if (cptr) { + Tcl_Encoding encoding = NULL; + char *src = (char *) ustr; + int srcLen = (len)*sizeof(Tcl_UniChar); + int dstLen = sizeof(wchar_t)*(len + 1); + char *dst = %new_array(dstLen, char); + int flags = 0; + Tcl_EncodingState *statePtr = 0; + int srcRead = 0; + int dstWrote = 0; + int dstChars = 0; + Tcl_UtfToExternal(0, encoding, src, srcLen, flags, statePtr, dst, + dstLen, &srcRead, &dstWrote, &dstChars); + + if (alloc) *alloc = SWIG_NEWOBJ; + } + if (psize) *psize = len + 1; + return SWIG_OK; + } + return SWIG_TypeError; +} +} + +%fragment("SWIG_FromWCharPtrAndSize","header") { +SWIGINTERNINLINE Tcl_Obj * +SWIG_FromWCharPtrAndSize(const wchar_t* carray, size_t size) +{ + Tcl_Obj *res = NULL; + if (size < INT_MAX) { + Tcl_Encoding encoding = NULL; + char *src = (char *) carray; + int srcLen = (int)(size*sizeof(wchar_t)); + int dstLen = (int)(size*sizeof(Tcl_UniChar)); + char *dst = %new_array(dstLen, char); + int flags = 0; + Tcl_EncodingState *statePtr = 0; + int srcRead = 0; + int dstWrote = 0; + int dstChars = 0; + + Tcl_ExternalToUtf(0, encoding, src, srcLen, flags, statePtr, dst, + dstLen, &srcRead, &dstWrote, &dstChars); + + res = Tcl_NewUnicodeObj((Tcl_UniChar*)dst, (int)size); + %delete_array(dst); + } + return res; +} +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/tcl/typemaps.i new file mode 100644 index 00000000..04a5c78f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/typemaps.i @@ -0,0 +1,464 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * SWIG typemap library for Tcl8. This file contains various sorts + * of typemaps for modifying SWIG's code generation. + * ----------------------------------------------------------------------------- */ + +#if !defined(SWIG_USE_OLD_TYPEMAPS) +%include +#else + +/* +The SWIG typemap library provides a language independent mechanism for +supporting output arguments, input values, and other C function +calling mechanisms. The primary use of the library is to provide a +better interface to certain C function--especially those involving +pointers. +*/ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + + int *INPUT + short *INPUT + long *INPUT + long long *INPUT + unsigned int *INPUT + unsigned short *INPUT + unsigned long *INPUT + unsigned long long *INPUT + unsigned char *INPUT + bool *INPUT + float *INPUT + double *INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include typemaps.i + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include typemaps.i + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ + +%typemap(in) double *INPUT(double temp), double &INPUT(double temp) +{ + if (Tcl_GetDoubleFromObj(interp,$input,&temp) == TCL_ERROR) { + SWIG_fail; + } + $1 = &temp; +} + +%typemap(in) float *INPUT(double dvalue, float temp), float &INPUT(double dvalue, float temp) +{ + if (Tcl_GetDoubleFromObj(interp,$input,&dvalue) == TCL_ERROR) { + SWIG_fail; + } + temp = (float) dvalue; + $1 = &temp; +} + +%typemap(in) int *INPUT(int temp), int &INPUT(int temp) +{ + if (Tcl_GetIntFromObj(interp,$input,&temp) == TCL_ERROR) { + SWIG_fail; + } + $1 = &temp; +} + +%typemap(in) short *INPUT(int ivalue, short temp), short &INPUT(int ivalue, short temp) +{ + if (Tcl_GetIntFromObj(interp,$input,&ivalue) == TCL_ERROR) { + SWIG_fail; + } + temp = (short) ivalue; + $1 = &temp; +} + +%typemap(in) long *INPUT(int ivalue, long temp), long &INPUT(int ivalue, long temp) +{ + if (Tcl_GetIntFromObj(interp,$input,&ivalue) == TCL_ERROR) { + SWIG_fail; + } + temp = (long) ivalue; + $1 = &temp; +} + +%typemap(in) unsigned int *INPUT(int ivalue, unsigned int temp), + unsigned int &INPUT(int ivalue, unsigned int temp) +{ + if (Tcl_GetIntFromObj(interp,$input,&ivalue) == TCL_ERROR) { + SWIG_fail; + } + temp = (unsigned int) ivalue; + $1 = &temp; +} + +%typemap(in) unsigned short *INPUT(int ivalue, unsigned short temp), + unsigned short &INPUT(int ivalue, unsigned short temp) +{ + if (Tcl_GetIntFromObj(interp,$input,&ivalue) == TCL_ERROR) { + SWIG_fail; + } + temp = (unsigned short) ivalue; + $1 = &temp; +} + +%typemap(in) unsigned long *INPUT(int ivalue, unsigned long temp), + unsigned long &INPUT(int ivalue, unsigned long temp) +{ + if (Tcl_GetIntFromObj(interp,$input,&ivalue) == TCL_ERROR) { + SWIG_fail; + } + temp = (unsigned long) ivalue; + $1 = &temp; +} + +%typemap(in) unsigned char *INPUT(int ivalue, unsigned char temp), + unsigned char &INPUT(int ivalue, unsigned char temp) +{ + if (Tcl_GetIntFromObj(interp,$input,&ivalue) == TCL_ERROR) { + SWIG_fail; + } + temp = (unsigned char) ivalue; + $1 = &temp; +} + +%typemap(in) signed char *INPUT(int ivalue, signed char temp), + signed char &INPUT(int ivalue, signed char temp) +{ + if (Tcl_GetIntFromObj(interp,$input,&ivalue) == TCL_ERROR) { + SWIG_fail; + } + temp = (signed char) ivalue; + $1 = &temp; +} + +%typemap(in) bool *INPUT(int ivalue, bool temp), + bool &INPUT(int ivalue, bool temp) +{ + if (Tcl_GetIntFromObj(interp,$input,&ivalue) == TCL_ERROR) { + SWIG_fail; + } + temp = ivalue ? true : false; + $1 = &temp; +} + +%typemap(in) long long *INPUT($*1_ltype temp), + long long &INPUT($*1_ltype temp) +{ + temp = ($*1_ltype) strtoll(Tcl_GetStringFromObj($input,NULL),0,0); + $1 = &temp; +} + +%typemap(in) unsigned long long *INPUT($*1_ltype temp), + unsigned long long &INPUT($*1_ltype temp) +{ + temp = ($*1_ltype) strtoull(Tcl_GetStringFromObj($input,NULL),0,0); + $1 = &temp; +} + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a Tcl list. + + int *OUTPUT + short *OUTPUT + long *OUTPUT + long long *OUTPUT + unsigned int *OUTPUT + unsigned short *OUTPUT + unsigned long *OUTPUT + unsigned long long *OUTPUT + unsigned char *OUTPUT + bool *OUTPUT + float *OUTPUT + double *OUTPUT + +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).K: + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include typemaps.i + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include typemaps.i + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Tcl output of the function would be a list containing both +output values. + +*/ + +%typemap(in,numinputs=0) int *OUTPUT(int temp), + short *OUTPUT(short temp), + long *OUTPUT(long temp), + unsigned int *OUTPUT(unsigned int temp), + unsigned short *OUTPUT(unsigned short temp), + unsigned long *OUTPUT(unsigned long temp), + unsigned char *OUTPUT(unsigned char temp), + signed char *OUTPUT(signed char temp), + bool *OUTPUT(bool temp), + float *OUTPUT(float temp), + double *OUTPUT(double temp), + long long *OUTPUT($*1_ltype temp), + unsigned long long *OUTPUT($*1_ltype temp), + int &OUTPUT(int temp), + short &OUTPUT(short temp), + long &OUTPUT(long temp), + unsigned int &OUTPUT(unsigned int temp), + unsigned short &OUTPUT(unsigned short temp), + unsigned long &OUTPUT(unsigned long temp), + signed char &OUTPUT(signed char temp), + bool &OUTPUT(bool temp), + unsigned char &OUTPUT(unsigned char temp), + float &OUTPUT(float temp), + double &OUTPUT(double temp), + long long &OUTPUT($*1_ltype temp), + unsigned long long &OUTPUT($*1_ltype temp) +"$1 = &temp;"; + +%typemap(argout) int *OUTPUT, int &OUTPUT, + short *OUTPUT, short &OUTPUT, + long *OUTPUT, long &OUTPUT, + unsigned int *OUTPUT, unsigned int &OUTPUT, + unsigned short *OUTPUT, unsigned short &OUTPUT, + unsigned long *OUTPUT, unsigned long &OUTPUT, + unsigned char *OUTPUT, unsigned char &OUTPUT, + signed char *OUTPUT, signed char &OUTPUT, + bool *OUTPUT, bool &OUTPUT +{ + Tcl_Obj *o; + o = Tcl_NewIntObj((int) *($1)); + Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),o); +} + +%typemap(argout) float *OUTPUT, float &OUTPUT, + double *OUTPUT, double &OUTPUT +{ + Tcl_Obj *o; + o = Tcl_NewDoubleObj((double) *($1)); + Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),o); +} + +%typemap(argout) long long *OUTPUT, long long &OUTPUT +{ + char temp[256]; + Tcl_Obj *o; + sprintf(temp,"%lld",(long long)*($1)); + o = Tcl_NewStringObj(temp,-1); + Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),o); +} + +%typemap(argout) unsigned long long *OUTPUT, unsigned long long &OUTPUT +{ + char temp[256]; + Tcl_Obj *o; + sprintf(temp,"%llu",(unsigned long long)*($1)); + o = Tcl_NewStringObj(temp,-1); + Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),o); +} + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a Tcl list. + + int *INOUT + short *INOUT + long *INOUT + long long *INOUT + unsigned int *INOUT + unsigned short *INOUT + unsigned long *INOUT + unsigned long long *INOUT + unsigned char *INOUT + bool *INOUT + float *INOUT + double *INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include typemaps.i + void neg(double *INOUT); + +or you can use the %apply directive : + + %include typemaps.i + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value (since +this makes no sense in Tcl). Rather, the modified input value shows +up as the return value of the function. Thus, to apply this function +to a Tcl variable you might do this : + + set x [neg $x] + +*/ + + +%typemap(in) int *INOUT = int *INPUT; +%typemap(in) short *INOUT = short *INPUT; +%typemap(in) long *INOUT = long *INPUT; +%typemap(in) unsigned int *INOUT = unsigned int *INPUT; +%typemap(in) unsigned short *INOUT = unsigned short *INPUT; +%typemap(in) unsigned long *INOUT = unsigned long *INPUT; +%typemap(in) unsigned char *INOUT = unsigned char *INPUT; +%typemap(in) signed char *INOUT = signed char *INPUT; +%typemap(in) bool *INOUT = bool *INPUT; +%typemap(in) float *INOUT = float *INPUT; +%typemap(in) double *INOUT = double *INPUT; +%typemap(in) long long *INOUT = long long *INPUT; +%typemap(in) unsigned long long *INOUT = unsigned long long *INPUT; + +%typemap(in) int &INOUT = int &INPUT; +%typemap(in) short &INOUT = short &INPUT; +%typemap(in) long &INOUT = long &INPUT; +%typemap(in) unsigned int &INOUT = unsigned int &INPUT; +%typemap(in) unsigned short &INOUT = unsigned short &INPUT; +%typemap(in) unsigned long &INOUT = unsigned long &INPUT; +%typemap(in) unsigned char &INOUT = unsigned char &INPUT; +%typemap(in) signed char &INOUT = signed char &INPUT; +%typemap(in) bool &INOUT = bool &INPUT; +%typemap(in) float &INOUT = float &INPUT; +%typemap(in) double &INOUT = double &INPUT; +%typemap(in) long long &INOUT = long long &INPUT; +%typemap(in) unsigned long long &INOUT = unsigned long long &INPUT; + +%typemap(argout) int *INOUT = int *OUTPUT; +%typemap(argout) short *INOUT = short *OUTPUT; +%typemap(argout) long *INOUT = long *OUTPUT; +%typemap(argout) unsigned int *INOUT = unsigned int *OUTPUT; +%typemap(argout) unsigned short *INOUT = unsigned short *OUTPUT; +%typemap(argout) unsigned long *INOUT = unsigned long *OUTPUT; +%typemap(argout) unsigned char *INOUT = unsigned char *OUTPUT; +%typemap(argout) signed char *INOUT = signed char *OUTPUT; +%typemap(argout) bool *INOUT = bool *OUTPUT; +%typemap(argout) float *INOUT = float *OUTPUT; +%typemap(argout) double *INOUT = double *OUTPUT; +%typemap(argout) long long *INOUT = long long *OUTPUT; +%typemap(argout) unsigned long long *INOUT = unsigned long long *OUTPUT; + +%typemap(argout) int &INOUT = int &OUTPUT; +%typemap(argout) short &INOUT = short &OUTPUT; +%typemap(argout) long &INOUT = long &OUTPUT; +%typemap(argout) unsigned int &INOUT = unsigned int &OUTPUT; +%typemap(argout) unsigned short &INOUT = unsigned short &OUTPUT; +%typemap(argout) unsigned long &INOUT = unsigned long &OUTPUT; +%typemap(argout) unsigned char &INOUT = unsigned char &OUTPUT; +%typemap(argout) signed char &INOUT = signed char &OUTPUT; +%typemap(argout) bool &INOUT = bool &OUTPUT; +%typemap(argout) float &INOUT = float &OUTPUT; +%typemap(argout) double &INOUT = double &OUTPUT; +%typemap(argout) long long &INOUT = long long &OUTPUT; +%typemap(argout) unsigned long long &INOUT = unsigned long long &OUTPUT; + + +/* Overloading information */ + +%typemap(typecheck) double *INPUT = double; +%typemap(typecheck) bool *INPUT = bool; +%typemap(typecheck) signed char *INPUT = signed char; +%typemap(typecheck) unsigned char *INPUT = unsigned char; +%typemap(typecheck) unsigned long *INPUT = unsigned long; +%typemap(typecheck) unsigned short *INPUT = unsigned short; +%typemap(typecheck) unsigned int *INPUT = unsigned int; +%typemap(typecheck) long *INPUT = long; +%typemap(typecheck) short *INPUT = short; +%typemap(typecheck) int *INPUT = int; +%typemap(typecheck) float *INPUT = float; +%typemap(typecheck) long long *INPUT = long long; +%typemap(typecheck) unsigned long long *INPUT = unsigned long long; + +%typemap(typecheck) double &INPUT = double; +%typemap(typecheck) bool &INPUT = bool; +%typemap(typecheck) signed char &INPUT = signed char; +%typemap(typecheck) unsigned char &INPUT = unsigned char; +%typemap(typecheck) unsigned long &INPUT = unsigned long; +%typemap(typecheck) unsigned short &INPUT = unsigned short; +%typemap(typecheck) unsigned int &INPUT = unsigned int; +%typemap(typecheck) long &INPUT = long; +%typemap(typecheck) short &INPUT = short; +%typemap(typecheck) int &INPUT = int; +%typemap(typecheck) float &INPUT = float; +%typemap(typecheck) long long &INPUT = long long; +%typemap(typecheck) unsigned long long &INPUT = unsigned long long; + +%typemap(typecheck) double *INOUT = double; +%typemap(typecheck) bool *INOUT = bool; +%typemap(typecheck) signed char *INOUT = signed char; +%typemap(typecheck) unsigned char *INOUT = unsigned char; +%typemap(typecheck) unsigned long *INOUT = unsigned long; +%typemap(typecheck) unsigned short *INOUT = unsigned short; +%typemap(typecheck) unsigned int *INOUT = unsigned int; +%typemap(typecheck) long *INOUT = long; +%typemap(typecheck) short *INOUT = short; +%typemap(typecheck) int *INOUT = int; +%typemap(typecheck) float *INOUT = float; +%typemap(typecheck) long long *INOUT = long long; +%typemap(typecheck) unsigned long long *INOUT = unsigned long long; + +%typemap(typecheck) double &INOUT = double; +%typemap(typecheck) bool &INOUT = bool; +%typemap(typecheck) signed char &INOUT = signed char; +%typemap(typecheck) unsigned char &INOUT = unsigned char; +%typemap(typecheck) unsigned long &INOUT = unsigned long; +%typemap(typecheck) unsigned short &INOUT = unsigned short; +%typemap(typecheck) unsigned int &INOUT = unsigned int; +%typemap(typecheck) long &INOUT = long; +%typemap(typecheck) short &INOUT = short; +%typemap(typecheck) int &INOUT = int; +%typemap(typecheck) float &INOUT = float; +%typemap(typecheck) long long &INOUT = long long; +%typemap(typecheck) unsigned long long &INOUT = unsigned long long; + +#endif + +// -------------------------------------------------------------------- +// Special types +// -------------------------------------------------------------------- + +%include +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/tcl/wish.i b/macx64/bin/swig/share/swig/4.0.0/tcl/wish.i new file mode 100644 index 00000000..260032a8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/tcl/wish.i @@ -0,0 +1,146 @@ +/* ----------------------------------------------------------------------------- + * wish.i + * + * SWIG File for making wish + * ----------------------------------------------------------------------------- */ + +#ifdef AUTODOC +%subsection "wish.i" +%text %{ +This module provides the Tk_AppInit() function needed to build a +new version of the wish executable. Like tclsh.i, this file should +not be used with dynamic loading. To make an interface file work with +both static and dynamic loading, put something like this in your +interface file : + + #ifdef STATIC + %include + #endif + +A startup file may be specified by defining the symbol SWIG_RcFileName +as follows (this should be included in a code-block) : + + #define SWIG_RcFileName "~/.mywishrc" +%} +#endif + +%{ + + +/* Initialization code for wish */ + +#include + +#ifndef SWIG_RcFileName +char *SWIG_RcFileName = "~/.wishrc"; +#endif + +#ifdef MAC_TCL +extern int MacintoshInit _ANSI_ARGS_((void)); +extern int SetupMainInterp _ANSI_ARGS_((Tcl_Interp *interp)); +#endif + +/* + *---------------------------------------------------------------------- + * + * Tcl_AppInit -- + * + * This procedure performs application-specific initialization. + * Most applications, especially those that incorporate additional + * packages, will have their own version of this procedure. + * + * Results: + * Returns a standard Tcl completion code, and leaves an error + * message in interp->result if an error occurs. + * + * Side effects: + * Depends on the startup script. + * + *---------------------------------------------------------------------- + */ + +int Tcl_AppInit(Tcl_Interp *interp) +{ +#ifndef MAC_TCL + Tk_Window main; + main = Tk_MainWindow(interp); +#endif + /* + * Call the init procedures for included packages. Each call should + * look like this: + * + * if (Mod_Init(interp) == TCL_ERROR) { + * return TCL_ERROR; + * } + * + * where "Mod" is the name of the module. + */ + + if (Tcl_Init(interp) == TCL_ERROR) { + return TCL_ERROR; + } + + if (Tk_Init(interp) == TCL_ERROR) { + return TCL_ERROR; + } + + /* + * Call Tcl_CreateCommand for application-specific commands, if + * they weren't already created by the init procedures called above. + */ + + if (SWIG_init(interp) == TCL_ERROR) { + return TCL_ERROR; + } + +#ifdef MAC_TCL + SetupMainInterp(interp); +#endif + + /* + * Specify a user-specific startup file to invoke if the application + * is run interactively. Typically the startup file is "~/.apprc" + * where "app" is the name of the application. If this line is deleted + * then no user-specific startup file will be run under any conditions. + */ + +#if TCL_MAJOR_VERSION >= 8 || TCL_MAJOR_VERSION == 7 && TCL_MINOR_VERSION >= 5 + Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); +#else + tcl_RcFileName = SWIG_RcFileName; +#endif + +/* For Macintosh might also want this */ + +#ifdef MAC_TCL +#ifdef SWIG_RcRsrcName + Tcl_SetVar(interp, (char *) "tcl_rcRsrcName",SWIG_RcRsrcName,TCL_GLOBAL_ONLY); +#endif +#endif + return TCL_OK; +} + +#if TK_MAJOR_VERSION >= 4 +int main(int argc, char **argv) { + +#ifdef MAC_TCL + char *newArgv[2]; + if (MacintoshInit() != TCL_OK) { + Tcl_Exit(1); + } + argc = 1; + newArgv[0] = "Wish"; + newArgv[1] = NULL; + argv = newArgv; +#endif + Tk_Main(argc, argv, Tcl_AppInit); + return(0); +} +#else +extern int main(); +#endif + +%} + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/attribute.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/attribute.swg new file mode 100644 index 00000000..98811399 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/attribute.swg @@ -0,0 +1,286 @@ +/* ----------------------------------------------------------------------------- + * attribute.swg + * + * Attribute implementation + * ----------------------------------------------------------------------------- */ + +/* + The following macros convert a pair of set/get methods + into a "native" attribute. + + Use %attribute when you have a pair of get/set methods to a primitive type + like in: + + %attribute(A, int, a, get_a, set_a); + + struct A + { + int get_a() const; + void set_a(int aa); + }; + + If you don't provide a 'set' method, a 'read-only' attribute + is generated, ie, like in: + + %attribute(A, int, c, get_c); + + Use %attributeref when you have const/non-const reference access methods + for primitive types or class/structs, like in: + + %attributeref(A, int, b); + + struct A + { + const int& b() const; + int& b(); + }; + + %attributeref(B, int, c); + + struct B + { + int& c(); + }; + + You can also use + + %attributeref(Class, AttributeType, AttributeName, AccessorMethod) + + if the internal C++ reference methods have a different name from the + attribute you want, so + + %attributeref(B, int, d, c); + + is the same as the last example, but instead of the attribute 'c' being + called 'c', it is called 'd'. + + Now you can use the attributes like so: + + x = A() + x.a = 3 # calls A::set_a + print x.a # calls A::get_a + + x.b = 3 # calls A::b() + print x.b # calls A::b() const + + Use %attribute2 instead of %attribute to indicate that reference-pointer + translation is required. You use %attribute2 instead of %attribute in + cases like this: + + %attribute2(MyClass, MyFoo, Foo, GetFoo, SetFoo); + %inline %{ + struct MyFoo { + int x; + }; + class MyClass { + MyFoo foo; + public: + MyFoo& GetFoo() { return foo; } + void SetFoo(const MyFoo& other) { foo = other; } + }; + %} + + Here, the data type of the property is a wrapped type (MyFoo) and on the + C++ side it is passed by reference. The problem is that the SWIG wrapper will + pass around a pointer (MyFoo *) which is not compatible with the reference + type of the accessors (MyFoo &). Therefore, if you use %attribute, you'll get + an error from your C/C++ compiler. %attribute2 translates between a pointer + and a reference to eliminate the error. In case you're confused, let's make it + simple: just use %attribute at first, but if the C/C++ compiler gives an error + while compiling the wrapper, try %attribute2 instead. + + NOTE: remember that if the type contains commas, such as 'std::pair', + you need to use the macro like: + + %attributeref(A, %arg(std::pair), pval); + + where %arg() 'normalizes' the type to be understood as a single + argument, otherwise the macro will get confused by the comma. + + The %attributeval is the same as %attribute, but should be used when the type + is a class/struct (ie a non-primitive type) and when the get and set methods + return/pass by value. The following is very similar to the above example, but + note that the access is by value rather than reference. + + %attributeval(MyClassVal, MyFoo, ReadWriteFoo, GetFoo, SetFoo); + %attributeval(MyClassVal, MyFoo, ReadOnlyFoo, GetFoo); + %inline %{ + class MyClassVal { + MyFoo foo; + public: + MyFoo GetFoo() { return foo; } + void SetFoo(MyFoo other) { foo = other; } + }; + %} + + The %attributestring is the same as %attributeval, but should be used for string + class types, which are unusual as they are a class on the C++ side, but normally an + immutable/primitive type in the target language. Example usage for std::string: + + %include + %attributestring(MyStringyClass, std::string, ReadWriteString, GetString, SetString); + %attributestring(MyStringyClass, std::string, ReadOnlyString, GetString); + %inline %{ + class MyStringyClass { + std::string str; + public: + MyStringyClass(const std::string &val) : str(val) {} + std::string GetString() { return str; } + void SetString(std::string other) { str = other; } + }; + %} + + The %attributestring also works for class types that have %naturalvar turned + on and so is also useful for shared_ptr which has %naturalvar turned on in %shared_ptr. + +*/ + +// +// Define SWIG_ATTRIBUTE_TEMPLATE if you want to use templates instead of macros for the C++ get and set wrapper methods +// Does not always generate compilable code, use at your peril! +// +//#define SWIG_ATTRIBUTE_TEMPLATE + +%define %attribute_custom(Class, AttributeType, AttributeName, GetMethod, SetMethod, GetMethodCall, SetMethodCall) + %ignore Class::GetMethod(); + %ignore Class::GetMethod() const; + #if #SetMethod != #AttributeName + %ignore Class::SetMethod; + #endif + %extend Class { + AttributeType AttributeName; + } +#if defined(__cplusplus) && defined(SWIG_ATTRIBUTE_TEMPLATE) + %{ + template < class C > inline AttributeType %mangle(Class) ##_## AttributeName ## _get(const C* self_) { + return GetMethodCall; + } + template < class C > inline AttributeType %mangle(Class) ##_## AttributeName ## _get(C* self_) { + return GetMethodCall; + } + template < class C > inline void %mangle(Class) ##_## AttributeName ## _set(C* self_, AttributeType val_) { + SetMethodCall; + } + %} +#else + %{ + #define %mangle(Class) ##_## AttributeName ## _get(self_) GetMethodCall + #define %mangle(Class) ##_## AttributeName ## _set(self_, val_) SetMethodCall + %} +#endif +%enddef + +%define %attribute_readonly(Class, AttributeType, AttributeName, GetMethod, GetMethodCall) + %ignore Class::GetMethod(); + %ignore Class::GetMethod() const; + %immutable Class::AttributeName; + %extend Class { + AttributeType AttributeName; + } +#if defined(__cplusplus) && defined(SWIG_ATTRIBUTE_TEMPLATE) + %{ + template < class C > inline AttributeType %mangle(Class) ##_## AttributeName ## _get(const C* self_) { + return GetMethodCall; + } + template < class C > inline AttributeType %mangle(Class) ##_## AttributeName ## _get(C* self_) { + return GetMethodCall; + } + %} +#else + %{ + #define %mangle(Class) ##_## AttributeName ## _get(self_) GetMethodCall + %} +#endif +%enddef + + +// User macros + +%define %attribute(Class, AttributeType, AttributeName, GetMethod, SetMethod...) + #if #SetMethod != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, GetMethod, SetMethod, self_->GetMethod(), self_->SetMethod(val_)) + #else + %attribute_readonly(%arg(Class), %arg(AttributeType), AttributeName, GetMethod, self_->GetMethod()) + #endif +%enddef + +%define %attribute2(Class, AttributeType, AttributeName, GetMethod, SetMethod...) + #if #SetMethod != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, GetMethod, SetMethod, &self_->GetMethod(), self_->SetMethod(*val_)) + #else + %attribute_readonly(%arg(Class), %arg(AttributeType), AttributeName, GetMethod, &self_->GetMethod()) + #endif +%enddef + +%define %attributeref(Class, AttributeType, AttributeName, AccessorMethod...) + #if #AccessorMethod != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, AccessorMethod, AccessorMethod, self_->AccessorMethod(), self_->AccessorMethod() = val_) + #else + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, AttributeName, AttributeName, self_->AttributeName(), self_->AttributeName() = val_) + #endif +%enddef + +%define %attribute2ref(Class, AttributeType, AttributeName, AccessorMethod...) + #if #AccessorMethod != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, AccessorMethod, AccessorMethod, &self_->AccessorMethod(), self_->AccessorMethod() = *val_) + #else + %attribute_custom(%arg(Class), %arg(AttributeType), AccessorName, AccessorName, AccessorName, &self_->AccessorName(), self_->AccessorName() = *val_) + #endif +%enddef + +// deprecated (same as %attributeref, but there is an argument order inconsistency) +%define %attribute_ref(Class, AttributeType, AccessorMethod, AttributeName...) + #if #AttributeName != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, AccessorMethod, AccessorMethod, self_->AccessorMethod(), self_->AccessorMethod() = val_) + #else + %attribute_custom(%arg(Class), %arg(AttributeType), AccessorMethod, AccessorMethod, AccessorMethod, self_->AccessorMethod(), self_->AccessorMethod() = val_) + #endif +%enddef + + +%define %attributeval(Class, AttributeType, AttributeName, GetMethod, SetMethod...) + %{ + #define %mangle(Class) ##_## AttributeName ## _get(self_) new AttributeType(self_->GetMethod()) + %} + #if #SetMethod != "" + %{ + #define %mangle(Class) ##_## AttributeName ## _set(self_, val_) self_->SetMethod(*val_) + %} + #if #SetMethod != #AttributeName + %ignore Class::SetMethod; + #endif + #else + %immutable Class::AttributeName; + #endif + %ignore Class::GetMethod(); + %ignore Class::GetMethod() const; + %newobject Class::AttributeName; + %extend Class { + AttributeType AttributeName; + } +%enddef + + +%define %attributestring(Class, AttributeType, AttributeName, GetMethod, SetMethod...) + %{ + #define %mangle(Class) ##_## AttributeName ## _get(self_) *new AttributeType(self_->GetMethod()) + %} + #if #SetMethod != "" + %{ + #define %mangle(Class) ##_## AttributeName ## _set(self_, val_) self_->SetMethod(val_) + %} + #if #SetMethod != #AttributeName + %ignore Class::SetMethod; + #endif + #else + %immutable Class::AttributeName; + #endif + %ignore Class::GetMethod(); + %ignore Class::GetMethod() const; + %newobject Class::AttributeName; + %typemap(newfree) const AttributeType &AttributeName "delete $1;" + %extend Class { + AttributeType AttributeName; + } +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/carrays.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/carrays.swg new file mode 100644 index 00000000..462d60bc --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/carrays.swg @@ -0,0 +1,114 @@ +/* ----------------------------------------------------------------------------- + * carrays.swg + * + * This library file contains macros that can be used to manipulate simple + * pointers as arrays. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %array_functions(TYPE,NAME) + * + * Generates functions for creating and accessing elements of a C array + * (as pointers). Creates the following functions: + * + * TYPE *new_NAME(int nelements) + * void delete_NAME(TYPE *); + * TYPE NAME_getitem(TYPE *, int index); + * void NAME_setitem(TYPE *, int index, TYPE value); + * + * ----------------------------------------------------------------------------- */ + +%define %array_functions(TYPE,NAME) +%{ + static TYPE *new_##NAME(size_t nelements) { + return %new_array(nelements, TYPE); + } + + static void delete_##NAME(TYPE *ary) { + %delete_array(ary); + } + + static TYPE NAME##_getitem(TYPE *ary, size_t index) { + return ary[index]; + } + static void NAME##_setitem(TYPE *ary, size_t index, TYPE value) { + ary[index] = value; + } +%} + +TYPE *new_##NAME(size_t nelements); +void delete_##NAME(TYPE *ary); +TYPE NAME##_getitem(TYPE *ary, size_t index); +void NAME##_setitem(TYPE *ary, size_t index, TYPE value); + +%enddef + + +/* ----------------------------------------------------------------------------- + * %array_class(TYPE,NAME) + * + * Generates a class wrapper around a C array. The class has the following + * interface: + * + * struct NAME { + * NAME(int nelements); + * ~NAME(); + * TYPE getitem(int index); + * void setitem(int index, TYPE value); + * TYPE * cast(); + * static NAME *frompointer(TYPE *t); + * } + * + * Use + * + * %array_class_wrap(TYPE,NAME,GET,SET) + * + * if you want different names for the get/set methods. + * ----------------------------------------------------------------------------- */ + +%define %array_class_wrap(TYPE,NAME,getitem,setitem) +%{ +typedef TYPE NAME; +%} + + +typedef struct { +} NAME; + +%extend NAME { + + NAME(size_t nelements) { + return %new_array(nelements, TYPE); + } + + ~NAME() { + %delete_array(self); + } + + TYPE getitem(size_t index) { + return self[index]; + } + + void setitem(size_t index, TYPE value) { + self[index] = value; + } + + TYPE * cast() { + return self; + } + + static NAME *frompointer(TYPE *t) { + return %static_cast(t, NAME *); + } +}; + +%types(NAME = TYPE); + +%enddef + + +#ifndef %array_class +%define %array_class(TYPE,NAME) + %array_class_wrap(TYPE,NAME,getitem,setitem) +%enddef +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/cdata.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/cdata.swg new file mode 100644 index 00000000..8597b7b0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/cdata.swg @@ -0,0 +1,76 @@ +/* ----------------------------------------------------------------------------- + * cdata.swg + * + * This library file contains macros for manipulating raw C data as strings. + * ----------------------------------------------------------------------------- */ + +%{ +typedef struct SWIGCDATA { + char *data; + size_t len; +} SWIGCDATA; +%} + +/* ----------------------------------------------------------------------------- + * Typemaps for returning binary data + * ----------------------------------------------------------------------------- */ + +%typemap(out,noblock=1,fragment="SWIG_FromCharPtrAndSize") SWIGCDATA { + %set_output(SWIG_FromCharPtrAndSize($1.data,$1.len)); +} +%typemap(in) (const void *indata, size_t inlen) = (char *STRING, size_t SIZE); + + +/* ----------------------------------------------------------------------------- + * %cdata(TYPE [, NAME]) + * + * Convert raw C data to a binary string. + * ----------------------------------------------------------------------------- */ + +%define %cdata(TYPE,NAME...) + +%insert("header") { +#ifdef __cplusplus +extern "C" { +#endif +#if #NAME == "" +static SWIGCDATA cdata_##TYPE(TYPE *ptr, size_t nelements) +#else +static SWIGCDATA cdata_##NAME(TYPE *ptr, size_t nelements) +#endif +{ + SWIGCDATA d; + d.data = (char *) ptr; +#if #TYPE != "void" + d.len = nelements*sizeof(TYPE); +#else + d.len = nelements; +#endif + return d; +} +#ifdef __cplusplus +} +#endif +} + +#ifdef __cplusplus +extern "C" +#endif +#if #NAME == "" +SWIGCDATA cdata_##TYPE(TYPE *ptr, size_t nelements = 1); +#else +SWIGCDATA cdata_##NAME(TYPE *ptr, size_t nelements = 1); +#endif +%enddef + +%rename(cdata) ::cdata_void(void *ptr, size_t nelements = 1); + +%cdata(void); + +/* Memory move function. Due to multi-argument typemaps this appears to be wrapped as +void memmove(void *data, const char *s); */ +void memmove(void *data, const void *indata, size_t inlen); + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/cmalloc.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/cmalloc.swg new file mode 100644 index 00000000..45a6ab99 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/cmalloc.swg @@ -0,0 +1,110 @@ +/* ----------------------------------------------------------------------------- + * cmalloc.swg + * + * This library file contains macros that can be used to create objects using + * the C malloc function. + * ----------------------------------------------------------------------------- */ + +%{ +#include +%} + +/* %malloc(TYPE [, NAME = TYPE]) + %calloc(TYPE [, NAME = TYPE]) + %realloc(TYPE [, NAME = TYPE]) + %free(TYPE [, NAME = TYPE]) + %allocators(TYPE [,NAME = TYPE]) + + Creates functions for allocating/reallocating memory. + + TYPE *malloc_NAME(size_t nbytes = sizeof(TYPE); + TYPE *calloc_NAME(size_t nobj=1, size_t size=sizeof(TYPE)); + TYPE *realloc_NAME(TYPE *ptr, size_t nbytes); + void free_NAME(TYPE *ptr); + +*/ + +%define %malloc(TYPE,NAME...) +#if #NAME != "" +%rename(malloc_##NAME) ::malloc(size_t nbytes); +#else +%rename(malloc_##TYPE) ::malloc(size_t nbytes); +#endif + +#if #TYPE != "void" +%typemap(default) size_t nbytes "$1 = (size_t) sizeof(TYPE);" +#endif +TYPE *malloc(size_t nbytes); +%typemap(default) size_t nbytes; +%enddef + +%define %calloc(TYPE,NAME...) +#if #NAME != "" +%rename(calloc_##NAME) ::calloc(size_t nobj, size_t sz); +#else +%rename(calloc_##TYPE) ::calloc(size_t nobj, size_t sz); +#endif +#if #TYPE != "void" +%typemap(default) size_t sz "$1 = (size_t) sizeof(TYPE);" +#else +%typemap(default) size_t sz "$1 = 1;" +#endif +%typemap(default) size_t nobj "$1 = 1;" +TYPE *calloc(size_t nobj, size_t sz); +%typemap(default) size_t sz; +%typemap(default) size_t nobj; +%enddef + +%define %realloc(TYPE,NAME...) +%insert("header") { +#if #NAME != "" +TYPE *realloc_##NAME(TYPE *ptr, size_t nitems) +#else +TYPE *realloc_##TYPE(TYPE *ptr, size_t nitems) +#endif +{ +#if #TYPE != "void" +return (TYPE *) realloc(ptr, nitems*sizeof(TYPE)); +#else +return (TYPE *) realloc(ptr, nitems); +#endif +} +} +#if #NAME != "" +TYPE *realloc_##NAME(TYPE *ptr, size_t nitems); +#else +TYPE *realloc_##TYPE(TYPE *ptr, size_t nitems); +#endif +%enddef + +%define %free(TYPE,NAME...) +#if #NAME != "" +%rename(free_##NAME) ::free(TYPE *ptr); +#else +%rename(free_##TYPE) ::free(TYPE *ptr); +#endif +void free(TYPE *ptr); +%enddef + +%define %sizeof(TYPE,NAME...) +#if #NAME != "" +%constant size_t sizeof_##NAME = sizeof(TYPE); +#else +%constant size_t sizeof_##TYPE = sizeof(TYPE); +#endif +%enddef + +%define %allocators(TYPE,NAME...) +%malloc(TYPE,NAME) +%calloc(TYPE,NAME) +%realloc(TYPE,NAME) +%free(TYPE,NAME) +#if #TYPE != "void" +%sizeof(TYPE,NAME) +#endif +%enddef + + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/cpointer.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/cpointer.swg new file mode 100644 index 00000000..94bbbd6b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/cpointer.swg @@ -0,0 +1,157 @@ +/* ----------------------------------------------------------------------------- + * cpointer.swg + * + * This library file contains macros that can be used to manipulate simple + * pointer objects. + * + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %pointer_class(type,name) + * + * Places a simple proxy around a simple type like 'int', 'float', or whatever. + * The proxy provides this interface: + * + * class type { + * public: + * type(); + * ~type(); + * type value(); + * void assign(type value); + * }; + * + * Example: + * + * %pointer_class(int, intp); + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = intp() + * >>> a.assign(10) + * >>> a.value() + * 10 + * >>> b = intp() + * >>> b.assign(20) + * >>> print add(a,b) + * 30 + * + * As a general rule, this macro should not be used on class/structures that + * are already defined in the interface. + * ----------------------------------------------------------------------------- */ + + +%define %pointer_class(TYPE, NAME) +%{ +typedef TYPE NAME; +%} + +typedef struct { +} NAME; + +%extend NAME { + NAME() { + return %new_instance(TYPE); + } + ~NAME() { + if ($self) %delete($self); + } +} + +%extend NAME { + + void assign(TYPE value) { + *$self = value; + } + TYPE value() { + return *$self; + } + TYPE * cast() { + return $self; + } + static NAME * frompointer(TYPE *t) { + return (NAME *) t; + } +} + +%types(NAME = TYPE); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_functions(type,name) + * + * Create functions for allocating/deallocating pointers. This can be used + * if you don't want to create a proxy class or if the pointer is complex. + * + * %pointer_functions(int, intp) + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = copy_intp(10) + * >>> intp_value(a) + * 10 + * >>> b = new_intp() + * >>> intp_assign(b,20) + * >>> print add(a,b) + * 30 + * >>> delete_intp(a) + * >>> delete_intp(b) + * + * ----------------------------------------------------------------------------- */ + +%define %pointer_functions(TYPE,NAME) +%{ + static TYPE *new_##NAME() { + return %new_instance(TYPE); + } + + static TYPE *copy_##NAME(TYPE value) { + return %new_copy(value, TYPE); + } + + static void delete_##NAME(TYPE *obj) { + if (obj) %delete(obj); + } + + static void NAME ##_assign(TYPE *obj, TYPE value) { + *obj = value; + } + + static TYPE NAME ##_value(TYPE *obj) { + return *obj; + } +%} + +TYPE *new_##NAME(); +TYPE *copy_##NAME(TYPE value); +void delete_##NAME(TYPE *obj); +void NAME##_assign(TYPE *obj, TYPE value); +TYPE NAME##_value(TYPE *obj); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_cast(type1,type2,name) + * + * Generates a pointer casting function. + * ----------------------------------------------------------------------------- */ + +%define %pointer_cast(TYPE1,TYPE2,NAME) +%inline %{ +TYPE2 NAME(TYPE1 x) { + return %static_cast(x, TYPE2); +} +%} +%enddef + + + + + + + + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/cstring.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/cstring.swg new file mode 100644 index 00000000..e774c431 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/cstring.swg @@ -0,0 +1,9 @@ +%include + +%typemaps_cstring(%cstring, + char, + SWIG_AsCharPtr, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtr, + SWIG_FromCharPtrAndSize); + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/cstrings.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/cstrings.swg new file mode 100644 index 00000000..0aca6110 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/cstrings.swg @@ -0,0 +1,288 @@ +/* ----------------------------------------------------------------------------- + * cstrings.swg + * + * This file provides typemaps and macros for dealing with various forms + * of C character string handling. The primary use of this module + * is in returning character data that has been allocated or changed in + * some way. + * ----------------------------------------------------------------------------- */ + +%define %typemaps_cstring(Name, Char, + SWIG_AsCharPtr, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtr, + SWIG_FromCharPtrAndSize) + + +/* %cstring_input_binary(TYPEMAP, SIZE) + * + * Macro makes a function accept binary string data along with + * a size. For example: + * + * %cstring_input_binary(Char *buff, int size); + * void foo(Char *buff, int size) { + * } + * + */ + +%define Name ## _input_binary(TYPEMAP, SIZE) +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) (TYPEMAP, SIZE) + (int res, Char *buf = 0, size_t size = 0, int alloc = 0) { + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + $1 = ($1_ltype) buf; + $2 = ($2_ltype) size - 1; +} +%typemap(freearg,noblock=1,match="in") (TYPEMAP, SIZE) { + if (alloc$argnum == SWIG_NEWOBJ) %delete_array(buf$argnum); +} +%enddef + + + +/* + * %cstring_bounded_output(TYPEMAP, MAX) + * + * This macro is used to return a NULL-terminated output string of + * some maximum length. For example: + * + * %cstring_bounded_output(Char *outx, 512); + * void foo(Char *outx) { + * sprintf(outx,"blah blah\n"); + * } + * + */ + +%define Name ## _bounded_output(TYPEMAP,MAX) +%typemap(in,noblock=1,numinputs=0) TYPEMAP (Char temp[MAX+1]) { + $1 = ($1_ltype) temp; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment= #SWIG_FromCharPtr ) TYPEMAP { + $1[MAX] = 0; + %append_output(SWIG_FromCharPtr($1)); +} +%enddef + + + +/* + * %cstring_chunk_output(TYPEMAP, SIZE) + * + * This macro is used to return a chunk of binary string data. + * Embedded NULLs are okay. For example: + * + * %cstring_chunk_output(Char *outx, 512); + * void foo(Char *outx) { + * memmove(outx, somedata, 512); + * } + * + */ + +%define Name ## _chunk_output(TYPEMAP,SIZE) +%typemap(in,noblock=1,numinputs=0) TYPEMAP(Char temp[SIZE]) { + $1 = ($1_ltype) temp; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment= #SWIG_FromCharPtrAndSize) TYPEMAP { + %append_output(SWIG_FromCharPtrAndSize($1,SIZE)); +} +%enddef + + + +/* + * %cstring_bounded_mutable(TYPEMAP, SIZE) + * + * This macro is used to wrap a string that's going to mutate. + * + * %cstring_bounded_mutable(Char *in, 512); + * void foo(in *x) { + * while (*x) { + * *x = toupper(*x); + * x++; + * } + * } + * + */ + + +%define Name ## _bounded_mutable(TYPEMAP,MAX) +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) TYPEMAP + (int res,Char temp[MAX+1], Char *t = 0, size_t n = 0, int alloc = 0) { + res = SWIG_AsCharPtrAndSize($input, &t, &n, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "TYPEMAP", $symname, $argnum); + } + if ( n > (size_t) MAX ) n = (size_t) MAX; + memcpy(temp, t, sizeof(Char)*n); + if (alloc == SWIG_NEWOBJ) %delete_array(t); + temp[n - 1] = 0; + $1 = ($1_ltype) temp; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtr) TYPEMAP { + $1[MAX] = 0; + %append_output(SWIG_FromCharPtr($1)); +} +%enddef + + +/* + * %cstring_mutable(TYPEMAP [, expansion]) + * + * This macro is used to wrap a string that will mutate in place. + * It may change size up to a user-defined expansion. + * + * %cstring_mutable(Char *in); + * void foo(in *x) { + * while (*x) { + * *x = toupper(*x); + * x++; + * } + * } + * + */ + +%define Name ## _mutable(TYPEMAP,EXP...) +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) TYPEMAP (int res, Char *t = 0, size_t n = 0, int alloc = 0, size_t expansion = 0) { +#if #EXP != "" + expansion += EXP; +#endif + res = SWIG_AsCharPtrAndSize($input, &t, &n, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "TYPEMAP", $symname, $argnum); + } + $1 = %new_array(n+expansion, $*1_ltype); + memcpy($1,t,sizeof(Char)*n); + if (alloc == SWIG_NEWOBJ) %delete_array(t); + $1[n-1] = 0; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtr) TYPEMAP { + %append_output(SWIG_FromCharPtr($1)); + %delete_array($1); +} +%enddef + + +/* + * %cstring_output_maxsize(TYPEMAP, SIZE) + * + * This macro returns data in a string of some user-defined size. + * + * %cstring_output_maxsize(Char *outx, int max) { + * void foo(Char *outx, int max) { + * sprintf(outx,"blah blah\n"); + * } + */ + +%define Name ## _output_maxsize(TYPEMAP, SIZE) +%typemap(in,noblock=1,fragment=SWIG_AsVal_frag(size_t)) (TYPEMAP, SIZE) (int res, size_t size, Char *buff = 0) { + res = SWIG_AsVal(size_t)($input, &size); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + buff= %new_array(size+1, Char); + $2 = %numeric_cast(size, $2_ltype); + $1 = %static_cast(buff, $1_ltype); +} +%typemap(freearg,noblock=1,match="in") (TYPEMAP,SIZE) { + if (buff$argnum) %delete_array(buff$argnum); +} +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtr) (TYPEMAP,SIZE) { + %append_output(SWIG_FromCharPtr($1)); +} +%enddef + +/* + * %cstring_output_withsize(TYPEMAP, SIZE) + * + * This macro is used to return Character data along with a size + * parameter. + * + * %cstring_output_withsize(Char *outx, int *max) { + * void foo(Char *outx, int *max) { + * sprintf(outx,"blah blah\n"); + * *max = strlen(outx); + * } + */ + +%define Name ## _output_withsize(TYPEMAP, SIZE) +%typemap(in,noblock=1,fragment=SWIG_AsVal_frag(size_t)) (TYPEMAP, SIZE) (int res, size_t n, Char *buff = 0, $*2_ltype size) { + res = SWIG_AsVal(size_t)($input, &n); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + buff= %new_array(n+1, Char); + $1 = %static_cast(buff, $1_ltype); + size = %numeric_cast(n,$*2_ltype); + $2 = &size; +} +%typemap(freearg,noblock=1,match="in")(TYPEMAP,SIZE) { + if (buff$argnum) %delete_array(buff$argnum); +} +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtrAndSize) (TYPEMAP,SIZE) { + %append_output(SWIG_FromCharPtrAndSize($1,*$2)); +} +%enddef + + +/* + * %cstring_output_allocate(TYPEMAP, RELEASE) + * + * This macro is used to return Character data that was + * allocated with new or malloc. + * + * %cstring_output_allocate(Char **outx, free($1)); + * void foo(Char **outx) { + * *outx = (Char *) malloc(512); + * sprintf(outx,"blah blah\n"); + * } + */ + +%define Name ## _output_allocate(TYPEMAP, RELEASE) +%typemap(in,noblock=1,numinputs=0) TYPEMAP($*1_ltype temp = 0) { + $1 = &temp; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtr) TYPEMAP { + if (*$1) { + %append_output(SWIG_FromCharPtr(*$1)); + RELEASE; + } +} +%enddef + + +/* + * %cstring_output_allocate_size(TYPEMAP, SIZE, RELEASE) + * + * This macro is used to return Character data that was + * allocated with new or malloc. + * + * %cstring_output_allocate_size(Char **outx, int *sz, free($1)); + * void foo(Char **outx, int *sz) { + * *outx = (Char *) malloc(512); + * sprintf(outx,"blah blah\n"); + * *sz = strlen(outx); + * } + */ + +%define Name ## _output_allocate_size(TYPEMAP, SIZE, RELEASE) +%typemap(in,noblock=1,numinputs=0) (TYPEMAP, SIZE) ($*1_ltype temp = 0, $*2_ltype tempn) { + $1 = &temp; $2 = &tempn; +} +%typemap(freearg,match="in") (TYPEMAP,SIZE) ""; +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtrAndSize)(TYPEMAP,SIZE) { + if (*$1) { + %append_output(SWIG_FromCharPtrAndSize(*$1,*$2)); + RELEASE; + } +} +%enddef + +%enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/cwstring.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/cwstring.swg new file mode 100644 index 00000000..933f9a3a --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/cwstring.swg @@ -0,0 +1,10 @@ +%include +%include + +%typemaps_cstring(%cwstring, + wchar_t, + SWIG_AsWCharPtr, + SWIG_AsWCharPtrAndSize, + SWIG_FromWCharPtr, + SWIG_FromWCharPtrAndSize); + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/enumint.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/enumint.swg new file mode 100644 index 00000000..d048bb6b --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/enumint.swg @@ -0,0 +1,39 @@ +/* ------------------------------------------------------------ + * Enums mapped as integer values + * ------------------------------------------------------------ */ + +%apply int { enum SWIGTYPE }; +%apply const int& { const enum SWIGTYPE & }; +%apply const int& { const enum SWIGTYPE && }; + +%typemap(in,fragment=SWIG_AsVal_frag(int),noblock=1) const enum SWIGTYPE & (int val, int ecode, $basetype temp) { + ecode = SWIG_AsVal(int)($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$type", $symname, $argnum); + } else { + temp = %static_cast(val,$basetype); + $1 = &temp; + } +} + +%typemap(in,fragment=SWIG_AsVal_frag(int),noblock=1) const enum SWIGTYPE && (int val, int ecode, $basetype temp) { + ecode = SWIG_AsVal(int)($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$type", $symname, $argnum); + } else { + temp = %static_cast(val,$basetype); + $1 = &temp; + } +} + +%typemap(varin,fragment=SWIG_AsVal_frag(int),noblock=1) enum SWIGTYPE { + if (sizeof(int) != sizeof($1)) { + %variable_fail(SWIG_AttributeError,"$type", "arch, read-only $name"); + } else { + int ecode = SWIG_AsVal(int)($input, %reinterpret_cast(&$1,int*)); + if (!SWIG_IsOK(ecode)) { + %variable_fail(ecode, "$type", "$name"); + } + } +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/exception.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/exception.swg new file mode 100644 index 00000000..b60a3299 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/exception.swg @@ -0,0 +1,86 @@ +/* ----------------------------------------------------------------------------- + * exceptions.swg + * + * This SWIG library file provides language independent exception handling + * ----------------------------------------------------------------------------- */ + +%include + + +/* macros for error manipulation */ +#define %nullref_fmt() "invalid null reference " +#define %varfail_fmt(_type,_name) "in variable '"`_name`"' of type '"`_type`"'" +#ifndef %argfail_fmt +#define %argfail_fmt(_type,_name,_argn) "in method '" `_name` "', argument " `_argn`" of type '" `_type`"'" +#endif +#define %outfail_fmt(_type) "in output value of type '"_type"'" +#ifndef %argnullref_fmt +#define %argnullref_fmt(_type,_name,_argn) %nullref_fmt() %argfail_fmt(_type, _name, _argn) +#endif +#define %varnullref_fmt(_type,_name) %nullref_fmt() %varfail_fmt(_type, _name) +#define %outnullref_fmt(_type) %nullref_fmt() %outfail_fmt(_type) + +/* setting an error */ +#define %error(code,msg...) SWIG_Error(code, msg) +#define %type_error(msg...) SWIG_Error(SWIG_TypeError, msg) + + + +%insert("runtime") { + +%define_as(SWIG_exception_fail(code, msg), %block(%error(code, msg); SWIG_fail)) + +%define_as(SWIG_contract_assert(expr, msg), if (!(expr)) { %error(SWIG_RuntimeError, msg); SWIG_fail; } else) + +} + +#ifdef __cplusplus +/* + You can use the SWIG_CATCH_STDEXCEPT macro with the %exception + directive as follows: + + %exception { + try { + $action + } + catch (my_except& e) { + ... + } + SWIG_CATCH_STDEXCEPT // catch std::exception + catch (...) { + SWIG_exception_fail(SWIG_UnknownError, "Unknown exception"); + } + } +*/ + +%fragment(""); + +%define SWIG_CATCH_STDEXCEPT + /* catching std::exception */ + catch (std::invalid_argument& e) { + SWIG_exception_fail(SWIG_ValueError, e.what() ); + } catch (std::domain_error& e) { + SWIG_exception_fail(SWIG_ValueError, e.what() ); + } catch (std::overflow_error& e) { + SWIG_exception_fail(SWIG_OverflowError, e.what() ); + } catch (std::out_of_range& e) { + SWIG_exception_fail(SWIG_IndexError, e.what() ); + } catch (std::length_error& e) { + SWIG_exception_fail(SWIG_IndexError, e.what() ); + } catch (std::runtime_error& e) { + SWIG_exception_fail(SWIG_RuntimeError, e.what() ); + } catch (std::exception& e) { + SWIG_exception_fail(SWIG_SystemError, e.what() ); + } +%enddef +%define SWIG_CATCH_UNKNOWN + catch (std::exception& e) { + SWIG_exception_fail(SWIG_SystemError, e.what() ); + } + catch (...) { + SWIG_exception_fail(SWIG_UnknownError, "unknown exception"); + } +%enddef + + +#endif /* __cplusplus */ diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/factory.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/factory.swg new file mode 100644 index 00000000..bccceb1d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/factory.swg @@ -0,0 +1,88 @@ +/* + Implement a more natural wrap for factory methods, for example, if + you have: + + ---- geometry.h -------- + struct Geometry { + enum GeomType{ + POINT, + CIRCLE + }; + + virtual ~Geometry() {} + virtual int draw() = 0; + + // + // Factory method for all the Geometry objects + // + static Geometry *create(GeomType i); + }; + + struct Point : Geometry { + int draw() { return 1; } + double width() { return 1.0; } + }; + + struct Circle : Geometry { + int draw() { return 2; } + double radius() { return 1.5; } + }; + + // + // Factory method for all the Geometry objects + // + Geometry *Geometry::create(GeomType type) { + switch (type) { + case POINT: return new Point(); + case CIRCLE: return new Circle(); + default: return 0; + } + } + ---- geometry.h -------- + + + You can use the %factory with the Geometry::create method as follows: + + %newobject Geometry::create; + %factory(Geometry *Geometry::create, Point, Circle); + %include "geometry.h" + + and Geometry::create will return a 'Point' or 'Circle' instance + instead of the plain 'Geometry' type. For example, in python: + + circle = Geometry.create(Geometry.CIRCLE) + r = circle.radius() + + where circle is a Circle proxy instance. + + NOTES: remember to fully qualify all the type names and don't + use %factory inside a namespace declaration, ie, instead of + + namespace Foo { + %factory(Geometry *Geometry::create, Point, Circle); + } + + use + + %factory(Foo::Geometry *Foo::Geometry::create, Foo::Point, Foo::Circle); + + +*/ + +%define %_factory_dispatch(Type) +if (!dcast) { + Type *dobj = dynamic_cast($1); + if (dobj) { + dcast = 1; + %set_output(SWIG_NewPointerObj(%as_voidptr(dobj),$descriptor(Type *), $owner | %newpointer_flags)); + } +}%enddef + +%define %factory(Method,Types...) +%typemap(out) Method { + int dcast = 0; + %formacro(%_factory_dispatch, Types) + if (!dcast) { + %set_output(SWIG_NewPointerObj(%as_voidptr($1),$descriptor, $owner | %newpointer_flags)); + } +}%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/fragments.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/fragments.swg new file mode 100644 index 00000000..e83f415c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/fragments.swg @@ -0,0 +1,235 @@ +/* + Fragments + ========= + See the "Typemap fragments" section in the documentation for understanding + fragments. Below is some info on how fragments and automatic type + specialization is used. + + Macros that make the automatic generation of typemaps easier are provided. + + Consider the following code: + + %fragment(SWIG_From_frag(bool), "header") { + static PyObject* + SWIG_From_dec(bool)(bool value) + { + PyObject *obj = value ? Py_True : Py_False; + Py_INCREF(obj); + return obj; + } + } + + %typemap(out, fragment=SWIG_From_frag(bool)) bool { + $result = SWIG_From(bool)($1)); + } + + Here the macros + + SWIG_From_frag => fragment + SWIG_From_dec => declaration + SWIG_From => call + + allow you to define/include a fragment, and declare and call the + 'from-bool' method as needed. In the simpler case, these macros + just return something like + + SWIG_From_frag(bool) => "SWIG_From_bool" + SWIG_From_dec(bool) => SWIG_From_bool + SWIG_From(bool) => SWIG_From_bool + + But they are specialized for the different languages requirements, + such as perl or tcl that requires passing the interpreter pointer, + and also they can manage C++ ugly types, for example: + + SWIG_From_frag(std::complex) => "SWIG_From_std_complex_Sl_double_Sg_" + SWIG_From_dec(std::complex) => SWIG_From_std_complex_Sl_double_Sg_ + SWIG_From(std::complex) => SWIG_From_std_complex_Sl_double_Sg_ + + + Hence, to declare methods to use with typemaps, always use the + SWIG_From* macros. In the same way, the SWIG_AsVal* and SWIG_AsPtr* + set of macros are provided. + +*/ + + +/* ----------------------------------------------------------------------------- + * Define the basic macros to 'normalize' the type fragments + * ----------------------------------------------------------------------------- */ + +#ifndef SWIG_AS_DECL_ARGS +#define SWIG_AS_DECL_ARGS +#endif + +#ifndef SWIG_FROM_DECL_ARGS +#define SWIG_FROM_DECL_ARGS +#endif + +#ifndef SWIG_AS_CALL_ARGS +#define SWIG_AS_CALL_ARGS +#endif + +#ifndef SWIG_FROM_CALL_ARGS +#define SWIG_FROM_CALL_ARGS +#endif + +#define %fragment_name(Name, Type...) %string_name(Name) "_" {Type} + +#define SWIG_Traits_frag(Type...) %fragment_name(Traits, Type) +#define SWIG_AsPtr_frag(Type...) %fragment_name(AsPtr, Type) +#define SWIG_AsVal_frag(Type...) %fragment_name(AsVal, Type) +#define SWIG_From_frag(Type...) %fragment_name(From, Type) + +#define SWIG_AsVal_name(Type...) %symbol_name(AsVal, Type) +#define SWIG_AsPtr_name(Type...) %symbol_name(AsPtr, Type) +#define SWIG_From_name(Type...) %symbol_name(From, Type) + +#define SWIG_AsVal_dec(Type...) SWIG_AsVal_name(Type) SWIG_AS_DECL_ARGS +#define SWIG_AsPtr_dec(Type...) SWIG_AsPtr_name(Type) SWIG_AS_DECL_ARGS +#define SWIG_From_dec(Type...) SWIG_From_name(Type) SWIG_FROM_DECL_ARGS + +#define SWIG_AsVal(Type...) SWIG_AsVal_name(Type) SWIG_AS_CALL_ARGS +#define SWIG_AsPtr(Type...) SWIG_AsPtr_name(Type) SWIG_AS_CALL_ARGS +#define SWIG_From(Type...) SWIG_From_name(Type) SWIG_FROM_CALL_ARGS + +/* ------------------------------------------------------------ + * common fragments + * ------------------------------------------------------------ */ + +%fragment("SWIG_isfinite","header",fragment=",") %{ +/* Getting isfinite working pre C99 across multiple platforms is non-trivial. Users can provide SWIG_isfinite on older platforms. */ +#ifndef SWIG_isfinite +/* isfinite() is a macro for C99 */ +# if defined(isfinite) +# define SWIG_isfinite(X) (isfinite(X)) +# elif defined(__cplusplus) && __cplusplus >= 201103L +/* Use a template so that this works whether isfinite() is std::isfinite() or + * in the global namespace. The reality seems to vary between compiler + * versions. + * + * Make sure namespace std exists to avoid compiler warnings. + * + * extern "C++" is required as this fragment can end up inside an extern "C" { } block + */ +namespace std { } +extern "C++" template +inline int SWIG_isfinite_func(T x) { + using namespace std; + return isfinite(x); +} +# define SWIG_isfinite(X) (SWIG_isfinite_func(X)) +# elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) +# define SWIG_isfinite(X) (__builtin_isfinite(X)) +# elif defined(__clang__) && defined(__has_builtin) +# if __has_builtin(__builtin_isfinite) +# define SWIG_isfinite(X) (__builtin_isfinite(X)) +# endif +# elif defined(_MSC_VER) +# define SWIG_isfinite(X) (_finite(X)) +# elif defined(__sun) && defined(__SVR4) +# include +# define SWIG_isfinite(X) (finite(X)) +# endif +#endif +%} + +%fragment("SWIG_Float_Overflow_Check","header",fragment=",SWIG_isfinite") %{ +/* Accept infinite as a valid float value unless we are unable to check if a value is finite */ +#ifdef SWIG_isfinite +# define SWIG_Float_Overflow_Check(X) ((X < -FLT_MAX || X > FLT_MAX) && SWIG_isfinite(X)) +#else +# define SWIG_Float_Overflow_Check(X) ((X < -FLT_MAX || X > FLT_MAX)) +#endif +%} + +/* ----------------------------------------------------------------------------- + * special macros for fragments + * ----------------------------------------------------------------------------- */ + +/* Macros to derive numeric types */ + +%define %numeric_type_from(Type, Base) +%fragment(SWIG_From_frag(Type),"header", + fragment=SWIG_From_frag(Base)) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(Type)(Type value) +{ + return SWIG_From(Base)(value); +} +} +%enddef + +%define %numeric_type_asval(Type, Base, Frag, OverflowCond) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=Frag, + fragment=SWIG_AsVal_frag(Base)) { +SWIGINTERN int +SWIG_AsVal_dec(Type)(SWIG_Object obj, Type *val) +{ + Base v; + int res = SWIG_AsVal(Base)(obj, &v); + if (SWIG_IsOK(res)) { + if (OverflowCond) { + return SWIG_OverflowError; + } else { + if (val) *val = %numeric_cast(v, Type); + } + } + return res; +} +} +%enddef + +#define %numeric_signed_type_asval(Type, Base, Frag, Min, Max) \ +%numeric_type_asval(Type, Base, Frag, (v < Min || v > Max)) + +#define %numeric_unsigned_type_asval(Type, Base, Frag, Max) \ +%numeric_type_asval(Type, Base, Frag, (v > Max)) + + +/* Macro for 'signed long' derived types */ + +%define %numeric_slong(Type, Frag, Min, Max) +%numeric_type_from(Type, long) +%numeric_signed_type_asval(Type, long, Frag , Min, Max) +%enddef + +/* Macro for 'unsigned long' derived types */ + +%define %numeric_ulong(Type, Frag, Max) +%numeric_type_from(Type, unsigned long) +%numeric_unsigned_type_asval(Type, unsigned long, Frag, Max) +%enddef + + +/* Macro for floating point derived types (original macro) */ + +%define %numeric_double(Type, Frag, Min, Max) +%numeric_type_from(Type, double) +%numeric_signed_type_asval(Type, double, Frag , Min, Max) +%enddef + +/* Macro for floating point derived types */ + +%define %numeric_float(Type, Frag, OverflowCond) +%numeric_type_from(Type, double) +%numeric_type_asval(Type, double, Frag, OverflowCond) +%enddef + + +/* Macros for missing fragments */ + +%define %ensure_fragment(Fragment) +%fragment(`Fragment`,"header") { +%#error "SWIG language implementation must provide the Fragment fragment" +} +%enddef + +%define %ensure_type_fragments(Type) +%fragment(SWIG_From_frag(Type),"header") { +%#error "SWIG language implementation must provide a SWIG_From_frag(Type) fragment" +} +%fragment(SWIG_AsVal_frag(Type),"header") { +%#error "SWIG language implementation must provide a SWIG_AsVal_frag(Type) fragment" +} +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/implicit.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/implicit.swg new file mode 100644 index 00000000..2fc3108e --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/implicit.swg @@ -0,0 +1,208 @@ +/* + The %implicit macro allows a SwigType (Class) to be accepted + as an input parameter and use its implicit constructors when needed. + + For example: + + + %implicit(A, int, double, B); + + %inline + { + struct B { }; + struct A + { + int ii; + A(int i) { ii = 1; } + A(double d) { ii = 2; } + A(const B& b) { ii = 3; } + }; + + int get(A a) { return a.ii; } + } + + Here, you can call 'get' as + + get(1) ==> get(A(1)) + get(2.0) ==> get(A(2.0)) + get(B()) ==> get(A(B())) + + and swig will construct an 'A' temporal variable using the + corresponding implicit constructor. + + + The plain implicit macro takes care of simple type list. If it doesn't + work because you are passing template types with commas, then use + the %implicit_{1,2,3} versions and/or the %arg macro. + +*/ + +%define %implicit_type(Type...) +%traits_swigtype(Type); +%enddef + +%define %implicit_frag(Type...) ,fragment=SWIG_Traits_frag(Type) %enddef + +%define %implicit_code(Type...) +{ + Type _v; + int res = swig::asval(obj, &_v); + if (SWIG_IsOK(res)) { + if (val) *val = new value_type(static_cast(_v)); + return SWIG_AddNewMask(res); + } +} +%enddef + +/* implicit */ + +%define %implicit(Type, ...) + +%formacro_1(%implicit_type,__VA_ARGS__); + +%fragment(SWIG_Traits_frag(Type),"header", + fragment="StdTraits" + %formacro_1(%implicit_frag,__VA_ARGS__)) %{ +namespace swig { + template <> struct traits { + typedef pointer_category category; + static const char* type_name() { return "Type"; } + }; + + template <> struct traits_asptr< Type > { + typedef Type value_type; + static int asptr(SWIG_Object obj, value_type **val) { + Type *vptr; + static swig_type_info* descriptor = SWIG_TypeQuery("Type *"); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&vptr, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = vptr; + return res; + } else { + %formacro_1(%implicit_code,__VA_ARGS__) + } + return SWIG_TypeError; + } + }; +} +%} + +%typemap_traits_ptr(%checkcode(POINTER),Type); +%enddef + +/* implicit_1 */ + + +%define %implicit_1(Type, Imp1) +%traits_swigtype(Imp1); + +%fragment(SWIG_Traits_frag(Type),"header", + fragment="StdTraits", + fragment=SWIG_Traits_frag(Imp1)) %{ +namespace swig { + template <> struct traits< Type > { + typedef pointer_category category; + static const char* type_name() { return "Type"; } + }; + + template <> struct traits_asptr< Type > { + typedef Type value_type; + static int asptr(SWIG_Object obj, value_type **val) { + Type *vptr; + static swig_type_info* descriptor = SWIG_TypeQuery("Type *"); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&vptr, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = vptr; + return res; + } else { + %implicit_code(Imp1); + } + return SWIG_TypeError; + } + }; +} +%} + +%typemap_traits_ptr(%checkcode(POINTER),Type); + +%enddef + +/* implicit_2 */ + +%define %implicit_2(Type, Imp1, Imp2) +%traits_swigtype(Imp1); +%traits_swigtype(Imp2); + +%fragment(SWIG_Traits_frag(Type),"header", + fragment="StdTraits", + fragment=SWIG_Traits_frag(Imp1), + fragment=SWIG_Traits_frag(Imp2)) %{ +namespace swig { + template <> struct traits< Type > { + typedef pointer_category category; + static const char* type_name() { return "Type"; } + }; + + template <> struct traits_asptr< Type > { + typedef Type value_type; + static int asptr(SWIG_Object obj, value_type **val) { + Type *vptr; + static swig_type_info* descriptor = SWIG_TypeQuery("Type *"); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&vptr, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = vptr; + return SWIG_OLDOBJ; + } else { + %implicit_code(Imp1); + %implicit_code(Imp2); + } + return SWIG_TypeError; + } + }; +} +%} + +%typemap_traits_ptr(%checkcode(POINTER),Type); +%enddef + + +/* implicit_3 */ + +%define %implicit_3(Type, Imp1, Imp2, Imp3) +%traits_swigtype(Imp1); +%traits_swigtype(Imp2); +%traits_swigtype(Imp3); + +%fragment(SWIG_Traits_frag(Type),"header", + fragment="StdTraits", + fragment=SWIG_Traits_frag(Imp1), + fragment=SWIG_Traits_frag(Imp2), + fragment=SWIG_Traits_frag(Imp3)) %{ +namespace swig { + template <> struct traits< Type > { + typedef pointer_category category; + static const char* type_name() { return "Type"; } + }; + + template <> struct traits_asptr< Type > { + typedef Type value_type; + static int asptr(SWIG_Object obj, value_type **val) { + Type *vptr; + static swig_type_info* descriptor = SWIG_TypeQuery("Type *"); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&vptr, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = vptr; + return res; + } else { + %implicit_code(Imp1); + %implicit_code(Imp2); + %implicit_code(Imp3); + } + return SWIG_TypeError; + } + }; +} +%} + +%typemap_traits_ptr(%checkcode(POINTER),Type); +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/inoutlist.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/inoutlist.swg new file mode 100644 index 00000000..23fda85f --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/inoutlist.swg @@ -0,0 +1,296 @@ +/* ------------------------------------------------------------ + * + * Define the IN/OUTPUT typemaps assuming the output parameters are + * returned in a list, i.e., they are not directly modified. + * + * The user should provide the %append_output(result, obj) method, + * via a macro, which append a particular object to the result. + * + * + * In Tcl, for example, the file is used as: + * + * #define %append_output(obj) Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),obj); + * %include + * + * while in Python it is used as: + * + * #define %append_output(obj) $result = SWIG_Python_AppendResult($result, obj) + * %include + * + * where the method SWIG_Python_AppendResult is defined inside the + * %append_output fragment. + * + * If you forget to define %append_output, this file will generate + * an error. + * + * ------------------------------------------------------------ */ + + +// +// Uncomment the following definition if you don't want the in/out +// typemaps by default, ie, you prefer to use typemaps.i. +// +//#define SWIG_INOUT_NODEF + +// +// Use the following definition to enable the INPUT parameters to +// accept both 'by value' and 'pointer' objects. +// +#define SWIG_INPUT_ACCEPT_PTRS + +// ------------------------------------------------------------------------ +// Pointer handling +// +// These mappings provide support for input/output arguments and common +// uses for C/C++ pointers. +// ------------------------------------------------------------------------ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ +#if defined(SWIG_INPUT_ACCEPT_PTRS) +#define %check_input_ptr(input,arg,desc,disown) (SWIG_IsOK((res = SWIG_ConvertPtr(input,%as_voidptrptr(arg),desc,disown)))) +#else +#define %check_input_ptr(input,arg,desc,disown) (SWIG_IsOK((res = SWIG_ERROR))) +#endif + +%define %_value_input_typemap(code, asval_meth, asval_frag, Type) + %typemap(in,noblock=1,fragment=asval_frag) Type *INPUT ($*ltype temp, int res = 0) { + if (!%check_input_ptr($input,&$1,$descriptor,$disown)) { + Type val; + int ecode = asval_meth($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$*ltype",$symname, $argnum); + } + temp = %static_cast(val, $*ltype); + $1 = &temp; + res = SWIG_AddTmpMask(ecode); + } + } + %typemap(in,noblock=1,fragment=asval_frag) Type &INPUT($*ltype temp, int res = 0) { + if (!%check_input_ptr($input,&$1,$descriptor,$disown)) { + Type val; + int ecode = asval_meth($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$*ltype",$symname, $argnum); + } + temp = %static_cast(val, $*ltype); + $1 = &temp; + res = SWIG_AddTmpMask(ecode); + } + } + %typemap(freearg,noblock=1,match="in") Type *INPUT, Type &INPUT { + if (SWIG_IsNewObj(res$argnum)) %delete($1); + } + %typemap(typecheck,noblock=1,precedence=code,fragment=asval_frag) Type *INPUT, Type &INPUT { + void *ptr = 0; + int res = asval_meth($input, 0); + $1 = SWIG_CheckState(res); + if (!$1) { + $1 = %check_input_ptr($input,&ptr,$1_descriptor,0); + } + } +%enddef + +%define %_ptr_input_typemap(code,asptr_meth,asptr_frag,Type) + %typemap(in,noblock=1,fragment=asptr_frag) Type *INPUT(int res = 0) { + res = asptr_meth($input, &$1); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + res = SWIG_AddTmpMask(res); + } + %typemap(in,noblock=1,fragment=asptr_frag) Type &INPUT(int res = 0) { + res = asptr_meth($input, &$1); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + if (!$1) { + %argument_nullref("$type",$symname, $argnum); + } + res = SWIG_AddTmpMask(res); + } + %typemap(freearg,noblock=1,match="in") Type *INPUT, Type &INPUT { + if (SWIG_IsNewObj(res$argnum)) %delete($1); + } + %typemap(typecheck,noblock=1,precedence=code,fragment=asptr_frag) Type *INPUT, Type &INPUT { + int res = asptr_meth($input, (Type**)0); + $1 = SWIG_CheckState(res); + } +%enddef + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a list. + + +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): + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The output of the function would be a list containing both output +values. + +*/ + +%define %_value_output_typemap(from_meth, from_frag, Type) + %typemap(in,numinputs=0,noblock=1) + Type *OUTPUT ($*1_ltype temp, int res = SWIG_TMPOBJ), + Type &OUTPUT ($*1_ltype temp, int res = SWIG_TMPOBJ) { + $1 = &temp; + } + %typemap(argout,noblock=1,fragment=from_frag) Type *OUTPUT, Type &OUTPUT { + if (SWIG_IsTmpObj(res$argnum)) { + %append_output(from_meth((*$1))); + } else { + int new_flags = SWIG_IsNewObj(res$argnum) ? (SWIG_POINTER_OWN | %newpointer_flags) : %newpointer_flags; + %append_output(SWIG_NewPointerObj((void*)($1), $1_descriptor, new_flags)); + } + } +%enddef + + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a list. + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + void neg(double *INOUT); + +or you can use the %apply directive : + + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value. +Rather, the modified input value shows up as the return value of the +function. Thus, to apply this function to a variable you might do +this : + + x = neg(x) + +Note : previous versions of SWIG used the symbol 'BOTH' to mark +input/output arguments. This is still supported, but will be slowly +phased out in future releases. + +*/ + +%define %_value_inout_typemap(Type) + %typemap(in) Type *INOUT = Type *INPUT; + %typemap(in) Type &INOUT = Type &INPUT; + %typemap(typecheck) Type *INOUT = Type *INPUT; + %typemap(typecheck) Type &INOUT = Type &INPUT; + %typemap(argout) Type *INOUT = Type *OUTPUT; + %typemap(argout) Type &INOUT = Type &OUTPUT; +%enddef + + +%define %_ptr_inout_typemap(Type) + %_value_inout_typemap(%arg(Type)) + %typemap(typecheck) Type *INOUT = Type *INPUT; + %typemap(typecheck) Type &INOUT = Type &INPUT; + %typemap(freearg) Type *INOUT = Type *INPUT; + %typemap(freearg) Type &INOUT = Type &INPUT; +%enddef + +#ifndef SWIG_INOUT_NODEF + +%define %value_input_typemap(code,asval_meth, asval_frag, Type...) + %_value_input_typemap(%arg(code),%arg(asval_meth),%arg(asval_frag),%arg(Type)) +%enddef + +%define %ptr_input_typemap(code,asval_meth,asval_frag,Type...) + %_ptr_input_typemap(%arg(code),%arg(asval_meth),%arg(asval_frag),%arg(Type)) +%enddef + +%define %value_output_typemap(from_meth,from_frag,Type...) + %_value_output_typemap(%arg(from_meth),%arg(from_frag),%arg(Type)) +%enddef + +#define %value_inout_typemap(Type...) %_value_inout_typemap(%arg(Type)) +#define %ptr_inout_typemap(Type...) %_ptr_inout_typemap(%arg(Type)) + +#else /* You need to include typemaps.i */ + + +#define %value_output_typemap(Type...) +#define %value_input_typemap(Type...) +#define %value_inout_typemap(Type...) +#define %ptr_input_typemap(Type...) +#define %ptr_inout_typemap(Type...) + +#endif /* SWIG_INOUT_DEFAULT */ + +/*---------------------------------------------------------------------- + Front ends. + + use the following macros to define your own IN/OUTPUT/INOUT typemaps + + ------------------------------------------------------------------------*/ +%define %typemaps_inout(Code, AsValMeth, FromMeth, AsValFrag, FromFrag, Type...) + %_value_input_typemap(%arg(Code), %arg(AsValMeth), + %arg(AsValFrag), %arg(Type)); + %_value_output_typemap(%arg(FromMeth), %arg(FromFrag), %arg(Type)); + %_value_inout_typemap(%arg(Type)); +%enddef + +%define %typemaps_inoutn(Code,Type...) + %typemaps_inout(%arg(Code), + %arg(SWIG_AsVal(Type)), + %arg(SWIG_From(Type)), + %arg(SWIG_AsVal_frag(Type)), + %arg(SWIG_From_frag(Type)), + %arg(Type)); +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/misctypes.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/misctypes.swg new file mode 100644 index 00000000..09c81d74 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/misctypes.swg @@ -0,0 +1,21 @@ + +/* ------------------------------------------------------------ + * --- ANSI/Posix C/C++ types --- + * ------------------------------------------------------------ */ + + +#ifdef __cplusplus + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + +%apply ptrdiff_t { std::ptrdiff_t }; +%apply const ptrdiff_t& { const std::ptrdiff_t& }; + +#ifndef SWIG_INOUT_NODEF +%apply size_t& { std::size_t& }; +%apply ptrdiff_t& { std::ptrdiff_t& }; +#endif + +#endif + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/primtypes.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/primtypes.swg new file mode 100644 index 00000000..dd80eb77 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/primtypes.swg @@ -0,0 +1,367 @@ +/* ------------------------------------------------------------ + * Primitive type fragments and macros + * ------------------------------------------------------------ */ + +/* + This file provide fragments and macros for the C/C++ primitive types. + + The file defines default fragments for the following types: + + bool + signed char + unsigned char + signed wchar_t // in C++ + unsigned wchar_t // in C++ + short + unsigned short + int + unsigned int + float + size_t + ptrdiff_t + + which can always be redefined in the swig target language if needed. + + The fragments for the following types, however, always need to be + defined in the target language: + + long + unsigned long + long long + unsigned long long + double + + If they are not provided, an #error directive will appear in the + wrapped code. + + -------------------------------------------------------------------- + + This file provides the macro + + %typemaps_primitive(CheckCode, Type) + + which generates the typemaps for a primitive type with a given + checkcode. It is assumed that the primitive type is 'normalized' and + the corresponding SWIG_AsVal(Type) and SWIG_From(Type) methods are + provided via fragments. + + + The following auxiliary macros (explained with bash pseudo code) are + also defined: + + %apply_ctypes(Macro) + for i in C Type + do + Macro($i) + done + + %apply_cpptypes(Macro) + for i in C++ Type + do + Macro($i) + done + + %apply_ctypes_2(Macro2) + for i in C Type + do + for j in C Type + do + Macro_2($i, $j) + done + done + + %apply_cpptypes_2(Macro2) + for i in C++ Type + do + for j in C++ Type + do + Macro_2($i, $j) + done + done + + %apply_checkctypes(Macro2) + for i in Check Type + do + Macro2(%checkcode($i), $i) + done + +*/ + + +/* ------------------------------------------------------------ + * Primitive type fragments + * ------------------------------------------------------------ */ +/* boolean */ + +%fragment(SWIG_From_frag(bool),"header",fragment=SWIG_From_frag(long)) { +SWIGINTERN SWIG_Object +SWIG_From_dec(bool)(bool value) +{ + return SWIG_From(long)(value ? 1 : 0); +} +} + +%fragment(SWIG_AsVal_frag(bool),"header",fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(bool)(SWIG_Object obj, bool *val) +{ + long v; + int res = SWIG_AsVal(long)(obj, val ? &v : 0); + if (SWIG_IsOK(res)) { + if (val) *val = v ? true : false; + return res; + } + return SWIG_TypeError; +} +} + +/* signed/unsigned char */ + +%numeric_slong(signed char, "", SCHAR_MIN, SCHAR_MAX) +%numeric_ulong(unsigned char, "", UCHAR_MAX) + +/* short/unsigned short */ + +%numeric_slong(short, "", SHRT_MIN, SHRT_MAX) +%numeric_ulong(unsigned short, "", USHRT_MAX) + +/* int/unsigned int */ + +%numeric_slong(int, "", INT_MIN, INT_MAX) +%numeric_ulong(unsigned int, "", UINT_MAX) + +/* signed/unsigned wchar_t */ + +#ifdef __cplusplus +%numeric_slong(signed wchar_t, "", WCHAR_MIN, WCHAR_MAX) +%numeric_ulong(unsigned wchar_t, "", UWCHAR_MAX) +#endif + +/* float */ + +%numeric_float(float, "SWIG_Float_Overflow_Check", SWIG_Float_Overflow_Check(v)) + +/* long/unsigned long */ + +%ensure_type_fragments(long) +%ensure_type_fragments(unsigned long) + +/* long long/unsigned long long */ + +%fragment("SWIG_LongLongAvailable","header", fragment="") %{ +#if defined(LLONG_MAX) && !defined(SWIG_LONG_LONG_AVAILABLE) +# define SWIG_LONG_LONG_AVAILABLE +#endif +%} + +%ensure_type_fragments(long long) +%ensure_type_fragments(unsigned long long) + +/* double */ + +%ensure_type_fragments(double) + +/* size_t */ + +%fragment(SWIG_From_frag(size_t),"header",fragment=SWIG_From_frag(unsigned long),fragment=SWIG_From_frag(unsigned long long)) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(size_t)(size_t value) +{ +%#ifdef SWIG_LONG_LONG_AVAILABLE + if (sizeof(size_t) <= sizeof(unsigned long)) { +%#endif + return SWIG_From(unsigned long)(%numeric_cast(value, unsigned long)); +%#ifdef SWIG_LONG_LONG_AVAILABLE + } else { + /* assume sizeof(size_t) <= sizeof(unsigned long long) */ + return SWIG_From(unsigned long long)(%numeric_cast(value, unsigned long long)); + } +%#endif +} +} + +%fragment(SWIG_AsVal_frag(size_t),"header",fragment=SWIG_AsVal_frag(unsigned long),fragment=SWIG_AsVal_frag(unsigned long long)) { +SWIGINTERNINLINE int +SWIG_AsVal_dec(size_t)(SWIG_Object obj, size_t *val) +{ + int res = SWIG_TypeError; +%#ifdef SWIG_LONG_LONG_AVAILABLE + if (sizeof(size_t) <= sizeof(unsigned long)) { +%#endif + unsigned long v; + res = SWIG_AsVal(unsigned long)(obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, size_t); +%#ifdef SWIG_LONG_LONG_AVAILABLE + } else if (sizeof(size_t) <= sizeof(unsigned long long)) { + unsigned long long v; + res = SWIG_AsVal(unsigned long long)(obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, size_t); + } +%#endif + return res; +} +} + +/* ptrdiff_t */ + +%fragment(SWIG_From_frag(ptrdiff_t),"header",fragment=SWIG_From_frag(long),fragment=SWIG_From_frag(long long)) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(ptrdiff_t)(ptrdiff_t value) +{ +%#ifdef SWIG_LONG_LONG_AVAILABLE + if (sizeof(ptrdiff_t) <= sizeof(long)) { +%#endif + return SWIG_From(long)(%numeric_cast(value, long)); +%#ifdef SWIG_LONG_LONG_AVAILABLE + } else { + /* assume sizeof(ptrdiff_t) <= sizeof(long long) */ + return SWIG_From(long long)(%numeric_cast(value, long long)); + } +%#endif +} +} + +%fragment(SWIG_AsVal_frag(ptrdiff_t),"header",fragment=SWIG_AsVal_frag(long),fragment=SWIG_AsVal_frag(long long)) { +SWIGINTERNINLINE int +SWIG_AsVal_dec(ptrdiff_t)(SWIG_Object obj, ptrdiff_t *val) +{ + int res = SWIG_TypeError; +%#ifdef SWIG_LONG_LONG_AVAILABLE + if (sizeof(ptrdiff_t) <= sizeof(long)) { +%#endif + long v; + res = SWIG_AsVal(long)(obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, ptrdiff_t); +%#ifdef SWIG_LONG_LONG_AVAILABLE + } else if (sizeof(ptrdiff_t) <= sizeof(long long)) { + long long v; + res = SWIG_AsVal(long long)(obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, ptrdiff_t); + } +%#endif + return res; +} +} + + +%fragment("SWIG_CanCastAsInteger","header", + fragment=SWIG_AsVal_frag(double), + fragment="", + fragment="") { +SWIGINTERNINLINE int +SWIG_CanCastAsInteger(double *d, double min, double max) { + double x = *d; + if ((min <= x && x <= max)) { + double fx = floor(x); + double cx = ceil(x); + double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ + if ((errno == EDOM) || (errno == ERANGE)) { + errno = 0; + } else { + double summ, reps, diff; + if (rd < x) { + diff = x - rd; + } else if (rd > x) { + diff = rd - x; + } else { + return 1; + } + summ = rd + x; + reps = diff/summ; + if (reps < 8*DBL_EPSILON) { + *d = rd; + return 1; + } + } + } + return 0; +} +} + +/* ------------------------------------------------------------ + * Generate the typemaps for primitive type + * ------------------------------------------------------------ */ + +#define %typemaps_primitive(Code, Type) %typemaps_asvalfromn(%arg(Code), Type) + +/* ------------------------------------------------------------ + * Primitive Type Macros + * ------------------------------------------------------------ */ + +/* useful macros to derive typemap declarations from primitive types */ + +%define _apply_macro(macro, arg2, arg1...) +#if #arg1 != "" +macro(%arg(arg1),arg2); +#else +macro(arg2); +#endif +%enddef + +/* Apply macro to the C-types */ +%define %apply_ctypes(Macro, Arg2...) +_apply_macro(Macro, bool , Arg2); +_apply_macro(Macro, signed char , Arg2); +_apply_macro(Macro, unsigned char , Arg2); +_apply_macro(Macro, short , Arg2); +_apply_macro(Macro, unsigned short , Arg2); +_apply_macro(Macro, int , Arg2); +_apply_macro(Macro, unsigned int , Arg2); +_apply_macro(Macro, long , Arg2); +_apply_macro(Macro, unsigned long , Arg2); +_apply_macro(Macro, long long , Arg2); +_apply_macro(Macro, unsigned long long , Arg2); +_apply_macro(Macro, float , Arg2); +_apply_macro(Macro, double , Arg2); +_apply_macro(Macro, char , Arg2); +_apply_macro(Macro, wchar_t , Arg2); +_apply_macro(Macro, size_t , Arg2); +_apply_macro(Macro, ptrdiff_t , Arg2); +%enddef + +/* apply the Macro2(Type1, Type2) to all C types */ +#define %apply_ctypes_2(Macro2) %apply_ctypes(%apply_ctypes, Macro2) + + +/* apply the Macro(Type) to all C++ types */ +%define %apply_cpptypes(Macro, Arg2...) +%apply_ctypes(Macro, Arg2) +_apply_macro(Macro, std::size_t, Arg2); +_apply_macro(Macro, std::ptrdiff_t, Arg2); +_apply_macro(Macro, std::string, Arg2); +_apply_macro(Macro, std::wstring, Arg2); +_apply_macro(Macro, std::complex, Arg2); +_apply_macro(Macro, std::complex, Arg2); +%enddef + +/* apply the Macro2(Type1, Type2) to all C++ types */ +#define %apply_cpptypes_2(Macro2) %apply_cpptypes(%apply_cpptypes, Macro2) + +/* apply the Macro2(CheckCode,Type) to all Checked Types */ +%define %apply_checkctypes(Macro2) +Macro2(%checkcode(BOOL), bool); +Macro2(%checkcode(INT8), signed char); +Macro2(%checkcode(UINT8), unsigned char); +Macro2(%checkcode(INT16), short); +Macro2(%checkcode(UINT16), unsigned short); +Macro2(%checkcode(INT32), int); +Macro2(%checkcode(UINT32), unsigned int); +Macro2(%checkcode(INT64), long); +Macro2(%checkcode(UINT64), unsigned long); +Macro2(%checkcode(INT128), long long); +Macro2(%checkcode(UINT128), unsigned long long); +Macro2(%checkcode(FLOAT), float); +Macro2(%checkcode(DOUBLE), double); +Macro2(%checkcode(CHAR), char); +Macro2(%checkcode(UNICHAR), wchar_t); +Macro2(%checkcode(SIZE), size_t); +Macro2(%checkcode(PTRDIFF), ptrdiff_t); +%enddef + + +/* ------------------------------------------------------------ + * Generate the typemaps for all the primitive types with checkcode + * ------------------------------------------------------------ */ + +%apply_checkctypes(%typemaps_primitive); + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/ptrtypes.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/ptrtypes.swg new file mode 100644 index 00000000..e8439e6d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/ptrtypes.swg @@ -0,0 +1,208 @@ +/* ----------------------------------------------------------------------------- + * ptrtypes.swg + * + * Value typemaps (Type, const Type&) for "Ptr" types, such as swig + * wrapped classes, that define the AsPtr/From methods + * + * To apply them, just use one of the following macros: + * + * %typemaps_asptr(CheckCode, AsPtrMeth, AsPtrFrag, Type) + * %typemaps_asptrfrom(CheckCode, AsPtrMeth, FromMeth, AsPtrFrag, FromFrag, Type) + * + * or the simpler and normalize form: + * + * %typemaps_asptrfromn(CheckCode, Type) + * + * Also, you can use the individual typemap definitions: + * + * %ptr_in_typemap(asptr_meth,frag,Type) + * %ptr_varin_typemap(asptr_meth,frag,Type) + * %ptr_typecheck_typemap(check,asptr_meth,frag,Type) + * %ptr_directorout_typemap(asptr_meth,frag,Type) + * ----------------------------------------------------------------------------- */ + +%include + +/* in */ + +%define %ptr_in_typemap(asptr_meth,frag,Type...) + %typemap(in,fragment=frag) Type { + Type *ptr = (Type *)0; + int res = asptr_meth($input, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + %argument_fail((ptr ? res : SWIG_TypeError), "$type", $symname, $argnum); + } + $1 = *ptr; + if (SWIG_IsNewObj(res)) %delete(ptr); + } + %typemap(freearg) Type ""; + %typemap(in,fragment=frag) const Type & (int res = SWIG_OLDOBJ) { + Type *ptr = (Type *)0; + res = asptr_meth($input, &ptr); + if (!SWIG_IsOK(res)) { %argument_fail(res,"$type",$symname, $argnum); } + if (!ptr) { %argument_nullref("$type",$symname, $argnum); } + $1 = ptr; + } + %typemap(freearg,noblock=1) const Type & { + if (SWIG_IsNewObj(res$argnum)) %delete($1); + } +%enddef + +/* varin */ + +%define %ptr_varin_typemap(asptr_meth,frag,Type...) + %typemap(varin,fragment=frag) Type { + Type *ptr = (Type *)0; + int res = asptr_meth($input, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + %variable_fail((ptr ? res : SWIG_TypeError), "$type", "$name"); + } + $1 = *ptr; + if (SWIG_IsNewObj(res)) %delete(ptr); + } +%enddef + +#if defined(SWIG_DIRECTOR_TYPEMAPS) +/* directorout */ + +%define %ptr_directorout_typemap(asptr_meth,frag,Type...) + %typemap(directorargout,noblock=1,fragment=frag) Type *DIRECTOROUT ($*ltype temp, int swig_ores) { + Type *swig_optr = 0; + swig_ores = $result ? asptr_meth($result, &swig_optr) : 0; + if (!SWIG_IsOK(swig_ores) || !swig_optr) { + %dirout_fail((swig_optr ? swig_ores : SWIG_TypeError),"$type"); + } + temp = *swig_optr; + $1 = &temp; + if (SWIG_IsNewObj(swig_ores)) %delete(swig_optr); + } + + %typemap(directorout,noblock=1,fragment=frag) Type { + Type *swig_optr = 0; + int swig_ores = asptr_meth($input, &swig_optr); + if (!SWIG_IsOK(swig_ores) || !swig_optr) { + %dirout_fail((swig_optr ? swig_ores : SWIG_TypeError),"$type"); + } + $result = *swig_optr; + if (SWIG_IsNewObj(swig_ores)) %delete(swig_optr); + } + + %typemap(directorout,noblock=1,fragment=frag,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) Type* { + Type *swig_optr = 0; + int swig_ores = asptr_meth($input, &swig_optr); + if (!SWIG_IsOK(swig_ores)) { + %dirout_fail(swig_ores,"$type"); + } + $result = swig_optr; + if (SWIG_IsNewObj(swig_ores)) { + swig_acquire_ownership(swig_optr); + } + } + %typemap(directorfree,noblock=1) Type* + { + if (director) { + director->swig_release_ownership(%as_voidptr($input)); + } + } + + %typemap(directorout,noblock=1,fragment=frag,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) Type& { + Type *swig_optr = 0; + int swig_ores = asptr_meth($input, &swig_optr); + if (!SWIG_IsOK(swig_ores)) { + %dirout_fail(swig_ores,"$type"); + } else { + if (!swig_optr) { + %dirout_nullref("$type"); + } + } + $result = swig_optr; + if (SWIG_IsNewObj(swig_ores)) { + swig_acquire_ownership(swig_optr); + } + } + %typemap(directorfree,noblock=1) Type& + { + if (director) { + director->swig_release_ownership(%as_voidptr($input)); + } + } + + + %typemap(directorout,fragment=frag) Type &DIRECTOROUT = Type + +%enddef + +#else + +#define %ptr_directorout_typemap(asptr_meth,frag,Type...) + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + +/* typecheck */ + +%define %ptr_typecheck_typemap(check,asptr_meth,frag,Type...) +%typemap(typecheck,noblock=1,precedence=check,fragment=frag) Type * { + int res = asptr_meth($input, (Type**)(0)); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,noblock=1,precedence=check,fragment=frag) Type, const Type& { + int res = asptr_meth($input, (Type**)(0)); + $1 = SWIG_CheckState(res); +} +%enddef + + +/*--------------------------------------------------------------------- + * typemap definition for types with asptr method + *---------------------------------------------------------------------*/ + +%define %typemaps_asptr(CheckCode, AsPtrMeth, AsPtrFrag, Type...) + %fragment(SWIG_AsVal_frag(Type),"header",fragment=SWIG_AsPtr_frag(Type)) { + SWIGINTERNINLINE int + SWIG_AsVal(Type)(SWIG_Object obj, Type *val) + { + Type *v = (Type *)0; + int res = SWIG_AsPtr(Type)(obj, &v); + if (!SWIG_IsOK(res)) return res; + if (v) { + if (val) *val = *v; + if (SWIG_IsNewObj(res)) { + %delete(v); + res = SWIG_DelNewMask(res); + } + return res; + } + return SWIG_ERROR; + } + } + %ptr_in_typemap(%arg(AsPtrMeth), %arg(AsPtrFrag), Type); + %ptr_varin_typemap(%arg(AsPtrMeth), %arg(AsPtrFrag), Type); + %ptr_directorout_typemap(%arg(AsPtrMeth), %arg(AsPtrFrag), Type); + %ptr_typecheck_typemap(%arg(CheckCode), %arg(AsPtrMeth),%arg(AsPtrFrag), Type); + %ptr_input_typemap(%arg(CheckCode),%arg(AsPtrMeth),%arg(AsPtrFrag),Type); +%enddef + +/*--------------------------------------------------------------------- + * typemap definition for types with asptr/from methods + *---------------------------------------------------------------------*/ + +%define %typemaps_asptrfrom(CheckCode, AsPtrMeth, FromMeth, AsPtrFrag, FromFrag, Type...) + %typemaps_asptr(%arg(CheckCode), %arg(AsPtrMeth), %arg(AsPtrFrag), Type) + %typemaps_from(%arg(FromMeth), %arg(FromFrag), Type); + %value_output_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %ptr_inout_typemap(Type); +%enddef + +/*--------------------------------------------------------------------- + * typemap definition for types with for 'normalized' asptr/from methods + *---------------------------------------------------------------------*/ + +%define %typemaps_asptrfromn(CheckCode, Type...) +%typemaps_asptrfrom(%arg(CheckCode), + %arg(SWIG_AsPtr(Type)), + %arg(SWIG_From(Type)), + %arg(SWIG_AsPtr_frag(Type)), + %arg(SWIG_From_frag(Type)), + Type); +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/std_except.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/std_except.swg new file mode 100644 index 00000000..75d06649 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/std_except.swg @@ -0,0 +1,37 @@ +%include + +/* + Mark all of std exception classes as "exception classes" via + the "exceptionclass" feature. + + If needed, you can disable it by using %noexceptionclass. +*/ + +%define %std_exception_map(Exception, Code) + %exceptionclass Exception; +#if !defined(SWIG_STD_EXCEPTIONS_AS_CLASSES) + %typemap(throws,noblock=1) Exception { + SWIG_exception_fail(Code, $1.what()); + } + %ignore Exception; + struct Exception { + }; +#endif +%enddef + +namespace std { + %std_exception_map(bad_cast, SWIG_TypeError); + %std_exception_map(bad_exception, SWIG_SystemError); + %std_exception_map(domain_error, SWIG_ValueError); + %std_exception_map(exception, SWIG_SystemError); + %std_exception_map(invalid_argument, SWIG_ValueError); + %std_exception_map(length_error, SWIG_IndexError); + %std_exception_map(logic_error, SWIG_RuntimeError); + %std_exception_map(out_of_range, SWIG_IndexError); + %std_exception_map(overflow_error, SWIG_OverflowError); + %std_exception_map(range_error, SWIG_OverflowError); + %std_exception_map(runtime_error, SWIG_RuntimeError); + %std_exception_map(underflow_error, SWIG_OverflowError); +} + +%include diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/std_string.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/std_string.swg new file mode 100644 index 00000000..5b57beab --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/std_string.swg @@ -0,0 +1,25 @@ +// +// String +// + + +#ifndef SWIG_STD_BASIC_STRING +#define SWIG_STD_STRING + +%include + +%fragment(""); + +namespace std +{ + %naturalvar string; + class string; +} + +%typemaps_std_string(std::string, char, SWIG_AsCharPtrAndSize, SWIG_FromCharPtrAndSize, %checkcode(STDSTRING)); + +#else + +%include + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/std_strings.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/std_strings.swg new file mode 100644 index 00000000..e9c23ba9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/std_strings.swg @@ -0,0 +1,78 @@ + +/* defining the String asptr/from methods */ + +%define %std_string_asptr(String, Char, SWIG_AsCharPtrAndSize, Frag) +%fragment(SWIG_AsPtr_frag(String),"header",fragment=Frag) { +SWIGINTERN int +SWIG_AsPtr_dec(String)(SWIG_Object obj, String **val) +{ + Char* buf = 0 ; size_t size = 0; int alloc = SWIG_OLDOBJ; + if (SWIG_IsOK((SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc)))) { + if (buf) { + if (val) *val = new String(buf, size - 1); + if (alloc == SWIG_NEWOBJ) %delete_array(buf); + return SWIG_NEWOBJ; + } else { + if (val) *val = 0; + return SWIG_OLDOBJ; + } + } else { + static int init = 0; + static swig_type_info* descriptor = 0; + if (!init) { + descriptor = SWIG_TypeQuery(#String " *"); + init = 1; + } + if (descriptor) { + String *vptr; + int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0); + if (SWIG_IsOK(res) && val) *val = vptr; + return res; + } + } + return SWIG_ERROR; +} +} +%enddef + +%define %std_string_from(String, SWIG_FromCharPtrAndSize, Frag) +%fragment(SWIG_From_frag(String),"header",fragment=Frag) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(String)(const String& s) +{ + return SWIG_FromCharPtrAndSize(s.data(), s.size()); +} +} +%enddef + +%define %std_string_asval(String) +%fragment(SWIG_AsVal_frag(String),"header", fragment=SWIG_AsPtr_frag(String)) { +SWIGINTERN int +SWIG_AsVal_dec(String)(SWIG_Object obj, String *val) +{ + String* v = (String *) 0; + int res = SWIG_AsPtr(String)(obj, &v); + if (!SWIG_IsOK(res)) return res; + if (v) { + if (val) *val = *v; + if (SWIG_IsNewObj(res)) { + %delete(v); + res = SWIG_DelNewMask(res); + } + return res; + } + return SWIG_ERROR; +} +} +%enddef + + +%define %typemaps_std_string(String, Char, AsPtrMethod, FromMethod, CheckCode) + +%std_string_asptr(String, Char, AsPtrMethod, #AsPtrMethod) +%std_string_asval(String) +%std_string_from(String, FromMethod, #FromMethod) + +%typemaps_asptrfromn(%arg(CheckCode), String); + +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/std_wstring.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/std_wstring.swg new file mode 100644 index 00000000..4a2830bb --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/std_wstring.swg @@ -0,0 +1,26 @@ +%include + +#ifndef SWIG_STD_BASIC_STRING +#define SWIG_STD_WSTRING + +%include + +%{ +#include +%} +%fragment(""); + +namespace std +{ + %naturalvar wstring; + class wstring; +} + +%typemaps_std_string(std::wstring, wchar_t, SWIG_AsWCharPtrAndSize, SWIG_FromWCharPtrAndSize, %checkcode(STDUNISTRING)); + + +#else + +%include + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/string.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/string.swg new file mode 100644 index 00000000..4b707236 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/string.swg @@ -0,0 +1,35 @@ +%ensure_fragment(SWIG_AsCharPtrAndSize) +%ensure_fragment(SWIG_FromCharPtrAndSize) + +%types(char *); + +%fragment("SWIG_pchar_descriptor","header") { +SWIGINTERN swig_type_info* +SWIG_pchar_descriptor(void) +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_char"); + init = 1; + } + return info; +} +} + +%fragment("SWIG_strnlen","header",fragment="SWIG_FromCharPtrAndSize") { +SWIGINTERN size_t +SWIG_strnlen(const char* s, size_t maxlen) +{ + const char *p; + for (p = s; maxlen-- && *p; p++) + ; + return p - s; +} +} + +%include +%typemaps_string(%checkcode(STRING), %checkcode(CHAR), + char, Char, SWIG_AsCharPtrAndSize, SWIG_FromCharPtrAndSize, + strlen, SWIG_strnlen, + "", CHAR_MIN, CHAR_MAX) diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/strings.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/strings.swg new file mode 100644 index 00000000..87e97dd7 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/strings.swg @@ -0,0 +1,651 @@ +// +// Use the macro SWIG_PRESERVE_CARRAY_SIZE if you prefer to preserve +// the size of char arrays, ie +// ------------------------------------------ +// C Side => Language Side +// ------------------------------------------ +// char name[5] = "hola" => 'hola\0' +// +// the default behaviour is +// +// char name[5] = "hola" => 'hola' +// +// +//#define SWIG_PRESERVE_CARRAY_SIZE + +/* ------------------------------------------------------------ + * String typemaps for type Char (char or wchar_t) + * ------------------------------------------------------------ */ + +%define %_typemap_string(StringCode, + Char, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_AsCharPtr, + SWIG_FromCharPtr, + SWIG_AsCharArray, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray) + +/* in */ + +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtr) + Char * (int res, Char *buf = 0, int alloc = 0), + const Char * (int res, Char *buf = 0, int alloc = 0) { + res = SWIG_AsCharPtr($input, &buf, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = %reinterpret_cast(buf, $1_ltype); +} +%typemap(freearg,noblock=1,match="in") Char *, const Char * { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} + +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtr) Char const*& (int res, Char *buf = 0, int alloc = 0) { + res = SWIG_AsCharPtr($input, &buf, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = &buf; +} +%typemap(freearg, noblock=1,match="in") Char const*& { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} + +/* out */ + +%typemap(out,noblock=1,fragment=#SWIG_FromCharPtr) Char *, const Char * { + %set_output(SWIG_FromCharPtr((const Char *)$1)); +} + + +%typemap(out,noblock=1,fragment=#SWIG_FromCharPtr) Char const*& { + %set_output(SWIG_FromCharPtr(*$1)); +} + +%typemap(newfree,noblock=1) Char * { + SWIG_DeleteCharArray($1); +} + +/* varin */ + +%typemap(varin,fragment=#SWIG_AsCharPtrAndSize) Char * { + Char *cptr = 0; size_t csize = 0; int alloc = SWIG_NEWOBJ; + int res = SWIG_AsCharPtrAndSize($input, &cptr, &csize, &alloc); + if (!SWIG_IsOK(res)) { + %variable_fail(res,"$type","$name"); + } + if ($1) SWIG_DeleteCharArray($1); + if (alloc == SWIG_NEWOBJ) { + $1 = cptr; + } else { + $1 = csize ? ($1_type)SWIG_NewCopyCharArray(cptr, csize, Char) : 0; + } +} + +%typemap(varin,fragment=#SWIG_AsCharPtrAndSize,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const Char * { + Char *cptr = 0; size_t csize = 0; int alloc = SWIG_NEWOBJ; + int res = SWIG_AsCharPtrAndSize($input, &cptr, &csize, &alloc); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (alloc == SWIG_NEWOBJ) { + $1 = cptr; + } else { + $1 = csize ? ($1_type)SWIG_NewCopyCharArray(cptr, csize, Char) : 0; + } +} + +/* varout */ + +%typemap(varout,noblock=1,fragment=#SWIG_FromCharPtr) Char *, const Char * { + %set_varoutput(SWIG_FromCharPtr($1)); +} + +/* memberin */ + +%typemap(memberin,noblock=1) Char * { + if ($1) SWIG_DeleteCharArray($1); + if ($input) { + size_t size = SWIG_CharPtrLen(%reinterpret_cast($input, const Char *)) + 1; + $1 = ($1_type)SWIG_NewCopyCharArray(%reinterpret_cast($input, const Char *), size, Char); + } else { + $1 = 0; + } +} + +%typemap(memberin,noblock=1,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const Char * { + if ($input) { + size_t size = SWIG_CharPtrLen(%reinterpret_cast(%reinterpret_cast($input, const Char *), const Char *)) + 1; + $1 = ($1_type)SWIG_NewCopyCharArray($input, size, Char); + } else { + $1 = 0; + } +} + +/* globalin */ + +%typemap(globalin,noblock=1) Char * { + if ($1) SWIG_DeleteCharArray($1); + if ($input) { + size_t size = SWIG_CharPtrLen(%reinterpret_cast(%reinterpret_cast($input, const Char *), const Char *)) + 1; + $1 = ($1_type)SWIG_NewCopyCharArray($input, size, Char); + } else { + $1 = 0; + } +} + +%typemap(globalin,noblock=1,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const Char * { + if ($input) { + size_t size = SWIG_CharPtrLen($input) + 1; + $1 = ($1_type)SWIG_NewCopyCharArray($input, size, Char); + } else { + $1 = 0; + } +} + +/* constant */ + +%typemap(constcode,noblock=1,fragment=#SWIG_FromCharPtr) + Char *, Char const*, Char * const, Char const* const { + %set_constant("$symname", SWIG_FromCharPtr($value)); +} + + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1,fragment=#SWIG_FromCharPtr) + Char *, Char const*, Char *const, Char const *const, + Char const *&, Char *const &, Char const *const & { + $input = SWIG_FromCharPtr((const Char *)$1); +} + + +/* directorout */ + +%typemap(directorout,noblock=1,fragment=#SWIG_AsCharPtr,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) Char * (int res, Char *buf = 0, int alloc = SWIG_NEWOBJ) { + res = SWIG_AsCharPtr($input, &buf, &alloc); + if (!SWIG_IsOK(res)) { + %dirout_fail(res, "$type"); + } + if (alloc == SWIG_NEWOBJ) { + swig_acquire_ownership_array(buf); + } + $result = %reinterpret_cast(buf, $1_ltype); +} +%typemap(directorfree,noblock=1) Char * +{ + if (director) { + director->swig_release_ownership(%as_voidptr($input)); + } +} + + +%typemap(directorout,noblock=1,fragment=#SWIG_AsCharPtr,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) Char *const& (int res, Char *buf = 0, int alloc = SWIG_NEWOBJ), Char const*const& (int res, Char *buf = 0, int alloc = SWIG_NEWOBJ) { + res = SWIG_AsCharPtr($input, &buf, &alloc); + if (!SWIG_IsOK(res)) { + %dirout_fail(res, "$type"); + } + static $*1_ltype tmp = buf; + $result = &tmp; + if (alloc == SWIG_NEWOBJ) { + swig_acquire_ownership_array(buf); + } +} +%typemap(directorfree,noblock=1) + Char * const&, Char const* const& { + if (director) { + director->swig_release_ownership(%as_voidptr(*$input)); + } +} + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + +/* typecheck */ + +%typemap(typecheck,noblock=1,precedence=StringCode, + fragment=#SWIG_AsCharPtr) Char *, const Char *, Char const*& { + int res = SWIG_AsCharPtr($input, 0, 0); + $1 = SWIG_CheckState(res); +} + + +/* throws */ + +%typemap(throws,noblock=1,fragment=#SWIG_FromCharPtr) Char * { + %raise(SWIG_FromCharPtr($1), "$type", 0); +} + + +/* ------------------------------------------------------------ + * Unknown size const Character array Char[ANY] handling + * ------------------------------------------------------------ */ + +%apply Char * { Char [] }; +%apply const Char * { const Char [] }; + +%typemap(varin,noblock=1,warning="462:Unable to set variable of type Char []") Char [] +{ + %variable_fail(SWIG_AttributeError, "$type", "read-only $name"); +} + + +/* ------------------------------------------------------------ + * Fixed size Character array Char[ANY] handling + * ------------------------------------------------------------ */ + +/* memberin and globalin typemaps */ + +%typemap(memberin,noblock=1) Char [ANY] +{ + if ($input) memcpy($1,$input,$1_dim0*sizeof(Char)); + else memset($1,0,$1_dim0*sizeof(Char)); +} + +%typemap(globalin,noblock=1) Char [ANY] +{ + if ($input) memcpy($1,$input,$1_dim0*sizeof(Char)); + else memset($1,0,$1_dim0*sizeof(Char)); +} + +/* in */ + +%typemap(in,noblock=1,fragment=#SWIG_AsCharArray) + Char [ANY] (Char temp[$1_dim0], int res), + const Char [ANY](Char temp[$1_dim0], int res) +{ + res = SWIG_AsCharArray($input, temp, $1_dim0); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = %reinterpret_cast(temp, $1_ltype); +} +%typemap(freearg) Char [ANY], const Char [ANY] ""; + +%typemap(in,noblock=1,fragment=#SWIG_AsCharArray) const Char (&)[ANY] (Char temp[$1_dim0], int res) +{ + res = SWIG_AsCharArray($input, temp, $1_dim0); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = &temp; +} +%typemap(freearg) const Char (&)[ANY] ""; + +%typemap(out,fragment=#SWIG_FromCharPtrAndSize,fragment=#SWIG_CharBufLen) + Char [ANY], const Char[ANY] +{ +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $1_dim0; +%#endif + %set_output(SWIG_FromCharPtrAndSize($1, size)); +} + +/* varin */ + +%typemap(varin,fragment=#SWIG_AsCharArray) Char [ANY] +{ + int res = SWIG_AsCharArray($input, $1, $1_dim0); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } +} + +/* varout */ + +%typemap(varout,fragment=#SWIG_CharBufLen) + Char [ANY], const Char [ANY] { +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $1_dim0; +%#endif + %set_varoutput(SWIG_FromCharPtrAndSize($1, size)); +} + +/* constant */ + +%typemap(constcode,fragment=#SWIG_CharBufLen) + Char [ANY], const Char [ANY] +{ +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $value_dim0; +%#endif + %set_constant("$symname", SWIG_FromCharPtrAndSize($value,size)); +} + + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ +%typemap(directorin,fragment=#SWIG_CharBufLen) + Char [ANY], const Char [ANY] +{ +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $1_dim0; +%#endif + $input = SWIG_FromCharPtrAndSize($1, size); +} + +/* directorout */ + +%typemap(directorout,noblock=1,fragment=#SWIG_AsCharArray) + Char [ANY] (Char temp[$result_dim0]), + const Char [ANY] (Char temp[$result_dim0], int res) +{ + res = SWIG_AsCharArray($input, temp, $result_dim0); + if (!SWIG_IsOK(res)) { + %dirout_fail(res, "$type"); + } + $result = temp; +} + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + +/* typecheck */ + +%typemap(typecheck,noblock=1,precedence=StringCode, + fragment=#SWIG_AsCharArray) + Char [ANY], const Char[ANY] { + int res = SWIG_AsCharArray($input, (Char *)0, $1_dim0); + $1 = SWIG_CheckState(res); +} + + +/* throws */ + +%typemap(throws,fragment=#SWIG_CharBufLen) + Char [ANY], const Char[ANY] +{ +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $1_dim0; +%#endif + %raise(SWIG_FromCharPtrAndSize($1, size), "$type", 0); +} + +/* ------------------------------------------------------------------- + * --- Really fix size Char arrays, including '\0'chars at the end --- + * ------------------------------------------------------------------- */ + +%typemap(varout,noblock=1,fragment=#SWIG_FromCharPtrAndSize) + Char FIXSIZE[ANY], const Char FIXSIZE[ANY] +{ + %set_varoutput(SWIG_FromCharPtrAndSize($1, $1_dim0)); +} + +%typemap(out,noblock=1,fragment=#SWIG_FromCharPtrAndSize) + Char FIXSIZE[ANY], const Char FIXSIZE[ANY] +{ + %set_output(SWIG_FromCharPtrAndSize($1, $1_dim0)); +} + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +%typemap(directorin,noblock=1,fragment=#SWIG_FromCharPtrAndSize) + Char FIXSIZE[ANY], const Char FIXSIZE[ANY] +{ + $input = SWIG_FromCharPtrAndSize($1, $1_dim0); +} + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + +%typemap(throws,noblock=1,fragment=#SWIG_FromCharPtrAndSize) + Char FIXSIZE[ANY], const Char FIXSIZE[ANY] { + %raise(SWIG_FromCharPtrAndSize($1, $1_dim0), "$type", 0); +} + +/* ------------------------------------------------------------ + * --- String & length --- + * ------------------------------------------------------------ */ + +/* Here len doesn't include the '0' terminator */ +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) + (Char *STRING, size_t LENGTH) (int res, Char *buf = 0, size_t size = 0, int alloc = 0), + (const Char *STRING, size_t LENGTH) (int res, Char *buf = 0, size_t size = 0, int alloc = 0) +{ + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = %reinterpret_cast(buf, $1_ltype); + $2 = %numeric_cast(size - 1, $2_ltype); +} +%typemap(freearg,noblock=1,match="in") (Char *STRING, size_t LENGTH) { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} +/* old 'int' form */ +%typemap(in) (Char *STRING, int LENGTH) = (Char *STRING, size_t LENGTH); +%typemap(freearg) (Char *STRING, int LENGTH) = (Char *STRING, size_t LENGTH); + + +/* Here size includes the '0' terminator */ +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) + (Char *STRING, size_t SIZE) (int res, Char *buf = 0, size_t size = 0, int alloc = 0), + (const Char *STRING, size_t SIZE) (int res, Char *buf = 0, size_t size = 0, int alloc = 0) +{ + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = %reinterpret_cast(buf, $1_ltype); + $2 = %numeric_cast(size, $2_ltype); +} +%typemap(freearg,noblock=1,match="in") (Char *STRING, size_t SIZE) { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} +/* old 'int' form */ +%typemap(in) (Char *STRING, int SIZE) = (Char *STRING, size_t SIZE); +%typemap(freearg) (Char *STRING, int SIZE) = (Char *STRING, size_t SIZE); + + +/* reverse order versions */ + +/* Here len doesn't include the '0' terminator */ +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) + (size_t LENGTH, Char *STRING) (int res, Char *buf = 0, size_t size = 0, int alloc = 0), + (size_t LENGTH, const Char *STRING) (int res, Char *buf = 0, size_t size = 0, int alloc = 0) +{ + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $2 = %reinterpret_cast(buf, $2_ltype) ; + $1 = %numeric_cast(size - 1, $1_ltype) ; +} +%typemap(freearg, noblock=1, match="in") (size_t LENGTH, Char *STRING) { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} +/* old 'int' form */ +%typemap(in) (int LENGTH, Char *STRING) = (size_t LENGTH, Char *STRING); +%typemap(freearg) (int LENGTH, Char *STRING) = (size_t LENGTH, Char *STRING); + +/* Here size includes the '0' terminator */ +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) + (size_t SIZE, Char *STRING) (int res, Char *buf = 0, size_t size = 0, int alloc = 0), + (size_t SIZE, const Char *STRING) (int res, Char *buf = 0, size_t size = 0, int alloc = 0) +{ + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type",$symname, $argnum); + } + $2 = %reinterpret_cast(buf, $2_ltype) ; + $1 = %numeric_cast(size, $1_ltype) ; +} +%typemap(freearg, noblock=1, match="in") (size_t SIZE, Char *STRING) { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} +/* old 'int' form */ +%typemap(in) (int SIZE, Char *STRING) = (size_t SIZE, Char *STRING); +%typemap(freearg) (int SIZE, Char *STRING) = (size_t SIZE, Char *STRING); + + +%enddef + + +/* ------------------------------------------------------------ + * --- String fragment methods --- + * ------------------------------------------------------------ */ + +#ifndef %_typemap2_string +%define %_typemap2_string(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray, + FragLimits, CHAR_MIN, CHAR_MAX) + +%fragment("SWIG_From"#CharName"Ptr","header",fragment=#SWIG_FromCharPtrAndSize) { +SWIGINTERNINLINE SWIG_Object +SWIG_From##CharName##Ptr(const Char *cptr) +{ + return SWIG_FromCharPtrAndSize(cptr, (cptr ? SWIG_CharPtrLen(cptr) : 0)); +} +} + +%fragment("SWIG_From"#CharName"Array","header",fragment=#SWIG_FromCharPtrAndSize) { +SWIGINTERNINLINE SWIG_Object +SWIG_From##CharName##Array(const Char *cptr, size_t size) +{ + return SWIG_FromCharPtrAndSize(cptr, size); +} +} + +%fragment("SWIG_As" #CharName "Ptr","header",fragment=#SWIG_AsCharPtrAndSize) { +%define_as(SWIG_As##CharName##Ptr(obj, val, alloc), SWIG_AsCharPtrAndSize(obj, val, NULL, alloc)) +} + +%fragment("SWIG_As" #CharName "Array","header",fragment=#SWIG_AsCharPtrAndSize) { +SWIGINTERN int +SWIG_As##CharName##Array(SWIG_Object obj, Char *val, size_t size) +{ + Char* cptr = 0; size_t csize = 0; int alloc = SWIG_OLDOBJ; + int res = SWIG_AsCharPtrAndSize(obj, &cptr, &csize, &alloc); + if (SWIG_IsOK(res)) { + /* special case of single char conversion when we don't need space for NUL */ + if (size == 1 && csize == 2 && cptr && !cptr[1]) --csize; + if (csize <= size) { + if (val) { + if (csize) memcpy(val, cptr, csize*sizeof(Char)); + if (csize < size) memset(val + csize, 0, (size - csize)*sizeof(Char)); + } + if (alloc == SWIG_NEWOBJ) { + SWIG_DeleteCharArray(cptr); + res = SWIG_DelNewMask(res); + } + return res; + } + if (alloc == SWIG_NEWOBJ) SWIG_DeleteCharArray(cptr); + } + return SWIG_TypeError; +} +} + +/* Char */ + +%fragment(SWIG_From_frag(Char),"header",fragment=#SWIG_FromCharPtrAndSize) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(Char)(Char c) +{ + return SWIG_FromCharPtrAndSize(&c,1); +} +} + +%fragment(SWIG_AsVal_frag(Char),"header", + fragment="SWIG_As"#CharName"Array", + fragment=FragLimits, + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(Char)(SWIG_Object obj, Char *val) +{ + int res = SWIG_As##CharName##Array(obj, val, 1); + if (!SWIG_IsOK(res)) { + long v; + res = SWIG_AddCast(SWIG_AsVal(long)(obj, &v)); + if (SWIG_IsOK(res)) { + if ((CHAR_MIN <= v) && (v <= CHAR_MAX)) { + if (val) *val = %numeric_cast(v, Char); + } else { + res = SWIG_OverflowError; + } + } + } + return res; +} +} + +%_typemap_string(StringCode, + Char, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_As##CharName##Ptr, + SWIG_From##CharName##Ptr, + SWIG_As##CharName##Array, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray) + +%enddef +#endif + +/* ------------------------------------------------------------ + * String typemaps and fragments, with default allocators + * ------------------------------------------------------------ */ + +%define %typemaps_string(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + FragLimits, CHAR_MIN, CHAR_MAX) +%_typemap2_string(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + %new_copy_array, + %delete_array, + FragLimits, CHAR_MIN, CHAR_MAX) +%enddef + +/* ------------------------------------------------------------ + * String typemaps and fragments, with custom allocators + * ------------------------------------------------------------ */ + +%define %typemaps_string_alloc(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray, + FragLimits, CHAR_MIN, CHAR_MAX) +%_typemap2_string(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray, + FragLimits, CHAR_MIN, CHAR_MAX) +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/swigmacros.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/swigmacros.swg new file mode 100644 index 00000000..687b0680 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/swigmacros.swg @@ -0,0 +1,238 @@ +/* ----------------------------------------------------------------------------- + * SWIG API. Portion only visible from SWIG + * ----------------------------------------------------------------------------- */ +/* + This file implements the internal macros of the 'SWIG API', which + are useful to implement all the SWIG target languages. + + Basic preprocessor macros: + -------------------------- + + %arg(Arg) Safe argument wrap + %str(Arg) Stringify the argument + %begin_block Begin an execution block + %end_block End an execution block + %block(Block) Execute Block as an execution block + %define_as(Def, Val) Define 'Def' as 'Val', expanding Def and Val first + %ifcplusplus(V1, V2) if C++ Mode; then V1; else V2; fi + + + Casting Operations: + ------------------- + + SWIG provides the following casting macros, which implement the + corresponding C++ casting operations: + + %const_cast(a, Type) const_cast(a) + %static_cast(a, Type) static_cast(a) + %reinterpret_cast(a, Type) reinterpret_cast(a) + %numeric_cast(a, Type) static_cast(a) + %as_voidptr(a) const_cast(static_cast(a)) + %as_voidptrptr(a) reinterpret_cast(a) + + or their C unsafe versions. In C++ we use the safe version unless + SWIG_NO_CPLUSPLUS_CAST is defined + + + Memory allocation: + ------------------ + + These allocation/freeing macros are safe to use in C or C++ and + dispatch the proper new/delete/delete[] or free/malloc calls as + needed. + + %new_instance(Type) Allocate a new instance of given Type + %new_copy(value,Type) Allocate and initialize a new instance with 'value' + %new_array(size,Type) Allocate a new array with given size and Type and zero initialize + %new_copy_array(cptr,size,Type) Allocate and initialize a new array from 'cptr' + %delete(cptr) Delete an instance + %delete_array(cptr) Delete an array + + + Auxiliary loop macros: + ---------------------- + + %formacro(Macro, Args...) or %formacro_1(Macro, Args...) + for i in Args + do + Macro($i) + done + + %formacro_2(Macro2, Args...) + for i,j in Args + do + Macro2($i, $j) + done + + + Flags and conditional macros: + ----------------------------- + + %mark_flag(flag) + flag := True + + %evalif(flag,expr) + if flag; then + expr + fi + + %evalif_2(flag1 flag2,expr) + if flag1 and flag2; then + expr + fi + + +*/ +/* ----------------------------------------------------------------------------- + * Basic preprocessor macros + * ----------------------------------------------------------------------------- */ + +#define %arg(Arg...) Arg +#define %str(Arg) `Arg` +#ifndef %begin_block +# define %begin_block do { +#endif +#ifndef %end_block +# define %end_block } while(0) +#endif +#define %block(Block...) %begin_block Block; %end_block + +/* define a new macro */ +%define %define_as(Def, Val...)%#define Def Val %enddef + +/* include C++ or else value */ +%define %ifcplusplus(cppval, nocppval) +#ifdef __cplusplus +cppval +#else +nocppval +#endif +%enddef + +/* insert the SWIGVERSION in the interface and the wrapper code */ +#if SWIG_VERSION +%insert("header") { +%define_as(SWIGVERSION, SWIG_VERSION) +%#define SWIG_VERSION SWIGVERSION +} +#endif + + + +/* ----------------------------------------------------------------------------- + * Casting operators + * ----------------------------------------------------------------------------- */ + +#if defined(__cplusplus) && !defined(SWIG_NO_CPLUSPLUS_CAST) +# define %const_cast(a,Type...) const_cast< Type >(a) +# define %static_cast(a,Type...) static_cast< Type >(a) +# define %reinterpret_cast(a,Type...) reinterpret_cast< Type >(a) +# define %numeric_cast(a,Type...) static_cast< Type >(a) +#else /* C case */ +# define %const_cast(a,Type...) (Type)(a) +# define %static_cast(a,Type...) (Type)(a) +# define %reinterpret_cast(a,Type...) (Type)(a) +# define %numeric_cast(a,Type...) (Type)(a) +#endif /* __cplusplus */ + + +#define %as_voidptr(a) SWIG_as_voidptr(a) +#define %as_voidptrptr(a) SWIG_as_voidptrptr(a) + +%insert("header") { +%define_as(SWIG_as_voidptr(a), %const_cast(%static_cast(a,const void *), void *)) +%define_as(SWIG_as_voidptrptr(a), ((void)%as_voidptr(*a),%reinterpret_cast(a, void**))) +} + + +/* ----------------------------------------------------------------------------- + * Allocating/freeing elements + * ----------------------------------------------------------------------------- */ + +#if defined(__cplusplus) +# define %new_instance(Type...) (new Type()) +# define %new_copy(val,Type...) (new Type(%static_cast(val, const Type&))) +# define %new_array(size,Type...) (new Type[size]()) +# define %new_copy_array(ptr,size,Type...) %reinterpret_cast(memcpy(new Type[size], ptr, sizeof(Type)*(size)), Type*) +# define %delete(cptr) delete cptr +# define %delete_array(cptr) delete[] cptr +#else /* C case */ +# define %new_instance(Type...) (Type *)calloc(1,sizeof(Type)) +# define %new_copy(val,Type...) (Type *)memcpy(%new_instance(Type),&val,sizeof(Type)) +# define %new_array(size,Type...) (Type *)calloc(size, sizeof(Type)) +# define %new_copy_array(ptr,size,Type...) (Type *)memcpy(malloc((size)*sizeof(Type)), ptr, sizeof(Type)*(size)) +# define %delete(cptr) free((char*)cptr) +# define %delete_array(cptr) free((char*)cptr) +#endif /* __cplusplus */ + +/* ----------------------------------------------------------------------------- + * SWIG names and mangling + * ----------------------------------------------------------------------------- */ + +#define %mangle(Type...) #@Type +#define %descriptor(Type...) SWIGTYPE_ ## #@Type +#define %string_name(Name) "SWIG_" %str(Name) +#define %symbol_name(Name, Type...) SWIG_ ## Name ## _ #@Type +#define %checkcode(Code) SWIG_TYPECHECK_ ## Code + + +/* ----------------------------------------------------------------------------- + * Auxiliary loop macros + * ----------------------------------------------------------------------------- */ + + +/* for loop for macro with one argument */ +%define %_formacro_1(macro, arg1,...)macro(arg1) +#if #__VA_ARGS__ != "__fordone__" +%_formacro_1(macro, __VA_ARGS__) +#endif +%enddef + +/* for loop for macro with one argument */ +%define %formacro_1(macro,...)%_formacro_1(macro,__VA_ARGS__,__fordone__)%enddef +%define %formacro(macro,...)%_formacro_1(macro,__VA_ARGS__,__fordone__)%enddef + +/* for loop for macro with two arguments */ +%define %_formacro_2(macro, arg1, arg2, ...)macro(arg1, arg2) +#if #__VA_ARGS__ != "__fordone__" +%_formacro_2(macro, __VA_ARGS__) +#endif +%enddef + +/* for loop for macro with two arguments */ +%define %formacro_2(macro,...)%_formacro_2(macro, __VA_ARGS__, __fordone__)%enddef + +/* ----------------------------------------------------------------------------- + * SWIG flags + * ----------------------------------------------------------------------------- */ + +/* + mark a flag, ie, define a macro name but ignore it in + the interface. + + the flag can be later used with %evalif +*/ + +%define %mark_flag(x) %define x 1 %enddef %enddef + + +/* + %evalif and %evalif_2 are use to evaluate or process + an expression if the given predicate is 'true' (1). +*/ +%define %_evalif(_x,_expr) +#if _x == 1 +_expr +#endif +%enddef + +%define %_evalif_2(_x,_y,_expr) +#if _x == 1 && _y == 1 +_expr +#endif +%enddef + +%define %evalif(_x,_expr...) %_evalif(%arg(_x),%arg(_expr)) %enddef + +%define %evalif_2(_x,_y,_expr...) %_evalif_2(%arg(_x),%arg(_y),%arg(_expr)) %enddef + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/swigobject.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/swigobject.swg new file mode 100644 index 00000000..b1e6dc9d --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/swigobject.swg @@ -0,0 +1,37 @@ +/* ------------------------------------------------------------ + * Language Object * - Just pass straight through unmodified + * ------------------------------------------------------------ */ + +%typemap(in) SWIG_Object "$1 = $input;"; + +%typemap(in,noblock=1) SWIG_Object const & ($*ltype temp) +{ + temp = %static_cast($input, $*ltype); + $1 = &temp; +} + +%typemap(out,noblock=1) SWIG_Object { + %set_output($1); +} + +%typemap(out,noblock=1) SWIG_Object const & { + %set_output(*$1); +} + +%typecheck(SWIG_TYPECHECK_SWIGOBJECT) SWIG_Object "$1 = ($input != 0);"; + +%typemap(throws,noblock=1) SWIG_Object { + %raise($1, "$type", 0); +} + +%typemap(constcode,noblock=1) SWIG_Object { + %set_constant("$symname", $value); +} + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +%typemap(directorin) SWIG_Object "$input = $1;"; +%typemap(directorout) SWIG_Object "$result = $input;"; + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/swigtype.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/swigtype.swg new file mode 100644 index 00000000..581de1a9 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/swigtype.swg @@ -0,0 +1,725 @@ +/* ----------------------------------------------------------------------------- + * --- Input arguments --- + * ----------------------------------------------------------------------------- */ +/* Pointers and arrays */ +%typemap(in, noblock=1) SWIGTYPE *(void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp,$descriptor, $disown | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg) SWIGTYPE * ""; + +%typemap(in, noblock=1) SWIGTYPE [] (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp,$descriptor, $disown | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg) SWIGTYPE [] ""; + + +%typemap(in, noblock=1) SWIGTYPE *const& (void *argp = 0, int res = 0, $*1_ltype temp) { + res = SWIG_ConvertPtr($input, &argp, $*descriptor, $disown | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$*ltype", $symname, $argnum); + } + temp = %reinterpret_cast(argp, $*ltype); + $1 = %reinterpret_cast(&temp, $1_ltype); +} +%typemap(freearg) SWIGTYPE *const& ""; + + +/* Reference */ +%typemap(in, noblock=1) SWIGTYPE & (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg) SWIGTYPE & ""; + +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(in,noblock=1,implicitconv=1) const SWIGTYPE & (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg,noblock=1,match="in",implicitconv=1) const SWIGTYPE & +{ + if (SWIG_IsNewObj(res$argnum)) %delete($1); +} +#else +%typemap(in,noblock=1) const SWIGTYPE & (void *argp, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +#endif + +/* Rvalue reference */ +%typemap(in, noblock=1) SWIGTYPE && (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg) SWIGTYPE && ""; + +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(in,noblock=1,implicitconv=1) const SWIGTYPE && (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg,noblock=1,match="in",implicitconv=1) const SWIGTYPE && +{ + if (SWIG_IsNewObj(res$argnum)) %delete($1); +} +#else +%typemap(in,noblock=1) const SWIGTYPE && (void *argp, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +#endif + +/* By value */ +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(in,implicitconv=1) SWIGTYPE (void *argp, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $&descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $<ype temp = %reinterpret_cast(argp, $<ype); + $1 = *temp; + if (SWIG_IsNewObj(res)) %delete(temp); + } +} +#else +%typemap(in) SWIGTYPE (void *argp, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $&descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $1 = *(%reinterpret_cast(argp, $<ype)); + } +} +#endif + + +/* ----------------------------------------------------------------------------- + * --- Output arguments --- + * ----------------------------------------------------------------------------- */ + +/* Pointers, references */ +%typemap(out,noblock=1) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE[] { + %set_output(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, $owner | %newpointer_flags)); +} + +%typemap(out, noblock=1) SWIGTYPE *const& { + %set_output(SWIG_NewPointerObj(%as_voidptr(*$1), $*descriptor, $owner | %newpointer_flags)); +} + +/* Return by value */ +%typemap(out, noblock=1) SWIGTYPE { + %set_output(SWIG_NewPointerObj(%new_copy($1, $ltype), $&descriptor, SWIG_POINTER_OWN | %newpointer_flags)); +} + +/* ----------------------------------------------------------------------------- + * --- Variable input --- + * ----------------------------------------------------------------------------- */ + +/* memberin/globalin/varin, for fix arrays. */ + +%typemap(memberin) SWIGTYPE [ANY] { + if ($input) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) *($1_basetype *)&$1[ii] = *(($1_basetype *)$input + ii); + } else { + %variable_nullref("$type","$name"); + } +} + +%typemap(globalin) SWIGTYPE [ANY] { + if ($input) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) *($1_basetype *)&$1[ii] = *(($1_basetype *)$input + ii); + } else { + %variable_nullref("$type","$name"); + } +} + +%typemap(varin) SWIGTYPE [ANY] { + $basetype *inp = 0; + int res = SWIG_ConvertPtr($input, %as_voidptrptr(&inp), $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } else if (inp) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) *($1_basetype *)&$1[ii] = *(($1_basetype *)inp + ii); + } else { + %variable_nullref("$type", "$name"); + } +} + + +/* memberin/globalin/varin, for fix double arrays. */ + +%typemap(memberin) SWIGTYPE [ANY][ANY] { + if ($input) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) { + if ($input[ii]) { + size_t jj = 0; + for (; jj < (size_t)$1_dim1; ++jj) $1[ii][jj] = $input[ii][jj]; + } else { + %variable_nullref("$type","$name"); + } + } + } else { + %variable_nullref("$type","$name"); + } +} + +%typemap(globalin) SWIGTYPE [ANY][ANY] { + if ($input) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) { + if ($input[ii]) { + size_t jj = 0; + for (; jj < (size_t)$1_dim1; ++jj) $1[ii][jj] = $input[ii][jj]; + } else { + %variable_nullref("$type","$name"); + } + } + } else { + %variable_nullref("$type","$name"); + } +} + +%typemap(varin) SWIGTYPE [ANY][ANY] { + $basetype (*inp)[$1_dim1] = 0; + int res = SWIG_ConvertPtr($input, %as_voidptrptr(&inp), $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } else if (inp) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) { + if (inp[ii]) { + size_t jj = 0; + for (; jj < (size_t)$1_dim1; ++jj) $1[ii][jj] = inp[ii][jj]; + } else { + %variable_nullref("$type", "$name"); + } + } + } else { + %variable_nullref("$type", "$name"); + } +} + +/* Pointers, references, and variable size arrays */ + +%typemap(varin,warning=SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) SWIGTYPE * { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = %reinterpret_cast(argp, $ltype); +} + +%typemap(varin,noblock=1,warning="462:Unable to set dimensionless array variable") SWIGTYPE [] +{ + %variable_fail(SWIG_AttributeError, "$type", "read-only $name"); +} + +%typemap(varin,warning=SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) SWIGTYPE & { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } + $1 = *(%reinterpret_cast(argp, $ltype)); +} + +%typemap(varin,warning=SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) SWIGTYPE && { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } + $1 = *(%reinterpret_cast(argp, $ltype)); +} + +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(varin,implicitconv=1) SWIGTYPE { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $&descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $&type temp; + temp = %reinterpret_cast(argp, $&type); + $1 = *temp; + if (SWIG_IsNewObj(res)) %delete(temp); + } +} +#else +%typemap(varin) SWIGTYPE { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $&descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $1 = *(%reinterpret_cast(argp, $&type)); + } +} +#endif + +/* ----------------------------------------------------------------------------- + * --- Variable output --- + * ----------------------------------------------------------------------------- */ + +/* Pointers and arrays */ +%typemap(varout, noblock=1) SWIGTYPE * { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, %newpointer_flags)); +} + +%typemap(varout, noblock=1) SWIGTYPE [] { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, %newpointer_flags)); +} + +/* References */ +%typemap(varout, noblock=1) SWIGTYPE & { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $descriptor, %newpointer_flags)); +} + +%typemap(varout, noblock=1) SWIGTYPE && { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $descriptor, %newpointer_flags)); +} + +/* Value */ +%typemap(varout, noblock=1) SWIGTYPE { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $&descriptor, %newpointer_flags)); +} + +/* ------------------------------------------------------------ + * --- Typechecking rules --- + * ------------------------------------------------------------ */ + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE * { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, 0); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE *const& { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $*descriptor, 0); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE & { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, SWIG_POINTER_NO_NULL); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE && { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, SWIG_POINTER_NO_NULL); + $1 = SWIG_CheckState(res); +} + +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1,implicitconv=1) const SWIGTYPE & { + int res = SWIG_ConvertPtr($input, 0, $descriptor, SWIG_POINTER_NO_NULL | %implicitconv_flag); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1,implicitconv=1) const SWIGTYPE && { + int res = SWIG_ConvertPtr($input, 0, $descriptor, SWIG_POINTER_NO_NULL | %implicitconv_flag); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1,implicitconv=1) SWIGTYPE { + int res = SWIG_ConvertPtr($input, 0, $&descriptor, SWIG_POINTER_NO_NULL | %implicitconv_flag); + $1 = SWIG_CheckState(res); +} +#else +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) const SWIGTYPE & { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, SWIG_POINTER_NO_NULL); + $1 = SWIG_CheckState(res); +} +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) const SWIGTYPE && { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, SWIG_POINTER_NO_NULL); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $&descriptor, SWIG_POINTER_NO_NULL); + $1 = SWIG_CheckState(res); +} +#endif + +/* ----------------------------------------------------------------------------- + * --- Director typemaps --- * + * ----------------------------------------------------------------------------- */ + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1) SWIGTYPE { + $input = SWIG_NewPointerObj(%as_voidptr(new $1_ltype((const $1_ltype &)$1)), $&descriptor, SWIG_POINTER_OWN | %newpointer_flags); +} + +%typemap(directorin,noblock=1) SWIGTYPE * { + $input = SWIG_NewPointerObj(%as_voidptr($1), $descriptor, %newpointer_flags); +} + +%typemap(directorin,noblock=1) SWIGTYPE *const& { + $input = SWIG_NewPointerObj(%as_voidptr($1), $*descriptor, %newpointer_flags); +} + +%typemap(directorin,noblock=1) SWIGTYPE & { + $input = SWIG_NewPointerObj(%as_voidptr(&$1), $descriptor, %newpointer_flags); +} + +%typemap(directorin,noblock=1) SWIGTYPE && { + $input = SWIG_NewPointerObj(%as_voidptr(&$1_name), $descriptor, %newpointer_flags); +} + +/* directorout */ + +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(directorout,noblock=1,implicitconv=1) SWIGTYPE (void * swig_argp, int swig_res = 0) { + swig_res = SWIG_ConvertPtr($input,&swig_argp,$&descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + $result = *(%reinterpret_cast(swig_argp, $<ype)); + if (SWIG_IsNewObj(swig_res)) %delete(%reinterpret_cast(swig_argp, $<ype)); +} +#else +%typemap(directorout,noblock=1) SWIGTYPE (void * swig_argp, int swig_res = 0) { + swig_res = SWIG_ConvertPtr($input,&swig_argp,$&descriptor, %convertptr_flags); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + $result = *(%reinterpret_cast(swig_argp, $<ype)); +} +#endif + +%typemap(directorout,noblock=1,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) + SWIGTYPE *(void *swig_argp, int swig_res, swig_owntype own) { + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor, %convertptr_flags | SWIG_POINTER_DISOWN, &own); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + $result = %reinterpret_cast(swig_argp, $ltype); + swig_acquire_ownership_obj(%as_voidptr($result), own /* & TODO: SWIG_POINTER_OWN */); +} +%typemap(directorfree,noblock=1,match="directorout") SWIGTYPE * { + if (director) { + SWIG_AcquirePtr($result, director->swig_release_ownership(%as_voidptr($input))); + } +} + +%typemap(directorout,noblock=1,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) + SWIGTYPE *const&(void *swig_argp, int swig_res, swig_owntype own) { + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $*descriptor, %convertptr_flags | SWIG_POINTER_DISOWN, &own); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + $1_ltype swig_temp = new $*1_ltype(($*1_ltype)swig_argp); + swig_acquire_ownership(swig_temp); + $result = swig_temp; +} +%typemap(directorfree,noblock=1,match="directorout") SWIGTYPE *const& { + if (director) { + SWIG_AcquirePtr($result, director->swig_release_ownership(%as_voidptr(*$input))); + } +} + +%typemap(directorout,noblock=1,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) + SWIGTYPE &(void *swig_argp, int swig_res, swig_owntype own) { + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor, %convertptr_flags | SWIG_POINTER_DISOWN, &own); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + if (!swig_argp) { %dirout_nullref("$type"); } + $result = %reinterpret_cast(swig_argp, $ltype); + swig_acquire_ownership_obj(%as_voidptr($result), own /* & TODO: SWIG_POINTER_OWN */); +} +%typemap(directorfree,noblock=1,match="directorout") SWIGTYPE & { + if (director) { + SWIG_AcquirePtr($result, director->swig_release_ownership(%as_voidptr($input))); + } +} + +%typemap(directorout,noblock=1,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) + SWIGTYPE &&(void *swig_argp, int swig_res, swig_owntype own) { + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor, %convertptr_flags | SWIG_POINTER_DISOWN, &own); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + if (!swig_argp) { %dirout_nullref("$type"); } + $result = %reinterpret_cast(swig_argp, $ltype); + swig_acquire_ownership_obj(%as_voidptr($result), own /* & TODO: SWIG_POINTER_OWN */); +} +%typemap(directorfree,noblock=1,match="directorout") SWIGTYPE && { + if (director) { + SWIG_AcquirePtr($result, director->swig_release_ownership(%as_voidptr($input))); + } +} + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + + +/* ------------------------------------------------------------ + * --- Constants --- + * ------------------------------------------------------------ */ + +%typemap(constcode,noblock=1) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] { + %set_constant("$symname", SWIG_NewPointerObj(%as_voidptr($value),$descriptor,%newpointer_flags)); +} + +%typemap(constcode,noblock=1) SWIGTYPE { + %set_constant("$symname", SWIG_NewPointerObj(%as_voidptr(&$value),$&descriptor,%newpointer_flags)); +} + +/* ------------------------------------------------------------ + * --- Exception handling --- + * ------------------------------------------------------------ */ + +%typemap(throws,noblock=1) SWIGTYPE { + %raise(SWIG_NewPointerObj(%new_copy($1, $ltype),$&descriptor,SWIG_POINTER_OWN), "$type", $&descriptor); +} + +%typemap(throws,noblock=1) SWIGTYPE * { + %raise(SWIG_NewPointerObj(%as_voidptr($1),$descriptor,0), "$type", $descriptor); +} + +%typemap(throws,noblock=1) SWIGTYPE [ANY] { + %raise(SWIG_NewPointerObj(%as_voidptr($1),$descriptor,0), "$type", $descriptor); +} + +%typemap(throws,noblock=1) SWIGTYPE & { + %raise(SWIG_NewPointerObj(%as_voidptr(&$1),$descriptor,0), "$type", $descriptor); +} + +%typemap(throws,noblock=1) SWIGTYPE && { + %raise(SWIG_NewPointerObj(%as_voidptr(&$1),$descriptor,0), "$type", $descriptor); +} + +%typemap(throws,noblock=1) (...) { + SWIG_exception_fail(SWIG_RuntimeError,"unknown exception"); +} + +/* ------------------------------------------------------------ + * --- CLASS::* typemaps --- + * ------------------------------------------------------------ */ + +%typemap(in) SWIGTYPE (CLASS::*) { + int res = SWIG_ConvertMember($input, %as_voidptr(&$1), sizeof($type),$descriptor); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } +} + +%typemap(out,noblock=1) SWIGTYPE (CLASS::*) { + %set_output(SWIG_NewMemberObj(%as_voidptr(&$1), sizeof($type), $descriptor)); +} + +%typemap(varin) SWIGTYPE (CLASS::*) { + int res = SWIG_ConvertMember($input,%as_voidptr(&$1), sizeof($type), $descriptor); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } +} + +%typemap(varout,noblock=1) SWIGTYPE (CLASS::*) { + %set_varoutput(SWIG_NewMemberObj(%as_voidptr(&$1), sizeof($type), $descriptor)); +} + +%typemap(constcode,noblock=1) SWIGTYPE (CLASS::*) { + %set_constant("$symname", SWIG_NewMemberObj(%as_voidptr(&$value), sizeof($type), $descriptor)); +} + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1) SWIGTYPE (CLASS::*) { + $input = SWIG_NewMemberObj(%as_voidptr(&$1), sizeof($type), $descriptor); +} + +/* directorout */ + +%typemap(directorout) SWIGTYPE (CLASS::*) { + int swig_res = SWIG_ConvertMember($input,%as_voidptr(&$result), sizeof($type), $descriptor); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } +} +#endif + +%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) } +%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) } + +/* ------------------------------------------------------------ + * --- function ptr typemaps --- + * ------------------------------------------------------------ */ + +/* + ISO C++ doesn't allow direct casting of a function ptr to a object + ptr. So, maybe the ptr sizes are not the same, and we need to take + some providences. + */ +%typemap(in) SWIGTYPE ((*)(ANY)) { + int res = SWIG_ConvertFunctionPtr($input, (void**)(&$1), $descriptor); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } +} + +%typecheck(SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE ((*)(ANY)) { + void *ptr = 0; + int res = SWIG_ConvertFunctionPtr($input, &ptr, $descriptor); + $1 = SWIG_CheckState(res); +} + + +%typemap(out, noblock=1) SWIGTYPE ((*)(ANY)) { + %set_output(SWIG_NewFunctionPtrObj((void *)($1), $descriptor)); +} + +%typemap(varin) SWIGTYPE ((*)(ANY)) { + int res = SWIG_ConvertFunctionPtr($input, (void**)(&$1), $descriptor); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } +} + +%typemap(varout,noblock=1) SWIGTYPE ((*)(ANY)) { + %set_varoutput(SWIG_NewFunctionPtrObj((void *)($1), $descriptor)); +} + +%typemap(constcode, noblock=1) SWIGTYPE ((*)(ANY)){ + %set_constant("$symname", SWIG_NewFunctionPtrObj((void *)$value, $descriptor)); +} +%typemap(constcode) SWIGTYPE ((* const)(ANY)) = SWIGTYPE ((*)(ANY)); + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1) SWIGTYPE ((*)(ANY)) { + $input = SWIG_NewFunctionPtrObj((void*)($1), $descriptor); +} + +/* directorout */ + +%typemap(directorout) SWIGTYPE ((*)(ANY)) { + int swig_res = SWIG_ConvertFunctionPtr($input,(void**)(&$result),$descriptor); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } +} +#endif + +%apply SWIGTYPE ((*)(ANY)) { SWIGTYPE ((* const)(ANY)) } + +%apply SWIGTYPE * { SWIGTYPE *const } + +/* ------------------------------------------------------------ + * --- Special typemaps --- + * ------------------------------------------------------------ */ + +/* DISOWN typemap */ + +%typemap(in, noblock=1) SWIGTYPE *DISOWN (int res = 0) { + res = SWIG_ConvertPtr($input, %as_voidptrptr(&$1), $descriptor, SWIG_POINTER_DISOWN | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type", $symname, $argnum); + } +} + +%typemap(varin) SWIGTYPE *DISOWN { + void *temp = 0; + int res = SWIG_ConvertPtr($input, &temp, $descriptor, SWIG_POINTER_DISOWN | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = ($ltype) temp; +} + +/* DYNAMIC typemap */ + +%typemap(out,noblock=1) SWIGTYPE *DYNAMIC, SWIGTYPE &DYNAMIC { + %set_output(SWIG_NewPointerObj(%as_voidptr($1), SWIG_TypeDynamicCast($descriptor, %as_voidptrptr(&$1)), $owner | %newpointer_flags)); +} + +/* INSTANCE typemap */ + +%typemap(out,noblock=1) SWIGTYPE INSTANCE { + %set_output(SWIG_NewInstanceObj(%new_copy($1, $1_ltype), $&1_descriptor, SWIG_POINTER_OWN | %newinstance_flags)); +} + +%typemap(out,noblock=1) SWIGTYPE *INSTANCE, SWIGTYPE &INSTANCE, SWIGTYPE INSTANCE[] { + %set_output(SWIG_NewInstanceObj(%as_voidptr($1), $1_descriptor, $owner | %newinstance_flags)); +} + +%typemap(varout,noblock=1) SWIGTYPE *INSTANCE, SWIGTYPE INSTANCE[] { + %set_varoutput(SWIG_NewInstanceObj(%as_voidptr($1), $1_descriptor, %newinstance_flags)); +} + +%typemap(varout,noblock=1) SWIGTYPE &INSTANCE { + %set_varoutput(SWIG_NewInstanceObj(%as_voidptr($1), $1_descriptor, %newinstance_flags)); +} + +%typemap(varout,noblock=1) SWIGTYPE INSTANCE { + %set_varoutput(SWIG_NewInstanceObj(%as_voidptr(&$1), $&1_descriptor, %newinstance_flags)); +} + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/swigtypemaps.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/swigtypemaps.swg new file mode 100644 index 00000000..4e5bb2b0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/swigtypemaps.swg @@ -0,0 +1,167 @@ +/* ----------------------------------------------------------------------------- + * swigtypemaps.swg + * + * Unified Typemap Library frontend + * ----------------------------------------------------------------------------- */ + +/* + This file provides the frontend to the Unified Typemap Library. + + When using this library in a SWIG target language, you need to + define a minimum set of fragments, specialize a couple of macros, + and then include this file. + + Typically you will create a 'mytypemaps.swg' file in each target + language, where you will have the following sections: + + === mytypemaps.swg === + + // Fragment section + %include + + + // Unified typemap section + + %include + + // Local typemap section + + + === mytypemaps.swg === + + While we add more docs, please take a look at the following cases + to see how you specialized the unified typemap library for a new + target language: + + Lib/python/pytypemaps.swg + Lib/tcl/tcltypemaps.swg + Lib/ruby/rubytypemaps.swg + Lib/perl5/perltypemaps.swg + +*/ + +#define SWIGUTL SWIGUTL + +/* ----------------------------------------------------------------------------- + * Language specialization section. + * + * Tune these macros for each language as needed. + * ----------------------------------------------------------------------------- */ + +/* + The SWIG target language object must be provided. + For example in python you define: + + #define SWIG_Object PyObject * +*/ + +#if !defined(SWIG_Object) +#error "SWIG_Object must be defined as the SWIG target language object" +#endif + +/*==== flags for new/convert methods ====*/ + + +#ifndef %convertptr_flags +%define %convertptr_flags 0 %enddef +#endif + +#ifndef %newpointer_flags +%define %newpointer_flags 0 %enddef +#endif + +#ifndef %newinstance_flags +%define %newinstance_flags 0 %enddef +#endif + +/*==== set output ====*/ + +#ifndef %set_output +/* simple set output operation */ +#define %set_output(obj) $result = obj +#endif + +/*==== set variable output ====*/ + +#ifndef %set_varoutput +/* simple set varoutput operation */ +#define %set_varoutput(obj) $result = obj +#endif + +/*==== append output ====*/ + +#ifndef %append_output +#if defined(SWIG_AppendOutput) +/* simple append operation */ +#define %append_output(obj) $result = SWIG_AppendOutput($result,obj) +#else +#error "Language must define SWIG_AppendOutput or %append_output" +#endif +#endif + +/*==== set constant ====*/ + +#ifndef %set_constant +#if defined(SWIG_SetConstant) +/* simple set constant operation */ +#define %set_constant(name,value) SWIG_SetConstant(name,value) +#else +#error "Language must define SWIG_SetConstant or %set_constant" +#endif +#endif + +/*==== raise an exception ====*/ + +#ifndef %raise +#if defined(SWIG_Raise) +/* simple raise operation */ +#define %raise(obj, type, desc) SWIG_Raise(obj, type, desc); SWIG_fail +#else +#error "Language must define SWIG_Raise or %raise" +#endif +#endif + +/*==== director output exception ====*/ + +#if defined(SWIG_DIRECTOR_TYPEMAPS) +#ifndef SWIG_DirOutFail +#define SWIG_DirOutFail(code, msg) Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(code), msg) +#endif +#endif + + +/* ----------------------------------------------------------------------------- + * Language independent definitions + * ----------------------------------------------------------------------------- */ + +#define %error_block(Block...) %block(Block) +#define %default_code(code) SWIG_ArgError(code) +#define %argument_fail(code, type, name, argn) SWIG_exception_fail(%default_code(code), %argfail_fmt(type, name, argn)) +#define %argument_nullref(type, name, argn) SWIG_exception_fail(SWIG_ValueError, %argnullref_fmt(type, name, argn)) +#define %variable_fail(code, type, name) SWIG_exception_fail(%default_code(code), %varfail_fmt(type, name)) +#define %variable_nullref(type, name) SWIG_exception_fail(SWIG_ValueError, %varnullref_fmt(type, name)) + +#if defined(SWIG_DIRECTOR_TYPEMAPS) +#define %dirout_fail(code, type) SWIG_DirOutFail(%default_code(code), %outfail_fmt(type)) +#define %dirout_nullref(type) SWIG_DirOutFail(SWIG_ValueError, %outnullref_fmt(type)) +#endif + +/* ----------------------------------------------------------------------------- + * All the typemaps + * ----------------------------------------------------------------------------- */ + + +%include +%include +%include +%include +%include +%include +%include +%include +%include +%include +%include +%include + + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/typemaps.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/typemaps.swg new file mode 100644 index 00000000..4629e8df --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/typemaps.swg @@ -0,0 +1,157 @@ +/* ----------------------------------------------------------------------------- + * typemaps.swg + * + * Tcl Pointer handling + * + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers. + * ----------------------------------------------------------------------------- */ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + + int *INPUT + short *INPUT + long *INPUT + long long *INPUT + unsigned int *INPUT + unsigned short *INPUT + unsigned long *INPUT + unsigned long long *INPUT + unsigned char *INPUT + bool *INPUT + float *INPUT + double *INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a Tcl tuple. + + int *OUTPUT + short *OUTPUT + long *OUTPUT + long long *OUTPUT + unsigned int *OUTPUT + unsigned short *OUTPUT + unsigned long *OUTPUT + unsigned long long *OUTPUT + unsigned char *OUTPUT + bool *OUTPUT + float *OUTPUT + double *OUTPUT + +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).K: + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Tcl output of the function would be a tuple containing both +output values. + +*/ + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a Tcl tuple. + + int *INOUT + short *INOUT + long *INOUT + long long *INOUT + unsigned int *INOUT + unsigned short *INOUT + unsigned long *INOUT + unsigned long long *INOUT + unsigned char *INOUT + bool *INOUT + float *INOUT + double *INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include + void neg(double *INOUT); + +or you can use the %apply directive : + + %include + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value (since +this makes no sense in Tcl). Rather, the modified input value shows +up as the return value of the function. Thus, to apply this function +to a Tcl variable you might do this : + + x = neg(x) + +Note : previous versions of SWIG used the symbol 'BOTH' to mark +input/output arguments. This is still supported, but will be slowly +phased out in future releases. + +*/ + + +#if defined(SWIG_INOUT_NODEF) + +%apply_checkctypes(%typemaps_inoutn) + +%apply size_t& { std::size_t& }; +%apply ptrdiff_t& { std::ptrdiff_t& }; + +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/valtypes.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/valtypes.swg new file mode 100644 index 00000000..11eac598 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/valtypes.swg @@ -0,0 +1,215 @@ +/*--------------------------------------------------------------------- + * Value typemaps (Type, const Type&) for value types, such as + * fundamental types (int, double), that define the AsVal/From + * methods. + * + * To apply them, just use one of the following macros: + * + * %typemaps_from(FromMeth, FromFrag, Type) + * %typemaps_asval(CheckCode, AsValMeth, AsValFrag, Type) + * %typemaps_asvalfrom(CheckCode, AsValMeth, FromMeth, AsValFrag, FromFrag, Type) + * + * or the simpler and normalize form: + * + * %typemaps_asvalfromn(CheckCode, Type) + * + * Also, you can use the individual typemap definitions: + * + * %value_in_typemap(asval_meth,frag,Type) + * %value_varin_typemap(asval_meth,frag,Type) + * %value_typecheck_typemap(checkcode,asval_meth,frag,Type) + * %value_directorout_typemap(asval_meth,frag,Type) + * + * %value_out_typemap(from_meth,frag,Type) + * %value_varout_typemap(from_meth,frag,Type) + * %value_constcode_typemap(from_meth,frag,Type) + * %value_directorin_typemap(from_meth,frag,Type) + * %value_throws_typemap(from_meth,frag,Type) + * + *---------------------------------------------------------------------*/ + +/* in */ + +%define %value_in_typemap(asval_meth,frag,Type...) + %typemap(in,noblock=1,fragment=frag) Type (Type val, int ecode = 0) { + ecode = asval_meth($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$ltype", $symname, $argnum); + } + $1 = %static_cast(val,$ltype); + } + %typemap(freearg) Type ""; + %typemap(in,noblock=1,fragment=frag) const Type & ($*ltype temp, Type val, int ecode = 0) { + ecode = asval_meth($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$*ltype", $symname, $argnum); + } + temp = %static_cast(val, $*ltype); + $1 = &temp; + } + %typemap(freearg) const Type& ""; +%enddef + +/* out */ + +%define %value_out_typemap(from_meth,frag,Type...) + %typemap(out,noblock=1,fragment=frag) Type, const Type { + %set_output(from_meth(%static_cast($1,Type))); + } + %typemap(out,noblock=1,fragment=frag) const Type& { + %set_output(from_meth(%static_cast(*$1,Type))); + } +%enddef + +/* varin */ + +%define %value_varin_typemap(asval_meth,frag,Type...) + %typemap(varin,fragment=frag) Type { + Type val; + int res = asval_meth($input, &val); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = %static_cast(val,$ltype); + } +%enddef + +/* varout */ + +%define %value_varout_typemap(from_meth,frag,Type...) + %typemap(varout,noblock=1,fragment=frag) Type, const Type& { + %set_varoutput(from_meth(%static_cast($1,Type))); + } +%enddef + +/* constant installation code */ + +%define %value_constcode_typemap(from_meth,frag,Type...) + %typemap(constcode,noblock=1,fragment=frag) Type { + %set_constant("$symname", from_meth(%static_cast($value,Type))); + } +%enddef + + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%define %value_directorin_typemap(from_meth,frag,Type...) + %typemap(directorin,noblock=1,fragment=frag) Type *DIRECTORIN { + $input = from_meth(%static_cast(*$1,Type)); + } + %typemap(directorin,noblock=1,fragment=frag) Type, const Type& { + $input = from_meth(%static_cast($1,Type)); + } +%enddef + +/* directorout */ + +%define %value_directorout_typemap(asval_meth,frag,Type...) + %typemap(directorargout,noblock=1,fragment=frag) Type *DIRECTOROUT(Type swig_val, int swig_res) { + swig_res = asval_meth($result, &swig_val); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + *$1 = swig_val; + } + %typemap(directorout,noblock=1,fragment=frag) Type { + Type swig_val; + int swig_res = asval_meth($input, &swig_val); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + $result = %static_cast(swig_val,$type); + } + %typemap(directorout,noblock=1,fragment=frag,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) const Type& { + Type swig_val; + int swig_res = asval_meth($input, &swig_val); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + $basetype *temp = new $basetype(($basetype)swig_val); + swig_acquire_ownership(temp); + $result = temp; + } + %typemap(directorfree,noblock=1) const Type & { + if (director) { + director->swig_release_ownership(%as_voidptr($input)); + } + } + %typemap(directorout,fragment=frag) Type &DIRECTOROUT = Type +%enddef + +#else + +#define %value_directorin_typemap(from_meth,frag,Type...) +#define %value_directorout_typemap(asval_meth,frag,Type...) + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + + +/* throws */ + +%define %value_throws_typemap(from_meth,frag,Type...) + %typemap(throws,noblock=1,fragment=frag) Type { + %raise(from_meth(%static_cast($1,Type)), "$type", 0); + } +%enddef + +/* typecheck */ + +%define %value_typecheck_typemap(check,asval_meth,frag,Type...) + %typemap(typecheck,precedence=check,fragment=frag) Type, const Type& { + int res = asval_meth($input, NULL); + $1 = SWIG_CheckState(res); + } +%enddef + +/*--------------------------------------------------------------------- + * typemap definition for types with AsVal methods + *---------------------------------------------------------------------*/ +%define %typemaps_asval(CheckCode, AsValMeth, AsValFrag, Type...) + %value_in_typemap(%arg(AsValMeth), %arg(AsValFrag), Type); + %value_varin_typemap(%arg(AsValMeth), %arg(AsValFrag), Type); + %value_directorout_typemap(%arg(AsValMeth), %arg(AsValFrag), Type); + %value_typecheck_typemap(%arg(CheckCode), %arg(AsValMeth), %arg(AsValFrag), Type); + %value_input_typemap(%arg(CheckCode), %arg(AsValMeth), %arg(AsValFrag), Type); +%enddef + + +/*--------------------------------------------------------------------- + * typemap definition for types with from method + *---------------------------------------------------------------------*/ +%define %typemaps_from(FromMeth, FromFrag, Type...) + %value_out_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_varout_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_constcode_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_directorin_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_throws_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_output_typemap(%arg(FromMeth), %arg(FromFrag), Type); +%enddef + + +/*--------------------------------------------------------------------- + * typemap definition for types with alval/from method + *---------------------------------------------------------------------*/ + +%define %typemaps_asvalfrom(CheckCode, AsValMeth, FromMeth, + AsValFrag, FromFrag, Type...) + %typemaps_asval(%arg(CheckCode), %arg(AsValMeth), %arg(AsValFrag), Type); + %typemaps_from(%arg(FromMeth), %arg(FromFrag), Type); + %value_inout_typemap(Type); +%enddef + + +/*--------------------------------------------------------------------- + * typemap definition for types with for 'normalized' asval/from methods + *---------------------------------------------------------------------*/ +%define %typemaps_asvalfromn(CheckCode, Type...) + %typemaps_asvalfrom(%arg(CheckCode), + SWIG_AsVal(Type), + SWIG_From(Type), + %arg(SWIG_AsVal_frag(Type)), + %arg(SWIG_From_frag(Type)), + Type); +%enddef diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/void.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/void.swg new file mode 100644 index 00000000..bbd68ed8 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/void.swg @@ -0,0 +1,84 @@ +/* ------------------------------------------------------------ + * Void * - Accepts any kind of pointer + * ------------------------------------------------------------ */ + +/* in */ + +%typemap(in,noblock=1) void * (int res) { + res = SWIG_ConvertPtr($input,%as_voidptrptr(&$1), 0, $disown); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } +} +%typemap(freearg) void * ""; + +%typemap(in,noblock=1) void * const& ($*ltype temp = 0, int res) { + res = SWIG_ConvertPtr($input, %as_voidptrptr(&temp), 0, $disown); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "Stype", $symname, $argnum); + } + $1 = &temp; +} +%typemap(freearg) void * const& ""; + + +/* out */ + +#if defined(VOID_Object) +%typemap(out,noblock=1) void { $result = VOID_Object; } +#else +%typemap(out,noblock=1) void {} +#endif + +/* varin */ + +%typemap(varin) void * { + void *temp = 0; + int res = SWIG_ConvertPtr($input, &temp, 0, SWIG_POINTER_DISOWN); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = ($1_ltype) temp; +} + +/* typecheck */ + +%typecheck(SWIG_TYPECHECK_VOIDPTR, noblock=1) void * +{ + void *ptr = 0; + int res = SWIG_ConvertPtr($input, &ptr, 0, 0); + $1 = SWIG_CheckState(res); +} + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1) void *, void const*, void *const, void const *const, + void const *&, void *const &, void const *const & { + $input = SWIG_NewPointerObj(%as_voidptr($1), $descriptor, %newpointer_flags); +} + +/* directorout */ + +%typemap(directorout,noblock=1) void * (void *argp, int res) { + res = SWIG_ConvertPtr($input, &argp, 0, 0); + if (!SWIG_IsOK(res)) { + %dirout_fail(res,"$type"); + } + $result = %reinterpret_cast(argp, $ltype); +} + +%typemap(directorout,noblock=1,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) void * const& (void *argp, int res) { + res = SWIG_ConvertPtr($input, &argp, 0, $disown); + if (!SWIG_IsOK(res)) { + %dirout_fail(res,"$type"); + } + static $*ltype temp = %reinterpret_cast(argp, $*ltype); + $result = &temp; +} + + + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + diff --git a/macx64/bin/swig/share/swig/4.0.0/typemaps/wstring.swg b/macx64/bin/swig/share/swig/4.0.0/typemaps/wstring.swg new file mode 100644 index 00000000..cd409d1c --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/typemaps/wstring.swg @@ -0,0 +1,37 @@ +%ensure_fragment(SWIG_AsWCharPtrAndSize) +%ensure_fragment(SWIG_FromWCharPtrAndSize) + + +%types(wchar_t *); + +%fragment("SWIG_pwchar_descriptor","header") { +SWIGINTERN swig_type_info* +SWIG_pwchar_descriptor() +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_wchar_t"); + init = 1; + } + return info; +} +} + +%fragment("SWIG_wcsnlen","header",fragment="SWIG_FromWCharPtrAndSize") { +SWIGINTERN size_t +SWIG_wcsnlen(const wchar_t* s, size_t maxlen) +{ + const wchar_t *p; + for (p = s; maxlen-- && *p; p++) + ; + return p - s; +} +} + +%include +%typemaps_string(%checkcode(UNISTRING), %checkcode(UNICHAR), + wchar_t, WChar, SWIG_AsWCharPtrAndSize, SWIG_FromWCharPtrAndSize, + wcslen, SWIG_wcsnlen, + "", WCHAR_MIN, WCHAR_MAX) + diff --git a/macx64/bin/swig/share/swig/4.0.0/wchar.i b/macx64/bin/swig/share/swig/4.0.0/wchar.i new file mode 100644 index 00000000..14de3463 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/wchar.i @@ -0,0 +1,11 @@ +/* ----------------------------------------------------------------------------- + * wchar.i + * ----------------------------------------------------------------------------- */ + +/* + wchar_t not supported, unless otherwise specified in the target language. +*/ + +#if defined(SWIG_WCHAR) +#undef SWIG_WCHAR +#endif diff --git a/macx64/bin/swig/share/swig/4.0.0/windows.i b/macx64/bin/swig/share/swig/4.0.0/windows.i new file mode 100644 index 00000000..3e462619 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/windows.i @@ -0,0 +1,152 @@ +/* ----------------------------------------------------------------------------- + * windows.i + * + * SWIG library file to support types found in windows.h as well as Microsoft + * integral type extensions. The types are set for 32 bit Windows. + * ----------------------------------------------------------------------------- */ + +// Support for non ISO (Windows) integral types +%apply unsigned char { unsigned __int8 }; +%apply const unsigned char& { const unsigned __int8& }; + +%apply signed char { __int8 }; +%apply const signed char& { const __int8& }; + +%apply unsigned short { unsigned __int16 }; +%apply const unsigned short& { const unsigned __int16& }; + +%apply short { __int16 }; +%apply const short& { const __int16& }; + +%apply unsigned int { unsigned __int32 }; +%apply const unsigned int& { const unsigned __int32& }; + +%apply int { __int32 }; +%apply const int& { const __int32& }; + +%apply unsigned long long { unsigned __int64 }; +%apply const unsigned long long& { const unsigned __int64& }; + +%apply long long { __int64 }; +%apply const long long& { const __int64& }; + + +// Workaround Microsoft calling conventions +#define __cdecl +#define __fastcall +#define __far +#define __forceinline +#define __fortran +#define __inline +#define __pascal +#define __stdcall +#define __syscall +#define _cdecl +#define _fastcall +#define _inline +#define _pascal +#define _stdcall +#define WINAPI +#define __declspec(WINDOWS_EXTENDED_ATTRIBUTE) + +#define __w64 + +// Types from windef.h +typedef unsigned long ULONG; +typedef ULONG *PULONG; +typedef unsigned short USHORT; +typedef USHORT *PUSHORT; +typedef unsigned char UCHAR; +typedef UCHAR *PUCHAR; +typedef char *PSZ; +typedef unsigned long DWORD; +typedef int BOOL; +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef float FLOAT; +typedef FLOAT *PFLOAT; +typedef BOOL *PBOOL; +typedef BOOL *LPBOOL; +typedef BYTE *PBYTE; +typedef BYTE *LPBYTE; +typedef int *PINT; +typedef int *LPINT; +typedef WORD *PWORD; +typedef WORD *LPWORD; +typedef long *LPLONG; +typedef DWORD *PDWORD; +typedef DWORD *LPDWORD; +typedef void *LPVOID; +typedef const void *LPCVOID; +typedef int INT; +typedef unsigned int UINT; +typedef unsigned int *PUINT; + +// Types from basetsd.h +typedef signed char INT8, *PINT8; +typedef signed short INT16, *PINT16; +typedef signed int INT32, *PINT32; +typedef signed __int64 INT64, *PINT64; +typedef unsigned char UINT8, *PUINT8; +typedef unsigned short UINT16, *PUINT16; +typedef unsigned int UINT32, *PUINT32; +typedef unsigned __int64 UINT64, *PUINT64; +typedef signed int LONG32, *PLONG32; +typedef unsigned int ULONG32, *PULONG32; +typedef unsigned int DWORD32, *PDWORD32; +typedef __w64 int INT_PTR, *PINT_PTR; +typedef __w64 unsigned int UINT_PTR, *PUINT_PTR; +typedef __w64 long LONG_PTR, *PLONG_PTR; +typedef __w64 unsigned long ULONG_PTR, *PULONG_PTR; +typedef unsigned short UHALF_PTR, *PUHALF_PTR; +typedef short HALF_PTR, *PHALF_PTR; +typedef __w64 long SHANDLE_PTR; +typedef __w64 unsigned long HANDLE_PTR; +typedef ULONG_PTR SIZE_T, *PSIZE_T; +typedef LONG_PTR SSIZE_T, *PSSIZE_T; +typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; +typedef __int64 LONG64, *PLONG64; +typedef unsigned __int64 ULONG64, *PULONG64; +typedef unsigned __int64 DWORD64, *PDWORD64; + +// Types from winnt.h +typedef void *PVOID; +typedef void *PVOID64; +#ifndef VOID +#define VOID void +#endif +typedef char CHAR; +typedef short SHORT; +typedef long LONG; +typedef CHAR *PCHAR; +typedef CHAR *LPCH, *PCH; +typedef const CHAR *LPCCH, *PCCH; +typedef CHAR *NPSTR; +typedef CHAR *LPSTR, *PSTR; +typedef const CHAR *LPCSTR, *PCSTR; +typedef char TCHAR, *PTCHAR; +typedef unsigned char TBYTE , *PTBYTE ; +typedef LPSTR LPTCH, PTCH; +typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR; +typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR; +typedef SHORT *PSHORT; +typedef LONG *PLONG; +typedef void *HANDLE; +typedef HANDLE *PHANDLE; +typedef BYTE FCHAR; +typedef WORD FSHORT; +typedef DWORD FLONG; +typedef LONG HRESULT; +typedef char CCHAR; +typedef DWORD LCID; +typedef PDWORD PLCID; +typedef WORD LANGID; +typedef __int64 LONGLONG; +typedef unsigned __int64 ULONGLONG; +typedef LONGLONG *PLONGLONG; +typedef ULONGLONG *PULONGLONG; +typedef ULONGLONG DWORDLONG; +typedef DWORDLONG *PDWORDLONG; +typedef BYTE BOOLEAN; +typedef BOOLEAN *PBOOLEAN; + diff --git a/macx64/bin/swig/share/swig/4.0.0/xml/typemaps.i b/macx64/bin/swig/share/swig/4.0.0/xml/typemaps.i new file mode 100644 index 00000000..29736135 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/xml/typemaps.i @@ -0,0 +1,3 @@ +// -------------------------------------------------------------------- +// Empty file for %include to work +// -------------------------------------------------------------------- diff --git a/macx64/bin/swig/share/swig/4.0.0/xml/xml.swg b/macx64/bin/swig/share/swig/4.0.0/xml/xml.swg new file mode 100644 index 00000000..c7bdbad0 --- /dev/null +++ b/macx64/bin/swig/share/swig/4.0.0/xml/xml.swg @@ -0,0 +1 @@ +/* nothing special */ \ No newline at end of file