From 8e9734ba80485ad9ea289aee2fb09a3f617a0144 Mon Sep 17 00:00:00 2001 From: James Chen Date: Mon, 21 Nov 2022 10:22:25 +0800 Subject: [PATCH] fix crash if function returns stack object like Vec4 (#316) * fix crash if function returns stack object like Vec4 * Strip debug symbols * Update swig version to v1.1.0 --- linux/bin/swig/bin/swig | Bin 3450512 -> 2698544 bytes linux/bin/swig/share/swig/4.1.0/allkw.swg | 0 linux/bin/swig/share/swig/4.1.0/attribute.i | 0 linux/bin/swig/share/swig/4.1.0/carrays.i | 0 linux/bin/swig/share/swig/4.1.0/cdata.i | 0 linux/bin/swig/share/swig/4.1.0/cmalloc.i | 0 linux/bin/swig/share/swig/4.1.0/constraints.i | 0 linux/bin/swig/share/swig/4.1.0/cpointer.i | 0 .../share/swig/4.1.0/csharp/arrays_csharp.i | 179 -- .../swig/4.1.0/csharp/boost_intrusive_ptr.i | 517 ----- .../swig/4.1.0/csharp/boost_shared_ptr.i | 323 --- .../swig/share/swig/4.1.0/csharp/complex.i | 5 - .../swig/share/swig/4.1.0/csharp/csharp.swg | 1120 ---------- .../share/swig/4.1.0/csharp/csharphead.swg | 339 --- .../swig/share/swig/4.1.0/csharp/csharpkw.swg | 97 - .../swig/share/swig/4.1.0/csharp/director.swg | 50 - .../swig/share/swig/4.1.0/csharp/enums.swg | 86 - .../share/swig/4.1.0/csharp/enumsimple.swg | 88 - .../share/swig/4.1.0/csharp/enumtypesafe.swg | 130 -- .../swig/share/swig/4.1.0/csharp/std_array.i | 227 -- .../share/swig/4.1.0/csharp/std_auto_ptr.i | 38 - .../swig/share/swig/4.1.0/csharp/std_common.i | 5 - .../share/swig/4.1.0/csharp/std_complex.i | 95 - .../swig/share/swig/4.1.0/csharp/std_deque.i | 1 - .../swig/share/swig/4.1.0/csharp/std_except.i | 32 - .../swig/share/swig/4.1.0/csharp/std_list.i | 519 ----- .../swig/share/swig/4.1.0/csharp/std_map.i | 312 --- .../swig/share/swig/4.1.0/csharp/std_pair.i | 36 - .../swig/share/swig/4.1.0/csharp/std_set.i | 311 --- .../share/swig/4.1.0/csharp/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/csharp/std_string.i | 111 - .../share/swig/4.1.0/csharp/std_unique_ptr.i | 38 - .../swig/share/swig/4.1.0/csharp/std_vector.i | 418 ---- .../share/swig/4.1.0/csharp/std_wstring.i | 146 -- linux/bin/swig/share/swig/4.1.0/csharp/stl.i | 10 - .../share/swig/4.1.0/csharp/swiginterface.i | 63 - .../swig/share/swig/4.1.0/csharp/swigmove.i | 16 - .../share/swig/4.1.0/csharp/swigtype_inout.i | 34 - .../swig/share/swig/4.1.0/csharp/typemaps.i | 253 --- .../bin/swig/share/swig/4.1.0/csharp/wchar.i | 335 --- linux/bin/swig/share/swig/4.1.0/cstring.i | 0 linux/bin/swig/share/swig/4.1.0/cwstring.i | 0 .../share/swig/4.1.0/d/boost_shared_ptr.i | 293 --- linux/bin/swig/share/swig/4.1.0/d/carrays.i | 111 - linux/bin/swig/share/swig/4.1.0/d/cpointer.i | 171 -- linux/bin/swig/share/swig/4.1.0/d/d.swg | 46 - .../bin/swig/share/swig/4.1.0/d/dclassgen.swg | 172 -- .../swig/share/swig/4.1.0/d/ddirectives.swg | 11 - linux/bin/swig/share/swig/4.1.0/d/denums.swg | 60 - .../swig/share/swig/4.1.0/d/dexception.swg | 30 - linux/bin/swig/share/swig/4.1.0/d/dhead.swg | 298 --- .../bin/swig/share/swig/4.1.0/d/director.swg | 49 - linux/bin/swig/share/swig/4.1.0/d/dkw.swg | 128 -- .../swig/4.1.0/d/dmemberfunctionpointers.swg | 94 - .../swig/share/swig/4.1.0/d/doperators.swg | 259 --- .../swig/share/swig/4.1.0/d/dprimitives.swg | 171 -- .../bin/swig/share/swig/4.1.0/d/dstrings.swg | 80 - .../bin/swig/share/swig/4.1.0/d/dswigtype.swg | 241 -- linux/bin/swig/share/swig/4.1.0/d/dvoid.swg | 18 - .../swig/share/swig/4.1.0/d/std_auto_ptr.i | 42 - .../bin/swig/share/swig/4.1.0/d/std_common.i | 5 - linux/bin/swig/share/swig/4.1.0/d/std_deque.i | 1 - .../bin/swig/share/swig/4.1.0/d/std_except.i | 32 - linux/bin/swig/share/swig/4.1.0/d/std_map.i | 62 - linux/bin/swig/share/swig/4.1.0/d/std_pair.i | 36 - .../swig/share/swig/4.1.0/d/std_shared_ptr.i | 2 - .../bin/swig/share/swig/4.1.0/d/std_string.i | 98 - .../swig/share/swig/4.1.0/d/std_unique_ptr.i | 42 - .../bin/swig/share/swig/4.1.0/d/std_vector.i | 605 ----- linux/bin/swig/share/swig/4.1.0/d/stl.i | 10 - linux/bin/swig/share/swig/4.1.0/d/swigmove.i | 16 - linux/bin/swig/share/swig/4.1.0/d/typemaps.i | 261 --- .../swig/share/swig/4.1.0/d/wrapperloader.swg | 309 --- .../swig/share/swig/4.1.0/director_common.swg | 0 linux/bin/swig/share/swig/4.1.0/exception.i | 0 linux/bin/swig/share/swig/4.1.0/go/cdata.i | 97 - .../bin/swig/share/swig/4.1.0/go/director.swg | 80 - .../bin/swig/share/swig/4.1.0/go/exception.i | 7 - linux/bin/swig/share/swig/4.1.0/go/go.swg | 744 ------- linux/bin/swig/share/swig/4.1.0/go/gokw.swg | 33 - .../swig/share/swig/4.1.0/go/goruntime.swg | 217 -- .../bin/swig/share/swig/4.1.0/go/gostring.swg | 29 - .../bin/swig/share/swig/4.1.0/go/std_array.i | 43 - .../bin/swig/share/swig/4.1.0/go/std_common.i | 4 - .../bin/swig/share/swig/4.1.0/go/std_deque.i | 1 - .../bin/swig/share/swig/4.1.0/go/std_except.i | 31 - linux/bin/swig/share/swig/4.1.0/go/std_list.i | 41 - linux/bin/swig/share/swig/4.1.0/go/std_map.i | 66 - linux/bin/swig/share/swig/4.1.0/go/std_pair.i | 36 - .../bin/swig/share/swig/4.1.0/go/std_string.i | 162 -- .../bin/swig/share/swig/4.1.0/go/std_vector.i | 92 - linux/bin/swig/share/swig/4.1.0/go/stl.i | 10 - linux/bin/swig/share/swig/4.1.0/go/swigmove.i | 15 - linux/bin/swig/share/swig/4.1.0/go/typemaps.i | 298 --- .../bin/swig/share/swig/4.1.0/guile/Makefile | 3 - .../swig/share/swig/4.1.0/guile/common.scm | 70 - .../swig/share/swig/4.1.0/guile/cplusplus.i | 22 - .../share/swig/4.1.0/guile/extra-install.list | 2 - linux/bin/swig/share/swig/4.1.0/guile/guile.i | 33 - .../swig/share/swig/4.1.0/guile/guile_scm.swg | 46 - .../share/swig/4.1.0/guile/guile_scm_run.swg | 532 ----- .../swig/share/swig/4.1.0/guile/guilemain.i | 39 - .../swig/share/swig/4.1.0/guile/interpreter.i | 59 - .../swig/share/swig/4.1.0/guile/list-vector.i | 488 ----- .../share/swig/4.1.0/guile/pointer-in-out.i | 102 - linux/bin/swig/share/swig/4.1.0/guile/ports.i | 50 - .../share/swig/4.1.0/guile/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/guile/std_common.i | 25 - .../swig/share/swig/4.1.0/guile/std_deque.i | 1 - .../swig/share/swig/4.1.0/guile/std_except.i | 13 - .../bin/swig/share/swig/4.1.0/guile/std_map.i | 1370 ------------ .../swig/share/swig/4.1.0/guile/std_pair.i | 867 -------- .../swig/share/swig/4.1.0/guile/std_string.i | 95 - .../share/swig/4.1.0/guile/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/guile/std_vector.i | 424 ---- linux/bin/swig/share/swig/4.1.0/guile/stl.i | 10 - .../swig/share/swig/4.1.0/guile/swigmove.i | 19 - .../bin/swig/share/swig/4.1.0/guile/swigrun.i | 47 - .../swig/share/swig/4.1.0/guile/typemaps.i | 501 ----- .../bin/swig/share/swig/4.1.0/intrusive_ptr.i | 0 linux/bin/swig/share/swig/4.1.0/inttypes.i | 0 .../swig/share/swig/4.1.0/java/arrays_java.i | 392 ---- .../swig/4.1.0/java/boost_intrusive_ptr.i | 484 ---- .../share/swig/4.1.0/java/boost_shared_ptr.i | 337 --- .../swig/share/swig/4.1.0/java/director.swg | 541 ----- .../bin/swig/share/swig/4.1.0/java/enums.swg | 116 - .../swig/share/swig/4.1.0/java/enumsimple.swg | 71 - .../share/swig/4.1.0/java/enumtypesafe.swg | 117 - .../share/swig/4.1.0/java/enumtypeunsafe.swg | 72 - linux/bin/swig/share/swig/4.1.0/java/java.swg | 1458 ------------ .../swig/share/swig/4.1.0/java/javahead.swg | 91 - .../bin/swig/share/swig/4.1.0/java/javakw.swg | 70 - .../swig/share/swig/4.1.0/java/std_array.i | 44 - .../swig/share/swig/4.1.0/java/std_auto_ptr.i | 41 - .../swig/share/swig/4.1.0/java/std_common.i | 5 - .../swig/share/swig/4.1.0/java/std_deque.i | 1 - .../swig/share/swig/4.1.0/java/std_except.i | 32 - .../bin/swig/share/swig/4.1.0/java/std_list.i | 225 -- .../bin/swig/share/swig/4.1.0/java/std_map.i | 224 -- .../bin/swig/share/swig/4.1.0/java/std_pair.i | 37 - .../bin/swig/share/swig/4.1.0/java/std_set.i | 207 -- .../share/swig/4.1.0/java/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/java/std_string.i | 121 - .../share/swig/4.1.0/java/std_unique_ptr.i | 41 - .../share/swig/4.1.0/java/std_unordered_map.i | 211 -- .../share/swig/4.1.0/java/std_unordered_set.i | 203 -- .../swig/share/swig/4.1.0/java/std_vector.i | 185 -- .../swig/share/swig/4.1.0/java/std_wstring.i | 180 -- linux/bin/swig/share/swig/4.1.0/java/stl.i | 10 - .../share/swig/4.1.0/java/swiginterface.i | 74 - .../bin/swig/share/swig/4.1.0/java/swigmove.i | 16 - .../bin/swig/share/swig/4.1.0/java/typemaps.i | 529 ----- .../bin/swig/share/swig/4.1.0/java/various.i | 194 -- .../javascript/cocos/arrays_javascript.i | 0 .../swig/4.1.0/javascript/cocos/ccomplex.i | 0 .../share/swig/4.1.0/javascript/cocos/cdata.i | 0 .../swig/4.1.0/javascript/cocos/complex.i | 0 .../swig/4.1.0/javascript/cocos/exception.i | 0 .../4.1.0/javascript/cocos/javascript.swg | 0 .../4.1.0/javascript/cocos/javascriptcode.swg | 0 .../javascript/cocos/javascriptcomplex.swg | 0 .../javascript/cocos/javascriptfragments.swg | 0 .../javascript/cocos/javascripthelpers.swg | 0 .../4.1.0/javascript/cocos/javascriptinit.swg | 0 .../4.1.0/javascript/cocos/javascriptkw.swg | 0 .../javascript/cocos/javascriptprimtypes.swg | 0 .../4.1.0/javascript/cocos/javascriptrun.swg | 0 .../javascript/cocos/javascriptruntime.swg | 0 .../javascript/cocos/javascriptstrings.swg | 0 .../javascript/cocos/javascripttypemaps.swg | 9 +- .../swig/4.1.0/javascript/cocos/std_common.i | 0 .../swig/4.1.0/javascript/cocos/std_complex.i | 0 .../swig/4.1.0/javascript/cocos/std_deque.i | 0 .../swig/4.1.0/javascript/cocos/std_except.i | 0 .../swig/4.1.0/javascript/cocos/std_map.i | 0 .../swig/4.1.0/javascript/cocos/std_pair.i | 0 .../swig/4.1.0/javascript/cocos/std_string.i | 0 .../swig/4.1.0/javascript/cocos/std_vector.i | 0 .../share/swig/4.1.0/javascript/cocos/stl.i | 0 .../swig/4.1.0/javascript/cocos/typemaps.i | 0 .../4.1.0/javascript/jsc/arrays_javascript.i | 94 - .../swig/4.1.0/javascript/jsc/ccomplex.i | 27 - .../share/swig/4.1.0/javascript/jsc/cdata.i | 1 - .../share/swig/4.1.0/javascript/jsc/complex.i | 6 - .../swig/4.1.0/javascript/jsc/exception.i | 1 - .../swig/4.1.0/javascript/jsc/javascript.swg | 19 - .../4.1.0/javascript/jsc/javascriptcode.swg | 429 ---- .../javascript/jsc/javascriptcomplex.swg | 146 -- .../javascript/jsc/javascriptfragments.swg | 23 - .../javascript/jsc/javascripthelpers.swg | 69 - .../4.1.0/javascript/jsc/javascriptinit.swg | 112 - .../4.1.0/javascript/jsc/javascriptkw.swg | 40 - .../javascript/jsc/javascriptprimtypes.swg | 192 -- .../4.1.0/javascript/jsc/javascriptrun.swg | 369 ---- .../javascript/jsc/javascriptruntime.swg | 20 - .../javascript/jsc/javascriptstrings.swg | 187 -- .../javascript/jsc/javascripttypemaps.swg | 54 - .../swig/4.1.0/javascript/jsc/std_auto_ptr.i | 39 - .../swig/4.1.0/javascript/jsc/std_common.i | 5 - .../swig/4.1.0/javascript/jsc/std_complex.i | 26 - .../swig/4.1.0/javascript/jsc/std_deque.i | 1 - .../swig/4.1.0/javascript/jsc/std_except.i | 1 - .../share/swig/4.1.0/javascript/jsc/std_map.i | 81 - .../swig/4.1.0/javascript/jsc/std_pair.i | 36 - .../swig/4.1.0/javascript/jsc/std_string.i | 1 - .../4.1.0/javascript/jsc/std_unique_ptr.i | 39 - .../swig/4.1.0/javascript/jsc/std_vector.i | 99 - .../share/swig/4.1.0/javascript/jsc/stl.i | 10 - .../swig/4.1.0/javascript/jsc/swigmove.i | 1 - .../swig/4.1.0/javascript/jsc/typemaps.i | 148 -- .../4.1.0/javascript/v8/arrays_javascript.i | 86 - .../share/swig/4.1.0/javascript/v8/ccomplex.i | 27 - .../share/swig/4.1.0/javascript/v8/cdata.i | 1 - .../share/swig/4.1.0/javascript/v8/complex.i | 6 - .../swig/4.1.0/javascript/v8/exception.i | 1 - .../swig/4.1.0/javascript/v8/javascript.swg | 19 - .../4.1.0/javascript/v8/javascriptcode.swg | 435 ---- .../4.1.0/javascript/v8/javascriptcomplex.swg | 124 -- .../javascript/v8/javascriptfragments.swg | 23 - .../4.1.0/javascript/v8/javascripthelpers.swg | 87 - .../4.1.0/javascript/v8/javascriptinit.swg | 126 -- .../swig/4.1.0/javascript/v8/javascriptkw.swg | 40 - .../javascript/v8/javascriptprimtypes.swg | 203 -- .../4.1.0/javascript/v8/javascriptrun.swg | 487 ---- .../4.1.0/javascript/v8/javascriptruntime.swg | 47 - .../4.1.0/javascript/v8/javascriptstrings.swg | 59 - .../javascript/v8/javascripttypemaps.swg | 43 - .../swig/4.1.0/javascript/v8/std_auto_ptr.i | 39 - .../swig/4.1.0/javascript/v8/std_common.i | 5 - .../swig/4.1.0/javascript/v8/std_complex.i | 26 - .../swig/4.1.0/javascript/v8/std_deque.i | 1 - .../swig/4.1.0/javascript/v8/std_except.i | 1 - .../share/swig/4.1.0/javascript/v8/std_map.i | 80 - .../share/swig/4.1.0/javascript/v8/std_pair.i | 35 - .../swig/4.1.0/javascript/v8/std_string.i | 1 - .../swig/4.1.0/javascript/v8/std_unique_ptr.i | 39 - .../swig/4.1.0/javascript/v8/std_vector.i | 99 - .../swig/share/swig/4.1.0/javascript/v8/stl.i | 10 - .../share/swig/4.1.0/javascript/v8/swigmove.i | 1 - .../share/swig/4.1.0/javascript/v8/typemaps.i | 148 -- linux/bin/swig/share/swig/4.1.0/linkruntime.c | 0 .../swig/share/swig/4.1.0/lua/_std_common.i | 93 - .../bin/swig/share/swig/4.1.0/lua/argcargv.i | 57 - linux/bin/swig/share/swig/4.1.0/lua/carrays.i | 8 - linux/bin/swig/share/swig/4.1.0/lua/factory.i | 23 - linux/bin/swig/share/swig/4.1.0/lua/lua.swg | 236 -- .../bin/swig/share/swig/4.1.0/lua/lua_fnptr.i | 124 -- linux/bin/swig/share/swig/4.1.0/lua/luakw.swg | 67 - .../bin/swig/share/swig/4.1.0/lua/luarun.swg | 1950 ----------------- .../swig/share/swig/4.1.0/lua/luaruntime.swg | 104 - .../swig/share/swig/4.1.0/lua/luatypemaps.swg | 418 ---- .../swig/share/swig/4.1.0/lua/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/lua/std_common.i | 5 - .../bin/swig/share/swig/4.1.0/lua/std_deque.i | 1 - .../swig/share/swig/4.1.0/lua/std_except.i | 42 - linux/bin/swig/share/swig/4.1.0/lua/std_map.i | 66 - .../bin/swig/share/swig/4.1.0/lua/std_pair.i | 26 - .../swig/share/swig/4.1.0/lua/std_string.i | 125 -- .../share/swig/4.1.0/lua/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/lua/std_vector.i | 140 -- linux/bin/swig/share/swig/4.1.0/lua/stl.i | 10 - .../bin/swig/share/swig/4.1.0/lua/swigmove.i | 18 - .../bin/swig/share/swig/4.1.0/lua/typemaps.i | 554 ----- linux/bin/swig/share/swig/4.1.0/lua/wchar.i | 42 - linux/bin/swig/share/swig/4.1.0/math.i | 0 .../swig/share/swig/4.1.0/mzscheme/Makefile | 3 - .../swig/share/swig/4.1.0/mzscheme/mzrun.swg | 521 ----- .../share/swig/4.1.0/mzscheme/mzscheme.swg | 56 - .../share/swig/4.1.0/mzscheme/std_auto_ptr.i | 39 - .../share/swig/4.1.0/mzscheme/std_common.i | 23 - .../share/swig/4.1.0/mzscheme/std_deque.i | 1 - .../swig/share/swig/4.1.0/mzscheme/std_map.i | 1388 ------------ .../swig/share/swig/4.1.0/mzscheme/std_pair.i | 874 -------- .../share/swig/4.1.0/mzscheme/std_string.i | 64 - .../swig/4.1.0/mzscheme/std_unique_ptr.i | 39 - .../share/swig/4.1.0/mzscheme/std_vector.i | 451 ---- .../bin/swig/share/swig/4.1.0/mzscheme/stl.i | 10 - .../swig/share/swig/4.1.0/mzscheme/swigmove.i | 19 - .../swig/share/swig/4.1.0/mzscheme/typemaps.i | 399 ---- .../bin/swig/share/swig/4.1.0/ocaml/carray.i | 131 -- .../bin/swig/share/swig/4.1.0/ocaml/class.swg | 67 - .../bin/swig/share/swig/4.1.0/ocaml/cstring.i | 268 --- .../swig/share/swig/4.1.0/ocaml/director.swg | 101 - .../share/swig/4.1.0/ocaml/extra-install.list | 4 - linux/bin/swig/share/swig/4.1.0/ocaml/ocaml.i | 50 - .../bin/swig/share/swig/4.1.0/ocaml/ocaml.swg | 320 --- .../swig/share/swig/4.1.0/ocaml/ocamlkw.swg | 72 - .../swig/share/swig/4.1.0/ocaml/ocamlrun.swg | 607 ----- .../share/swig/4.1.0/ocaml/ocamlrundec.swg | 212 -- .../swig/share/swig/4.1.0/ocaml/preamble.swg | 17 - .../swig/share/swig/4.1.0/ocaml/std_common.i | 23 - .../swig/share/swig/4.1.0/ocaml/std_complex.i | 65 - .../swig/share/swig/4.1.0/ocaml/std_deque.i | 28 - .../swig/share/swig/4.1.0/ocaml/std_except.i | 23 - .../swig/share/swig/4.1.0/ocaml/std_list.i | 217 -- .../bin/swig/share/swig/4.1.0/ocaml/std_map.i | 79 - .../swig/share/swig/4.1.0/ocaml/std_pair.i | 36 - .../swig/share/swig/4.1.0/ocaml/std_string.i | 136 -- .../swig/share/swig/4.1.0/ocaml/std_vector.i | 98 - linux/bin/swig/share/swig/4.1.0/ocaml/stl.i | 10 - linux/bin/swig/share/swig/4.1.0/ocaml/swig.ml | 166 -- .../bin/swig/share/swig/4.1.0/ocaml/swig.mli | 62 - .../swig/share/swig/4.1.0/ocaml/swigmove.i | 11 - .../bin/swig/share/swig/4.1.0/ocaml/swigp4.ml | 135 -- .../swig/share/swig/4.1.0/ocaml/typecheck.i | 197 -- .../swig/share/swig/4.1.0/ocaml/typemaps.i | 44 - .../share/swig/4.1.0/ocaml/typeregister.swg | 2 - .../swig/share/swig/4.1.0/octave/argcargv.i | 44 - .../swig/share/swig/4.1.0/octave/attribute.i | 1 - .../swig/4.1.0/octave/boost_shared_ptr.i | 401 ---- .../swig/share/swig/4.1.0/octave/carrays.i | 5 - .../bin/swig/share/swig/4.1.0/octave/cdata.i | 1 - .../swig/share/swig/4.1.0/octave/cmalloc.i | 1 - .../swig/share/swig/4.1.0/octave/director.swg | 146 -- .../swig/share/swig/4.1.0/octave/exception.i | 14 - .../swig/4.1.0/octave/extra-install.list | 2 - .../swig/share/swig/4.1.0/octave/factory.i | 1 - .../swig/share/swig/4.1.0/octave/implicit.i | 7 - .../swig/share/swig/4.1.0/octave/octave.swg | 8 - .../share/swig/4.1.0/octave/octcomplex.swg | 92 - .../share/swig/4.1.0/octave/octcontainer.swg | 623 ------ .../share/swig/4.1.0/octave/octfragments.swg | 1 - .../share/swig/4.1.0/octave/octheaders.hpp | 130 -- .../share/swig/4.1.0/octave/octiterators.swg | 357 --- .../swig/share/swig/4.1.0/octave/octopers.swg | 86 - .../share/swig/4.1.0/octave/octprimtypes.swg | 254 --- .../swig/share/swig/4.1.0/octave/octrun.swg | 1669 -------------- .../share/swig/4.1.0/octave/octruntime.swg | 425 ---- .../share/swig/4.1.0/octave/octstdcommon.swg | 222 -- .../share/swig/4.1.0/octave/octtypemaps.swg | 99 - .../share/swig/4.1.0/octave/octuserdir.swg | 72 - .../swig/share/swig/4.1.0/octave/std_alloc.i | 1 - .../share/swig/4.1.0/octave/std_auto_ptr.i | 39 - .../swig/4.1.0/octave/std_basic_string.i | 64 - .../swig/share/swig/4.1.0/octave/std_carray.i | 0 .../share/swig/4.1.0/octave/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/octave/std_common.i | 72 - .../share/swig/4.1.0/octave/std_complex.i | 25 - .../share/swig/4.1.0/octave/std_container.i | 2 - .../swig/share/swig/4.1.0/octave/std_deque.i | 25 - .../swig/share/swig/4.1.0/octave/std_except.i | 1 - .../swig/share/swig/4.1.0/octave/std_list.i | 26 - .../swig/share/swig/4.1.0/octave/std_map.i | 157 -- .../swig/share/swig/4.1.0/octave/std_pair.i | 147 -- .../share/swig/4.1.0/octave/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/octave/std_string.i | 1 - .../share/swig/4.1.0/octave/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/octave/std_vector.i | 26 - .../share/swig/4.1.0/octave/std_wstring.i | 1 - linux/bin/swig/share/swig/4.1.0/octave/stl.i | 10 - .../swig/share/swig/4.1.0/octave/swigmove.i | 1 - .../swig/share/swig/4.1.0/octave/typemaps.i | 1 - .../swig/share/swig/4.1.0/perl5/Makefile.in | 120 - .../swig/share/swig/4.1.0/perl5/Makefile.pl | 19 - .../swig/share/swig/4.1.0/perl5/argcargv.i | 32 - .../swig/share/swig/4.1.0/perl5/attribute.i | 1 - .../bin/swig/share/swig/4.1.0/perl5/carrays.i | 2 - linux/bin/swig/share/swig/4.1.0/perl5/cdata.i | 1 - .../bin/swig/share/swig/4.1.0/perl5/cmalloc.i | 1 - .../swig/share/swig/4.1.0/perl5/cpointer.i | 1 - .../bin/swig/share/swig/4.1.0/perl5/cstring.i | 1 - .../swig/share/swig/4.1.0/perl5/director.swg | 317 --- .../swig/share/swig/4.1.0/perl5/exception.i | 5 - .../share/swig/4.1.0/perl5/extra-install.list | 2 - .../bin/swig/share/swig/4.1.0/perl5/factory.i | 1 - .../bin/swig/share/swig/4.1.0/perl5/noembed.h | 116 - .../bin/swig/share/swig/4.1.0/perl5/perl5.swg | 42 - .../share/swig/4.1.0/perl5/perlerrors.swg | 34 - .../share/swig/4.1.0/perl5/perlfragments.swg | 23 - .../swig/share/swig/4.1.0/perl5/perlhead.swg | 91 - .../swig/share/swig/4.1.0/perl5/perlinit.swg | 78 - .../swig/share/swig/4.1.0/perl5/perlkw.swg | 251 --- .../share/swig/4.1.0/perl5/perlmacros.swg | 2 - .../swig/share/swig/4.1.0/perl5/perlmain.i | 82 - .../swig/share/swig/4.1.0/perl5/perlopers.swg | 54 - .../share/swig/4.1.0/perl5/perlprimtypes.swg | 364 --- .../swig/share/swig/4.1.0/perl5/perlrun.swg | 493 ----- .../share/swig/4.1.0/perl5/perlruntime.swg | 8 - .../share/swig/4.1.0/perl5/perlstrings.swg | 59 - .../share/swig/4.1.0/perl5/perltypemaps.swg | 104 - .../share/swig/4.1.0/perl5/perluserdir.swg | 2 - .../swig/share/swig/4.1.0/perl5/reference.i | 261 --- .../share/swig/4.1.0/perl5/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/perl5/std_common.i | 28 - .../swig/share/swig/4.1.0/perl5/std_deque.i | 1 - .../swig/share/swig/4.1.0/perl5/std_except.i | 1 - .../swig/share/swig/4.1.0/perl5/std_list.i | 377 ---- .../bin/swig/share/swig/4.1.0/perl5/std_map.i | 80 - .../swig/share/swig/4.1.0/perl5/std_pair.i | 36 - .../swig/share/swig/4.1.0/perl5/std_string.i | 2 - .../share/swig/4.1.0/perl5/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/perl5/std_vector.i | 592 ----- linux/bin/swig/share/swig/4.1.0/perl5/stl.i | 10 - .../swig/share/swig/4.1.0/perl5/swigmove.i | 1 - .../swig/share/swig/4.1.0/perl5/typemaps.i | 371 ---- .../bin/swig/share/swig/4.1.0/php/argcargv.i | 40 - linux/bin/swig/share/swig/4.1.0/php/const.i | 103 - .../swig/share/swig/4.1.0/php/director.swg | 180 -- linux/bin/swig/share/swig/4.1.0/php/factory.i | 109 - linux/bin/swig/share/swig/4.1.0/php/php.swg | 594 ----- .../bin/swig/share/swig/4.1.0/php/phpinit.swg | 16 - .../swig/share/swig/4.1.0/php/phpinterfaces.i | 62 - linux/bin/swig/share/swig/4.1.0/php/phpkw.swg | 888 -------- .../swig/share/swig/4.1.0/php/phppointers.i | 42 - .../bin/swig/share/swig/4.1.0/php/phprun.swg | 272 --- .../swig/share/swig/4.1.0/php/std_auto_ptr.i | 41 - .../swig/share/swig/4.1.0/php/std_common.i | 9 - .../bin/swig/share/swig/4.1.0/php/std_deque.i | 1 - linux/bin/swig/share/swig/4.1.0/php/std_map.i | 82 - .../bin/swig/share/swig/4.1.0/php/std_pair.i | 36 - .../swig/share/swig/4.1.0/php/std_string.i | 90 - .../share/swig/4.1.0/php/std_unique_ptr.i | 41 - .../swig/share/swig/4.1.0/php/std_vector.i | 114 - linux/bin/swig/share/swig/4.1.0/php/stl.i | 9 - .../bin/swig/share/swig/4.1.0/php/swigmove.i | 24 - .../bin/swig/share/swig/4.1.0/php/typemaps.i | 295 --- linux/bin/swig/share/swig/4.1.0/php/utils.i | 115 - linux/bin/swig/share/swig/4.1.0/pointer.i | 0 .../swig/share/swig/4.1.0/python/Makefile.in | 119 - linux/bin/swig/share/swig/4.1.0/python/README | 103 - .../swig/share/swig/4.1.0/python/argcargv.i | 89 - .../swig/share/swig/4.1.0/python/attribute.i | 1 - .../swig/4.1.0/python/boost_shared_ptr.i | 411 ---- .../swig/share/swig/4.1.0/python/builtin.swg | 764 ------- .../swig/share/swig/4.1.0/python/carrays.i | 13 - .../swig/share/swig/4.1.0/python/ccomplex.i | 27 - .../bin/swig/share/swig/4.1.0/python/cdata.i | 1 - .../swig/share/swig/4.1.0/python/cmalloc.i | 1 - .../swig/share/swig/4.1.0/python/complex.i | 6 - .../swig/share/swig/4.1.0/python/cpointer.i | 1 - .../swig/share/swig/4.1.0/python/cstring.i | 1 - .../swig/share/swig/4.1.0/python/cwstring.i | 3 - .../swig/share/swig/4.1.0/python/director.swg | 389 ---- .../bin/swig/share/swig/4.1.0/python/embed.i | 120 - .../swig/share/swig/4.1.0/python/exception.i | 6 - .../swig/share/swig/4.1.0/python/factory.i | 1 - linux/bin/swig/share/swig/4.1.0/python/file.i | 41 - .../swig/share/swig/4.1.0/python/implicit.i | 7 - .../bin/swig/share/swig/4.1.0/python/pyabc.i | 14 - .../swig/share/swig/4.1.0/python/pyapi.swg | 30 - .../share/swig/4.1.0/python/pybackward.swg | 45 - .../swig/share/swig/4.1.0/python/pybuffer.i | 119 - .../share/swig/4.1.0/python/pyclasses.swg | 157 -- .../share/swig/4.1.0/python/pycomplex.swg | 86 - .../share/swig/4.1.0/python/pycontainer.swg | 1082 --------- .../swig/share/swig/4.1.0/python/pydocs.swg | 45 - .../swig/share/swig/4.1.0/python/pyerrors.swg | 107 - .../share/swig/4.1.0/python/pyfragments.swg | 23 - .../swig/share/swig/4.1.0/python/pyhead.swg | 75 - .../swig/share/swig/4.1.0/python/pyinit.swg | 325 --- .../share/swig/4.1.0/python/pyiterators.swg | 458 ---- .../swig/share/swig/4.1.0/python/pymacros.swg | 4 - .../share/swig/4.1.0/python/pyname_compat.i | 85 - .../swig/share/swig/4.1.0/python/pyopers.swg | 264 --- .../share/swig/4.1.0/python/pyprimtypes.swg | 353 --- .../swig/share/swig/4.1.0/python/pyrun.swg | 1913 ---------------- .../share/swig/4.1.0/python/pyruntime.swg | 49 - .../share/swig/4.1.0/python/pystdcommon.swg | 265 --- .../share/swig/4.1.0/python/pystrings.swg | 139 -- .../swig/share/swig/4.1.0/python/python.swg | 59 - .../swig/share/swig/4.1.0/python/pythonkw.swg | 140 -- .../share/swig/4.1.0/python/pythreads.swg | 68 - .../share/swig/4.1.0/python/pytuplehlp.swg | 8 - .../share/swig/4.1.0/python/pytypemaps.swg | 105 - .../share/swig/4.1.0/python/pyuserdir.swg | 242 -- .../share/swig/4.1.0/python/pywstrings.swg | 85 - .../swig/share/swig/4.1.0/python/std_alloc.i | 1 - .../swig/share/swig/4.1.0/python/std_array.i | 91 - .../share/swig/4.1.0/python/std_auto_ptr.i | 39 - .../swig/4.1.0/python/std_basic_string.i | 89 - .../swig/share/swig/4.1.0/python/std_carray.i | 54 - .../share/swig/4.1.0/python/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/python/std_common.i | 74 - .../share/swig/4.1.0/python/std_complex.i | 27 - .../share/swig/4.1.0/python/std_container.i | 2 - .../swig/share/swig/4.1.0/python/std_deque.i | 27 - .../swig/share/swig/4.1.0/python/std_except.i | 1 - .../swig/share/swig/4.1.0/python/std_ios.i | 3 - .../share/swig/4.1.0/python/std_iostream.i | 8 - .../swig/share/swig/4.1.0/python/std_list.i | 28 - .../swig/share/swig/4.1.0/python/std_map.i | 310 --- .../share/swig/4.1.0/python/std_multimap.i | 93 - .../share/swig/4.1.0/python/std_multiset.i | 41 - .../swig/share/swig/4.1.0/python/std_pair.i | 206 -- .../swig/share/swig/4.1.0/python/std_set.i | 67 - .../share/swig/4.1.0/python/std_shared_ptr.i | 2 - .../share/swig/4.1.0/python/std_sstream.i | 1 - .../share/swig/4.1.0/python/std_streambuf.i | 1 - .../swig/share/swig/4.1.0/python/std_string.i | 1 - .../share/swig/4.1.0/python/std_unique_ptr.i | 39 - .../swig/4.1.0/python/std_unordered_map.i | 296 --- .../4.1.0/python/std_unordered_multimap.i | 100 - .../4.1.0/python/std_unordered_multiset.i | 48 - .../swig/4.1.0/python/std_unordered_set.i | 67 - .../swig/share/swig/4.1.0/python/std_vector.i | 34 - .../share/swig/4.1.0/python/std_vectora.i | 31 - .../swig/share/swig/4.1.0/python/std_wios.i | 1 - .../share/swig/4.1.0/python/std_wiostream.i | 10 - .../share/swig/4.1.0/python/std_wsstream.i | 1 - .../share/swig/4.1.0/python/std_wstreambuf.i | 1 - .../share/swig/4.1.0/python/std_wstring.i | 3 - linux/bin/swig/share/swig/4.1.0/python/stl.i | 10 - .../swig/share/swig/4.1.0/python/swigmove.i | 1 - .../swig/share/swig/4.1.0/python/typemaps.i | 148 -- .../bin/swig/share/swig/4.1.0/python/wchar.i | 21 - .../share/swig/4.1.0/r/boost_shared_ptr.i | 420 ---- linux/bin/swig/share/swig/4.1.0/r/cdata.i | 1 - linux/bin/swig/share/swig/4.1.0/r/exception.i | 8 - linux/bin/swig/share/swig/4.1.0/r/r.swg | 281 --- .../swig/share/swig/4.1.0/r/rcontainer.swg | 198 -- .../swig/share/swig/4.1.0/r/rfragments.swg | 191 -- linux/bin/swig/share/swig/4.1.0/r/rkw.swg | 36 - linux/bin/swig/share/swig/4.1.0/r/ropers.swg | 32 - linux/bin/swig/share/swig/4.1.0/r/rrun.swg | 420 ---- .../swig/share/swig/4.1.0/r/rstdcommon.swg | 205 -- linux/bin/swig/share/swig/4.1.0/r/rtype.swg | 328 --- linux/bin/swig/share/swig/4.1.0/r/srun.swg | 150 -- linux/bin/swig/share/swig/4.1.0/r/std_alloc.i | 1 - .../bin/swig/share/swig/4.1.0/r/std_common.i | 73 - .../swig/share/swig/4.1.0/r/std_container.i | 2 - linux/bin/swig/share/swig/4.1.0/r/std_deque.i | 1 - .../bin/swig/share/swig/4.1.0/r/std_except.i | 1 - linux/bin/swig/share/swig/4.1.0/r/std_list.i | 5 - linux/bin/swig/share/swig/4.1.0/r/std_map.i | 5 - linux/bin/swig/share/swig/4.1.0/r/std_pair.i | 5 - .../swig/share/swig/4.1.0/r/std_shared_ptr.i | 2 - .../bin/swig/share/swig/4.1.0/r/std_string.i | 1 - .../bin/swig/share/swig/4.1.0/r/std_vector.i | 1105 ---------- linux/bin/swig/share/swig/4.1.0/r/stl.i | 9 - linux/bin/swig/share/swig/4.1.0/r/swigmove.i | 1 - linux/bin/swig/share/swig/4.1.0/r/typemaps.i | 1 - .../swig/share/swig/4.1.0/ruby/Makefile.swig | 42 - .../bin/swig/share/swig/4.1.0/ruby/argcargv.i | 44 - .../swig/share/swig/4.1.0/ruby/attribute.i | 1 - .../share/swig/4.1.0/ruby/boost_shared_ptr.i | 401 ---- .../bin/swig/share/swig/4.1.0/ruby/carrays.i | 6 - linux/bin/swig/share/swig/4.1.0/ruby/cdata.i | 1 - .../bin/swig/share/swig/4.1.0/ruby/cmalloc.i | 1 - .../bin/swig/share/swig/4.1.0/ruby/cpointer.i | 1 - .../bin/swig/share/swig/4.1.0/ruby/cstring.i | 1 - .../swig/share/swig/4.1.0/ruby/director.swg | 311 --- linux/bin/swig/share/swig/4.1.0/ruby/embed.i | 16 - .../swig/share/swig/4.1.0/ruby/exception.i | 5 - .../bin/swig/share/swig/4.1.0/ruby/extconf.rb | 9 - .../share/swig/4.1.0/ruby/extra-install.list | 3 - .../bin/swig/share/swig/4.1.0/ruby/factory.i | 1 - linux/bin/swig/share/swig/4.1.0/ruby/file.i | 39 - .../swig/share/swig/4.1.0/ruby/progargcargv.i | 34 - linux/bin/swig/share/swig/4.1.0/ruby/ruby.swg | 72 - .../swig/share/swig/4.1.0/ruby/rubyapi.swg | 36 - .../share/swig/4.1.0/ruby/rubyautodoc.swg | 105 - .../share/swig/4.1.0/ruby/rubyclasses.swg | 404 ---- .../share/swig/4.1.0/ruby/rubycomplex.swg | 148 -- .../share/swig/4.1.0/ruby/rubycontainer.swg | 1114 ---------- .../4.1.0/ruby/rubycontainer_extended.swg | 134 -- .../swig/share/swig/4.1.0/ruby/rubydef.swg | 1 - .../swig/share/swig/4.1.0/ruby/rubyerrors.swg | 154 -- .../share/swig/4.1.0/ruby/rubyfragments.swg | 23 - .../swig/share/swig/4.1.0/ruby/rubyhead.swg | 185 -- .../swig/share/swig/4.1.0/ruby/rubyinit.swg | 1 - .../share/swig/4.1.0/ruby/rubyiterators.swg | 932 -------- .../bin/swig/share/swig/4.1.0/ruby/rubykw.swg | 72 - .../swig/share/swig/4.1.0/ruby/rubymacros.swg | 13 - .../swig/share/swig/4.1.0/ruby/rubyopers.swg | 55 - .../share/swig/4.1.0/ruby/rubyprimtypes.swg | 228 -- .../swig/share/swig/4.1.0/ruby/rubyrun.swg | 468 ---- .../share/swig/4.1.0/ruby/rubyruntime.swg | 9 - .../share/swig/4.1.0/ruby/rubystdautodoc.swg | 33 - .../share/swig/4.1.0/ruby/rubystdcommon.swg | 199 -- .../swig/4.1.0/ruby/rubystdcommon_forward.swg | 15 - .../share/swig/4.1.0/ruby/rubystdfunctors.swg | 162 -- .../share/swig/4.1.0/ruby/rubystrings.swg | 57 - .../share/swig/4.1.0/ruby/rubytracking.swg | 136 -- .../share/swig/4.1.0/ruby/rubytypemaps.swg | 62 - .../share/swig/4.1.0/ruby/rubyuserdir.swg | 20 - .../share/swig/4.1.0/ruby/rubywstrings.swg | 58 - .../swig/share/swig/4.1.0/ruby/std_alloc.i | 1 - .../swig/share/swig/4.1.0/ruby/std_array.i | 102 - .../swig/share/swig/4.1.0/ruby/std_auto_ptr.i | 39 - .../share/swig/4.1.0/ruby/std_basic_string.i | 92 - .../share/swig/4.1.0/ruby/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/ruby/std_common.i | 74 - .../swig/share/swig/4.1.0/ruby/std_complex.i | 29 - .../share/swig/4.1.0/ruby/std_container.i | 2 - .../swig/share/swig/4.1.0/ruby/std_deque.i | 30 - .../swig/share/swig/4.1.0/ruby/std_except.i | 1 - .../swig/share/swig/4.1.0/ruby/std_functors.i | 29 - .../bin/swig/share/swig/4.1.0/ruby/std_ios.i | 14 - .../swig/share/swig/4.1.0/ruby/std_iostream.i | 12 - .../bin/swig/share/swig/4.1.0/ruby/std_list.i | 42 - .../bin/swig/share/swig/4.1.0/ruby/std_map.i | 424 ---- .../swig/share/swig/4.1.0/ruby/std_multimap.i | 226 -- .../swig/share/swig/4.1.0/ruby/std_multiset.i | 50 - .../bin/swig/share/swig/4.1.0/ruby/std_pair.i | 212 -- .../swig/share/swig/4.1.0/ruby/std_queue.i | 33 - .../bin/swig/share/swig/4.1.0/ruby/std_set.i | 228 -- .../share/swig/4.1.0/ruby/std_shared_ptr.i | 144 -- .../swig/share/swig/4.1.0/ruby/std_sstream.i | 2 - .../swig/share/swig/4.1.0/ruby/std_stack.i | 35 - .../share/swig/4.1.0/ruby/std_streambuf.i | 1 - .../swig/share/swig/4.1.0/ruby/std_string.i | 7 - .../share/swig/4.1.0/ruby/std_unique_ptr.i | 39 - .../share/swig/4.1.0/ruby/std_unordered_map.i | 83 - .../swig/4.1.0/ruby/std_unordered_multimap.i | 100 - .../swig/4.1.0/ruby/std_unordered_multiset.i | 50 - .../share/swig/4.1.0/ruby/std_unordered_set.i | 50 - .../swig/share/swig/4.1.0/ruby/std_vector.i | 52 - .../swig/share/swig/4.1.0/ruby/std_vectora.i | 36 - .../swig/share/swig/4.1.0/ruby/std_wstring.i | 63 - linux/bin/swig/share/swig/4.1.0/ruby/stl.i | 10 - .../bin/swig/share/swig/4.1.0/ruby/swigmove.i | 1 - .../bin/swig/share/swig/4.1.0/ruby/timeval.i | 69 - .../bin/swig/share/swig/4.1.0/ruby/typemaps.i | 314 --- linux/bin/swig/share/swig/4.1.0/runtime.swg | 0 .../swig/4.1.0/scilab/boost_shared_ptr.i | 401 ---- .../swig/share/swig/4.1.0/scilab/carrays.i | 5 - .../swig/share/swig/4.1.0/scilab/cmalloc.i | 1 - .../swig/share/swig/4.1.0/scilab/cpointer.i | 1 - .../swig/share/swig/4.1.0/scilab/exception.i | 6 - .../bin/swig/share/swig/4.1.0/scilab/matrix.i | 11 - .../swig/share/swig/4.1.0/scilab/sciarray.swg | 115 - .../swig/share/swig/4.1.0/scilab/scibool.swg | 156 -- .../swig/share/swig/4.1.0/scilab/scichar.swg | 292 --- .../share/swig/4.1.0/scilab/scicontainer.swg | 445 ---- .../share/swig/4.1.0/scilab/scidouble.swg | 108 - .../swig/share/swig/4.1.0/scilab/scienum.swg | 31 - .../share/swig/4.1.0/scilab/sciexception.swg | 60 - .../swig/share/swig/4.1.0/scilab/scifloat.swg | 83 - .../swig/share/swig/4.1.0/scilab/sciint.swg | 202 -- .../share/swig/4.1.0/scilab/sciiterators.swg | 363 --- .../swig/share/swig/4.1.0/scilab/scilab.swg | 6 - .../swig/share/swig/4.1.0/scilab/scilist.swg | 91 - .../swig/share/swig/4.1.0/scilab/scilong.swg | 123 -- .../share/swig/4.1.0/scilab/scilonglong.swg | 54 - .../share/swig/4.1.0/scilab/scimacros.swg | 5 - .../share/swig/4.1.0/scilab/scimatrixbool.swg | 170 -- .../share/swig/4.1.0/scilab/scimatrixchar.swg | 199 -- .../swig/4.1.0/scilab/scimatrixdouble.swg | 170 -- .../share/swig/4.1.0/scilab/scimatrixint.swg | 175 -- .../share/swig/4.1.0/scilab/scimisctypes.swg | 69 - .../share/swig/4.1.0/scilab/scipointer.swg | 32 - .../share/swig/4.1.0/scilab/sciprimtypes.swg | 23 - .../swig/share/swig/4.1.0/scilab/scirun.swg | 532 ----- .../share/swig/4.1.0/scilab/sciruntime.swg | 47 - .../share/swig/4.1.0/scilab/scisequence.swg | 195 -- .../swig/4.1.0/scilab/scisequencebool.swg | 98 - .../swig/4.1.0/scilab/scisequencedouble.swg | 99 - .../swig/4.1.0/scilab/scisequencefloat.swg | 98 - .../swig/4.1.0/scilab/scisequenceint.swg | 104 - .../swig/4.1.0/scilab/scisequencepointer.swg | 123 -- .../swig/4.1.0/scilab/scisequencestring.swg | 97 - .../swig/share/swig/4.1.0/scilab/scishort.swg | 188 -- .../share/swig/4.1.0/scilab/scisignedchar.swg | 185 -- .../share/swig/4.1.0/scilab/scistdcommon.swg | 218 -- .../share/swig/4.1.0/scilab/scitypemaps.swg | 259 --- .../swig/4.1.0/scilab/sciunsignedchar.swg | 190 -- .../swig/4.1.0/scilab/sciunsignedint.swg | 204 -- .../swig/4.1.0/scilab/sciunsignedlong.swg | 53 - .../swig/4.1.0/scilab/sciunsignedshort.swg | 189 -- .../swig/share/swig/4.1.0/scilab/std_alloc.i | 2 - .../swig/4.1.0/scilab/std_basic_string.i | 45 - .../share/swig/4.1.0/scilab/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/scilab/std_common.i | 72 - .../share/swig/4.1.0/scilab/std_container.i | 3 - .../swig/share/swig/4.1.0/scilab/std_deque.i | 31 - .../swig/share/swig/4.1.0/scilab/std_except.i | 1 - .../swig/share/swig/4.1.0/scilab/std_list.i | 30 - .../swig/share/swig/4.1.0/scilab/std_map.i | 79 - .../share/swig/4.1.0/scilab/std_multiset.i | 30 - .../swig/share/swig/4.1.0/scilab/std_pair.i | 36 - .../swig/share/swig/4.1.0/scilab/std_set.i | 32 - .../share/swig/4.1.0/scilab/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/scilab/std_string.i | 47 - .../swig/share/swig/4.1.0/scilab/std_vector.i | 31 - linux/bin/swig/share/swig/4.1.0/scilab/stl.i | 10 - .../swig/share/swig/4.1.0/scilab/swigmove.i | 1 - .../swig/share/swig/4.1.0/scilab/typemaps.i | 62 - linux/bin/swig/share/swig/4.1.0/shared_ptr.i | 0 linux/bin/swig/share/swig/4.1.0/std/README | 0 .../swig/share/swig/4.1.0/std/_std_deque.i | 0 .../bin/swig/share/swig/4.1.0/std/std_alloc.i | 0 .../bin/swig/share/swig/4.1.0/std/std_array.i | 0 .../share/swig/4.1.0/std/std_basic_string.i | 0 .../swig/share/swig/4.1.0/std/std_carray.swg | 0 .../share/swig/4.1.0/std/std_char_traits.i | 0 .../swig/share/swig/4.1.0/std/std_common.i | 0 .../swig/share/swig/4.1.0/std/std_container.i | 0 .../bin/swig/share/swig/4.1.0/std/std_deque.i | 0 .../swig/share/swig/4.1.0/std/std_except.i | 0 linux/bin/swig/share/swig/4.1.0/std/std_ios.i | 0 .../swig/share/swig/4.1.0/std/std_iostream.i | 0 .../bin/swig/share/swig/4.1.0/std/std_list.i | 0 linux/bin/swig/share/swig/4.1.0/std/std_map.i | 0 .../swig/share/swig/4.1.0/std/std_multimap.i | 0 .../swig/share/swig/4.1.0/std/std_multiset.i | 0 .../bin/swig/share/swig/4.1.0/std/std_pair.i | 0 .../bin/swig/share/swig/4.1.0/std/std_queue.i | 0 linux/bin/swig/share/swig/4.1.0/std/std_set.i | 0 .../swig/share/swig/4.1.0/std/std_sstream.i | 0 .../bin/swig/share/swig/4.1.0/std/std_stack.i | 0 .../swig/share/swig/4.1.0/std/std_streambuf.i | 0 .../swig/share/swig/4.1.0/std/std_string.i | 0 .../share/swig/4.1.0/std/std_unordered_map.i | 0 .../swig/4.1.0/std/std_unordered_multimap.i | 0 .../swig/4.1.0/std/std_unordered_multiset.i | 0 .../share/swig/4.1.0/std/std_unordered_set.i | 0 .../swig/share/swig/4.1.0/std/std_vector.i | 0 .../swig/share/swig/4.1.0/std/std_vectora.i | 0 .../bin/swig/share/swig/4.1.0/std/std_wios.i | 0 .../swig/share/swig/4.1.0/std/std_wiostream.i | 0 .../swig/share/swig/4.1.0/std/std_wsstream.i | 0 .../share/swig/4.1.0/std/std_wstreambuf.i | 0 .../swig/share/swig/4.1.0/std/std_wstring.i | 0 linux/bin/swig/share/swig/4.1.0/std_except.i | 0 linux/bin/swig/share/swig/4.1.0/stdint.i | 0 linux/bin/swig/share/swig/4.1.0/stl.i | 0 linux/bin/swig/share/swig/4.1.0/swig.swg | 0 linux/bin/swig/share/swig/4.1.0/swigarch.i | 0 .../bin/swig/share/swig/4.1.0/swigerrors.swg | 0 .../swig/share/swig/4.1.0/swigfragments.swg | 0 linux/bin/swig/share/swig/4.1.0/swiginit.swg | 0 .../bin/swig/share/swig/4.1.0/swiglabels.swg | 0 linux/bin/swig/share/swig/4.1.0/swigrun.i | 0 linux/bin/swig/share/swig/4.1.0/swigrun.swg | 0 linux/bin/swig/share/swig/4.1.0/swigwarn.swg | 0 .../swig/share/swig/4.1.0/swigwarnings.swg | 0 .../bin/swig/share/swig/4.1.0/tcl/Makefile.in | 122 -- .../bin/swig/share/swig/4.1.0/tcl/argcargv.i | 29 - .../bin/swig/share/swig/4.1.0/tcl/attribute.i | 1 - linux/bin/swig/share/swig/4.1.0/tcl/carrays.i | 4 - linux/bin/swig/share/swig/4.1.0/tcl/cdata.i | 1 - linux/bin/swig/share/swig/4.1.0/tcl/cmalloc.i | 1 - .../bin/swig/share/swig/4.1.0/tcl/cpointer.i | 1 - linux/bin/swig/share/swig/4.1.0/tcl/cstring.i | 1 - .../bin/swig/share/swig/4.1.0/tcl/cwstring.i | 2 - .../bin/swig/share/swig/4.1.0/tcl/exception.i | 6 - linux/bin/swig/share/swig/4.1.0/tcl/factory.i | 1 - .../swig/share/swig/4.1.0/tcl/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/tcl/std_common.i | 17 - .../bin/swig/share/swig/4.1.0/tcl/std_deque.i | 1 - .../swig/share/swig/4.1.0/tcl/std_except.i | 1 - linux/bin/swig/share/swig/4.1.0/tcl/std_map.i | 79 - .../bin/swig/share/swig/4.1.0/tcl/std_pair.i | 36 - .../swig/share/swig/4.1.0/tcl/std_string.i | 2 - .../share/swig/4.1.0/tcl/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/tcl/std_vector.i | 436 ---- .../swig/share/swig/4.1.0/tcl/std_wstring.i | 2 - linux/bin/swig/share/swig/4.1.0/tcl/stl.i | 10 - .../bin/swig/share/swig/4.1.0/tcl/swigmove.i | 1 - linux/bin/swig/share/swig/4.1.0/tcl/tcl8.swg | 42 - .../bin/swig/share/swig/4.1.0/tcl/tclapi.swg | 108 - .../swig/share/swig/4.1.0/tcl/tclerrors.swg | 76 - .../share/swig/4.1.0/tcl/tclfragments.swg | 22 - .../bin/swig/share/swig/4.1.0/tcl/tclinit.swg | 140 -- .../bin/swig/share/swig/4.1.0/tcl/tclinterp.i | 17 - linux/bin/swig/share/swig/4.1.0/tcl/tclkw.swg | 10 - .../swig/share/swig/4.1.0/tcl/tclmacros.swg | 4 - .../swig/share/swig/4.1.0/tcl/tclopers.swg | 43 - .../share/swig/4.1.0/tcl/tclprimtypes.swg | 230 -- .../bin/swig/share/swig/4.1.0/tcl/tclresult.i | 27 - .../bin/swig/share/swig/4.1.0/tcl/tclrun.swg | 722 ------ .../swig/share/swig/4.1.0/tcl/tclruntime.swg | 15 - linux/bin/swig/share/swig/4.1.0/tcl/tclsh.i | 57 - .../swig/share/swig/4.1.0/tcl/tclstrings.swg | 31 - .../swig/share/swig/4.1.0/tcl/tcltypemaps.swg | 86 - .../swig/share/swig/4.1.0/tcl/tcluserdir.swg | 5 - .../swig/share/swig/4.1.0/tcl/tclwstrings.swg | 68 - .../bin/swig/share/swig/4.1.0/tcl/typemaps.i | 464 ---- linux/bin/swig/share/swig/4.1.0/tcl/wish.i | 113 - .../bin/swig/share/swig/4.1.0/typemaps/README | 0 .../share/swig/4.1.0/typemaps/attribute.swg | 0 .../share/swig/4.1.0/typemaps/carrays.swg | 0 .../swig/share/swig/4.1.0/typemaps/cdata.swg | 0 .../share/swig/4.1.0/typemaps/cmalloc.swg | 0 .../share/swig/4.1.0/typemaps/cpointer.swg | 0 .../share/swig/4.1.0/typemaps/cstring.swg | 0 .../share/swig/4.1.0/typemaps/cstrings.swg | 0 .../share/swig/4.1.0/typemaps/cwstring.swg | 0 .../share/swig/4.1.0/typemaps/enumint.swg | 0 .../share/swig/4.1.0/typemaps/exception.swg | 0 .../share/swig/4.1.0/typemaps/factory.swg | 0 .../share/swig/4.1.0/typemaps/fragments.swg | 0 .../share/swig/4.1.0/typemaps/implicit.swg | 0 .../share/swig/4.1.0/typemaps/inoutlist.swg | 0 .../share/swig/4.1.0/typemaps/misctypes.swg | 0 .../share/swig/4.1.0/typemaps/primtypes.swg | 0 .../share/swig/4.1.0/typemaps/ptrtypes.swg | 0 .../share/swig/4.1.0/typemaps/std_except.swg | 0 .../share/swig/4.1.0/typemaps/std_string.swg | 0 .../share/swig/4.1.0/typemaps/std_strings.swg | 0 .../share/swig/4.1.0/typemaps/std_wstring.swg | 0 .../swig/share/swig/4.1.0/typemaps/string.swg | 0 .../share/swig/4.1.0/typemaps/strings.swg | 0 .../share/swig/4.1.0/typemaps/swigmacros.swg | 0 .../share/swig/4.1.0/typemaps/swigmove.swg | 0 .../share/swig/4.1.0/typemaps/swigobject.swg | 0 .../share/swig/4.1.0/typemaps/swigtype.swg | 0 .../swig/4.1.0/typemaps/swigtypemaps.swg | 0 .../share/swig/4.1.0/typemaps/typemaps.swg | 0 .../share/swig/4.1.0/typemaps/valtypes.swg | 0 .../swig/share/swig/4.1.0/typemaps/void.swg | 0 .../share/swig/4.1.0/typemaps/wstring.swg | 0 linux/bin/swig/share/swig/4.1.0/wchar.i | 0 linux/bin/swig/share/swig/4.1.0/windows.i | 0 .../bin/swig/share/swig/4.1.0/xml/typemaps.i | 3 - linux/bin/swig/share/swig/4.1.0/xml/xml.swg | 1 - mac/bin/swig/bin/swig | Bin 2917265 -> 1854017 bytes mac/bin/swig/share/swig/4.1.0/allkw.swg | 0 mac/bin/swig/share/swig/4.1.0/attribute.i | 0 mac/bin/swig/share/swig/4.1.0/carrays.i | 0 mac/bin/swig/share/swig/4.1.0/cdata.i | 0 mac/bin/swig/share/swig/4.1.0/cmalloc.i | 0 mac/bin/swig/share/swig/4.1.0/constraints.i | 0 mac/bin/swig/share/swig/4.1.0/cpointer.i | 0 .../share/swig/4.1.0/csharp/arrays_csharp.i | 179 -- .../swig/4.1.0/csharp/boost_intrusive_ptr.i | 517 ----- .../swig/4.1.0/csharp/boost_shared_ptr.i | 323 --- .../swig/share/swig/4.1.0/csharp/complex.i | 5 - .../swig/share/swig/4.1.0/csharp/csharp.swg | 1120 ---------- .../share/swig/4.1.0/csharp/csharphead.swg | 339 --- .../swig/share/swig/4.1.0/csharp/csharpkw.swg | 97 - .../swig/share/swig/4.1.0/csharp/director.swg | 50 - .../swig/share/swig/4.1.0/csharp/enums.swg | 86 - .../share/swig/4.1.0/csharp/enumsimple.swg | 88 - .../share/swig/4.1.0/csharp/enumtypesafe.swg | 130 -- .../swig/share/swig/4.1.0/csharp/std_array.i | 227 -- .../share/swig/4.1.0/csharp/std_auto_ptr.i | 38 - .../swig/share/swig/4.1.0/csharp/std_common.i | 5 - .../share/swig/4.1.0/csharp/std_complex.i | 95 - .../swig/share/swig/4.1.0/csharp/std_deque.i | 1 - .../swig/share/swig/4.1.0/csharp/std_except.i | 32 - .../swig/share/swig/4.1.0/csharp/std_list.i | 519 ----- .../swig/share/swig/4.1.0/csharp/std_map.i | 312 --- .../swig/share/swig/4.1.0/csharp/std_pair.i | 36 - .../swig/share/swig/4.1.0/csharp/std_set.i | 311 --- .../share/swig/4.1.0/csharp/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/csharp/std_string.i | 111 - .../share/swig/4.1.0/csharp/std_unique_ptr.i | 38 - .../swig/share/swig/4.1.0/csharp/std_vector.i | 418 ---- .../share/swig/4.1.0/csharp/std_wstring.i | 146 -- mac/bin/swig/share/swig/4.1.0/csharp/stl.i | 10 - .../share/swig/4.1.0/csharp/swiginterface.i | 63 - .../swig/share/swig/4.1.0/csharp/swigmove.i | 16 - .../share/swig/4.1.0/csharp/swigtype_inout.i | 34 - .../swig/share/swig/4.1.0/csharp/typemaps.i | 253 --- mac/bin/swig/share/swig/4.1.0/csharp/wchar.i | 335 --- mac/bin/swig/share/swig/4.1.0/cstring.i | 0 mac/bin/swig/share/swig/4.1.0/cwstring.i | 0 .../share/swig/4.1.0/d/boost_shared_ptr.i | 293 --- mac/bin/swig/share/swig/4.1.0/d/carrays.i | 111 - mac/bin/swig/share/swig/4.1.0/d/cpointer.i | 171 -- mac/bin/swig/share/swig/4.1.0/d/d.swg | 46 - mac/bin/swig/share/swig/4.1.0/d/dclassgen.swg | 172 -- .../swig/share/swig/4.1.0/d/ddirectives.swg | 11 - mac/bin/swig/share/swig/4.1.0/d/denums.swg | 60 - .../swig/share/swig/4.1.0/d/dexception.swg | 30 - mac/bin/swig/share/swig/4.1.0/d/dhead.swg | 298 --- mac/bin/swig/share/swig/4.1.0/d/director.swg | 49 - mac/bin/swig/share/swig/4.1.0/d/dkw.swg | 128 -- .../swig/4.1.0/d/dmemberfunctionpointers.swg | 94 - .../swig/share/swig/4.1.0/d/doperators.swg | 259 --- .../swig/share/swig/4.1.0/d/dprimitives.swg | 171 -- mac/bin/swig/share/swig/4.1.0/d/dstrings.swg | 80 - mac/bin/swig/share/swig/4.1.0/d/dswigtype.swg | 241 -- mac/bin/swig/share/swig/4.1.0/d/dvoid.swg | 18 - .../swig/share/swig/4.1.0/d/std_auto_ptr.i | 42 - mac/bin/swig/share/swig/4.1.0/d/std_common.i | 5 - mac/bin/swig/share/swig/4.1.0/d/std_deque.i | 1 - mac/bin/swig/share/swig/4.1.0/d/std_except.i | 32 - mac/bin/swig/share/swig/4.1.0/d/std_map.i | 62 - mac/bin/swig/share/swig/4.1.0/d/std_pair.i | 36 - .../swig/share/swig/4.1.0/d/std_shared_ptr.i | 2 - mac/bin/swig/share/swig/4.1.0/d/std_string.i | 98 - .../swig/share/swig/4.1.0/d/std_unique_ptr.i | 42 - mac/bin/swig/share/swig/4.1.0/d/std_vector.i | 605 ----- mac/bin/swig/share/swig/4.1.0/d/stl.i | 10 - mac/bin/swig/share/swig/4.1.0/d/swigmove.i | 16 - mac/bin/swig/share/swig/4.1.0/d/typemaps.i | 261 --- .../swig/share/swig/4.1.0/d/wrapperloader.swg | 309 --- .../swig/share/swig/4.1.0/director_common.swg | 0 mac/bin/swig/share/swig/4.1.0/exception.i | 0 mac/bin/swig/share/swig/4.1.0/go/cdata.i | 97 - mac/bin/swig/share/swig/4.1.0/go/director.swg | 80 - mac/bin/swig/share/swig/4.1.0/go/exception.i | 7 - mac/bin/swig/share/swig/4.1.0/go/go.swg | 744 ------- mac/bin/swig/share/swig/4.1.0/go/gokw.swg | 33 - .../swig/share/swig/4.1.0/go/goruntime.swg | 217 -- mac/bin/swig/share/swig/4.1.0/go/gostring.swg | 29 - mac/bin/swig/share/swig/4.1.0/go/std_array.i | 43 - mac/bin/swig/share/swig/4.1.0/go/std_common.i | 4 - mac/bin/swig/share/swig/4.1.0/go/std_deque.i | 1 - mac/bin/swig/share/swig/4.1.0/go/std_except.i | 31 - mac/bin/swig/share/swig/4.1.0/go/std_list.i | 41 - mac/bin/swig/share/swig/4.1.0/go/std_map.i | 66 - mac/bin/swig/share/swig/4.1.0/go/std_pair.i | 36 - mac/bin/swig/share/swig/4.1.0/go/std_string.i | 162 -- mac/bin/swig/share/swig/4.1.0/go/std_vector.i | 92 - mac/bin/swig/share/swig/4.1.0/go/stl.i | 10 - mac/bin/swig/share/swig/4.1.0/go/swigmove.i | 15 - mac/bin/swig/share/swig/4.1.0/go/typemaps.i | 298 --- mac/bin/swig/share/swig/4.1.0/guile/Makefile | 3 - .../swig/share/swig/4.1.0/guile/common.scm | 70 - .../swig/share/swig/4.1.0/guile/cplusplus.i | 22 - .../share/swig/4.1.0/guile/extra-install.list | 2 - mac/bin/swig/share/swig/4.1.0/guile/guile.i | 33 - .../swig/share/swig/4.1.0/guile/guile_scm.swg | 46 - .../share/swig/4.1.0/guile/guile_scm_run.swg | 532 ----- .../swig/share/swig/4.1.0/guile/guilemain.i | 39 - .../swig/share/swig/4.1.0/guile/interpreter.i | 59 - .../swig/share/swig/4.1.0/guile/list-vector.i | 488 ----- .../share/swig/4.1.0/guile/pointer-in-out.i | 102 - mac/bin/swig/share/swig/4.1.0/guile/ports.i | 50 - .../share/swig/4.1.0/guile/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/guile/std_common.i | 25 - .../swig/share/swig/4.1.0/guile/std_deque.i | 1 - .../swig/share/swig/4.1.0/guile/std_except.i | 13 - mac/bin/swig/share/swig/4.1.0/guile/std_map.i | 1370 ------------ .../swig/share/swig/4.1.0/guile/std_pair.i | 867 -------- .../swig/share/swig/4.1.0/guile/std_string.i | 95 - .../share/swig/4.1.0/guile/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/guile/std_vector.i | 424 ---- mac/bin/swig/share/swig/4.1.0/guile/stl.i | 10 - .../swig/share/swig/4.1.0/guile/swigmove.i | 19 - mac/bin/swig/share/swig/4.1.0/guile/swigrun.i | 47 - .../swig/share/swig/4.1.0/guile/typemaps.i | 501 ----- mac/bin/swig/share/swig/4.1.0/intrusive_ptr.i | 0 mac/bin/swig/share/swig/4.1.0/inttypes.i | 0 .../swig/share/swig/4.1.0/java/arrays_java.i | 392 ---- .../swig/4.1.0/java/boost_intrusive_ptr.i | 484 ---- .../share/swig/4.1.0/java/boost_shared_ptr.i | 337 --- .../swig/share/swig/4.1.0/java/director.swg | 541 ----- mac/bin/swig/share/swig/4.1.0/java/enums.swg | 116 - .../swig/share/swig/4.1.0/java/enumsimple.swg | 71 - .../share/swig/4.1.0/java/enumtypesafe.swg | 117 - .../share/swig/4.1.0/java/enumtypeunsafe.swg | 72 - mac/bin/swig/share/swig/4.1.0/java/java.swg | 1458 ------------ .../swig/share/swig/4.1.0/java/javahead.swg | 91 - mac/bin/swig/share/swig/4.1.0/java/javakw.swg | 70 - .../swig/share/swig/4.1.0/java/std_array.i | 44 - .../swig/share/swig/4.1.0/java/std_auto_ptr.i | 41 - .../swig/share/swig/4.1.0/java/std_common.i | 5 - .../swig/share/swig/4.1.0/java/std_deque.i | 1 - .../swig/share/swig/4.1.0/java/std_except.i | 32 - mac/bin/swig/share/swig/4.1.0/java/std_list.i | 225 -- mac/bin/swig/share/swig/4.1.0/java/std_map.i | 224 -- mac/bin/swig/share/swig/4.1.0/java/std_pair.i | 37 - mac/bin/swig/share/swig/4.1.0/java/std_set.i | 207 -- .../share/swig/4.1.0/java/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/java/std_string.i | 121 - .../share/swig/4.1.0/java/std_unique_ptr.i | 41 - .../share/swig/4.1.0/java/std_unordered_map.i | 211 -- .../share/swig/4.1.0/java/std_unordered_set.i | 203 -- .../swig/share/swig/4.1.0/java/std_vector.i | 185 -- .../swig/share/swig/4.1.0/java/std_wstring.i | 180 -- mac/bin/swig/share/swig/4.1.0/java/stl.i | 10 - .../share/swig/4.1.0/java/swiginterface.i | 74 - mac/bin/swig/share/swig/4.1.0/java/swigmove.i | 16 - mac/bin/swig/share/swig/4.1.0/java/typemaps.i | 529 ----- mac/bin/swig/share/swig/4.1.0/java/various.i | 194 -- .../javascript/cocos/arrays_javascript.i | 0 .../swig/4.1.0/javascript/cocos/ccomplex.i | 0 .../share/swig/4.1.0/javascript/cocos/cdata.i | 0 .../swig/4.1.0/javascript/cocos/complex.i | 0 .../swig/4.1.0/javascript/cocos/exception.i | 0 .../4.1.0/javascript/cocos/javascript.swg | 0 .../4.1.0/javascript/cocos/javascriptcode.swg | 0 .../javascript/cocos/javascriptcomplex.swg | 0 .../javascript/cocos/javascriptfragments.swg | 0 .../javascript/cocos/javascripthelpers.swg | 0 .../4.1.0/javascript/cocos/javascriptinit.swg | 0 .../4.1.0/javascript/cocos/javascriptkw.swg | 0 .../javascript/cocos/javascriptprimtypes.swg | 0 .../4.1.0/javascript/cocos/javascriptrun.swg | 0 .../javascript/cocos/javascriptruntime.swg | 0 .../javascript/cocos/javascriptstrings.swg | 0 .../javascript/cocos/javascripttypemaps.swg | 9 +- .../swig/4.1.0/javascript/cocos/std_common.i | 0 .../swig/4.1.0/javascript/cocos/std_complex.i | 0 .../swig/4.1.0/javascript/cocos/std_deque.i | 0 .../swig/4.1.0/javascript/cocos/std_except.i | 0 .../swig/4.1.0/javascript/cocos/std_map.i | 0 .../swig/4.1.0/javascript/cocos/std_pair.i | 0 .../swig/4.1.0/javascript/cocos/std_string.i | 0 .../swig/4.1.0/javascript/cocos/std_vector.i | 0 .../share/swig/4.1.0/javascript/cocos/stl.i | 0 .../swig/4.1.0/javascript/cocos/typemaps.i | 0 .../4.1.0/javascript/jsc/arrays_javascript.i | 94 - .../swig/4.1.0/javascript/jsc/ccomplex.i | 27 - .../share/swig/4.1.0/javascript/jsc/cdata.i | 1 - .../share/swig/4.1.0/javascript/jsc/complex.i | 6 - .../swig/4.1.0/javascript/jsc/exception.i | 1 - .../swig/4.1.0/javascript/jsc/javascript.swg | 19 - .../4.1.0/javascript/jsc/javascriptcode.swg | 429 ---- .../javascript/jsc/javascriptcomplex.swg | 146 -- .../javascript/jsc/javascriptfragments.swg | 23 - .../javascript/jsc/javascripthelpers.swg | 69 - .../4.1.0/javascript/jsc/javascriptinit.swg | 112 - .../4.1.0/javascript/jsc/javascriptkw.swg | 40 - .../javascript/jsc/javascriptprimtypes.swg | 192 -- .../4.1.0/javascript/jsc/javascriptrun.swg | 369 ---- .../javascript/jsc/javascriptruntime.swg | 20 - .../javascript/jsc/javascriptstrings.swg | 187 -- .../javascript/jsc/javascripttypemaps.swg | 54 - .../swig/4.1.0/javascript/jsc/std_auto_ptr.i | 39 - .../swig/4.1.0/javascript/jsc/std_common.i | 5 - .../swig/4.1.0/javascript/jsc/std_complex.i | 26 - .../swig/4.1.0/javascript/jsc/std_deque.i | 1 - .../swig/4.1.0/javascript/jsc/std_except.i | 1 - .../share/swig/4.1.0/javascript/jsc/std_map.i | 81 - .../swig/4.1.0/javascript/jsc/std_pair.i | 36 - .../swig/4.1.0/javascript/jsc/std_string.i | 1 - .../4.1.0/javascript/jsc/std_unique_ptr.i | 39 - .../swig/4.1.0/javascript/jsc/std_vector.i | 99 - .../share/swig/4.1.0/javascript/jsc/stl.i | 10 - .../swig/4.1.0/javascript/jsc/swigmove.i | 1 - .../swig/4.1.0/javascript/jsc/typemaps.i | 148 -- .../4.1.0/javascript/v8/arrays_javascript.i | 86 - .../share/swig/4.1.0/javascript/v8/ccomplex.i | 27 - .../share/swig/4.1.0/javascript/v8/cdata.i | 1 - .../share/swig/4.1.0/javascript/v8/complex.i | 6 - .../swig/4.1.0/javascript/v8/exception.i | 1 - .../swig/4.1.0/javascript/v8/javascript.swg | 19 - .../4.1.0/javascript/v8/javascriptcode.swg | 435 ---- .../4.1.0/javascript/v8/javascriptcomplex.swg | 124 -- .../javascript/v8/javascriptfragments.swg | 23 - .../4.1.0/javascript/v8/javascripthelpers.swg | 87 - .../4.1.0/javascript/v8/javascriptinit.swg | 126 -- .../swig/4.1.0/javascript/v8/javascriptkw.swg | 40 - .../javascript/v8/javascriptprimtypes.swg | 203 -- .../4.1.0/javascript/v8/javascriptrun.swg | 487 ---- .../4.1.0/javascript/v8/javascriptruntime.swg | 47 - .../4.1.0/javascript/v8/javascriptstrings.swg | 59 - .../javascript/v8/javascripttypemaps.swg | 43 - .../swig/4.1.0/javascript/v8/std_auto_ptr.i | 39 - .../swig/4.1.0/javascript/v8/std_common.i | 5 - .../swig/4.1.0/javascript/v8/std_complex.i | 26 - .../swig/4.1.0/javascript/v8/std_deque.i | 1 - .../swig/4.1.0/javascript/v8/std_except.i | 1 - .../share/swig/4.1.0/javascript/v8/std_map.i | 80 - .../share/swig/4.1.0/javascript/v8/std_pair.i | 35 - .../swig/4.1.0/javascript/v8/std_string.i | 1 - .../swig/4.1.0/javascript/v8/std_unique_ptr.i | 39 - .../swig/4.1.0/javascript/v8/std_vector.i | 99 - .../swig/share/swig/4.1.0/javascript/v8/stl.i | 10 - .../share/swig/4.1.0/javascript/v8/swigmove.i | 1 - .../share/swig/4.1.0/javascript/v8/typemaps.i | 148 -- mac/bin/swig/share/swig/4.1.0/linkruntime.c | 0 .../swig/share/swig/4.1.0/lua/_std_common.i | 93 - mac/bin/swig/share/swig/4.1.0/lua/argcargv.i | 57 - mac/bin/swig/share/swig/4.1.0/lua/carrays.i | 8 - mac/bin/swig/share/swig/4.1.0/lua/factory.i | 23 - mac/bin/swig/share/swig/4.1.0/lua/lua.swg | 236 -- mac/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i | 124 -- mac/bin/swig/share/swig/4.1.0/lua/luakw.swg | 67 - mac/bin/swig/share/swig/4.1.0/lua/luarun.swg | 1950 ----------------- .../swig/share/swig/4.1.0/lua/luaruntime.swg | 104 - .../swig/share/swig/4.1.0/lua/luatypemaps.swg | 418 ---- .../swig/share/swig/4.1.0/lua/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/lua/std_common.i | 5 - mac/bin/swig/share/swig/4.1.0/lua/std_deque.i | 1 - .../swig/share/swig/4.1.0/lua/std_except.i | 42 - mac/bin/swig/share/swig/4.1.0/lua/std_map.i | 66 - mac/bin/swig/share/swig/4.1.0/lua/std_pair.i | 26 - .../swig/share/swig/4.1.0/lua/std_string.i | 125 -- .../share/swig/4.1.0/lua/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/lua/std_vector.i | 140 -- mac/bin/swig/share/swig/4.1.0/lua/stl.i | 10 - mac/bin/swig/share/swig/4.1.0/lua/swigmove.i | 18 - mac/bin/swig/share/swig/4.1.0/lua/typemaps.i | 554 ----- mac/bin/swig/share/swig/4.1.0/lua/wchar.i | 42 - mac/bin/swig/share/swig/4.1.0/math.i | 0 .../swig/share/swig/4.1.0/mzscheme/Makefile | 3 - .../swig/share/swig/4.1.0/mzscheme/mzrun.swg | 521 ----- .../share/swig/4.1.0/mzscheme/mzscheme.swg | 56 - .../share/swig/4.1.0/mzscheme/std_auto_ptr.i | 39 - .../share/swig/4.1.0/mzscheme/std_common.i | 23 - .../share/swig/4.1.0/mzscheme/std_deque.i | 1 - .../swig/share/swig/4.1.0/mzscheme/std_map.i | 1388 ------------ .../swig/share/swig/4.1.0/mzscheme/std_pair.i | 874 -------- .../share/swig/4.1.0/mzscheme/std_string.i | 64 - .../swig/4.1.0/mzscheme/std_unique_ptr.i | 39 - .../share/swig/4.1.0/mzscheme/std_vector.i | 451 ---- mac/bin/swig/share/swig/4.1.0/mzscheme/stl.i | 10 - .../swig/share/swig/4.1.0/mzscheme/swigmove.i | 19 - .../swig/share/swig/4.1.0/mzscheme/typemaps.i | 399 ---- mac/bin/swig/share/swig/4.1.0/ocaml/carray.i | 131 -- mac/bin/swig/share/swig/4.1.0/ocaml/class.swg | 67 - mac/bin/swig/share/swig/4.1.0/ocaml/cstring.i | 268 --- .../swig/share/swig/4.1.0/ocaml/director.swg | 101 - .../share/swig/4.1.0/ocaml/extra-install.list | 4 - mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.i | 50 - mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg | 320 --- .../swig/share/swig/4.1.0/ocaml/ocamlkw.swg | 72 - .../swig/share/swig/4.1.0/ocaml/ocamlrun.swg | 607 ----- .../share/swig/4.1.0/ocaml/ocamlrundec.swg | 212 -- .../swig/share/swig/4.1.0/ocaml/preamble.swg | 17 - .../swig/share/swig/4.1.0/ocaml/std_common.i | 23 - .../swig/share/swig/4.1.0/ocaml/std_complex.i | 65 - .../swig/share/swig/4.1.0/ocaml/std_deque.i | 28 - .../swig/share/swig/4.1.0/ocaml/std_except.i | 23 - .../swig/share/swig/4.1.0/ocaml/std_list.i | 217 -- mac/bin/swig/share/swig/4.1.0/ocaml/std_map.i | 79 - .../swig/share/swig/4.1.0/ocaml/std_pair.i | 36 - .../swig/share/swig/4.1.0/ocaml/std_string.i | 136 -- .../swig/share/swig/4.1.0/ocaml/std_vector.i | 98 - mac/bin/swig/share/swig/4.1.0/ocaml/stl.i | 10 - mac/bin/swig/share/swig/4.1.0/ocaml/swig.ml | 166 -- mac/bin/swig/share/swig/4.1.0/ocaml/swig.mli | 62 - .../swig/share/swig/4.1.0/ocaml/swigmove.i | 11 - mac/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml | 135 -- .../swig/share/swig/4.1.0/ocaml/typecheck.i | 197 -- .../swig/share/swig/4.1.0/ocaml/typemaps.i | 44 - .../share/swig/4.1.0/ocaml/typeregister.swg | 2 - .../swig/share/swig/4.1.0/octave/argcargv.i | 44 - .../swig/share/swig/4.1.0/octave/attribute.i | 1 - .../swig/4.1.0/octave/boost_shared_ptr.i | 401 ---- .../swig/share/swig/4.1.0/octave/carrays.i | 5 - mac/bin/swig/share/swig/4.1.0/octave/cdata.i | 1 - .../swig/share/swig/4.1.0/octave/cmalloc.i | 1 - .../swig/share/swig/4.1.0/octave/director.swg | 146 -- .../swig/share/swig/4.1.0/octave/exception.i | 14 - .../swig/4.1.0/octave/extra-install.list | 2 - .../swig/share/swig/4.1.0/octave/factory.i | 1 - .../swig/share/swig/4.1.0/octave/implicit.i | 7 - .../swig/share/swig/4.1.0/octave/octave.swg | 8 - .../share/swig/4.1.0/octave/octcomplex.swg | 92 - .../share/swig/4.1.0/octave/octcontainer.swg | 623 ------ .../share/swig/4.1.0/octave/octfragments.swg | 1 - .../share/swig/4.1.0/octave/octheaders.hpp | 130 -- .../share/swig/4.1.0/octave/octiterators.swg | 357 --- .../swig/share/swig/4.1.0/octave/octopers.swg | 86 - .../share/swig/4.1.0/octave/octprimtypes.swg | 254 --- .../swig/share/swig/4.1.0/octave/octrun.swg | 1669 -------------- .../share/swig/4.1.0/octave/octruntime.swg | 425 ---- .../share/swig/4.1.0/octave/octstdcommon.swg | 222 -- .../share/swig/4.1.0/octave/octtypemaps.swg | 99 - .../share/swig/4.1.0/octave/octuserdir.swg | 72 - .../swig/share/swig/4.1.0/octave/std_alloc.i | 1 - .../share/swig/4.1.0/octave/std_auto_ptr.i | 39 - .../swig/4.1.0/octave/std_basic_string.i | 64 - .../swig/share/swig/4.1.0/octave/std_carray.i | 0 .../share/swig/4.1.0/octave/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/octave/std_common.i | 72 - .../share/swig/4.1.0/octave/std_complex.i | 25 - .../share/swig/4.1.0/octave/std_container.i | 2 - .../swig/share/swig/4.1.0/octave/std_deque.i | 25 - .../swig/share/swig/4.1.0/octave/std_except.i | 1 - .../swig/share/swig/4.1.0/octave/std_list.i | 26 - .../swig/share/swig/4.1.0/octave/std_map.i | 157 -- .../swig/share/swig/4.1.0/octave/std_pair.i | 147 -- .../share/swig/4.1.0/octave/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/octave/std_string.i | 1 - .../share/swig/4.1.0/octave/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/octave/std_vector.i | 26 - .../share/swig/4.1.0/octave/std_wstring.i | 1 - mac/bin/swig/share/swig/4.1.0/octave/stl.i | 10 - .../swig/share/swig/4.1.0/octave/swigmove.i | 1 - .../swig/share/swig/4.1.0/octave/typemaps.i | 1 - .../swig/share/swig/4.1.0/perl5/Makefile.in | 120 - .../swig/share/swig/4.1.0/perl5/Makefile.pl | 19 - .../swig/share/swig/4.1.0/perl5/argcargv.i | 32 - .../swig/share/swig/4.1.0/perl5/attribute.i | 1 - mac/bin/swig/share/swig/4.1.0/perl5/carrays.i | 2 - mac/bin/swig/share/swig/4.1.0/perl5/cdata.i | 1 - mac/bin/swig/share/swig/4.1.0/perl5/cmalloc.i | 1 - .../swig/share/swig/4.1.0/perl5/cpointer.i | 1 - mac/bin/swig/share/swig/4.1.0/perl5/cstring.i | 1 - .../swig/share/swig/4.1.0/perl5/director.swg | 317 --- .../swig/share/swig/4.1.0/perl5/exception.i | 5 - .../share/swig/4.1.0/perl5/extra-install.list | 2 - mac/bin/swig/share/swig/4.1.0/perl5/factory.i | 1 - mac/bin/swig/share/swig/4.1.0/perl5/noembed.h | 116 - mac/bin/swig/share/swig/4.1.0/perl5/perl5.swg | 42 - .../share/swig/4.1.0/perl5/perlerrors.swg | 34 - .../share/swig/4.1.0/perl5/perlfragments.swg | 23 - .../swig/share/swig/4.1.0/perl5/perlhead.swg | 91 - .../swig/share/swig/4.1.0/perl5/perlinit.swg | 78 - .../swig/share/swig/4.1.0/perl5/perlkw.swg | 251 --- .../share/swig/4.1.0/perl5/perlmacros.swg | 2 - .../swig/share/swig/4.1.0/perl5/perlmain.i | 82 - .../swig/share/swig/4.1.0/perl5/perlopers.swg | 54 - .../share/swig/4.1.0/perl5/perlprimtypes.swg | 364 --- .../swig/share/swig/4.1.0/perl5/perlrun.swg | 493 ----- .../share/swig/4.1.0/perl5/perlruntime.swg | 8 - .../share/swig/4.1.0/perl5/perlstrings.swg | 59 - .../share/swig/4.1.0/perl5/perltypemaps.swg | 104 - .../share/swig/4.1.0/perl5/perluserdir.swg | 2 - .../swig/share/swig/4.1.0/perl5/reference.i | 261 --- .../share/swig/4.1.0/perl5/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/perl5/std_common.i | 28 - .../swig/share/swig/4.1.0/perl5/std_deque.i | 1 - .../swig/share/swig/4.1.0/perl5/std_except.i | 1 - .../swig/share/swig/4.1.0/perl5/std_list.i | 377 ---- mac/bin/swig/share/swig/4.1.0/perl5/std_map.i | 80 - .../swig/share/swig/4.1.0/perl5/std_pair.i | 36 - .../swig/share/swig/4.1.0/perl5/std_string.i | 2 - .../share/swig/4.1.0/perl5/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/perl5/std_vector.i | 592 ----- mac/bin/swig/share/swig/4.1.0/perl5/stl.i | 10 - .../swig/share/swig/4.1.0/perl5/swigmove.i | 1 - .../swig/share/swig/4.1.0/perl5/typemaps.i | 371 ---- mac/bin/swig/share/swig/4.1.0/php/argcargv.i | 40 - mac/bin/swig/share/swig/4.1.0/php/const.i | 103 - .../swig/share/swig/4.1.0/php/director.swg | 180 -- mac/bin/swig/share/swig/4.1.0/php/factory.i | 109 - mac/bin/swig/share/swig/4.1.0/php/php.swg | 594 ----- mac/bin/swig/share/swig/4.1.0/php/phpinit.swg | 16 - .../swig/share/swig/4.1.0/php/phpinterfaces.i | 62 - mac/bin/swig/share/swig/4.1.0/php/phpkw.swg | 888 -------- .../swig/share/swig/4.1.0/php/phppointers.i | 42 - mac/bin/swig/share/swig/4.1.0/php/phprun.swg | 272 --- .../swig/share/swig/4.1.0/php/std_auto_ptr.i | 41 - .../swig/share/swig/4.1.0/php/std_common.i | 9 - mac/bin/swig/share/swig/4.1.0/php/std_deque.i | 1 - mac/bin/swig/share/swig/4.1.0/php/std_map.i | 82 - mac/bin/swig/share/swig/4.1.0/php/std_pair.i | 36 - .../swig/share/swig/4.1.0/php/std_string.i | 90 - .../share/swig/4.1.0/php/std_unique_ptr.i | 41 - .../swig/share/swig/4.1.0/php/std_vector.i | 114 - mac/bin/swig/share/swig/4.1.0/php/stl.i | 9 - mac/bin/swig/share/swig/4.1.0/php/swigmove.i | 24 - mac/bin/swig/share/swig/4.1.0/php/typemaps.i | 295 --- mac/bin/swig/share/swig/4.1.0/php/utils.i | 115 - mac/bin/swig/share/swig/4.1.0/pointer.i | 0 .../swig/share/swig/4.1.0/python/Makefile.in | 119 - mac/bin/swig/share/swig/4.1.0/python/README | 103 - .../swig/share/swig/4.1.0/python/argcargv.i | 89 - .../swig/share/swig/4.1.0/python/attribute.i | 1 - .../swig/4.1.0/python/boost_shared_ptr.i | 411 ---- .../swig/share/swig/4.1.0/python/builtin.swg | 764 ------- .../swig/share/swig/4.1.0/python/carrays.i | 13 - .../swig/share/swig/4.1.0/python/ccomplex.i | 27 - mac/bin/swig/share/swig/4.1.0/python/cdata.i | 1 - .../swig/share/swig/4.1.0/python/cmalloc.i | 1 - .../swig/share/swig/4.1.0/python/complex.i | 6 - .../swig/share/swig/4.1.0/python/cpointer.i | 1 - .../swig/share/swig/4.1.0/python/cstring.i | 1 - .../swig/share/swig/4.1.0/python/cwstring.i | 3 - .../swig/share/swig/4.1.0/python/director.swg | 389 ---- mac/bin/swig/share/swig/4.1.0/python/embed.i | 120 - .../swig/share/swig/4.1.0/python/exception.i | 6 - .../swig/share/swig/4.1.0/python/factory.i | 1 - mac/bin/swig/share/swig/4.1.0/python/file.i | 41 - .../swig/share/swig/4.1.0/python/implicit.i | 7 - mac/bin/swig/share/swig/4.1.0/python/pyabc.i | 14 - .../swig/share/swig/4.1.0/python/pyapi.swg | 30 - .../share/swig/4.1.0/python/pybackward.swg | 45 - .../swig/share/swig/4.1.0/python/pybuffer.i | 119 - .../share/swig/4.1.0/python/pyclasses.swg | 157 -- .../share/swig/4.1.0/python/pycomplex.swg | 86 - .../share/swig/4.1.0/python/pycontainer.swg | 1082 --------- .../swig/share/swig/4.1.0/python/pydocs.swg | 45 - .../swig/share/swig/4.1.0/python/pyerrors.swg | 107 - .../share/swig/4.1.0/python/pyfragments.swg | 23 - .../swig/share/swig/4.1.0/python/pyhead.swg | 75 - .../swig/share/swig/4.1.0/python/pyinit.swg | 325 --- .../share/swig/4.1.0/python/pyiterators.swg | 458 ---- .../swig/share/swig/4.1.0/python/pymacros.swg | 4 - .../share/swig/4.1.0/python/pyname_compat.i | 85 - .../swig/share/swig/4.1.0/python/pyopers.swg | 264 --- .../share/swig/4.1.0/python/pyprimtypes.swg | 353 --- .../swig/share/swig/4.1.0/python/pyrun.swg | 1913 ---------------- .../share/swig/4.1.0/python/pyruntime.swg | 49 - .../share/swig/4.1.0/python/pystdcommon.swg | 265 --- .../share/swig/4.1.0/python/pystrings.swg | 139 -- .../swig/share/swig/4.1.0/python/python.swg | 59 - .../swig/share/swig/4.1.0/python/pythonkw.swg | 140 -- .../share/swig/4.1.0/python/pythreads.swg | 68 - .../share/swig/4.1.0/python/pytuplehlp.swg | 8 - .../share/swig/4.1.0/python/pytypemaps.swg | 105 - .../share/swig/4.1.0/python/pyuserdir.swg | 242 -- .../share/swig/4.1.0/python/pywstrings.swg | 85 - .../swig/share/swig/4.1.0/python/std_alloc.i | 1 - .../swig/share/swig/4.1.0/python/std_array.i | 91 - .../share/swig/4.1.0/python/std_auto_ptr.i | 39 - .../swig/4.1.0/python/std_basic_string.i | 89 - .../swig/share/swig/4.1.0/python/std_carray.i | 54 - .../share/swig/4.1.0/python/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/python/std_common.i | 74 - .../share/swig/4.1.0/python/std_complex.i | 27 - .../share/swig/4.1.0/python/std_container.i | 2 - .../swig/share/swig/4.1.0/python/std_deque.i | 27 - .../swig/share/swig/4.1.0/python/std_except.i | 1 - .../swig/share/swig/4.1.0/python/std_ios.i | 3 - .../share/swig/4.1.0/python/std_iostream.i | 8 - .../swig/share/swig/4.1.0/python/std_list.i | 28 - .../swig/share/swig/4.1.0/python/std_map.i | 310 --- .../share/swig/4.1.0/python/std_multimap.i | 93 - .../share/swig/4.1.0/python/std_multiset.i | 41 - .../swig/share/swig/4.1.0/python/std_pair.i | 206 -- .../swig/share/swig/4.1.0/python/std_set.i | 67 - .../share/swig/4.1.0/python/std_shared_ptr.i | 2 - .../share/swig/4.1.0/python/std_sstream.i | 1 - .../share/swig/4.1.0/python/std_streambuf.i | 1 - .../swig/share/swig/4.1.0/python/std_string.i | 1 - .../share/swig/4.1.0/python/std_unique_ptr.i | 39 - .../swig/4.1.0/python/std_unordered_map.i | 296 --- .../4.1.0/python/std_unordered_multimap.i | 100 - .../4.1.0/python/std_unordered_multiset.i | 48 - .../swig/4.1.0/python/std_unordered_set.i | 67 - .../swig/share/swig/4.1.0/python/std_vector.i | 34 - .../share/swig/4.1.0/python/std_vectora.i | 31 - .../swig/share/swig/4.1.0/python/std_wios.i | 1 - .../share/swig/4.1.0/python/std_wiostream.i | 10 - .../share/swig/4.1.0/python/std_wsstream.i | 1 - .../share/swig/4.1.0/python/std_wstreambuf.i | 1 - .../share/swig/4.1.0/python/std_wstring.i | 3 - mac/bin/swig/share/swig/4.1.0/python/stl.i | 10 - .../swig/share/swig/4.1.0/python/swigmove.i | 1 - .../swig/share/swig/4.1.0/python/typemaps.i | 148 -- mac/bin/swig/share/swig/4.1.0/python/wchar.i | 21 - .../share/swig/4.1.0/r/boost_shared_ptr.i | 420 ---- mac/bin/swig/share/swig/4.1.0/r/cdata.i | 1 - mac/bin/swig/share/swig/4.1.0/r/exception.i | 8 - mac/bin/swig/share/swig/4.1.0/r/r.swg | 281 --- .../swig/share/swig/4.1.0/r/rcontainer.swg | 198 -- .../swig/share/swig/4.1.0/r/rfragments.swg | 191 -- mac/bin/swig/share/swig/4.1.0/r/rkw.swg | 36 - mac/bin/swig/share/swig/4.1.0/r/ropers.swg | 32 - mac/bin/swig/share/swig/4.1.0/r/rrun.swg | 420 ---- .../swig/share/swig/4.1.0/r/rstdcommon.swg | 205 -- mac/bin/swig/share/swig/4.1.0/r/rtype.swg | 328 --- mac/bin/swig/share/swig/4.1.0/r/srun.swg | 150 -- mac/bin/swig/share/swig/4.1.0/r/std_alloc.i | 1 - mac/bin/swig/share/swig/4.1.0/r/std_common.i | 73 - .../swig/share/swig/4.1.0/r/std_container.i | 2 - mac/bin/swig/share/swig/4.1.0/r/std_deque.i | 1 - mac/bin/swig/share/swig/4.1.0/r/std_except.i | 1 - mac/bin/swig/share/swig/4.1.0/r/std_list.i | 5 - mac/bin/swig/share/swig/4.1.0/r/std_map.i | 5 - mac/bin/swig/share/swig/4.1.0/r/std_pair.i | 5 - .../swig/share/swig/4.1.0/r/std_shared_ptr.i | 2 - mac/bin/swig/share/swig/4.1.0/r/std_string.i | 1 - mac/bin/swig/share/swig/4.1.0/r/std_vector.i | 1105 ---------- mac/bin/swig/share/swig/4.1.0/r/stl.i | 9 - mac/bin/swig/share/swig/4.1.0/r/swigmove.i | 1 - mac/bin/swig/share/swig/4.1.0/r/typemaps.i | 1 - .../swig/share/swig/4.1.0/ruby/Makefile.swig | 42 - mac/bin/swig/share/swig/4.1.0/ruby/argcargv.i | 44 - .../swig/share/swig/4.1.0/ruby/attribute.i | 1 - .../share/swig/4.1.0/ruby/boost_shared_ptr.i | 401 ---- mac/bin/swig/share/swig/4.1.0/ruby/carrays.i | 6 - mac/bin/swig/share/swig/4.1.0/ruby/cdata.i | 1 - mac/bin/swig/share/swig/4.1.0/ruby/cmalloc.i | 1 - mac/bin/swig/share/swig/4.1.0/ruby/cpointer.i | 1 - mac/bin/swig/share/swig/4.1.0/ruby/cstring.i | 1 - .../swig/share/swig/4.1.0/ruby/director.swg | 311 --- mac/bin/swig/share/swig/4.1.0/ruby/embed.i | 16 - .../swig/share/swig/4.1.0/ruby/exception.i | 5 - mac/bin/swig/share/swig/4.1.0/ruby/extconf.rb | 9 - .../share/swig/4.1.0/ruby/extra-install.list | 3 - mac/bin/swig/share/swig/4.1.0/ruby/factory.i | 1 - mac/bin/swig/share/swig/4.1.0/ruby/file.i | 39 - .../swig/share/swig/4.1.0/ruby/progargcargv.i | 34 - mac/bin/swig/share/swig/4.1.0/ruby/ruby.swg | 72 - .../swig/share/swig/4.1.0/ruby/rubyapi.swg | 36 - .../share/swig/4.1.0/ruby/rubyautodoc.swg | 105 - .../share/swig/4.1.0/ruby/rubyclasses.swg | 404 ---- .../share/swig/4.1.0/ruby/rubycomplex.swg | 148 -- .../share/swig/4.1.0/ruby/rubycontainer.swg | 1114 ---------- .../4.1.0/ruby/rubycontainer_extended.swg | 134 -- .../swig/share/swig/4.1.0/ruby/rubydef.swg | 1 - .../swig/share/swig/4.1.0/ruby/rubyerrors.swg | 154 -- .../share/swig/4.1.0/ruby/rubyfragments.swg | 23 - .../swig/share/swig/4.1.0/ruby/rubyhead.swg | 185 -- .../swig/share/swig/4.1.0/ruby/rubyinit.swg | 1 - .../share/swig/4.1.0/ruby/rubyiterators.swg | 932 -------- mac/bin/swig/share/swig/4.1.0/ruby/rubykw.swg | 72 - .../swig/share/swig/4.1.0/ruby/rubymacros.swg | 13 - .../swig/share/swig/4.1.0/ruby/rubyopers.swg | 55 - .../share/swig/4.1.0/ruby/rubyprimtypes.swg | 228 -- .../swig/share/swig/4.1.0/ruby/rubyrun.swg | 468 ---- .../share/swig/4.1.0/ruby/rubyruntime.swg | 9 - .../share/swig/4.1.0/ruby/rubystdautodoc.swg | 33 - .../share/swig/4.1.0/ruby/rubystdcommon.swg | 199 -- .../swig/4.1.0/ruby/rubystdcommon_forward.swg | 15 - .../share/swig/4.1.0/ruby/rubystdfunctors.swg | 162 -- .../share/swig/4.1.0/ruby/rubystrings.swg | 57 - .../share/swig/4.1.0/ruby/rubytracking.swg | 136 -- .../share/swig/4.1.0/ruby/rubytypemaps.swg | 62 - .../share/swig/4.1.0/ruby/rubyuserdir.swg | 20 - .../share/swig/4.1.0/ruby/rubywstrings.swg | 58 - .../swig/share/swig/4.1.0/ruby/std_alloc.i | 1 - .../swig/share/swig/4.1.0/ruby/std_array.i | 102 - .../swig/share/swig/4.1.0/ruby/std_auto_ptr.i | 39 - .../share/swig/4.1.0/ruby/std_basic_string.i | 92 - .../share/swig/4.1.0/ruby/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/ruby/std_common.i | 74 - .../swig/share/swig/4.1.0/ruby/std_complex.i | 29 - .../share/swig/4.1.0/ruby/std_container.i | 2 - .../swig/share/swig/4.1.0/ruby/std_deque.i | 30 - .../swig/share/swig/4.1.0/ruby/std_except.i | 1 - .../swig/share/swig/4.1.0/ruby/std_functors.i | 29 - mac/bin/swig/share/swig/4.1.0/ruby/std_ios.i | 14 - .../swig/share/swig/4.1.0/ruby/std_iostream.i | 12 - mac/bin/swig/share/swig/4.1.0/ruby/std_list.i | 42 - mac/bin/swig/share/swig/4.1.0/ruby/std_map.i | 424 ---- .../swig/share/swig/4.1.0/ruby/std_multimap.i | 226 -- .../swig/share/swig/4.1.0/ruby/std_multiset.i | 50 - mac/bin/swig/share/swig/4.1.0/ruby/std_pair.i | 212 -- .../swig/share/swig/4.1.0/ruby/std_queue.i | 33 - mac/bin/swig/share/swig/4.1.0/ruby/std_set.i | 228 -- .../share/swig/4.1.0/ruby/std_shared_ptr.i | 144 -- .../swig/share/swig/4.1.0/ruby/std_sstream.i | 2 - .../swig/share/swig/4.1.0/ruby/std_stack.i | 35 - .../share/swig/4.1.0/ruby/std_streambuf.i | 1 - .../swig/share/swig/4.1.0/ruby/std_string.i | 7 - .../share/swig/4.1.0/ruby/std_unique_ptr.i | 39 - .../share/swig/4.1.0/ruby/std_unordered_map.i | 83 - .../swig/4.1.0/ruby/std_unordered_multimap.i | 100 - .../swig/4.1.0/ruby/std_unordered_multiset.i | 50 - .../share/swig/4.1.0/ruby/std_unordered_set.i | 50 - .../swig/share/swig/4.1.0/ruby/std_vector.i | 52 - .../swig/share/swig/4.1.0/ruby/std_vectora.i | 36 - .../swig/share/swig/4.1.0/ruby/std_wstring.i | 63 - mac/bin/swig/share/swig/4.1.0/ruby/stl.i | 10 - mac/bin/swig/share/swig/4.1.0/ruby/swigmove.i | 1 - mac/bin/swig/share/swig/4.1.0/ruby/timeval.i | 69 - mac/bin/swig/share/swig/4.1.0/ruby/typemaps.i | 314 --- mac/bin/swig/share/swig/4.1.0/runtime.swg | 0 .../swig/4.1.0/scilab/boost_shared_ptr.i | 401 ---- .../swig/share/swig/4.1.0/scilab/carrays.i | 5 - .../swig/share/swig/4.1.0/scilab/cmalloc.i | 1 - .../swig/share/swig/4.1.0/scilab/cpointer.i | 1 - .../swig/share/swig/4.1.0/scilab/exception.i | 6 - mac/bin/swig/share/swig/4.1.0/scilab/matrix.i | 11 - .../swig/share/swig/4.1.0/scilab/sciarray.swg | 115 - .../swig/share/swig/4.1.0/scilab/scibool.swg | 156 -- .../swig/share/swig/4.1.0/scilab/scichar.swg | 292 --- .../share/swig/4.1.0/scilab/scicontainer.swg | 445 ---- .../share/swig/4.1.0/scilab/scidouble.swg | 108 - .../swig/share/swig/4.1.0/scilab/scienum.swg | 31 - .../share/swig/4.1.0/scilab/sciexception.swg | 60 - .../swig/share/swig/4.1.0/scilab/scifloat.swg | 83 - .../swig/share/swig/4.1.0/scilab/sciint.swg | 202 -- .../share/swig/4.1.0/scilab/sciiterators.swg | 363 --- .../swig/share/swig/4.1.0/scilab/scilab.swg | 6 - .../swig/share/swig/4.1.0/scilab/scilist.swg | 91 - .../swig/share/swig/4.1.0/scilab/scilong.swg | 123 -- .../share/swig/4.1.0/scilab/scilonglong.swg | 54 - .../share/swig/4.1.0/scilab/scimacros.swg | 5 - .../share/swig/4.1.0/scilab/scimatrixbool.swg | 170 -- .../share/swig/4.1.0/scilab/scimatrixchar.swg | 199 -- .../swig/4.1.0/scilab/scimatrixdouble.swg | 170 -- .../share/swig/4.1.0/scilab/scimatrixint.swg | 175 -- .../share/swig/4.1.0/scilab/scimisctypes.swg | 69 - .../share/swig/4.1.0/scilab/scipointer.swg | 32 - .../share/swig/4.1.0/scilab/sciprimtypes.swg | 23 - .../swig/share/swig/4.1.0/scilab/scirun.swg | 532 ----- .../share/swig/4.1.0/scilab/sciruntime.swg | 47 - .../share/swig/4.1.0/scilab/scisequence.swg | 195 -- .../swig/4.1.0/scilab/scisequencebool.swg | 98 - .../swig/4.1.0/scilab/scisequencedouble.swg | 99 - .../swig/4.1.0/scilab/scisequencefloat.swg | 98 - .../swig/4.1.0/scilab/scisequenceint.swg | 104 - .../swig/4.1.0/scilab/scisequencepointer.swg | 123 -- .../swig/4.1.0/scilab/scisequencestring.swg | 97 - .../swig/share/swig/4.1.0/scilab/scishort.swg | 188 -- .../share/swig/4.1.0/scilab/scisignedchar.swg | 185 -- .../share/swig/4.1.0/scilab/scistdcommon.swg | 218 -- .../share/swig/4.1.0/scilab/scitypemaps.swg | 259 --- .../swig/4.1.0/scilab/sciunsignedchar.swg | 190 -- .../swig/4.1.0/scilab/sciunsignedint.swg | 204 -- .../swig/4.1.0/scilab/sciunsignedlong.swg | 53 - .../swig/4.1.0/scilab/sciunsignedshort.swg | 189 -- .../swig/share/swig/4.1.0/scilab/std_alloc.i | 2 - .../swig/4.1.0/scilab/std_basic_string.i | 45 - .../share/swig/4.1.0/scilab/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/scilab/std_common.i | 72 - .../share/swig/4.1.0/scilab/std_container.i | 3 - .../swig/share/swig/4.1.0/scilab/std_deque.i | 31 - .../swig/share/swig/4.1.0/scilab/std_except.i | 1 - .../swig/share/swig/4.1.0/scilab/std_list.i | 30 - .../swig/share/swig/4.1.0/scilab/std_map.i | 79 - .../share/swig/4.1.0/scilab/std_multiset.i | 30 - .../swig/share/swig/4.1.0/scilab/std_pair.i | 36 - .../swig/share/swig/4.1.0/scilab/std_set.i | 32 - .../share/swig/4.1.0/scilab/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/scilab/std_string.i | 47 - .../swig/share/swig/4.1.0/scilab/std_vector.i | 31 - mac/bin/swig/share/swig/4.1.0/scilab/stl.i | 10 - .../swig/share/swig/4.1.0/scilab/swigmove.i | 1 - .../swig/share/swig/4.1.0/scilab/typemaps.i | 62 - mac/bin/swig/share/swig/4.1.0/shared_ptr.i | 0 mac/bin/swig/share/swig/4.1.0/std/README | 0 .../swig/share/swig/4.1.0/std/_std_deque.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_alloc.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_array.i | 0 .../share/swig/4.1.0/std/std_basic_string.i | 0 .../swig/share/swig/4.1.0/std/std_carray.swg | 0 .../share/swig/4.1.0/std/std_char_traits.i | 0 .../swig/share/swig/4.1.0/std/std_common.i | 0 .../swig/share/swig/4.1.0/std/std_container.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_deque.i | 0 .../swig/share/swig/4.1.0/std/std_except.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_ios.i | 0 .../swig/share/swig/4.1.0/std/std_iostream.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_list.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_map.i | 0 .../swig/share/swig/4.1.0/std/std_multimap.i | 0 .../swig/share/swig/4.1.0/std/std_multiset.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_pair.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_queue.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_set.i | 0 .../swig/share/swig/4.1.0/std/std_sstream.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_stack.i | 0 .../swig/share/swig/4.1.0/std/std_streambuf.i | 0 .../swig/share/swig/4.1.0/std/std_string.i | 0 .../share/swig/4.1.0/std/std_unordered_map.i | 0 .../swig/4.1.0/std/std_unordered_multimap.i | 0 .../swig/4.1.0/std/std_unordered_multiset.i | 0 .../share/swig/4.1.0/std/std_unordered_set.i | 0 .../swig/share/swig/4.1.0/std/std_vector.i | 0 .../swig/share/swig/4.1.0/std/std_vectora.i | 0 mac/bin/swig/share/swig/4.1.0/std/std_wios.i | 0 .../swig/share/swig/4.1.0/std/std_wiostream.i | 0 .../swig/share/swig/4.1.0/std/std_wsstream.i | 0 .../share/swig/4.1.0/std/std_wstreambuf.i | 0 .../swig/share/swig/4.1.0/std/std_wstring.i | 0 mac/bin/swig/share/swig/4.1.0/std_except.i | 0 mac/bin/swig/share/swig/4.1.0/stdint.i | 0 mac/bin/swig/share/swig/4.1.0/stl.i | 0 mac/bin/swig/share/swig/4.1.0/swig.swg | 0 mac/bin/swig/share/swig/4.1.0/swigarch.i | 0 mac/bin/swig/share/swig/4.1.0/swigerrors.swg | 0 .../swig/share/swig/4.1.0/swigfragments.swg | 0 mac/bin/swig/share/swig/4.1.0/swiginit.swg | 0 mac/bin/swig/share/swig/4.1.0/swiglabels.swg | 0 mac/bin/swig/share/swig/4.1.0/swigrun.i | 0 mac/bin/swig/share/swig/4.1.0/swigrun.swg | 0 mac/bin/swig/share/swig/4.1.0/swigwarn.swg | 0 .../swig/share/swig/4.1.0/swigwarnings.swg | 0 mac/bin/swig/share/swig/4.1.0/tcl/Makefile.in | 122 -- mac/bin/swig/share/swig/4.1.0/tcl/argcargv.i | 29 - mac/bin/swig/share/swig/4.1.0/tcl/attribute.i | 1 - mac/bin/swig/share/swig/4.1.0/tcl/carrays.i | 4 - mac/bin/swig/share/swig/4.1.0/tcl/cdata.i | 1 - mac/bin/swig/share/swig/4.1.0/tcl/cmalloc.i | 1 - mac/bin/swig/share/swig/4.1.0/tcl/cpointer.i | 1 - mac/bin/swig/share/swig/4.1.0/tcl/cstring.i | 1 - mac/bin/swig/share/swig/4.1.0/tcl/cwstring.i | 2 - mac/bin/swig/share/swig/4.1.0/tcl/exception.i | 6 - mac/bin/swig/share/swig/4.1.0/tcl/factory.i | 1 - .../swig/share/swig/4.1.0/tcl/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/tcl/std_common.i | 17 - mac/bin/swig/share/swig/4.1.0/tcl/std_deque.i | 1 - .../swig/share/swig/4.1.0/tcl/std_except.i | 1 - mac/bin/swig/share/swig/4.1.0/tcl/std_map.i | 79 - mac/bin/swig/share/swig/4.1.0/tcl/std_pair.i | 36 - .../swig/share/swig/4.1.0/tcl/std_string.i | 2 - .../share/swig/4.1.0/tcl/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/tcl/std_vector.i | 436 ---- .../swig/share/swig/4.1.0/tcl/std_wstring.i | 2 - mac/bin/swig/share/swig/4.1.0/tcl/stl.i | 10 - mac/bin/swig/share/swig/4.1.0/tcl/swigmove.i | 1 - mac/bin/swig/share/swig/4.1.0/tcl/tcl8.swg | 42 - mac/bin/swig/share/swig/4.1.0/tcl/tclapi.swg | 108 - .../swig/share/swig/4.1.0/tcl/tclerrors.swg | 76 - .../share/swig/4.1.0/tcl/tclfragments.swg | 22 - mac/bin/swig/share/swig/4.1.0/tcl/tclinit.swg | 140 -- mac/bin/swig/share/swig/4.1.0/tcl/tclinterp.i | 17 - mac/bin/swig/share/swig/4.1.0/tcl/tclkw.swg | 10 - .../swig/share/swig/4.1.0/tcl/tclmacros.swg | 4 - .../swig/share/swig/4.1.0/tcl/tclopers.swg | 43 - .../share/swig/4.1.0/tcl/tclprimtypes.swg | 230 -- mac/bin/swig/share/swig/4.1.0/tcl/tclresult.i | 27 - mac/bin/swig/share/swig/4.1.0/tcl/tclrun.swg | 722 ------ .../swig/share/swig/4.1.0/tcl/tclruntime.swg | 15 - mac/bin/swig/share/swig/4.1.0/tcl/tclsh.i | 57 - .../swig/share/swig/4.1.0/tcl/tclstrings.swg | 31 - .../swig/share/swig/4.1.0/tcl/tcltypemaps.swg | 86 - .../swig/share/swig/4.1.0/tcl/tcluserdir.swg | 5 - .../swig/share/swig/4.1.0/tcl/tclwstrings.swg | 68 - mac/bin/swig/share/swig/4.1.0/tcl/typemaps.i | 464 ---- mac/bin/swig/share/swig/4.1.0/tcl/wish.i | 113 - mac/bin/swig/share/swig/4.1.0/typemaps/README | 0 .../share/swig/4.1.0/typemaps/attribute.swg | 0 .../share/swig/4.1.0/typemaps/carrays.swg | 0 .../swig/share/swig/4.1.0/typemaps/cdata.swg | 0 .../share/swig/4.1.0/typemaps/cmalloc.swg | 0 .../share/swig/4.1.0/typemaps/cpointer.swg | 0 .../share/swig/4.1.0/typemaps/cstring.swg | 0 .../share/swig/4.1.0/typemaps/cstrings.swg | 0 .../share/swig/4.1.0/typemaps/cwstring.swg | 0 .../share/swig/4.1.0/typemaps/enumint.swg | 0 .../share/swig/4.1.0/typemaps/exception.swg | 0 .../share/swig/4.1.0/typemaps/factory.swg | 0 .../share/swig/4.1.0/typemaps/fragments.swg | 0 .../share/swig/4.1.0/typemaps/implicit.swg | 0 .../share/swig/4.1.0/typemaps/inoutlist.swg | 0 .../share/swig/4.1.0/typemaps/misctypes.swg | 0 .../share/swig/4.1.0/typemaps/primtypes.swg | 0 .../share/swig/4.1.0/typemaps/ptrtypes.swg | 0 .../share/swig/4.1.0/typemaps/std_except.swg | 0 .../share/swig/4.1.0/typemaps/std_string.swg | 0 .../share/swig/4.1.0/typemaps/std_strings.swg | 0 .../share/swig/4.1.0/typemaps/std_wstring.swg | 0 .../swig/share/swig/4.1.0/typemaps/string.swg | 0 .../share/swig/4.1.0/typemaps/strings.swg | 0 .../share/swig/4.1.0/typemaps/swigmacros.swg | 0 .../share/swig/4.1.0/typemaps/swigmove.swg | 0 .../share/swig/4.1.0/typemaps/swigobject.swg | 0 .../share/swig/4.1.0/typemaps/swigtype.swg | 0 .../swig/4.1.0/typemaps/swigtypemaps.swg | 0 .../share/swig/4.1.0/typemaps/typemaps.swg | 0 .../share/swig/4.1.0/typemaps/valtypes.swg | 0 .../swig/share/swig/4.1.0/typemaps/void.swg | 0 .../share/swig/4.1.0/typemaps/wstring.swg | 0 mac/bin/swig/share/swig/4.1.0/wchar.i | 0 mac/bin/swig/share/swig/4.1.0/windows.i | 0 mac/bin/swig/share/swig/4.1.0/xml/typemaps.i | 3 - mac/bin/swig/share/swig/4.1.0/xml/xml.swg | 1 - versions.txt | 4 + win64/bin/swig/bin/swig.exe | Bin 1069056 -> 1069568 bytes win64/bin/swig/share/swig/4.1.0/allkw.swg | 0 win64/bin/swig/share/swig/4.1.0/attribute.i | 0 win64/bin/swig/share/swig/4.1.0/carrays.i | 0 win64/bin/swig/share/swig/4.1.0/cdata.i | 0 win64/bin/swig/share/swig/4.1.0/cmalloc.i | 0 win64/bin/swig/share/swig/4.1.0/constraints.i | 0 win64/bin/swig/share/swig/4.1.0/cpointer.i | 0 .../share/swig/4.1.0/csharp/arrays_csharp.i | 179 -- .../swig/4.1.0/csharp/boost_intrusive_ptr.i | 517 ----- .../swig/4.1.0/csharp/boost_shared_ptr.i | 323 --- .../swig/share/swig/4.1.0/csharp/complex.i | 5 - .../swig/share/swig/4.1.0/csharp/csharp.swg | 1120 ---------- .../share/swig/4.1.0/csharp/csharphead.swg | 339 --- .../swig/share/swig/4.1.0/csharp/csharpkw.swg | 97 - .../swig/share/swig/4.1.0/csharp/director.swg | 50 - .../swig/share/swig/4.1.0/csharp/enums.swg | 86 - .../share/swig/4.1.0/csharp/enumsimple.swg | 88 - .../share/swig/4.1.0/csharp/enumtypesafe.swg | 130 -- .../swig/share/swig/4.1.0/csharp/std_array.i | 227 -- .../share/swig/4.1.0/csharp/std_auto_ptr.i | 38 - .../swig/share/swig/4.1.0/csharp/std_common.i | 5 - .../share/swig/4.1.0/csharp/std_complex.i | 95 - .../swig/share/swig/4.1.0/csharp/std_deque.i | 1 - .../swig/share/swig/4.1.0/csharp/std_except.i | 32 - .../swig/share/swig/4.1.0/csharp/std_list.i | 519 ----- .../swig/share/swig/4.1.0/csharp/std_map.i | 312 --- .../swig/share/swig/4.1.0/csharp/std_pair.i | 36 - .../swig/share/swig/4.1.0/csharp/std_set.i | 311 --- .../share/swig/4.1.0/csharp/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/csharp/std_string.i | 111 - .../share/swig/4.1.0/csharp/std_unique_ptr.i | 38 - .../swig/share/swig/4.1.0/csharp/std_vector.i | 418 ---- .../share/swig/4.1.0/csharp/std_wstring.i | 146 -- win64/bin/swig/share/swig/4.1.0/csharp/stl.i | 10 - .../share/swig/4.1.0/csharp/swiginterface.i | 63 - .../swig/share/swig/4.1.0/csharp/swigmove.i | 16 - .../share/swig/4.1.0/csharp/swigtype_inout.i | 34 - .../swig/share/swig/4.1.0/csharp/typemaps.i | 253 --- .../bin/swig/share/swig/4.1.0/csharp/wchar.i | 335 --- win64/bin/swig/share/swig/4.1.0/cstring.i | 0 win64/bin/swig/share/swig/4.1.0/cwstring.i | 0 .../share/swig/4.1.0/d/boost_shared_ptr.i | 293 --- win64/bin/swig/share/swig/4.1.0/d/carrays.i | 111 - win64/bin/swig/share/swig/4.1.0/d/cpointer.i | 171 -- win64/bin/swig/share/swig/4.1.0/d/d.swg | 46 - .../bin/swig/share/swig/4.1.0/d/dclassgen.swg | 172 -- .../swig/share/swig/4.1.0/d/ddirectives.swg | 11 - win64/bin/swig/share/swig/4.1.0/d/denums.swg | 60 - .../swig/share/swig/4.1.0/d/dexception.swg | 30 - win64/bin/swig/share/swig/4.1.0/d/dhead.swg | 298 --- .../bin/swig/share/swig/4.1.0/d/director.swg | 49 - win64/bin/swig/share/swig/4.1.0/d/dkw.swg | 128 -- .../swig/4.1.0/d/dmemberfunctionpointers.swg | 94 - .../swig/share/swig/4.1.0/d/doperators.swg | 259 --- .../swig/share/swig/4.1.0/d/dprimitives.swg | 171 -- .../bin/swig/share/swig/4.1.0/d/dstrings.swg | 80 - .../bin/swig/share/swig/4.1.0/d/dswigtype.swg | 241 -- win64/bin/swig/share/swig/4.1.0/d/dvoid.swg | 18 - .../swig/share/swig/4.1.0/d/std_auto_ptr.i | 42 - .../bin/swig/share/swig/4.1.0/d/std_common.i | 5 - win64/bin/swig/share/swig/4.1.0/d/std_deque.i | 1 - .../bin/swig/share/swig/4.1.0/d/std_except.i | 32 - win64/bin/swig/share/swig/4.1.0/d/std_map.i | 62 - win64/bin/swig/share/swig/4.1.0/d/std_pair.i | 36 - .../swig/share/swig/4.1.0/d/std_shared_ptr.i | 2 - .../bin/swig/share/swig/4.1.0/d/std_string.i | 98 - .../swig/share/swig/4.1.0/d/std_unique_ptr.i | 42 - .../bin/swig/share/swig/4.1.0/d/std_vector.i | 605 ----- win64/bin/swig/share/swig/4.1.0/d/stl.i | 10 - win64/bin/swig/share/swig/4.1.0/d/swigmove.i | 16 - win64/bin/swig/share/swig/4.1.0/d/typemaps.i | 261 --- .../swig/share/swig/4.1.0/d/wrapperloader.swg | 309 --- .../swig/share/swig/4.1.0/director_common.swg | 0 win64/bin/swig/share/swig/4.1.0/exception.i | 0 win64/bin/swig/share/swig/4.1.0/go/cdata.i | 97 - .../bin/swig/share/swig/4.1.0/go/director.swg | 80 - .../bin/swig/share/swig/4.1.0/go/exception.i | 7 - win64/bin/swig/share/swig/4.1.0/go/go.swg | 744 ------- win64/bin/swig/share/swig/4.1.0/go/gokw.swg | 33 - .../swig/share/swig/4.1.0/go/goruntime.swg | 217 -- .../bin/swig/share/swig/4.1.0/go/gostring.swg | 29 - .../bin/swig/share/swig/4.1.0/go/std_array.i | 43 - .../bin/swig/share/swig/4.1.0/go/std_common.i | 4 - .../bin/swig/share/swig/4.1.0/go/std_deque.i | 1 - .../bin/swig/share/swig/4.1.0/go/std_except.i | 31 - win64/bin/swig/share/swig/4.1.0/go/std_list.i | 41 - win64/bin/swig/share/swig/4.1.0/go/std_map.i | 66 - win64/bin/swig/share/swig/4.1.0/go/std_pair.i | 36 - .../bin/swig/share/swig/4.1.0/go/std_string.i | 162 -- .../bin/swig/share/swig/4.1.0/go/std_vector.i | 92 - win64/bin/swig/share/swig/4.1.0/go/stl.i | 10 - win64/bin/swig/share/swig/4.1.0/go/swigmove.i | 15 - win64/bin/swig/share/swig/4.1.0/go/typemaps.i | 298 --- .../bin/swig/share/swig/4.1.0/guile/Makefile | 3 - .../swig/share/swig/4.1.0/guile/common.scm | 70 - .../swig/share/swig/4.1.0/guile/cplusplus.i | 22 - .../share/swig/4.1.0/guile/extra-install.list | 2 - win64/bin/swig/share/swig/4.1.0/guile/guile.i | 33 - .../swig/share/swig/4.1.0/guile/guile_scm.swg | 46 - .../share/swig/4.1.0/guile/guile_scm_run.swg | 532 ----- .../swig/share/swig/4.1.0/guile/guilemain.i | 39 - .../swig/share/swig/4.1.0/guile/interpreter.i | 59 - .../swig/share/swig/4.1.0/guile/list-vector.i | 488 ----- .../share/swig/4.1.0/guile/pointer-in-out.i | 102 - win64/bin/swig/share/swig/4.1.0/guile/ports.i | 50 - .../share/swig/4.1.0/guile/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/guile/std_common.i | 25 - .../swig/share/swig/4.1.0/guile/std_deque.i | 1 - .../swig/share/swig/4.1.0/guile/std_except.i | 13 - .../bin/swig/share/swig/4.1.0/guile/std_map.i | 1370 ------------ .../swig/share/swig/4.1.0/guile/std_pair.i | 867 -------- .../swig/share/swig/4.1.0/guile/std_string.i | 95 - .../share/swig/4.1.0/guile/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/guile/std_vector.i | 424 ---- win64/bin/swig/share/swig/4.1.0/guile/stl.i | 10 - .../swig/share/swig/4.1.0/guile/swigmove.i | 19 - .../bin/swig/share/swig/4.1.0/guile/swigrun.i | 47 - .../swig/share/swig/4.1.0/guile/typemaps.i | 501 ----- .../bin/swig/share/swig/4.1.0/intrusive_ptr.i | 0 win64/bin/swig/share/swig/4.1.0/inttypes.i | 0 .../swig/share/swig/4.1.0/java/arrays_java.i | 392 ---- .../swig/4.1.0/java/boost_intrusive_ptr.i | 484 ---- .../share/swig/4.1.0/java/boost_shared_ptr.i | 337 --- .../swig/share/swig/4.1.0/java/director.swg | 541 ----- .../bin/swig/share/swig/4.1.0/java/enums.swg | 116 - .../swig/share/swig/4.1.0/java/enumsimple.swg | 71 - .../share/swig/4.1.0/java/enumtypesafe.swg | 117 - .../share/swig/4.1.0/java/enumtypeunsafe.swg | 72 - win64/bin/swig/share/swig/4.1.0/java/java.swg | 1458 ------------ .../swig/share/swig/4.1.0/java/javahead.swg | 91 - .../bin/swig/share/swig/4.1.0/java/javakw.swg | 70 - .../swig/share/swig/4.1.0/java/std_array.i | 44 - .../swig/share/swig/4.1.0/java/std_auto_ptr.i | 41 - .../swig/share/swig/4.1.0/java/std_common.i | 5 - .../swig/share/swig/4.1.0/java/std_deque.i | 1 - .../swig/share/swig/4.1.0/java/std_except.i | 32 - .../bin/swig/share/swig/4.1.0/java/std_list.i | 225 -- .../bin/swig/share/swig/4.1.0/java/std_map.i | 224 -- .../bin/swig/share/swig/4.1.0/java/std_pair.i | 37 - .../bin/swig/share/swig/4.1.0/java/std_set.i | 207 -- .../share/swig/4.1.0/java/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/java/std_string.i | 121 - .../share/swig/4.1.0/java/std_unique_ptr.i | 41 - .../share/swig/4.1.0/java/std_unordered_map.i | 211 -- .../share/swig/4.1.0/java/std_unordered_set.i | 203 -- .../swig/share/swig/4.1.0/java/std_vector.i | 185 -- .../swig/share/swig/4.1.0/java/std_wstring.i | 180 -- win64/bin/swig/share/swig/4.1.0/java/stl.i | 10 - .../share/swig/4.1.0/java/swiginterface.i | 74 - .../bin/swig/share/swig/4.1.0/java/swigmove.i | 16 - .../bin/swig/share/swig/4.1.0/java/typemaps.i | 529 ----- .../bin/swig/share/swig/4.1.0/java/various.i | 194 -- .../javascript/cocos/arrays_javascript.i | 0 .../swig/4.1.0/javascript/cocos/ccomplex.i | 0 .../share/swig/4.1.0/javascript/cocos/cdata.i | 0 .../swig/4.1.0/javascript/cocos/complex.i | 0 .../swig/4.1.0/javascript/cocos/exception.i | 0 .../4.1.0/javascript/cocos/javascript.swg | 0 .../4.1.0/javascript/cocos/javascriptcode.swg | 0 .../javascript/cocos/javascriptcomplex.swg | 0 .../javascript/cocos/javascriptfragments.swg | 0 .../javascript/cocos/javascripthelpers.swg | 0 .../4.1.0/javascript/cocos/javascriptinit.swg | 0 .../4.1.0/javascript/cocos/javascriptkw.swg | 0 .../javascript/cocos/javascriptprimtypes.swg | 0 .../4.1.0/javascript/cocos/javascriptrun.swg | 0 .../javascript/cocos/javascriptruntime.swg | 0 .../javascript/cocos/javascriptstrings.swg | 0 .../javascript/cocos/javascripttypemaps.swg | 9 +- .../swig/4.1.0/javascript/cocos/std_common.i | 0 .../swig/4.1.0/javascript/cocos/std_complex.i | 0 .../swig/4.1.0/javascript/cocos/std_deque.i | 0 .../swig/4.1.0/javascript/cocos/std_except.i | 0 .../swig/4.1.0/javascript/cocos/std_map.i | 0 .../swig/4.1.0/javascript/cocos/std_pair.i | 0 .../swig/4.1.0/javascript/cocos/std_string.i | 0 .../swig/4.1.0/javascript/cocos/std_vector.i | 0 .../share/swig/4.1.0/javascript/cocos/stl.i | 0 .../swig/4.1.0/javascript/cocos/typemaps.i | 0 .../4.1.0/javascript/jsc/arrays_javascript.i | 94 - .../swig/4.1.0/javascript/jsc/ccomplex.i | 27 - .../share/swig/4.1.0/javascript/jsc/cdata.i | 1 - .../share/swig/4.1.0/javascript/jsc/complex.i | 6 - .../swig/4.1.0/javascript/jsc/exception.i | 1 - .../swig/4.1.0/javascript/jsc/javascript.swg | 19 - .../4.1.0/javascript/jsc/javascriptcode.swg | 429 ---- .../javascript/jsc/javascriptcomplex.swg | 146 -- .../javascript/jsc/javascriptfragments.swg | 23 - .../javascript/jsc/javascripthelpers.swg | 69 - .../4.1.0/javascript/jsc/javascriptinit.swg | 112 - .../4.1.0/javascript/jsc/javascriptkw.swg | 40 - .../javascript/jsc/javascriptprimtypes.swg | 192 -- .../4.1.0/javascript/jsc/javascriptrun.swg | 369 ---- .../javascript/jsc/javascriptruntime.swg | 20 - .../javascript/jsc/javascriptstrings.swg | 187 -- .../javascript/jsc/javascripttypemaps.swg | 54 - .../swig/4.1.0/javascript/jsc/std_auto_ptr.i | 39 - .../swig/4.1.0/javascript/jsc/std_common.i | 5 - .../swig/4.1.0/javascript/jsc/std_complex.i | 26 - .../swig/4.1.0/javascript/jsc/std_deque.i | 1 - .../swig/4.1.0/javascript/jsc/std_except.i | 1 - .../share/swig/4.1.0/javascript/jsc/std_map.i | 81 - .../swig/4.1.0/javascript/jsc/std_pair.i | 36 - .../swig/4.1.0/javascript/jsc/std_string.i | 1 - .../4.1.0/javascript/jsc/std_unique_ptr.i | 39 - .../swig/4.1.0/javascript/jsc/std_vector.i | 99 - .../share/swig/4.1.0/javascript/jsc/stl.i | 10 - .../swig/4.1.0/javascript/jsc/swigmove.i | 1 - .../swig/4.1.0/javascript/jsc/typemaps.i | 148 -- .../4.1.0/javascript/v8/arrays_javascript.i | 86 - .../share/swig/4.1.0/javascript/v8/ccomplex.i | 27 - .../share/swig/4.1.0/javascript/v8/cdata.i | 1 - .../share/swig/4.1.0/javascript/v8/complex.i | 6 - .../swig/4.1.0/javascript/v8/exception.i | 1 - .../swig/4.1.0/javascript/v8/javascript.swg | 19 - .../4.1.0/javascript/v8/javascriptcode.swg | 435 ---- .../4.1.0/javascript/v8/javascriptcomplex.swg | 124 -- .../javascript/v8/javascriptfragments.swg | 23 - .../4.1.0/javascript/v8/javascripthelpers.swg | 87 - .../4.1.0/javascript/v8/javascriptinit.swg | 126 -- .../swig/4.1.0/javascript/v8/javascriptkw.swg | 40 - .../javascript/v8/javascriptprimtypes.swg | 203 -- .../4.1.0/javascript/v8/javascriptrun.swg | 487 ---- .../4.1.0/javascript/v8/javascriptruntime.swg | 47 - .../4.1.0/javascript/v8/javascriptstrings.swg | 59 - .../javascript/v8/javascripttypemaps.swg | 43 - .../swig/4.1.0/javascript/v8/std_auto_ptr.i | 39 - .../swig/4.1.0/javascript/v8/std_common.i | 5 - .../swig/4.1.0/javascript/v8/std_complex.i | 26 - .../swig/4.1.0/javascript/v8/std_deque.i | 1 - .../swig/4.1.0/javascript/v8/std_except.i | 1 - .../share/swig/4.1.0/javascript/v8/std_map.i | 80 - .../share/swig/4.1.0/javascript/v8/std_pair.i | 35 - .../swig/4.1.0/javascript/v8/std_string.i | 1 - .../swig/4.1.0/javascript/v8/std_unique_ptr.i | 39 - .../swig/4.1.0/javascript/v8/std_vector.i | 99 - .../swig/share/swig/4.1.0/javascript/v8/stl.i | 10 - .../share/swig/4.1.0/javascript/v8/swigmove.i | 1 - .../share/swig/4.1.0/javascript/v8/typemaps.i | 148 -- win64/bin/swig/share/swig/4.1.0/linkruntime.c | 0 .../swig/share/swig/4.1.0/lua/_std_common.i | 93 - .../bin/swig/share/swig/4.1.0/lua/argcargv.i | 57 - win64/bin/swig/share/swig/4.1.0/lua/carrays.i | 8 - win64/bin/swig/share/swig/4.1.0/lua/factory.i | 23 - win64/bin/swig/share/swig/4.1.0/lua/lua.swg | 236 -- .../bin/swig/share/swig/4.1.0/lua/lua_fnptr.i | 124 -- win64/bin/swig/share/swig/4.1.0/lua/luakw.swg | 67 - .../bin/swig/share/swig/4.1.0/lua/luarun.swg | 1950 ----------------- .../swig/share/swig/4.1.0/lua/luaruntime.swg | 104 - .../swig/share/swig/4.1.0/lua/luatypemaps.swg | 418 ---- .../swig/share/swig/4.1.0/lua/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/lua/std_common.i | 5 - .../bin/swig/share/swig/4.1.0/lua/std_deque.i | 1 - .../swig/share/swig/4.1.0/lua/std_except.i | 42 - win64/bin/swig/share/swig/4.1.0/lua/std_map.i | 66 - .../bin/swig/share/swig/4.1.0/lua/std_pair.i | 26 - .../swig/share/swig/4.1.0/lua/std_string.i | 125 -- .../share/swig/4.1.0/lua/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/lua/std_vector.i | 140 -- win64/bin/swig/share/swig/4.1.0/lua/stl.i | 10 - .../bin/swig/share/swig/4.1.0/lua/swigmove.i | 18 - .../bin/swig/share/swig/4.1.0/lua/typemaps.i | 554 ----- win64/bin/swig/share/swig/4.1.0/lua/wchar.i | 42 - win64/bin/swig/share/swig/4.1.0/math.i | 0 .../swig/share/swig/4.1.0/mzscheme/Makefile | 3 - .../swig/share/swig/4.1.0/mzscheme/mzrun.swg | 521 ----- .../share/swig/4.1.0/mzscheme/mzscheme.swg | 56 - .../share/swig/4.1.0/mzscheme/std_auto_ptr.i | 39 - .../share/swig/4.1.0/mzscheme/std_common.i | 23 - .../share/swig/4.1.0/mzscheme/std_deque.i | 1 - .../swig/share/swig/4.1.0/mzscheme/std_map.i | 1388 ------------ .../swig/share/swig/4.1.0/mzscheme/std_pair.i | 874 -------- .../share/swig/4.1.0/mzscheme/std_string.i | 64 - .../swig/4.1.0/mzscheme/std_unique_ptr.i | 39 - .../share/swig/4.1.0/mzscheme/std_vector.i | 451 ---- .../bin/swig/share/swig/4.1.0/mzscheme/stl.i | 10 - .../swig/share/swig/4.1.0/mzscheme/swigmove.i | 19 - .../swig/share/swig/4.1.0/mzscheme/typemaps.i | 399 ---- .../bin/swig/share/swig/4.1.0/ocaml/carray.i | 131 -- .../bin/swig/share/swig/4.1.0/ocaml/class.swg | 67 - .../bin/swig/share/swig/4.1.0/ocaml/cstring.i | 268 --- .../swig/share/swig/4.1.0/ocaml/director.swg | 101 - .../share/swig/4.1.0/ocaml/extra-install.list | 4 - win64/bin/swig/share/swig/4.1.0/ocaml/ocaml.i | 50 - .../bin/swig/share/swig/4.1.0/ocaml/ocaml.swg | 320 --- .../swig/share/swig/4.1.0/ocaml/ocamlkw.swg | 72 - .../swig/share/swig/4.1.0/ocaml/ocamlrun.swg | 607 ----- .../share/swig/4.1.0/ocaml/ocamlrundec.swg | 212 -- .../swig/share/swig/4.1.0/ocaml/preamble.swg | 17 - .../swig/share/swig/4.1.0/ocaml/std_common.i | 23 - .../swig/share/swig/4.1.0/ocaml/std_complex.i | 65 - .../swig/share/swig/4.1.0/ocaml/std_deque.i | 28 - .../swig/share/swig/4.1.0/ocaml/std_except.i | 23 - .../swig/share/swig/4.1.0/ocaml/std_list.i | 217 -- .../bin/swig/share/swig/4.1.0/ocaml/std_map.i | 79 - .../swig/share/swig/4.1.0/ocaml/std_pair.i | 36 - .../swig/share/swig/4.1.0/ocaml/std_string.i | 136 -- .../swig/share/swig/4.1.0/ocaml/std_vector.i | 98 - win64/bin/swig/share/swig/4.1.0/ocaml/stl.i | 10 - win64/bin/swig/share/swig/4.1.0/ocaml/swig.ml | 166 -- .../bin/swig/share/swig/4.1.0/ocaml/swig.mli | 62 - .../swig/share/swig/4.1.0/ocaml/swigmove.i | 11 - .../bin/swig/share/swig/4.1.0/ocaml/swigp4.ml | 135 -- .../swig/share/swig/4.1.0/ocaml/typecheck.i | 197 -- .../swig/share/swig/4.1.0/ocaml/typemaps.i | 44 - .../share/swig/4.1.0/ocaml/typeregister.swg | 2 - .../swig/share/swig/4.1.0/octave/argcargv.i | 44 - .../swig/share/swig/4.1.0/octave/attribute.i | 1 - .../swig/4.1.0/octave/boost_shared_ptr.i | 401 ---- .../swig/share/swig/4.1.0/octave/carrays.i | 5 - .../bin/swig/share/swig/4.1.0/octave/cdata.i | 1 - .../swig/share/swig/4.1.0/octave/cmalloc.i | 1 - .../swig/share/swig/4.1.0/octave/director.swg | 146 -- .../swig/share/swig/4.1.0/octave/exception.i | 14 - .../swig/4.1.0/octave/extra-install.list | 2 - .../swig/share/swig/4.1.0/octave/factory.i | 1 - .../swig/share/swig/4.1.0/octave/implicit.i | 7 - .../swig/share/swig/4.1.0/octave/octave.swg | 8 - .../share/swig/4.1.0/octave/octcomplex.swg | 92 - .../share/swig/4.1.0/octave/octcontainer.swg | 623 ------ .../share/swig/4.1.0/octave/octfragments.swg | 1 - .../share/swig/4.1.0/octave/octheaders.hpp | 130 -- .../share/swig/4.1.0/octave/octiterators.swg | 357 --- .../swig/share/swig/4.1.0/octave/octopers.swg | 86 - .../share/swig/4.1.0/octave/octprimtypes.swg | 254 --- .../swig/share/swig/4.1.0/octave/octrun.swg | 1669 -------------- .../share/swig/4.1.0/octave/octruntime.swg | 425 ---- .../share/swig/4.1.0/octave/octstdcommon.swg | 222 -- .../share/swig/4.1.0/octave/octtypemaps.swg | 99 - .../share/swig/4.1.0/octave/octuserdir.swg | 72 - .../swig/share/swig/4.1.0/octave/std_alloc.i | 1 - .../share/swig/4.1.0/octave/std_auto_ptr.i | 39 - .../swig/4.1.0/octave/std_basic_string.i | 64 - .../swig/share/swig/4.1.0/octave/std_carray.i | 0 .../share/swig/4.1.0/octave/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/octave/std_common.i | 72 - .../share/swig/4.1.0/octave/std_complex.i | 25 - .../share/swig/4.1.0/octave/std_container.i | 2 - .../swig/share/swig/4.1.0/octave/std_deque.i | 25 - .../swig/share/swig/4.1.0/octave/std_except.i | 1 - .../swig/share/swig/4.1.0/octave/std_list.i | 26 - .../swig/share/swig/4.1.0/octave/std_map.i | 157 -- .../swig/share/swig/4.1.0/octave/std_pair.i | 147 -- .../share/swig/4.1.0/octave/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/octave/std_string.i | 1 - .../share/swig/4.1.0/octave/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/octave/std_vector.i | 26 - .../share/swig/4.1.0/octave/std_wstring.i | 1 - win64/bin/swig/share/swig/4.1.0/octave/stl.i | 10 - .../swig/share/swig/4.1.0/octave/swigmove.i | 1 - .../swig/share/swig/4.1.0/octave/typemaps.i | 1 - .../swig/share/swig/4.1.0/perl5/Makefile.in | 120 - .../swig/share/swig/4.1.0/perl5/Makefile.pl | 19 - .../swig/share/swig/4.1.0/perl5/argcargv.i | 32 - .../swig/share/swig/4.1.0/perl5/attribute.i | 1 - .../bin/swig/share/swig/4.1.0/perl5/carrays.i | 2 - win64/bin/swig/share/swig/4.1.0/perl5/cdata.i | 1 - .../bin/swig/share/swig/4.1.0/perl5/cmalloc.i | 1 - .../swig/share/swig/4.1.0/perl5/cpointer.i | 1 - .../bin/swig/share/swig/4.1.0/perl5/cstring.i | 1 - .../swig/share/swig/4.1.0/perl5/director.swg | 317 --- .../swig/share/swig/4.1.0/perl5/exception.i | 5 - .../share/swig/4.1.0/perl5/extra-install.list | 2 - .../bin/swig/share/swig/4.1.0/perl5/factory.i | 1 - .../bin/swig/share/swig/4.1.0/perl5/noembed.h | 116 - .../bin/swig/share/swig/4.1.0/perl5/perl5.swg | 42 - .../share/swig/4.1.0/perl5/perlerrors.swg | 34 - .../share/swig/4.1.0/perl5/perlfragments.swg | 23 - .../swig/share/swig/4.1.0/perl5/perlhead.swg | 91 - .../swig/share/swig/4.1.0/perl5/perlinit.swg | 78 - .../swig/share/swig/4.1.0/perl5/perlkw.swg | 251 --- .../share/swig/4.1.0/perl5/perlmacros.swg | 2 - .../swig/share/swig/4.1.0/perl5/perlmain.i | 82 - .../swig/share/swig/4.1.0/perl5/perlopers.swg | 54 - .../share/swig/4.1.0/perl5/perlprimtypes.swg | 364 --- .../swig/share/swig/4.1.0/perl5/perlrun.swg | 493 ----- .../share/swig/4.1.0/perl5/perlruntime.swg | 8 - .../share/swig/4.1.0/perl5/perlstrings.swg | 59 - .../share/swig/4.1.0/perl5/perltypemaps.swg | 104 - .../share/swig/4.1.0/perl5/perluserdir.swg | 2 - .../swig/share/swig/4.1.0/perl5/reference.i | 261 --- .../share/swig/4.1.0/perl5/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/perl5/std_common.i | 28 - .../swig/share/swig/4.1.0/perl5/std_deque.i | 1 - .../swig/share/swig/4.1.0/perl5/std_except.i | 1 - .../swig/share/swig/4.1.0/perl5/std_list.i | 377 ---- .../bin/swig/share/swig/4.1.0/perl5/std_map.i | 80 - .../swig/share/swig/4.1.0/perl5/std_pair.i | 36 - .../swig/share/swig/4.1.0/perl5/std_string.i | 2 - .../share/swig/4.1.0/perl5/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/perl5/std_vector.i | 592 ----- win64/bin/swig/share/swig/4.1.0/perl5/stl.i | 10 - .../swig/share/swig/4.1.0/perl5/swigmove.i | 1 - .../swig/share/swig/4.1.0/perl5/typemaps.i | 371 ---- .../bin/swig/share/swig/4.1.0/php/argcargv.i | 40 - win64/bin/swig/share/swig/4.1.0/php/const.i | 103 - .../swig/share/swig/4.1.0/php/director.swg | 180 -- win64/bin/swig/share/swig/4.1.0/php/factory.i | 109 - win64/bin/swig/share/swig/4.1.0/php/php.swg | 594 ----- .../bin/swig/share/swig/4.1.0/php/phpinit.swg | 16 - .../swig/share/swig/4.1.0/php/phpinterfaces.i | 62 - win64/bin/swig/share/swig/4.1.0/php/phpkw.swg | 888 -------- .../swig/share/swig/4.1.0/php/phppointers.i | 42 - .../bin/swig/share/swig/4.1.0/php/phprun.swg | 272 --- .../swig/share/swig/4.1.0/php/std_auto_ptr.i | 41 - .../swig/share/swig/4.1.0/php/std_common.i | 9 - .../bin/swig/share/swig/4.1.0/php/std_deque.i | 1 - win64/bin/swig/share/swig/4.1.0/php/std_map.i | 82 - .../bin/swig/share/swig/4.1.0/php/std_pair.i | 36 - .../swig/share/swig/4.1.0/php/std_string.i | 90 - .../share/swig/4.1.0/php/std_unique_ptr.i | 41 - .../swig/share/swig/4.1.0/php/std_vector.i | 114 - win64/bin/swig/share/swig/4.1.0/php/stl.i | 9 - .../bin/swig/share/swig/4.1.0/php/swigmove.i | 24 - .../bin/swig/share/swig/4.1.0/php/typemaps.i | 295 --- win64/bin/swig/share/swig/4.1.0/php/utils.i | 115 - win64/bin/swig/share/swig/4.1.0/pointer.i | 0 .../swig/share/swig/4.1.0/python/Makefile.in | 119 - win64/bin/swig/share/swig/4.1.0/python/README | 103 - .../swig/share/swig/4.1.0/python/argcargv.i | 89 - .../swig/share/swig/4.1.0/python/attribute.i | 1 - .../swig/4.1.0/python/boost_shared_ptr.i | 411 ---- .../swig/share/swig/4.1.0/python/builtin.swg | 764 ------- .../swig/share/swig/4.1.0/python/carrays.i | 13 - .../swig/share/swig/4.1.0/python/ccomplex.i | 27 - .../bin/swig/share/swig/4.1.0/python/cdata.i | 1 - .../swig/share/swig/4.1.0/python/cmalloc.i | 1 - .../swig/share/swig/4.1.0/python/complex.i | 6 - .../swig/share/swig/4.1.0/python/cpointer.i | 1 - .../swig/share/swig/4.1.0/python/cstring.i | 1 - .../swig/share/swig/4.1.0/python/cwstring.i | 3 - .../swig/share/swig/4.1.0/python/director.swg | 389 ---- .../bin/swig/share/swig/4.1.0/python/embed.i | 120 - .../swig/share/swig/4.1.0/python/exception.i | 6 - .../swig/share/swig/4.1.0/python/factory.i | 1 - win64/bin/swig/share/swig/4.1.0/python/file.i | 41 - .../swig/share/swig/4.1.0/python/implicit.i | 7 - .../bin/swig/share/swig/4.1.0/python/pyabc.i | 14 - .../swig/share/swig/4.1.0/python/pyapi.swg | 30 - .../share/swig/4.1.0/python/pybackward.swg | 45 - .../swig/share/swig/4.1.0/python/pybuffer.i | 119 - .../share/swig/4.1.0/python/pyclasses.swg | 157 -- .../share/swig/4.1.0/python/pycomplex.swg | 86 - .../share/swig/4.1.0/python/pycontainer.swg | 1082 --------- .../swig/share/swig/4.1.0/python/pydocs.swg | 45 - .../swig/share/swig/4.1.0/python/pyerrors.swg | 107 - .../share/swig/4.1.0/python/pyfragments.swg | 23 - .../swig/share/swig/4.1.0/python/pyhead.swg | 75 - .../swig/share/swig/4.1.0/python/pyinit.swg | 325 --- .../share/swig/4.1.0/python/pyiterators.swg | 458 ---- .../swig/share/swig/4.1.0/python/pymacros.swg | 4 - .../share/swig/4.1.0/python/pyname_compat.i | 85 - .../swig/share/swig/4.1.0/python/pyopers.swg | 264 --- .../share/swig/4.1.0/python/pyprimtypes.swg | 353 --- .../swig/share/swig/4.1.0/python/pyrun.swg | 1913 ---------------- .../share/swig/4.1.0/python/pyruntime.swg | 49 - .../share/swig/4.1.0/python/pystdcommon.swg | 265 --- .../share/swig/4.1.0/python/pystrings.swg | 139 -- .../swig/share/swig/4.1.0/python/python.swg | 59 - .../swig/share/swig/4.1.0/python/pythonkw.swg | 140 -- .../share/swig/4.1.0/python/pythreads.swg | 68 - .../share/swig/4.1.0/python/pytuplehlp.swg | 8 - .../share/swig/4.1.0/python/pytypemaps.swg | 105 - .../share/swig/4.1.0/python/pyuserdir.swg | 242 -- .../share/swig/4.1.0/python/pywstrings.swg | 85 - .../swig/share/swig/4.1.0/python/std_alloc.i | 1 - .../swig/share/swig/4.1.0/python/std_array.i | 91 - .../share/swig/4.1.0/python/std_auto_ptr.i | 39 - .../swig/4.1.0/python/std_basic_string.i | 89 - .../swig/share/swig/4.1.0/python/std_carray.i | 54 - .../share/swig/4.1.0/python/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/python/std_common.i | 74 - .../share/swig/4.1.0/python/std_complex.i | 27 - .../share/swig/4.1.0/python/std_container.i | 2 - .../swig/share/swig/4.1.0/python/std_deque.i | 27 - .../swig/share/swig/4.1.0/python/std_except.i | 1 - .../swig/share/swig/4.1.0/python/std_ios.i | 3 - .../share/swig/4.1.0/python/std_iostream.i | 8 - .../swig/share/swig/4.1.0/python/std_list.i | 28 - .../swig/share/swig/4.1.0/python/std_map.i | 310 --- .../share/swig/4.1.0/python/std_multimap.i | 93 - .../share/swig/4.1.0/python/std_multiset.i | 41 - .../swig/share/swig/4.1.0/python/std_pair.i | 206 -- .../swig/share/swig/4.1.0/python/std_set.i | 67 - .../share/swig/4.1.0/python/std_shared_ptr.i | 2 - .../share/swig/4.1.0/python/std_sstream.i | 1 - .../share/swig/4.1.0/python/std_streambuf.i | 1 - .../swig/share/swig/4.1.0/python/std_string.i | 1 - .../share/swig/4.1.0/python/std_unique_ptr.i | 39 - .../swig/4.1.0/python/std_unordered_map.i | 296 --- .../4.1.0/python/std_unordered_multimap.i | 100 - .../4.1.0/python/std_unordered_multiset.i | 48 - .../swig/4.1.0/python/std_unordered_set.i | 67 - .../swig/share/swig/4.1.0/python/std_vector.i | 34 - .../share/swig/4.1.0/python/std_vectora.i | 31 - .../swig/share/swig/4.1.0/python/std_wios.i | 1 - .../share/swig/4.1.0/python/std_wiostream.i | 10 - .../share/swig/4.1.0/python/std_wsstream.i | 1 - .../share/swig/4.1.0/python/std_wstreambuf.i | 1 - .../share/swig/4.1.0/python/std_wstring.i | 3 - win64/bin/swig/share/swig/4.1.0/python/stl.i | 10 - .../swig/share/swig/4.1.0/python/swigmove.i | 1 - .../swig/share/swig/4.1.0/python/typemaps.i | 148 -- .../bin/swig/share/swig/4.1.0/python/wchar.i | 21 - .../share/swig/4.1.0/r/boost_shared_ptr.i | 420 ---- win64/bin/swig/share/swig/4.1.0/r/cdata.i | 1 - win64/bin/swig/share/swig/4.1.0/r/exception.i | 8 - win64/bin/swig/share/swig/4.1.0/r/r.swg | 281 --- .../swig/share/swig/4.1.0/r/rcontainer.swg | 198 -- .../swig/share/swig/4.1.0/r/rfragments.swg | 191 -- win64/bin/swig/share/swig/4.1.0/r/rkw.swg | 36 - win64/bin/swig/share/swig/4.1.0/r/ropers.swg | 32 - win64/bin/swig/share/swig/4.1.0/r/rrun.swg | 420 ---- .../swig/share/swig/4.1.0/r/rstdcommon.swg | 205 -- win64/bin/swig/share/swig/4.1.0/r/rtype.swg | 328 --- win64/bin/swig/share/swig/4.1.0/r/srun.swg | 150 -- win64/bin/swig/share/swig/4.1.0/r/std_alloc.i | 1 - .../bin/swig/share/swig/4.1.0/r/std_common.i | 73 - .../swig/share/swig/4.1.0/r/std_container.i | 2 - win64/bin/swig/share/swig/4.1.0/r/std_deque.i | 1 - .../bin/swig/share/swig/4.1.0/r/std_except.i | 1 - win64/bin/swig/share/swig/4.1.0/r/std_list.i | 5 - win64/bin/swig/share/swig/4.1.0/r/std_map.i | 5 - win64/bin/swig/share/swig/4.1.0/r/std_pair.i | 5 - .../swig/share/swig/4.1.0/r/std_shared_ptr.i | 2 - .../bin/swig/share/swig/4.1.0/r/std_string.i | 1 - .../bin/swig/share/swig/4.1.0/r/std_vector.i | 1105 ---------- win64/bin/swig/share/swig/4.1.0/r/stl.i | 9 - win64/bin/swig/share/swig/4.1.0/r/swigmove.i | 1 - win64/bin/swig/share/swig/4.1.0/r/typemaps.i | 1 - .../swig/share/swig/4.1.0/ruby/Makefile.swig | 42 - .../bin/swig/share/swig/4.1.0/ruby/argcargv.i | 44 - .../swig/share/swig/4.1.0/ruby/attribute.i | 1 - .../share/swig/4.1.0/ruby/boost_shared_ptr.i | 401 ---- .../bin/swig/share/swig/4.1.0/ruby/carrays.i | 6 - win64/bin/swig/share/swig/4.1.0/ruby/cdata.i | 1 - .../bin/swig/share/swig/4.1.0/ruby/cmalloc.i | 1 - .../bin/swig/share/swig/4.1.0/ruby/cpointer.i | 1 - .../bin/swig/share/swig/4.1.0/ruby/cstring.i | 1 - .../swig/share/swig/4.1.0/ruby/director.swg | 311 --- win64/bin/swig/share/swig/4.1.0/ruby/embed.i | 16 - .../swig/share/swig/4.1.0/ruby/exception.i | 5 - .../bin/swig/share/swig/4.1.0/ruby/extconf.rb | 9 - .../share/swig/4.1.0/ruby/extra-install.list | 3 - .../bin/swig/share/swig/4.1.0/ruby/factory.i | 1 - win64/bin/swig/share/swig/4.1.0/ruby/file.i | 39 - .../swig/share/swig/4.1.0/ruby/progargcargv.i | 34 - win64/bin/swig/share/swig/4.1.0/ruby/ruby.swg | 72 - .../swig/share/swig/4.1.0/ruby/rubyapi.swg | 36 - .../share/swig/4.1.0/ruby/rubyautodoc.swg | 105 - .../share/swig/4.1.0/ruby/rubyclasses.swg | 404 ---- .../share/swig/4.1.0/ruby/rubycomplex.swg | 148 -- .../share/swig/4.1.0/ruby/rubycontainer.swg | 1114 ---------- .../4.1.0/ruby/rubycontainer_extended.swg | 134 -- .../swig/share/swig/4.1.0/ruby/rubydef.swg | 1 - .../swig/share/swig/4.1.0/ruby/rubyerrors.swg | 154 -- .../share/swig/4.1.0/ruby/rubyfragments.swg | 23 - .../swig/share/swig/4.1.0/ruby/rubyhead.swg | 185 -- .../swig/share/swig/4.1.0/ruby/rubyinit.swg | 1 - .../share/swig/4.1.0/ruby/rubyiterators.swg | 932 -------- .../bin/swig/share/swig/4.1.0/ruby/rubykw.swg | 72 - .../swig/share/swig/4.1.0/ruby/rubymacros.swg | 13 - .../swig/share/swig/4.1.0/ruby/rubyopers.swg | 55 - .../share/swig/4.1.0/ruby/rubyprimtypes.swg | 228 -- .../swig/share/swig/4.1.0/ruby/rubyrun.swg | 468 ---- .../share/swig/4.1.0/ruby/rubyruntime.swg | 9 - .../share/swig/4.1.0/ruby/rubystdautodoc.swg | 33 - .../share/swig/4.1.0/ruby/rubystdcommon.swg | 199 -- .../swig/4.1.0/ruby/rubystdcommon_forward.swg | 15 - .../share/swig/4.1.0/ruby/rubystdfunctors.swg | 162 -- .../share/swig/4.1.0/ruby/rubystrings.swg | 57 - .../share/swig/4.1.0/ruby/rubytracking.swg | 136 -- .../share/swig/4.1.0/ruby/rubytypemaps.swg | 62 - .../share/swig/4.1.0/ruby/rubyuserdir.swg | 20 - .../share/swig/4.1.0/ruby/rubywstrings.swg | 58 - .../swig/share/swig/4.1.0/ruby/std_alloc.i | 1 - .../swig/share/swig/4.1.0/ruby/std_array.i | 102 - .../swig/share/swig/4.1.0/ruby/std_auto_ptr.i | 39 - .../share/swig/4.1.0/ruby/std_basic_string.i | 92 - .../share/swig/4.1.0/ruby/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/ruby/std_common.i | 74 - .../swig/share/swig/4.1.0/ruby/std_complex.i | 29 - .../share/swig/4.1.0/ruby/std_container.i | 2 - .../swig/share/swig/4.1.0/ruby/std_deque.i | 30 - .../swig/share/swig/4.1.0/ruby/std_except.i | 1 - .../swig/share/swig/4.1.0/ruby/std_functors.i | 29 - .../bin/swig/share/swig/4.1.0/ruby/std_ios.i | 14 - .../swig/share/swig/4.1.0/ruby/std_iostream.i | 12 - .../bin/swig/share/swig/4.1.0/ruby/std_list.i | 42 - .../bin/swig/share/swig/4.1.0/ruby/std_map.i | 424 ---- .../swig/share/swig/4.1.0/ruby/std_multimap.i | 226 -- .../swig/share/swig/4.1.0/ruby/std_multiset.i | 50 - .../bin/swig/share/swig/4.1.0/ruby/std_pair.i | 212 -- .../swig/share/swig/4.1.0/ruby/std_queue.i | 33 - .../bin/swig/share/swig/4.1.0/ruby/std_set.i | 228 -- .../share/swig/4.1.0/ruby/std_shared_ptr.i | 144 -- .../swig/share/swig/4.1.0/ruby/std_sstream.i | 2 - .../swig/share/swig/4.1.0/ruby/std_stack.i | 35 - .../share/swig/4.1.0/ruby/std_streambuf.i | 1 - .../swig/share/swig/4.1.0/ruby/std_string.i | 7 - .../share/swig/4.1.0/ruby/std_unique_ptr.i | 39 - .../share/swig/4.1.0/ruby/std_unordered_map.i | 83 - .../swig/4.1.0/ruby/std_unordered_multimap.i | 100 - .../swig/4.1.0/ruby/std_unordered_multiset.i | 50 - .../share/swig/4.1.0/ruby/std_unordered_set.i | 50 - .../swig/share/swig/4.1.0/ruby/std_vector.i | 52 - .../swig/share/swig/4.1.0/ruby/std_vectora.i | 36 - .../swig/share/swig/4.1.0/ruby/std_wstring.i | 63 - win64/bin/swig/share/swig/4.1.0/ruby/stl.i | 10 - .../bin/swig/share/swig/4.1.0/ruby/swigmove.i | 1 - .../bin/swig/share/swig/4.1.0/ruby/timeval.i | 69 - .../bin/swig/share/swig/4.1.0/ruby/typemaps.i | 314 --- win64/bin/swig/share/swig/4.1.0/runtime.swg | 0 .../swig/4.1.0/scilab/boost_shared_ptr.i | 401 ---- .../swig/share/swig/4.1.0/scilab/carrays.i | 5 - .../swig/share/swig/4.1.0/scilab/cmalloc.i | 1 - .../swig/share/swig/4.1.0/scilab/cpointer.i | 1 - .../swig/share/swig/4.1.0/scilab/exception.i | 6 - .../bin/swig/share/swig/4.1.0/scilab/matrix.i | 11 - .../swig/share/swig/4.1.0/scilab/sciarray.swg | 115 - .../swig/share/swig/4.1.0/scilab/scibool.swg | 156 -- .../swig/share/swig/4.1.0/scilab/scichar.swg | 292 --- .../share/swig/4.1.0/scilab/scicontainer.swg | 445 ---- .../share/swig/4.1.0/scilab/scidouble.swg | 108 - .../swig/share/swig/4.1.0/scilab/scienum.swg | 31 - .../share/swig/4.1.0/scilab/sciexception.swg | 60 - .../swig/share/swig/4.1.0/scilab/scifloat.swg | 83 - .../swig/share/swig/4.1.0/scilab/sciint.swg | 202 -- .../share/swig/4.1.0/scilab/sciiterators.swg | 363 --- .../swig/share/swig/4.1.0/scilab/scilab.swg | 6 - .../swig/share/swig/4.1.0/scilab/scilist.swg | 91 - .../swig/share/swig/4.1.0/scilab/scilong.swg | 123 -- .../share/swig/4.1.0/scilab/scilonglong.swg | 54 - .../share/swig/4.1.0/scilab/scimacros.swg | 5 - .../share/swig/4.1.0/scilab/scimatrixbool.swg | 170 -- .../share/swig/4.1.0/scilab/scimatrixchar.swg | 199 -- .../swig/4.1.0/scilab/scimatrixdouble.swg | 170 -- .../share/swig/4.1.0/scilab/scimatrixint.swg | 175 -- .../share/swig/4.1.0/scilab/scimisctypes.swg | 69 - .../share/swig/4.1.0/scilab/scipointer.swg | 32 - .../share/swig/4.1.0/scilab/sciprimtypes.swg | 23 - .../swig/share/swig/4.1.0/scilab/scirun.swg | 532 ----- .../share/swig/4.1.0/scilab/sciruntime.swg | 47 - .../share/swig/4.1.0/scilab/scisequence.swg | 195 -- .../swig/4.1.0/scilab/scisequencebool.swg | 98 - .../swig/4.1.0/scilab/scisequencedouble.swg | 99 - .../swig/4.1.0/scilab/scisequencefloat.swg | 98 - .../swig/4.1.0/scilab/scisequenceint.swg | 104 - .../swig/4.1.0/scilab/scisequencepointer.swg | 123 -- .../swig/4.1.0/scilab/scisequencestring.swg | 97 - .../swig/share/swig/4.1.0/scilab/scishort.swg | 188 -- .../share/swig/4.1.0/scilab/scisignedchar.swg | 185 -- .../share/swig/4.1.0/scilab/scistdcommon.swg | 218 -- .../share/swig/4.1.0/scilab/scitypemaps.swg | 259 --- .../swig/4.1.0/scilab/sciunsignedchar.swg | 190 -- .../swig/4.1.0/scilab/sciunsignedint.swg | 204 -- .../swig/4.1.0/scilab/sciunsignedlong.swg | 53 - .../swig/4.1.0/scilab/sciunsignedshort.swg | 189 -- .../swig/share/swig/4.1.0/scilab/std_alloc.i | 2 - .../swig/4.1.0/scilab/std_basic_string.i | 45 - .../share/swig/4.1.0/scilab/std_char_traits.i | 1 - .../swig/share/swig/4.1.0/scilab/std_common.i | 72 - .../share/swig/4.1.0/scilab/std_container.i | 3 - .../swig/share/swig/4.1.0/scilab/std_deque.i | 31 - .../swig/share/swig/4.1.0/scilab/std_except.i | 1 - .../swig/share/swig/4.1.0/scilab/std_list.i | 30 - .../swig/share/swig/4.1.0/scilab/std_map.i | 79 - .../share/swig/4.1.0/scilab/std_multiset.i | 30 - .../swig/share/swig/4.1.0/scilab/std_pair.i | 36 - .../swig/share/swig/4.1.0/scilab/std_set.i | 32 - .../share/swig/4.1.0/scilab/std_shared_ptr.i | 2 - .../swig/share/swig/4.1.0/scilab/std_string.i | 47 - .../swig/share/swig/4.1.0/scilab/std_vector.i | 31 - win64/bin/swig/share/swig/4.1.0/scilab/stl.i | 10 - .../swig/share/swig/4.1.0/scilab/swigmove.i | 1 - .../swig/share/swig/4.1.0/scilab/typemaps.i | 62 - win64/bin/swig/share/swig/4.1.0/shared_ptr.i | 0 win64/bin/swig/share/swig/4.1.0/std/README | 0 .../swig/share/swig/4.1.0/std/_std_deque.i | 0 .../bin/swig/share/swig/4.1.0/std/std_alloc.i | 0 .../bin/swig/share/swig/4.1.0/std/std_array.i | 0 .../share/swig/4.1.0/std/std_basic_string.i | 0 .../swig/share/swig/4.1.0/std/std_carray.swg | 0 .../share/swig/4.1.0/std/std_char_traits.i | 0 .../swig/share/swig/4.1.0/std/std_common.i | 0 .../swig/share/swig/4.1.0/std/std_container.i | 0 .../bin/swig/share/swig/4.1.0/std/std_deque.i | 0 .../swig/share/swig/4.1.0/std/std_except.i | 0 win64/bin/swig/share/swig/4.1.0/std/std_ios.i | 0 .../swig/share/swig/4.1.0/std/std_iostream.i | 0 .../bin/swig/share/swig/4.1.0/std/std_list.i | 0 win64/bin/swig/share/swig/4.1.0/std/std_map.i | 0 .../swig/share/swig/4.1.0/std/std_multimap.i | 0 .../swig/share/swig/4.1.0/std/std_multiset.i | 0 .../bin/swig/share/swig/4.1.0/std/std_pair.i | 0 .../bin/swig/share/swig/4.1.0/std/std_queue.i | 0 win64/bin/swig/share/swig/4.1.0/std/std_set.i | 0 .../swig/share/swig/4.1.0/std/std_sstream.i | 0 .../bin/swig/share/swig/4.1.0/std/std_stack.i | 0 .../swig/share/swig/4.1.0/std/std_streambuf.i | 0 .../swig/share/swig/4.1.0/std/std_string.i | 0 .../share/swig/4.1.0/std/std_unordered_map.i | 0 .../swig/4.1.0/std/std_unordered_multimap.i | 0 .../swig/4.1.0/std/std_unordered_multiset.i | 0 .../share/swig/4.1.0/std/std_unordered_set.i | 0 .../swig/share/swig/4.1.0/std/std_vector.i | 0 .../swig/share/swig/4.1.0/std/std_vectora.i | 0 .../bin/swig/share/swig/4.1.0/std/std_wios.i | 0 .../swig/share/swig/4.1.0/std/std_wiostream.i | 0 .../swig/share/swig/4.1.0/std/std_wsstream.i | 0 .../share/swig/4.1.0/std/std_wstreambuf.i | 0 .../swig/share/swig/4.1.0/std/std_wstring.i | 0 win64/bin/swig/share/swig/4.1.0/std_except.i | 0 win64/bin/swig/share/swig/4.1.0/stdint.i | 0 win64/bin/swig/share/swig/4.1.0/stl.i | 0 win64/bin/swig/share/swig/4.1.0/swig.swg | 0 win64/bin/swig/share/swig/4.1.0/swigarch.i | 0 .../bin/swig/share/swig/4.1.0/swigerrors.swg | 0 .../swig/share/swig/4.1.0/swigfragments.swg | 0 win64/bin/swig/share/swig/4.1.0/swiginit.swg | 0 .../bin/swig/share/swig/4.1.0/swiglabels.swg | 0 win64/bin/swig/share/swig/4.1.0/swigrun.i | 0 win64/bin/swig/share/swig/4.1.0/swigrun.swg | 0 win64/bin/swig/share/swig/4.1.0/swigwarn.swg | 0 .../swig/share/swig/4.1.0/swigwarnings.swg | 0 .../bin/swig/share/swig/4.1.0/tcl/Makefile.in | 122 -- .../bin/swig/share/swig/4.1.0/tcl/argcargv.i | 29 - .../bin/swig/share/swig/4.1.0/tcl/attribute.i | 1 - win64/bin/swig/share/swig/4.1.0/tcl/carrays.i | 4 - win64/bin/swig/share/swig/4.1.0/tcl/cdata.i | 1 - win64/bin/swig/share/swig/4.1.0/tcl/cmalloc.i | 1 - .../bin/swig/share/swig/4.1.0/tcl/cpointer.i | 1 - win64/bin/swig/share/swig/4.1.0/tcl/cstring.i | 1 - .../bin/swig/share/swig/4.1.0/tcl/cwstring.i | 2 - .../bin/swig/share/swig/4.1.0/tcl/exception.i | 6 - win64/bin/swig/share/swig/4.1.0/tcl/factory.i | 1 - .../swig/share/swig/4.1.0/tcl/std_auto_ptr.i | 39 - .../swig/share/swig/4.1.0/tcl/std_common.i | 17 - .../bin/swig/share/swig/4.1.0/tcl/std_deque.i | 1 - .../swig/share/swig/4.1.0/tcl/std_except.i | 1 - win64/bin/swig/share/swig/4.1.0/tcl/std_map.i | 79 - .../bin/swig/share/swig/4.1.0/tcl/std_pair.i | 36 - .../swig/share/swig/4.1.0/tcl/std_string.i | 2 - .../share/swig/4.1.0/tcl/std_unique_ptr.i | 39 - .../swig/share/swig/4.1.0/tcl/std_vector.i | 436 ---- .../swig/share/swig/4.1.0/tcl/std_wstring.i | 2 - win64/bin/swig/share/swig/4.1.0/tcl/stl.i | 10 - .../bin/swig/share/swig/4.1.0/tcl/swigmove.i | 1 - win64/bin/swig/share/swig/4.1.0/tcl/tcl8.swg | 42 - .../bin/swig/share/swig/4.1.0/tcl/tclapi.swg | 108 - .../swig/share/swig/4.1.0/tcl/tclerrors.swg | 76 - .../share/swig/4.1.0/tcl/tclfragments.swg | 22 - .../bin/swig/share/swig/4.1.0/tcl/tclinit.swg | 140 -- .../bin/swig/share/swig/4.1.0/tcl/tclinterp.i | 17 - win64/bin/swig/share/swig/4.1.0/tcl/tclkw.swg | 10 - .../swig/share/swig/4.1.0/tcl/tclmacros.swg | 4 - .../swig/share/swig/4.1.0/tcl/tclopers.swg | 43 - .../share/swig/4.1.0/tcl/tclprimtypes.swg | 230 -- .../bin/swig/share/swig/4.1.0/tcl/tclresult.i | 27 - .../bin/swig/share/swig/4.1.0/tcl/tclrun.swg | 722 ------ .../swig/share/swig/4.1.0/tcl/tclruntime.swg | 15 - win64/bin/swig/share/swig/4.1.0/tcl/tclsh.i | 57 - .../swig/share/swig/4.1.0/tcl/tclstrings.swg | 31 - .../swig/share/swig/4.1.0/tcl/tcltypemaps.swg | 86 - .../swig/share/swig/4.1.0/tcl/tcluserdir.swg | 5 - .../swig/share/swig/4.1.0/tcl/tclwstrings.swg | 68 - .../bin/swig/share/swig/4.1.0/tcl/typemaps.i | 464 ---- win64/bin/swig/share/swig/4.1.0/tcl/wish.i | 113 - .../bin/swig/share/swig/4.1.0/typemaps/README | 0 .../share/swig/4.1.0/typemaps/attribute.swg | 0 .../share/swig/4.1.0/typemaps/carrays.swg | 0 .../swig/share/swig/4.1.0/typemaps/cdata.swg | 0 .../share/swig/4.1.0/typemaps/cmalloc.swg | 0 .../share/swig/4.1.0/typemaps/cpointer.swg | 0 .../share/swig/4.1.0/typemaps/cstring.swg | 0 .../share/swig/4.1.0/typemaps/cstrings.swg | 0 .../share/swig/4.1.0/typemaps/cwstring.swg | 0 .../share/swig/4.1.0/typemaps/enumint.swg | 0 .../share/swig/4.1.0/typemaps/exception.swg | 0 .../share/swig/4.1.0/typemaps/factory.swg | 0 .../share/swig/4.1.0/typemaps/fragments.swg | 0 .../share/swig/4.1.0/typemaps/implicit.swg | 0 .../share/swig/4.1.0/typemaps/inoutlist.swg | 0 .../share/swig/4.1.0/typemaps/misctypes.swg | 0 .../share/swig/4.1.0/typemaps/primtypes.swg | 0 .../share/swig/4.1.0/typemaps/ptrtypes.swg | 0 .../share/swig/4.1.0/typemaps/std_except.swg | 0 .../share/swig/4.1.0/typemaps/std_string.swg | 0 .../share/swig/4.1.0/typemaps/std_strings.swg | 0 .../share/swig/4.1.0/typemaps/std_wstring.swg | 0 .../swig/share/swig/4.1.0/typemaps/string.swg | 0 .../share/swig/4.1.0/typemaps/strings.swg | 0 .../share/swig/4.1.0/typemaps/swigmacros.swg | 0 .../share/swig/4.1.0/typemaps/swigmove.swg | 0 .../share/swig/4.1.0/typemaps/swigobject.swg | 0 .../share/swig/4.1.0/typemaps/swigtype.swg | 0 .../swig/4.1.0/typemaps/swigtypemaps.swg | 0 .../share/swig/4.1.0/typemaps/typemaps.swg | 0 .../share/swig/4.1.0/typemaps/valtypes.swg | 0 .../swig/share/swig/4.1.0/typemaps/void.swg | 0 .../share/swig/4.1.0/typemaps/wstring.swg | 0 win64/bin/swig/share/swig/4.1.0/wchar.i | 0 win64/bin/swig/share/swig/4.1.0/windows.i | 0 .../bin/swig/share/swig/4.1.0/xml/typemaps.i | 3 - win64/bin/swig/share/swig/4.1.0/xml/xml.swg | 1 - 2419 files changed, 28 insertions(+), 251061 deletions(-) mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/allkw.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/attribute.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/carrays.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/cdata.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/cmalloc.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/constraints.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/cpointer.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/csharp.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/csharphead.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/enums.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_array.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_set.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/std_wstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/swiginterface.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/csharp/wchar.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/cstring.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/cwstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/carrays.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/cpointer.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/d.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/dclassgen.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/ddirectives.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/denums.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/dexception.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/dhead.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/dkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/doperators.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/dprimitives.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/dstrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/dswigtype.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/dvoid.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/d/wrapperloader.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/director_common.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/cdata.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/go.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/gokw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/goruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/gostring.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/std_array.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/go/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/Makefile delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/common.scm delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/cplusplus.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/extra-install.list delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/guile.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/guile_scm.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/guilemain.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/interpreter.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/list-vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/ports.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/swigrun.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/guile/typemaps.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/intrusive_ptr.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/inttypes.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/arrays_java.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/boost_intrusive_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/enums.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/enumsimple.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/java.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/javahead.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/javakw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_array.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_set.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_unordered_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_unordered_set.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/std_wstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/swiginterface.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/java/various.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/arrays_javascript.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/ccomplex.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/cdata.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/complex.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/exception.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcomplex.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptfragments.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascripthelpers.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptinit.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptkw.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptprimtypes.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptrun.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptruntime.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptstrings.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascripttypemaps.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_common.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_complex.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_deque.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_except.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_map.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_pair.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_string.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_vector.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/stl.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/javascript/cocos/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascripttypemaps.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/linkruntime.c delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/_std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/argcargv.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/carrays.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/factory.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/lua.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/luakw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/luarun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/luaruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/lua/wchar.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/math.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/Makefile delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/carray.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/class.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/cstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/extra-install.list delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/ocaml.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/preamble.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/std_complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/swig.ml delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/swig.mli delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/typecheck.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/argcargv.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/attribute.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/carrays.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/cdata.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/cmalloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/extra-install.list delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/factory.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/implicit.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octave.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octcomplex.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octcontainer.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octfragments.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octheaders.hpp delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octiterators.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octopers.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/octuserdir.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_alloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_basic_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_carray.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_char_traits.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_container.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/std_wstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/octave/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/Makefile.in delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/Makefile.pl delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/argcargv.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/attribute.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/carrays.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/cdata.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/cmalloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/cpointer.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/cstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/extra-install.list delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/factory.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/noembed.h delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perl5.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlhead.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlinit.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlmain.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlopers.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/reference.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/perl5/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/argcargv.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/const.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/factory.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/php.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/phpinit.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/phpinterfaces.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/phpkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/phppointers.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/phprun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/php/utils.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/pointer.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/Makefile.in delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/README delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/argcargv.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/attribute.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/builtin.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/carrays.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/ccomplex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/cdata.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/cmalloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/cpointer.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/cstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/cwstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/embed.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/factory.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/file.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/implicit.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyabc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyapi.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pybackward.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pybuffer.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyclasses.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pycomplex.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pycontainer.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pydocs.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyerrors.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyfragments.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyhead.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyinit.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyiterators.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pymacros.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyname_compat.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyopers.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pystdcommon.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pystrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/python.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pythonkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pythreads.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pytypemaps.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pyuserdir.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/pywstrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_alloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_array.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_basic_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_carray.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_char_traits.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_container.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_ios.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_iostream.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_multimap.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_multiset.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_set.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_sstream.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_streambuf.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_unordered_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_unordered_set.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_vectora.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_wios.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_wiostream.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_wsstream.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/std_wstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/python/wchar.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/cdata.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/r.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/rcontainer.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/rfragments.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/rkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/ropers.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/rrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/rstdcommon.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/rtype.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/srun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_alloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_container.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/r/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/Makefile.swig delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/argcargv.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/attribute.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/carrays.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/cdata.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/cmalloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/cpointer.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/cstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/director.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/embed.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/extconf.rb delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/extra-install.list delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/factory.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/file.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/progargcargv.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/ruby.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubydef.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubykw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_alloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_array.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_complex.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_container.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_functors.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_ios.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_iostream.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_multimap.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_multiset.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_queue.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_set.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_sstream.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_stack.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_vectora.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/std_wstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/timeval.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/ruby/typemaps.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/runtime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/carrays.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/cmalloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/cpointer.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/matrix.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciarray.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scibool.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scichar.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scidouble.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scienum.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciexception.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scifloat.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciint.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciiterators.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scilab.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scilist.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scilong.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scilonglong.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scimacros.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scimatrixbool.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scipointer.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scirun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scisequence.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scisequencestring.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scishort.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scisignedchar.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scistdcommon.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciunsignedint.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciunsignedlong.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/sciunsignedshort.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_alloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_container.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_list.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_multiset.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_set.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/scilab/typemaps.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/shared_ptr.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/README mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/_std_deque.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_alloc.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_array.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_basic_string.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_carray.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_char_traits.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_common.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_container.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_deque.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_except.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_ios.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_iostream.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_list.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_map.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_multimap.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_multiset.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_pair.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_queue.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_set.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_sstream.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_stack.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_streambuf.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_string.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_unordered_map.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_unordered_multimap.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_unordered_multiset.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_unordered_set.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_vector.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_vectora.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_wios.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_wiostream.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_wsstream.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_wstreambuf.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std/std_wstring.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/std_except.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/stdint.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/stl.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swig.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swigarch.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swigerrors.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swigfragments.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swiginit.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swiglabels.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swigrun.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swigrun.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swigwarn.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/swigwarnings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/Makefile.in delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/argcargv.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/attribute.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/carrays.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/cdata.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/cmalloc.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/cpointer.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/cstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/cwstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/exception.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/factory.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_common.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_deque.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_except.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_map.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_pair.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_string.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_vector.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/std_wstring.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/stl.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/swigmove.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tcl8.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclapi.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclinit.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclinterp.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclkw.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclopers.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclresult.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclrun.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclsh.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/tcl/wish.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/README mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/attribute.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/carrays.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/cdata.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/cmalloc.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/cpointer.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/cstring.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/cstrings.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/cwstring.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/enumint.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/exception.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/factory.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/fragments.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/implicit.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/inoutlist.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/misctypes.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/primtypes.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/ptrtypes.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/std_except.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/std_string.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/std_strings.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/std_wstring.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/string.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/strings.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/swigmacros.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/swigmove.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/swigobject.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/swigtype.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/swigtypemaps.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/typemaps.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/valtypes.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/void.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/typemaps/wstring.swg mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/wchar.i mode change 100755 => 100644 linux/bin/swig/share/swig/4.1.0/windows.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/xml/typemaps.i delete mode 100755 linux/bin/swig/share/swig/4.1.0/xml/xml.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/allkw.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/attribute.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/carrays.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/cdata.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/cmalloc.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/constraints.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/cpointer.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/csharp.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/csharphead.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/enums.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_array.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_set.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/std_wstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/swiginterface.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/csharp/wchar.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/cstring.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/cwstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/carrays.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/cpointer.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/d.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/dclassgen.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/ddirectives.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/denums.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/dexception.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/dhead.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/dkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/doperators.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/dprimitives.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/dstrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/dswigtype.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/dvoid.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/d/wrapperloader.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/director_common.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/cdata.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/go.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/gokw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/goruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/gostring.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/std_array.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/go/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/Makefile delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/common.scm delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/cplusplus.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/extra-install.list delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/guile.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/guile_scm.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/guilemain.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/interpreter.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/list-vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/ports.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/swigrun.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/guile/typemaps.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/intrusive_ptr.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/inttypes.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/arrays_java.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/boost_intrusive_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/enums.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/enumsimple.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/java.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/javahead.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/javakw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_array.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_set.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_unordered_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_unordered_set.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/std_wstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/swiginterface.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/java/various.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/arrays_javascript.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/ccomplex.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/cdata.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/complex.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/exception.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcomplex.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptfragments.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascripthelpers.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptinit.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptkw.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptprimtypes.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptrun.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptruntime.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptstrings.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascripttypemaps.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_common.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_complex.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_deque.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_except.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_map.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_pair.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_string.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_vector.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/stl.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/javascript/cocos/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascripttypemaps.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/linkruntime.c delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/_std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/argcargv.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/carrays.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/factory.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/lua.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/luakw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/luarun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/luaruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/lua/wchar.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/math.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/Makefile delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/carray.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/class.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/cstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/extra-install.list delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/preamble.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/std_complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/swig.ml delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/swig.mli delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/typecheck.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/argcargv.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/attribute.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/carrays.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/cdata.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/cmalloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/extra-install.list delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/factory.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/implicit.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octave.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octcomplex.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octcontainer.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octfragments.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octheaders.hpp delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octiterators.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octopers.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/octuserdir.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_alloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_basic_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_carray.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_char_traits.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_container.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/std_wstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/octave/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/Makefile.in delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/Makefile.pl delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/argcargv.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/attribute.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/carrays.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/cdata.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/cmalloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/cpointer.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/cstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/extra-install.list delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/factory.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/noembed.h delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perl5.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlhead.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlinit.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlmain.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlopers.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/reference.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/perl5/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/argcargv.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/const.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/factory.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/php.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/phpinit.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/phpinterfaces.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/phpkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/phppointers.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/phprun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/php/utils.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/pointer.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/Makefile.in delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/README delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/argcargv.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/attribute.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/builtin.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/carrays.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/ccomplex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/cdata.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/cmalloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/cpointer.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/cstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/cwstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/embed.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/factory.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/file.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/implicit.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyabc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyapi.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pybackward.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pybuffer.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyclasses.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pycomplex.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pycontainer.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pydocs.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyerrors.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyfragments.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyhead.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyinit.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyiterators.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pymacros.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyname_compat.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyopers.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pystdcommon.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pystrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/python.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pythonkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pythreads.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pytypemaps.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pyuserdir.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/pywstrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_alloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_array.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_basic_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_carray.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_char_traits.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_container.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_ios.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_iostream.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_multimap.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_multiset.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_set.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_sstream.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_streambuf.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_unordered_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_unordered_set.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_vectora.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_wios.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_wiostream.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_wsstream.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/std_wstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/python/wchar.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/cdata.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/r.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/rcontainer.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/rfragments.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/rkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/ropers.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/rrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/rstdcommon.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/rtype.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/srun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_alloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_container.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/r/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/Makefile.swig delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/argcargv.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/attribute.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/carrays.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/cdata.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/cmalloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/cpointer.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/cstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/director.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/embed.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/extconf.rb delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/extra-install.list delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/factory.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/file.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/progargcargv.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/ruby.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubydef.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubykw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_alloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_array.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_complex.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_container.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_functors.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_ios.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_iostream.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_multimap.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_multiset.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_queue.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_set.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_sstream.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_stack.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_vectora.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/std_wstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/timeval.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/ruby/typemaps.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/runtime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/carrays.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/cmalloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/cpointer.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/matrix.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciarray.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scibool.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scichar.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scidouble.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scienum.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciexception.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scifloat.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciint.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciiterators.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scilab.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scilist.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scilong.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scilonglong.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scimacros.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scimatrixbool.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scipointer.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scirun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scisequence.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scisequencestring.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scishort.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scisignedchar.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scistdcommon.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciunsignedint.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciunsignedlong.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/sciunsignedshort.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_alloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_container.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_list.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_multiset.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_set.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/scilab/typemaps.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/shared_ptr.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/README mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/_std_deque.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_alloc.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_array.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_basic_string.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_carray.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_char_traits.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_common.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_container.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_deque.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_except.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_ios.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_iostream.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_list.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_map.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_multimap.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_multiset.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_pair.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_queue.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_set.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_sstream.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_stack.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_streambuf.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_string.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_unordered_map.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_unordered_multimap.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_unordered_multiset.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_unordered_set.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_vector.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_vectora.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_wios.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_wiostream.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_wsstream.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_wstreambuf.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std/std_wstring.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/std_except.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/stdint.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/stl.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swig.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swigarch.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swigerrors.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swigfragments.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swiginit.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swiglabels.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swigrun.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swigrun.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swigwarn.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/swigwarnings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/Makefile.in delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/argcargv.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/attribute.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/carrays.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/cdata.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/cmalloc.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/cpointer.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/cstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/cwstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/exception.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/factory.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_common.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_deque.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_except.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_map.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_pair.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_string.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_vector.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/std_wstring.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/stl.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/swigmove.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tcl8.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclapi.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclinit.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclinterp.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclkw.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclopers.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclresult.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclrun.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclsh.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/tcl/wish.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/README mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/attribute.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/carrays.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/cdata.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/cmalloc.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/cpointer.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/cstring.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/cstrings.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/cwstring.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/enumint.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/exception.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/factory.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/fragments.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/implicit.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/inoutlist.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/misctypes.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/primtypes.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/ptrtypes.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/std_except.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/std_string.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/std_strings.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/std_wstring.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/string.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/strings.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/swigmacros.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/swigmove.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/swigobject.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/swigtype.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/swigtypemaps.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/typemaps.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/valtypes.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/void.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/typemaps/wstring.swg mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/wchar.i mode change 100755 => 100644 mac/bin/swig/share/swig/4.1.0/windows.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/xml/typemaps.i delete mode 100755 mac/bin/swig/share/swig/4.1.0/xml/xml.swg mode change 100755 => 100644 win64/bin/swig/bin/swig.exe mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/allkw.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/attribute.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/carrays.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/cdata.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/cmalloc.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/constraints.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/cpointer.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/csharp.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/csharphead.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/enums.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_array.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_set.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/std_wstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/swiginterface.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/csharp/wchar.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/cstring.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/cwstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/carrays.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/cpointer.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/d.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/dclassgen.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/ddirectives.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/denums.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/dexception.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/dhead.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/dkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/doperators.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/dprimitives.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/dstrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/dswigtype.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/dvoid.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/d/wrapperloader.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/director_common.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/cdata.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/go.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/gokw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/goruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/gostring.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/std_array.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/go/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/Makefile delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/common.scm delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/cplusplus.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/extra-install.list delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/guile.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/guile_scm.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/guilemain.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/interpreter.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/list-vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/ports.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/swigrun.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/guile/typemaps.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/intrusive_ptr.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/inttypes.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/arrays_java.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/boost_intrusive_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/enums.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/enumsimple.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/java.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/javahead.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/javakw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_array.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_set.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_unordered_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_unordered_set.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/std_wstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/swiginterface.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/java/various.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/arrays_javascript.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/ccomplex.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/cdata.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/complex.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/exception.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcomplex.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptfragments.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascripthelpers.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptinit.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptkw.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptprimtypes.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptrun.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptruntime.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptstrings.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascripttypemaps.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_common.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_complex.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_deque.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_except.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_map.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_pair.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_string.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_vector.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/stl.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/javascript/cocos/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascripttypemaps.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/linkruntime.c delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/_std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/argcargv.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/carrays.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/factory.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/lua.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/luakw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/luarun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/luaruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/lua/wchar.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/math.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/Makefile delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/carray.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/class.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/cstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/extra-install.list delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/ocaml.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/preamble.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/std_complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/swig.ml delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/swig.mli delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/typecheck.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/argcargv.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/attribute.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/carrays.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/cdata.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/cmalloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/extra-install.list delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/factory.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/implicit.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octave.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octcomplex.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octcontainer.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octfragments.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octheaders.hpp delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octiterators.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octopers.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/octuserdir.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_alloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_basic_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_carray.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_char_traits.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_container.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/std_wstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/octave/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/Makefile.in delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/Makefile.pl delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/argcargv.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/attribute.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/carrays.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/cdata.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/cmalloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/cpointer.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/cstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/extra-install.list delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/factory.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/noembed.h delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perl5.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlhead.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlinit.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlmain.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlopers.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/reference.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/perl5/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/argcargv.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/const.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/factory.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/php.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/phpinit.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/phpinterfaces.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/phpkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/phppointers.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/phprun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/php/utils.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/pointer.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/Makefile.in delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/README delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/argcargv.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/attribute.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/builtin.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/carrays.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/ccomplex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/cdata.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/cmalloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/cpointer.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/cstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/cwstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/embed.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/factory.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/file.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/implicit.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyabc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyapi.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pybackward.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pybuffer.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyclasses.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pycomplex.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pycontainer.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pydocs.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyerrors.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyfragments.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyhead.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyinit.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyiterators.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pymacros.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyname_compat.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyopers.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pystdcommon.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pystrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/python.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pythonkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pythreads.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pytypemaps.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pyuserdir.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/pywstrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_alloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_array.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_basic_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_carray.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_char_traits.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_container.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_ios.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_iostream.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_multimap.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_multiset.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_set.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_sstream.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_streambuf.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_unordered_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_unordered_set.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_vectora.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_wios.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_wiostream.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_wsstream.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/std_wstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/python/wchar.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/cdata.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/r.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/rcontainer.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/rfragments.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/rkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/ropers.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/rrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/rstdcommon.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/rtype.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/srun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_alloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_container.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/r/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/Makefile.swig delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/argcargv.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/attribute.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/carrays.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/cdata.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/cmalloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/cpointer.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/cstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/director.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/embed.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/extconf.rb delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/extra-install.list delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/factory.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/file.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/progargcargv.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/ruby.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubydef.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubykw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_alloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_array.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_complex.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_container.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_functors.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_ios.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_iostream.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_multimap.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_multiset.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_queue.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_set.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_sstream.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_stack.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_vectora.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/std_wstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/timeval.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/ruby/typemaps.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/runtime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/carrays.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/cmalloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/cpointer.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/matrix.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciarray.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scibool.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scichar.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scidouble.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scienum.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciexception.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scifloat.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciint.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciiterators.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scilab.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scilist.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scilong.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scilonglong.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scimacros.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scimatrixbool.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scipointer.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scirun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scisequence.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scisequencestring.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scishort.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scisignedchar.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scistdcommon.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciunsignedint.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciunsignedlong.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/sciunsignedshort.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_alloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_container.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_list.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_multiset.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_set.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/scilab/typemaps.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/shared_ptr.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/README mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/_std_deque.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_alloc.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_array.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_basic_string.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_carray.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_char_traits.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_common.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_container.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_deque.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_except.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_ios.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_iostream.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_list.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_map.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_multimap.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_multiset.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_pair.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_queue.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_set.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_sstream.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_stack.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_streambuf.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_string.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_unordered_map.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_unordered_multimap.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_unordered_multiset.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_unordered_set.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_vector.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_vectora.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_wios.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_wiostream.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_wsstream.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_wstreambuf.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std/std_wstring.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/std_except.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/stdint.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/stl.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swig.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swigarch.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swigerrors.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swigfragments.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swiginit.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swiglabels.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swigrun.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swigrun.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swigwarn.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/swigwarnings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/Makefile.in delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/argcargv.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/attribute.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/carrays.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/cdata.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/cmalloc.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/cpointer.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/cstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/cwstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/exception.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/factory.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_common.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_deque.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_except.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_map.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_pair.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_string.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_vector.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/std_wstring.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/stl.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/swigmove.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tcl8.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclapi.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclinit.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclinterp.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclkw.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclopers.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclresult.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclrun.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclsh.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/tcl/wish.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/README mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/attribute.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/carrays.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/cdata.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/cmalloc.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/cpointer.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/cstring.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/cstrings.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/cwstring.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/enumint.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/exception.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/factory.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/fragments.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/implicit.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/inoutlist.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/misctypes.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/primtypes.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/ptrtypes.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/std_except.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/std_string.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/std_strings.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/std_wstring.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/string.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/strings.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/swigmacros.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/swigmove.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/swigobject.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/swigtype.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/swigtypemaps.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/typemaps.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/valtypes.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/void.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/typemaps/wstring.swg mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/wchar.i mode change 100755 => 100644 win64/bin/swig/share/swig/4.1.0/windows.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/xml/typemaps.i delete mode 100755 win64/bin/swig/share/swig/4.1.0/xml/xml.swg diff --git a/linux/bin/swig/bin/swig b/linux/bin/swig/bin/swig index fc5049cbbaef9e13480fc9afcb3e19082dbf2c91..2619331ff8580633b3b0b5ef3b3a8a3caf07a7df 100755 GIT binary patch delta 687573 zcma(434Bb~|38k;oyia+Cfj72Y$Rb4f|MW#8Iqb1s#Qys+G?+&l2%cJB(3RmNL^fA z)Y4Y9T1yveN^BXr#?lsTNtHSyC8%AQ-}80Ooos!7zW={RJNKN|e$IKFb6#h;H^tu{ zleV1xKq?Mz8DP!S&_D63(OgYT;&}nw zAdnIsK9sBwcumDffl!~%=lSxy_gR~dGoPxDlGJ$UI$LpVI39(?+l5ghJY53W(=XzIa7%@K0$T;+Og8n5DZ@j~%c zfvAR;h6p&T2cNIPE9$|$ici*qmlp}e<#pgTxWrt6I9vyz(M&HE@X~tlHLnTyj(YH7 zRl$~eaIc{o>cM$UL%(KCJw&@@qDoiRgRfDmuDBjNZk8};Q9XEoUBKtpgKN|R%mSSB zS6B5GwZzlwF^p0LO{@nWpc*==9=t-W(V_L=-liN-1LyiRrHh26)*1wNs!=LDvmShn zs-SZ{c!gR+?drj&tIlh#2d^kh6^i5PA?B-98eR{c`Rb7EM1^8M=Nv+LzE>gChwUf#c6USBW&;7r{nzF9kOLz`c&4Im%z=69U&cs%Y-eS9?{m4cMjempz%i2J}m zU(FsG>D>+X`Dyn0BE>R}1p@7|+7Gd%;r<${YkzriKRn8OKb;6f70ay%R7rz~)V06( zjO}qE81Oq0xU8VL!sZCJJ%5#H-m9GQOijD?qhPtcpTg+a@FFTK)Tt{}e zdwrt6hK(oCQ33LG#{)#&nYTqb3MJ(?VZDA2r4{c6U%!?ZGjs1^dyK#p!^d2 zxQi%jr0jgkzD?N%NadmhABG@v>I`r<%JDOj2vR{%Pu&>y({DmuEgK?OX*KW=*9V`l zu}|;7nvd{PPevqLT1^h066G+kR{&(Qh-W7KJdYpYeFuN!E;YRqce$(F<;bJjeOBX9 z<){QJT7E-wxF?F!?vCw0dfPJ-R0x?fgv>Z0^JKM5-&!(XflS733poRZa>fCy)Bhiw z)FifIt23iXuOtn7v>DmNsJX26v-vi*{8t$3%=n=vkVyhr`3C?ah&o&almpP301Z{Z zUI3oX0pL~~mshz7fMfz(Pywp|*hzpB0N9|i@(n;15#)d%anC}(XQ3z)OF~N2#e^UJ zf7kEK|F&2x`{DF|TtUxv0?59+71Tt-Hs1<@SAYCNpj`e!X6E=Hm|ZY8!B>;l*y_NO zJ;@>65;S>@td4F8EDL!S3r$v+PXf)hR#z6tX#`4wkO4D8A{UaaXy3*V?WL+b#_oSF zbnFPMuVX!j)aY1&Jexrc@E;v>AOt$bo%mkp7=E+14$^ul#-EQbJqd$+B!tm;^N5=N zM#VQ*^Y;P-KB$(Y>{JiaLetvmExMfozF(0i&o|fZVc#KREvT`ygfrh}&o&J~|3$5O zEv|fzt@$ocKALBay6~Mab?Ob&v=>hrhJ%1Kw6Cq9MLi9ns)jxO(BM8*N5j2uxrWDk zs2W`VKm(QanP~F9Dz*&(dM-AIGOkCS@ZDAX3KjpnihmV(wg6Je7rFyj*B4rINKNUZ zkY~3~*4R|z3lfBoFAV!u6#m@x+U>-SeR^Y3B;R9r9`@%BL ze4BM^f|i=_OHHl77iK{K`NG#ngsIt3P{$WKs2ZBo*6`4;u7)ef=h|~4cT6!hyLD0nOLzQr)vB)=| zyfb4YjnHpXU>B~=MRd=Ej}pw=1h6d;_E8Df3D_Kh zbyQ)C1*|18H&>wJo0|0;^T5uIz8O_lmfrP?*0R{>=J@L*QYb|boC z+r0SzwvnPOigO#YHH3NxD7K;o@8I|#PB5Pc<`BV)l|l03b3)pULFUU*oNC z8}imi1e4A5znOggC)1Tn^+i$ro&2BB{eTj77(#7&E^Q#Z=@S*+lf!Kn*=!ZDR7E7K z3}aOIY!&{5nxCxZwJKc~75;<@zZ5JKHdo)1k-%kpH7{olQ`4?Ac8>j6eIFD;f65Li(Uu$QqT{%{o6{sGZXkP(^+-ZfY+RX~pY zAdUUcg4IT@@h%gqjyi%b?yVO5onN)!KZM|b7%n(m6>F{+IemHR}7=RRauYZ&A%$THMl z8|s;D9l|=c3Y5iSd2)RZZ@&NM^6w#{RJNeX;}L;G^{P_Oo+N3Hku)|Mcp-B2|3jor zj8_fWM#%h+xCSInf;izUs;>+X^8TN`f{45>lSwtAD{r_(f09RFS=+vJ4JFl`l9p7k zJZ#UiY4kIhehR?Invx+eQ!1o1P_7yuVLN#MtvB|v)iD#1(`ih?xpp`EVt=5fur&W! ztLxB!Gt}Dd)MG$d?N``Jj>_vVs$}-pqLciEPGY|zwrm!G!)wUv&}S_;Fun2(Q74Dk zP*OgS3IUJ#^+Fpo?KTjRBeg-)%#J`JTd&t>ifh**lk%Tpo4yW|n@)_hT^Jn??nCUY z*ia0}?MYC76Ho4KOsl>>#)fLxZzLxNa!B%$}9WWjQD@@2$o4;sa-0}KauPpLeF}@#%wcy?344ToDcD% zy7ax>+$`JwVVBU+fXuT0{XcwqILRDB;@BkMt&UfG*{q~6R8SQwr}ZukIlnWb21zF^ zwBMnH50LTT5zYNFSz!A=Yera5gm}MRfefqy!7a7KL@26U%Z~mDGceh+az3I7cfn-; zl)so1wsJglFY@?tzBK@VKJGW{^pm09=padDSm0$CsxnL$4D}Vsrjqt1b&v9uRvav_){4qmQx;l zcTlG!r&P@|HNOS<9PDpc)9>f$*}{i@ocir^L4Dx#a}zRi)2jfVLU3f`a?>v&JDg{` zCFG`ikn689jVI9%C7_*E=zw!U@+n86ZP89{0QIP;4MH>+``PlwWZSu1`(LmSt4`Y3 zwc4?(!tN6W?e<6Ab~|wmj^TVIj^?b++lgd&~HY{bJ(u`2+#a1t4sf$ih9-&k{Aw>qGS2K9{)l>D-&PS&*kLGwbIzI*pWyZ z^n2-yl?^-;qIuTph)Sej!I~c3_fcMezDdMay8z(;@B$c+V12If0yII|qnC(QUvNj8 z|FqS)EMXBOrIzlb4KtVia(0ru^vzz6SGI{lAwS4Y(&+L-T>6zr(AlssV&1_JAYUU` zeiN5|4iXq%H8%<}W>S(ECLlou@1@f)=KrxtZm~2+xAylSId0iNU0?Ni^EZ)Stv++q z=Rdy+_$u|;n?GaaPgkbtuAU}bjBHunMYkO3dCL=&N8)2s>i#?>1US`a zC;k)yDozqkr0qOCP}jZ|?6+TP@I^d5P}f#{p87dRE`DpUZa$tcVg$>)h5gX3^wW`k zQt78Pe#W;k#1^9H;`l7rp^wf=!uCvQUgXZE0K&1Jj7>yuFZ*Y`K`D)*IaWF_AlL3< z-ArNVEqZsaBzf}N&00to%^Fs63(edq4t>zq>NM`!X@-!rKmRgo+?&1)k+;4b zX>;!-SjI4LSnc}vDd*6CM-RKcA0BK}Eiq2x7$Kq+DH!~12w3&EAr8W=z_|2(Aw&PH z&gpj`HvTx0F8xU_)UH28)OP)8dbsqz*i;N_EQC!VxYPLW4iYv@MXJKK3t_olC=4WO zyS_g?T>8E$g6;W+3`=|06^lp4)eEq-?@=3aitWb_{5@6C5?QZ-^B$ zP{H4*wTuN2%ZA^qsZ6Kw8P1zFfiO>SW%~9=yYxw_2`EArqH*bCt0BBX5`KXlcD)f$ zJVO7naiU-^5!%VEC0j)JQpm zUTBR0V~ES8_Zq-n6~aD3rMUE~@GBbA_&h0e>E&t&FHJbLh+S_76pz>G;nKh6rJ=%f zJQ5-&t%~Y!_F$}L&_Me?RuqZNmL*NWeaWzRE~IBUXFkkzW*h;*ZW>5)3d*!rXUg8N zIQivO(b6_qS=GU|uTZBc)0-e!%1J+ye|T>NDA|;&G(a6d+{ohe5~iNv2?J7Zp~?C{ z7`u!x5b42`-nUfJaLiMbJ1#Ijl%CM30a5j%^c+x8SHalN4d<1jcDBgDrzBPY$x*9Ef91lsugM z-m!tE=(1t)1xUa?Y_2nLd0?FU<$F27KT}BcWPpI zk60b9J0B1y&syEA<&l6mO|^X^-5oyEP0l8pJkbXf(oMxc1^CVeih4xT>CjRE|v|Wl6A1<7R8#0W*r(L zFCh+LOB5TjKqs>`Ep&T!n&rT?o&1k`JQy#-v0L~SAcNM%^=`O8r?Fr^Fq{kzg|Rt~ z+=PG}M@WLzk+J^}mFS3}a4`@l^XtKJnAX^zudC%kAdpkw@?}qaAeXFdp&Rz5BwtwD zF{Clb{#n1XAxfTW{~5Jac$(fMDdt_cB+ z3NqYCYV&%7nQ`DTL*Z1~7IXOXyd%RR1bh?3i#ZkoY%sTj$PPl*Jr&z)*{SE<#dtzv zpkR1gP_zd{7OR=*ySocJaLj{erHX-u1q5#=qs(8-666z zFM3N|^oF|GHFdKq>t>5t;LitgYIpAfLhsF z23)NLrm(kewt}*@nhH8u7hPUAd$?}4v~G4s-RzdS*$s8GYiea1z^;{(Cdq9-47Y8W zT&KP^)XlD`n_XEqTUD*Q9Qq$SCdpUVN7*Vckz}_!Z#{Y^*Pi$%GBEB09=Y}kz>xWcU=DpT1d;JN zEU>Iam*=&jLw$S70$?-SUFM`Ig@QewKbT;jCD@-5?D;{~Df;06>2^{?ZhgyUy?qx- zdi8*Gm|ruK9DvSfmC0GTXKx9}vm7aB(omnPzK_)G-3tIM@`@?5pJ&Qg0W#dcQp4gR zz*0Syy*fN^>3f4Qz))CFw>5cXhz*8~4 z_`vuYVwz|7aQX#T@Q~lx7~4S5tq7JvTFuW`egbh*eyc%N`vo=|!{UysNw5Qr*m&=q zSH|J`3l^Sb`e`T3vS(wcsko&;HXpQSe)J>_Cn3&hXM*H*pLQ~Tg&NN0tTMr8zib zBhuKn8{uAx{P<$lX(A5Br|tTABN zP4p`S{br=?`fDEok|!Xm0722_5s{^(581R3={<00w90;Vc`S8;e_zRK$m7KW#Un-* zq_hTwL~$m~8{n`YKO)QiN0$AHWjF?!$Ct$-B(aQeSB%y18nR!vKLlMW=-k7hrKSqS zs$me2AwaUKJ32XYv(a|@C^F4qA{^l_7BPYndE>nLP64~?6}Zr1fcukJ$AVr*OyXZ)31RH=}2Q*sjeeQcKcQj)5D2Pxe zNSA&v@bu4NoQ_lx;>?v;w}5d0$!(ng-^Zft%fT81fQeXBv^5l(v9p8yJu&|{GlC*0 zgjTmP424ON8V!%9G0kdQ#L3M*H|Z+hjFo%fc_AE2A3VQAeh!{*Aph3qrV+1%(^BS2 zEh*_Fg?5l2Wz3tje5sA~pp;%6x&OiTCEiAYw>2~ceqqvu;n^0?hsCjSKRhquIR($7 zc-p@(wcTA@Uk5h1Fb~cBUbxH#REoF2cm3n!<6pGU{rX<4{4Zp5ZyzT|erd8j@*f$C zO*M8#{Rcaauyjy?G8R8lzXm4O;=Q<}zI8on@eb|4dF3y^4Ab@P5GVierAfDJNv!-g zo{yHq%8kD=*+&0ILS?O5+SIzf_9aHxrq=(d{_*wd|4=R7t^dKkOIRM9I5Qp3+uZH#{pY#>)3#+sVcCOSdi>5>Vq*GY9^I?Gpnmt=NG5S&v;w(oUrRwE&I zQ+>;yjssS$HwrHl7Hd*%`G0VfZM>T4_ibjt;$Sv5O-gQ$_l7fJs> zN3Q*RlRZDf3W_9^%uO0p<&++lkOEf&*C{5&j)x8!PB(Ul-<2PchP-t zJB)+hp%E#q3VRrPCvZ{zyHQ1K#b69dskc3zVsFj;o)Ra|*=f>!6oc_$r)k7ved>GQ z&)8)3`oM3o^}Y8;jND#XE&szio3N_?_^!wJu*;I_Oc)tkNhkLC@Q|19?$~^~$UjOC{LA-q=*w1;lMV&MrJt9WBwyZb zwhc^7!s}(&DcE%1<8k+Q z7d@}yW2$tDg*zr-1$C_tO|*u>oi=RfyYy$VjY9t%(RYz5`qhB{Naa8XwUji5N;{`< z7ejQG!+0E2F8#+US2nhlLLB-Q+=3kddb__%|8snjhP=#DVt^2LD>5~0IY=xexx65@ zajKA_TZW?cyd-B=P)TM0?rtthQiL?iq>?x?UZ!+{TB=V`44UBc=IRgz`DXx!J!JgS zKa@2W>a(da3$9Zg6>-U7z`I`nAj=Wm#D($O z%6(=VuPUmdot%Cgr@y@q^cx6}_BWE2l7*bU1Znz5*1XQiJ96^FME)`XGQQ^I3plyc zOODR)G$(J!$=@RKJ^*An^fn^0loWD?5h_DA4Ijyz;I_ z3Vau1utWbLXXr!>41n>)Xyqi%@)~EkTUx7;%Wfkeb?9HfxAYxtWFlss5G|qMmr*6EpQMYS2S1#u|1Gsw$SL07KmXhh5ew|9sJKQwRVB!p) z5yLZ_!MK()yviA7AkF;`1BjuhJLkBxlnOtWI8q3ZLPVC5BFOkl&_GK4EDV=W2B`3 zOY@A=_|8JwFJO6((Y(J{731!Ln?@+Zd&n2)=X?$SlPo1ET-5}Xh8Lv+*HuwWMR@@T zcRU9WjitoQ={u?PR1`hOZsp{?i2TMsR27{$c{@(-TZ{Z>j$H_H8v+rcKLm)nszf6+ z1BiVWD60R6A7aWtmRL%qb*ITaBQ#+IK;s5L&tFa6_F$2wn{I};(@Qqlyv?fR`i zyT?EUWFJD>Qqll$HaXD8#^Y z``h&^NLX(`vK;!?xv;hnhGTb?k#n@<9LE<^*~bw>Cztf8ry#>7C;~XeW7QPhc&GaI4KjHIpzc-x z6l6S31TKBcYB~dt72gM)r6dS4?E1DuJ$w-t9#3?Zl0Yu}pB>1kbup6*)&uR*w~9#8 zAjrjp%6Y1Y%%wk6i#nTA{{jeVG(1Uu{%~Yk-g`XC`#u~iiD$rQDd`6-?tw`1jbxXe zE=W+s?9eaboXE>xAI@zu5ILOVvL=B(a>$YXy7k-5^0*_9OMl7RkMyxQR)Zri!7s;N zicqJp0d@l%esoORGYlOOb3+5H?sM(?`GzW6Wd%AbAqp4E{M@s!pm7+-yw2B(_qSoK zI3C5aI{jDA#aeM)Hr9$6f2rm&eef`s7Tb@JSA2iuM<;w!KzfMHAzn8i&n_J(ycDLza4T;Tf( z{MDB@{^p~=x8yxA83;?si@fpgeJL8B`sd+Fa@IU>+w~1VE&!oCmT(b* zYkzQ(yz2XbHa|f+j!190RUvfmkzHTOh4dxNZ@{3TdwfB2wZ1bzEdDgMavd41k;dJ} zaXH)*VnBdbBRM7r7`hgDskXNdf)7~c&kcK+j3pLUxAL?fTIptgZkAX5VAef`=iwh> zM!)zuq^yM$e*E~NFBd(UfZc@XK}f?}Su|yx##iA){6NKp@ZnT1xKavw3=kg;iT9pi z_$06;G-o<8!h@3J-aj_W&f>GR{&FD7H;?i1{jn7~{J7$VhN3AnW;=}u`LWebZz-8Y zRg(lsx%RZr1C!*>eq3iu1_d_FEG6B6thK4@xLC6_7a(YAVcY6pjx$Ze5xBnj0iAal z3S;460AI@^nN{ql3VtA{&#B;DD)?7`=_15&75=^o-zmt;RPY-r___dZSHbxz_`U#t ztb(6W!9NP{J1V%h3QiOjzM+EK*;Kerz!#|S2o;PukqR_j1#49>ow5QvN(EQGFN(iP zfCs4H6DoL)0B5S;uT}6<1hzTT+NtpMD!h{*Z?1xusNhT3kAzO609#7NQ)9lMA}cPa z-cM@*_S-V_W#=n+1zj&~hF5%te61tB?=6tzNPD;m9U>mhbR`QzdfI@6)IX|NCdJ>5 zjJt%zG29;~bn^4ZM(gZNljLK^l5C>^XMU(I&{!9#h zhQeD2+T0KDV<~9^+uS+ATO&!#O|U>rQ>1YM_zUHn#>|;?@P+sg{b5-TPH-90Qh#MD zv_6_%d=^rN@JA7%xX)otNLvi;Asxc@gO*JNWo^P}BHRf=+~xI8lD|G4V_QIUtw9H# ze59+(vEw+E!vYXSomU{#r4OVG{uv5K|B2ER;s;zk09E_cd8w|xW!-rni}pwN+yrVq zx;29=_6g3j&@4JLp_Y*#r!jr{e>&-tLcs5SN%F!IeGMn{anaWJ~hh^ zPrPVj8&MD$SAHp^Hnk`5F81fMxLsyHRFF{wEOqz&O|Su7L;(Zpj@@_!WX`lLXR*cT zoY;t(ecx)~!xUTs^~>`>0sM&yreF(dpR2+zkW)C*c2x=~<5chu z0{o^*-CqUc%#5fPsNha2c#QzhP{DC3*e<}M1lYzJad_T~kT4iw2U&gVJt|DzSb#EB z?mq=+06>8@K~*k58346VslFDVWPqBgpicxS3?R=`!KiSMq3ADIVuL44{Dh+6zjE!D zRDbxW9OF2vAg8Ag(WQT)agv6Darb8c<~mdITE}bLqaX5g@XAPFU-+?E ze(RTL+m*Q_s4!U&UE|C9A z0uj=M3o}8`h{5%4%FsO!w8eA?p{o|Ds3e@QXM+pSQGl{5yb~NE<^#Cv`Qb6qYA<2iJSf3ff6YbPUZ1IYhj*2iF=7aC{^o6V_QOy896>laR@yfdx*C^wAFly zeL_w--Pg8mS}e5x)X)AM3GOKR`i!5{nk{1q1c4+2YSvo&4w5r%&=jiG+bp#$)oR{U z>>0hc9#^Jl8Su53fQlgliRf@HWuNR6%3=1Wo{W=Gc|1>~e&0v_m#BO!ug;}BY{$JW5i<)=>1souZ zU5nTf@6rB?lqf8PK z2ZCAnXP(V!e=flnBZ&Qn1e`p~r|Ly95W%q&P$3C%@t7{qV{Obtrc`%f)Jho(hhlH} z=~ZaoT6y|3$(=N>ln;JDUpfUx5UTUvvO1ueTE>~S93vt78aNslsM{>X&;hG%e4kKr z&13{MBU!eb6B3`pCl2Cpa}AJMR#1PR&lR8ZwiTORD^G@vLS88MBf~86+}|U^%b!EC zS+)3lWT{0)%A0;qiBCc0;cYbGa}$%Gg7EbE^@Hu>_!vZoaeQB z_iO6FcujaeTMY_w(+MrSrQd%NjGY1Y))bL-h7$Kae!NH}%f~wy)X^--qN6QGKLz+T zuu{41wZ^oK{Hn=3PYuE_{P2b>#(_9cJ-!otvK;W*zFsaylcB1ltzI--iR{=a&_9n8 zik1ScI_^BL;~xG7E@H6J)i>2~r-Dj2?pP@f1|DKh15(d#heC2Kk73qYd2)}=JWt+# z{u@+KM78ERe)|)86noH$rft=6kKtGej@yB(s(ulOnizij69`3%e5(J8 zV(h_M52Sj@<$9PG-se@>*c546c z4<0moY){EBf_p?Bk!hh7(zevqnO5=$$&AMBl*UC}nqHK9y=EHoSsEV~u z@RryYgsLNNf+%w27vsIiFODQ=SZ{!78bVERMNdObOUUs#6OcCf}l!v6}$}|2<95x-o zSTj(f-5@*cA=TL-X5f(Oaf4jV5A3yF?O)8J-aNV5-#kx3R$>5P-^*A33~!XEjpNEb zl>^Tw4l6H%vITriKy)uX5Xz=;NF8O*)e=q<#qe5rQkGk->`ob!rEp~)wd4EAThAxj z+L5w9&}gD$zx*qd{m3D8lzqpCxtdN?!t-Qd%i|Ef3LLeoc~vcPvc*|Vo=&zr4|4Pu zdC-N>MhU7#Ida~G=1)&QM0H(lQJ89x;lCF7)lxyl|CbL^!a`oxJkRU;5Y=@H`P!dh zjha0xS{9Z4mr*zTP^_HvSDN&UJo2wl+b;+L5#eE5NrW~^5h@1ZNdWn7INmSZ>B}c` z+#tTqzM-ZjB)w;t63e~r!)-$NL%2BcdmdBSu;3lKtDraV)Io zEb13d<7_;}TMf@2rl0+I*YO1c7@pgQh4ZmHxNwoA-;GDDi{x~l)t+&ErCENN^@+9* zL;av$Ix`zjVf*YwBxsuJKVPn3M%x65Pqoa3-BKC`Ks=oti{iE1?nkPHv+R97P`TLC zoQ7BQL>4og_9)Wc9nEP(<|nvN2r185)!(JoMof;nSD2%8>Kifwl$v z60moNIv8J^n}k}ZVmC3A!L`WF)39Y{0F7c!U6)Kbx6xOuj^PPIA@$#p0&~0>=|QB;>%pl<&Y5;uAp60a zzaYFbt?%d6)i#Q)mSZX-2Q-3gW+OBLsc_KDyhStz*c2`jp%J!rHcK`5h*B{0R~hi4 zXqqnoq&u9r(&R;ztsD8MW@+TFEBizb>O+;!*OZaCiRm3M0b-xDkQ4rXnDfmLAGL-_ zP$o;xAr4;MBk{U4+O}vKB63=cA&5Kysbl@6@}AXzmF?*d+-2^N+mqv=)Xb?!D*EUcwGq-wHmce0Os zuqxe_b(ps>+s?hy#ioUdxxMHW+hlzI)Uw{ z&^U+*X3WXmp3scW-i`1kw*LmxlU!rv zPP7>&?rR}Khu*=ZK>af~fhGs!OF|seS;^^qS=Y|g+G6ch1>XegUqi^cDmFioXAcde zGPu~wYWU# zElna=&~{Xk*8%1|w~SS7KhsCN5`C(VEl_i zxr0x^-U`Y2XRMDr_n+prJ-4V&Wi$jGh?3jK)22xhh#YB^qp-zXYPGw8w_$e$<8EgN zVH@Mb&Xq0*rr?XF0oX--0&87I1|4qWd!9xxY@5ji_J-R+;7RP(STW^>@cA2NdFPF2 z-BLVH-7p(o;ObH!2d%=rZ7^z0i%kU@vif|elP}z|jK0Ht@hm>t5r;W#51I?7!%h=P zKlDWc+UO#iX{>R9+vGLQv`>H{DMNvxQE({Ql14a`XaJkpk9sg4qbJ_-kzc#rTzeo! z-gtYGErn)?_d|#$;|&D1khGfXhkzWvtMp&Iw&)q@Iew|>LP8?saJ zg{6!?=*-t?>eIVvaqr?c zZC?g*-oUIWY{^RhGye$g#V&r0+yHN(d`p1}RVr!>9i4=;v~@H;W^57y6x1Frm!Rc3 zlb`6A>k&EZUdj-GjRZq#X;U@mc6Row4OOuNlAB;0T7C9-zdifPxep@L{7t zWljG*|2!~>LWUJP>Ud$R;E=?6JtDtzFItzkRwwViH?eu6wPZiI2RHGh$Pf03knr_d~y{~ND8Wt0bC3#a*m)Gm|GQ=h!ZMjNV~v*-$K81S(= z5c4bEQ=v!b|8ZE)n@8?$_9Gi%$xH*w? zg`4@n7S={~J?0`g z1wQIUn;wmoM|e!8)`QF#OiscUM@A{ulIR`welX{`V4W;`M#oxdti(xWUy|rzJN-xx z&0NUjCi^T8mRi{!26CEjp@G2DYSUP*Rpf1@aOOqwEqukO3fIMqDNo||2%S~q zv|-z>cQ4>(~{0igODo1nEremFa%tp+|XLlA7Db^JXoD4X`Y}6?yH) zxJv1^^D(3lE=|>uacUf=vkJQVwBdp+%IWSHI@W>M>6o0e;rOsRNG;E{#+-At;7sOF z8lv{lQf)uy%UIZtuy&ePJB!L$OW1F4B~=Vw<-KV}yUZqYVSE7X{RDT5E!4a)Y#whX z$bBt9r_9nyF)f6`!&WL1j&?hd#0J>E6c!IcioIWGQt&oKkH$Z%j`Y@aMX!@`n{FIS zjliqC_*?^Jq)sw+n?>QcGb5FgmSL)cvK!-hTT|1#)k3eKtsOMRbqpip?K-~vq>*z^ zkg`Q5#W%l8BOVUFut-`=NvH7`tjFjGRS?$Lpi^$@q?VbP1t#&z>>yOgS0Kr;Kfvck z#4%O@mhfVYmlsc-_x>OF&WYHa!Ykx1%yN2VxR2B_YtI+LMN`2*h*OoSiymNYpdA$p z?>UH$gpP*Sj`@K&OzOfLfWn8)O?8UP2hQ;VBtbt;(%9jKya=%CUZxm_wgG~{3b7S4 zoujjbeD6!J(7=2Zx~3xK(|tcM9sdxqYay56VxNZVfs4y87h~NYa1BvqPGdRJ%#S(- z*oNbiB~Zrq?A&C4cWM-`{qoA;CwwJ{2}E=@KTGX02iXMD=15yPher2{Y!QSy(k}HE zxzmBlLA{i$y^^6^)l2OL`QcEUrpyrs#074AU}MH;yhhsv?aE^cIKUlv6r1^hQT;$l zqfERFpB*mct*$&$jCWV(gA@v1!J5O9_X(T4IaJASAjN8}8On+V(lgBvukAwkRxNH8 ziTmPxueh8Zim{i>aoMTdA{UpVA{cMy1v$S%>Pim<se|9 zC~q~Dvb3wmD`%TZW^LklrIA6JBeeWwkfPf3q}bSgC~pu=90RClSrKg^on>`o<4=F= zSVJC=*AXgNn+{650I7wp#n2GtsQ}5Ogak^lZMV*#!RjCwz}15!Y)8z4bo(4SORN@= zKo0wEdu2?Z^ms_B%9KD%vBcD=z2XX#ri6UXW8*`47Q%ER%#KHtM}wsPijO@oKzTMq z>f!h22h<_*&}MB1DVsy2W=(S60t6q!V7fuduOU*7@}*IVQ;TVo_9!Ppr2wg&av@ae zsmotxRFcD_WaI~hA%AFvQF)v4ZIwfm*Z*cz8iz}9$hQiYlKoy=X2k2$r3l?UBa{W& zKx5C0RnLj94dnG;_YhOS(iXhB9P?MAwyciKaI(GwzJM_kl&HHAo(dkDQPMpD3U-7` z-TcCV%n6eU9Hq-(Rr zs2q)uB9O0)kW8lPE+M|fRdg%wCCgy!0VW@eRhmUgv7oa=N&|WAHRPk-@z%=5NXe`m z*GonPf4MADe&Ow4#b}aZm1VgJ@I#Xn#X9dpI7m>t&}fJQd`49#8>%R zim>R*90!!O38pw5o7_qXiIVy^#fFI0-U}!AuF9{*7c1paQpc2rR!3(VNE*3Y7aRG| zq}J;J8vLw|8hp23jLLy%skyG(~g3ctw zw+Zl#sH)>er8q_k5!Lr)jAYV%?KCRKVx(TSA%#ZF^C?#mB=jq~oHvv9J)9ZM7Eug{ zN%`bsG>4Q`#$t$}ZeGRcEgssC$Fx{EfH!tqM9qZB#p?>`hvs6!xy>}V_enJYFIUfF z+?U@DMImu+C*-^bIh7~SUYQ!!3wvAGoqY~QV6Jh$4BsL+p993)7+`gz^c!zh*4_vS zR(^_=nsuVrLa9HrfmUqFVFJo}Egn*6ww-+spL=omBsd266&*u|QtO%ZEHEl5aZ;pZ z96pAce$w_9_2WroD)r50t?hjhVTmR`8m0&EDr8eya?_UaAm$MNU^$yG#iT5XgAD}` zBff#lhT4tP@5#~U@$Wmc!PsiWSkezZSnB`@&V5U%h?7F64DL*Q0e_2VDxw!OK?A6O z1ZsuuB-EMF;Z+`qU+%|eboB%STWR}QGB11;dxS2h@@lS7tC<>|Irwp}{>x{1eO7K& zuI&wvFfBxw?C8wi*-PKe&G@trO_Nk_u18`OeRC;w@{5D1IQ%foYIV+%*jG8E*?X>n z^~VAB0^Yo#p{p^Ly!=?IjQuEXr^hW2%%j z&84u8hfoS}v5;@CK8h^)(GQnMH2)I-^exiVV-$ZRsU^O4QMnA>HnUV-*aDN;U2awt zTL4~w=sWFnG$43?yNT~cN{P?l?x2`#$+4*OW2`|R#@~F(2!xHAyp{-Yr}u~5c)ga4 zh8OVW-9N(p@)gdkM$3G(T^~)9SX?}< zRd%(M`h=bwEo6}()NMahZ`uP$n3O54 zFuD)3geV`jlD_a=ZU*&ZxgKRyYbi=MKQlzJAt9Yr-fb=Q*IgfOQZBcadM1B1yv72) zV{4iJAlXnDk2uO=*mDzI>fM$QG`O!vc`5~eobq=#8hXB&dM#Sf#jgFPTuzZ(k_ zDuy;vr0#h45T$h+shceURX}4?8ecSJ;@y@qDQE0M<_EYHFFf?a7oJ@EX;y?BjF{fI zt=rQSx80`pq&8sh_VswE(Z~r-VhD6!JlDlt6}ALShDR`*{?%QichMP>HBd!Dr; zWNdsJ+;n(nyP)()lT5ZTD&u4@y2rvOFKpg?91zlLbI8wy8Do3cNN@eoPVAVXX0#|o$q~)%&B63|AeV>S53Gt zJ`*L%R;tn*1`R$##wRVWmFHo8<-+mB+sivj#gg{7Q_7gmQga`=S*m<5`G)BSGSg{~ z68loaROP46QcPr{K|CH8gPd3u4zxO=lOHoH{^BS=L3`>{lKCp<$HAx=KB@ zmF0@uRkGB^Xq1Ys2>*SKD~-EJY1)kAilv(r9ui*;ZS;loNJ^mIgXV`SQ@cs;Xnl?; zjWeXw5X&*%q!+A?IllDq?GV=XN9C~$>9V%GTjLJs?W2iXE-95W_Wwd;usw6(7Qm3 zUDCxXP&c%t>`ak^VwKrFq(`#K(E;&FDhSd~zVa7+BGZ>Xk%>>3LylcP8VJbU6UH}w z-si;q0PBZsoqz%++4ViFX60%RjHnL-V--WDWHb#0ReH1*R5k|Q?{OLlSum)_KT3~G zDY2=MOT$Jj#v#9dlov83v-GR-PNvi>0;5xK)t(x0$nX+Q+>X^FdUEd3 zQjVnC(#yPkNtTo;X+JAdj%G`au(&e%qc!|!xb?|`>~O>aRjf&wGV@WXllIsl<R^0YQk|U zNCSo=1iPv1KBfz2FDX6S#}-deXIgVe0pc7G81@h$&L0>4Kztn+f13&S#+q_1d{hk-F$Q2Ah?nK2nRWmowm?j#=Tmu!{vx^{24W zI(E8``-7+ubv;xz|HDj8<#BcEMXZbT-)ESW*ZW8Vbv7g_`be=sBOr;sxsCOP%RPOc z$8$gl92;P?poN!VhPDjOPQ7IrgzjT`5><_@x0I+LGyh~*2ugz(Fr3YK4(nQH#>*gQ z(~!<}WL)iLRwnetCP{!*j0Fe7@#(tMQo3{c44@-8k@_*?k#0L^Fn_3H zGolavS8XsY{+cUA+4^o$6YBe8ry}_VTCu2AWGwRpuXgd>Q zS7{fsvZSA64BF8JVqr^rs{_5r_%Yzy`bjB~GYCF5J0LyV*HGkx@o;ZDSjm=73{@WV zlfrc`ExK0!!FNwvFqb<5@95Yaz(5_5_38Bi%gQP*)1dmca zNNQiZaG8o>urxy(?@<;GmR_Rg{lU_GZF8(bhDeKa&jC;{RC+d~8I7N|IILq(zq!(F zcA^Lcw{nmjGd4~eCb0Q)75L13q~aH-a; ztbSSwt6jR%r=@h=Kd~O=->0#DT7kq42~O4#>|&U>!6HTeE-` zkCNKc^Ux?MwF$dT)>g4iAdp65-)!&g7^V4W?05n&aWock5!K~Hd_}wT9_9Vf(neqT z7Ua6aJj&oP(rZaRlp7XSW7HhDJ)F!?Fq;yXSQ^5pbdWa~D-H8qa1-ReghItw7z604 zu~G*u^2hOP{mTtu)T&Tw5b^3u5)C0#NHY?2ZGIFQWz&rqrTw#L6mZUeR!R&4gW4$E z*p)_)vi(_UeNy2+(04kd#ylOp{Y2ullyIi4^MQFgLp;i>k2V;-HXf}WT&;k&`oLh%_J7AqU8E)(u9D5S+4Dgj#WGQ9>H9JO?8iWO%S6;B zp4%o$v*_7wk~FZ{GgZKT8Q?W2Z@4x6z>6bcNTCLXyc6J2KA0rE8Ee4$q10Uj8;e0; zc-0>%^2nh$^mbl}QJ$PES+yX3Z?e=P2*kBL@@0cZ`FS!r9iBN;q+D%N&vs>s)J*a( zTt|9QLuKscb;_aVq}Kj@Ye1Rnl!wnrCja;vQ208f#Z)Oi?Vq*Pj10+Kr++gnsPOG? zZ0(6RfGfX20KvYkp(|ah%$q8O*Y1OBrb^EC_%ytIM1Xw+KH+{45kB?TsH-j2i_z}X zvnVmXcxxzBco)OpX7cxJAN9N>Nm|n?W$d*2(fO8X(nwvuD=n3v>C(EmlZ|1gBRj5V znGXVwdTJb(TPi1}=2c)^e>de7o_-! zUz$ujwh)_(Io|Kq{{AjC2H#6MhNLJ6-L}PI(Y>aT_}fbSkE~(S2!9meINMmmv4%Lt z9!JS>0o_F$n;I&`;{zjtZ}KT(D&eV(4ze-tD!;uT#c3O2KzTumY?=TRzQzkScM@PN zW=b7(aXF#N$eB`vE(=AOGgEp*XFy`hOew+7ew9wIL=d1{?W{{9LE9HdV|0J6HYiaG zrHEFY8bF!DCn49-sM#D1XaL%G=)Zq8>dZe(lv(uA_Feo$M`A3 z$7#cL;YhqRPTRN1H_-yKKiW_Eew;Q;w*iTZF7XBf)ttMG2mBQ7X@2 zB*4>589Gs$6g7v?m}#ue>~{2*ePY-om0@(0@_n*TxEAEwCu;jf-80ptjAo1=Ftoy? z^l#-8=7%iYDxc8;Kw024#VVsFYe(ubqW!k-pR5g$bS)zNlv7i*8~w(dMd@#2$bdsD z0c~`t(Oo0zN{?Yl1cCHs5q`>h6Sbi_UnE{?qw5>JE4(gkG}}NB(5?yhQ(`A+jg1xo zz->`3kJFlz@HV=n=&tqHph9J91~#Dr385nFKPm`9D#C;c|3v`Q6!)lJ3RXV&*(XzZ zvV%_-!+Th$VZgavfpU&fFa&q-32$@}AO7Mkt?cRG6Jfi#1g$>`tB}+q*yKn(hDd3a z)u991Zm@ZZ%i$4N+0FuBFs@KL}WlrqzKX7^!AKP%EChz%8KGJ@su^qg6&mjG@cU?-8@ zLg`i_eUj3#OE9yh`NY~Tpph+u`q>Zhor|Af!ME(la;SEu`E^L3%A^js9S}YkodL6Y zi<~YeYz8+50M>go=lBR&a9|O{eiAa)2nc(TvIrX|c@MN@Lg3;y5s-uikbv0(pvpwl zR&US)tWu}F$;Iqv74K1{%)uHCF+XT8SEA{P!gkLv|UtBqOhSv{m&0AJtufkr2?QBEg z1IVX3aK7Xt?iRCuX5eZCVvRZ9X}wnf(qu3rP$Bm!#30R!!atjI3vGgh#m5=EOm;!W zM$tg-m}5g-sas>4-=aFLVz(F5ntEOkRV3t;P9H^b z<7CKkrX@Tg931VKh3xp>$sml4z#>dwMp@Q7jb$8Y%YL>U`39bl2c zh6W29$=?($e49E@2Tq9hFX-#^v=K`enZmm9MgPiOXl>$S-5pd1^aqDKAm#oRk)R>g zHXj0bEjiN)&}i%~-sYl2SJp$S}&4X`XLSop4D7i@?MQlytqA~u@RREh;=2@t9vCHdd?%-v1!`<~zDk?hPV zbLPy0Xf{1Dvi4v+06>Sr)7mHC}Dn(-Wq z9BOAP5BWuFuPva#R&I|x4py}CQLJqBi2Pd`xy5JFn=Y>sUR_ZLSr;Q~Sy-Tv{mwUk zsijY#R>v?$xVN7=*uPj<^Syc>^&uh3R$Kd8ryeyb4a+(!qwT;-40ABEJ3?TG7q!=6 ztmGlVL9bo_Be0+YyzlX044XHAaFFr~`w8t%!2& z;`AVmzV$?FqrSO%D}@ka-9I4mK;P=^9CQU-0e)0sRxF{5h?J-P_)8#NkBb2$q&Xn; z->Z_`@4R|01gRpBJXL_bK=xAHb_N+~?!uH%+}*|I79iSd^iA3PaadTAW8Du>e-m7J zi2nvVZj~TO253=d+>>ogBZA!?UVUiu1?V|as1Lt$!7-TgfiD$UAG(ah@`I6Tgguky z+iA5uc;NDnAEQ9IR7ne-y|N9Oxoy>JyneE>%tvV!b` zMseujyH&bi;&jN9)~Gf{t+HPpWtH6gGUgk zC#^yFyN&RaLpMn#A%evX;yxi}zpf~-uC_7mH+v#0x5=nQSl{bD`1VKA2M2*IDB1|c zS@ksThuQItwO9pnW*CSp-Gei;fmt5K<^B|M9pIH9Vtphid|9vyjDc+k8c80#0LEh% zfg&yjw7?)tgm9I+5>KmyGa|%Rcr`)u`*Ig)Dt4s#oWJd{@FV*<=72iEj4i$b>q=Xr zd7E;NkN_LX#K4I7CmWs2D~tQA@z9PC;F%BbRf7d*_Dr^rL`4yOOpmEi0fI(BPPP-)LkRa;%k$1%soar{nb;04`mVsFnhKd2s???88uy%_c@?zr&mf!qIl8TI9* zd~19=qv}Joe?|c~U4TETUx#x1{oarGUDANX{iwKv89U%LCwOtm{jfv*!mI|?`NKy2 zlv@U^NK&Lbala!=UkZ=-PnQPxIM=rKQ1?`CNtH7T4er~b$cd;W+J{7micFD;;$Jv#XS?;P;e_8 z-i}m_fd}Q^REK63SdEVwjm_RA%ixCnuaj^J%#2YTk=l9+1f0)PkwB9qpb3KJHF;=Y zXRaJkPW83Hck3e68j%?#KZcUKCSJ?LR*H!uO9h$pa@S(P07eD-bJs7@U!0I5iK*V7 zaAXr-#+!A1J+F^kb<8MRd3FP9!)r#Zb~uRZs9g5Oiw#KWh%XbTHg%+yBPxB;K=!@p zm3iXcgN&GPeP#Q6g=}Q-oneG-+kDl)s<_yAa7b-5*vki(0i=9G0uVW=g&uG?p>7X zPl-y+Nr{9?(2Y_+h?0}{;JC5aL_YV&>#XU#7}Gy3al2!#wfsLuSrZSaFW{HKXGD~q zMe7#v=So(0bKFcYqEce<`Q3C!<%l~ok#8%V)oSK$1y?2`Lir3Xy!ffvhy`)pWj5Jq*s{b8XTp|(|%Qp#Dg zETiJ%sqR_3xSUG!%A!_#i9v_J9sdn?c4b1|u15JBc(zX5CjT0#FQ=CMS;#$wTs1Mj z8l(J02lCR64XiR8<$SB>w-~NbiXFxFDbVTP<@bTPf1=bR`;V!d$I)^ES zMi1m%bQ_O8I088`{7RE9u|{0xUtJUbV(Ye!ONH@M?S*7o+)V}RWc5uoT8tP`%pRb! zE7TV$j7bFP^JJVB8JJxF!hj17_3uSY4E5(>=TdQD<4o?n!d-B^)gTtCVhSu&s!_eJ z6Nql#CaG9FfBPdIoz9BAfQl7Yl_61lXCt*tHE@=C?U-6%&FE~javl;&7^JCFS+B-% znSZig^+FxnuHI)91=BoK0@90}jYh=|g;~|R7}Yv|jW?P?#tLVIXYYnKf^5%CVHGZ9 za_?Ad%Nx`|Vcm;dN5-Dcv#pJ4W<_|394lC~u0PJ7Ih?-kt`~177xSi={cQCa%ogxe z`y&GR{JW61^D<2-{Gcf$_d9#R8?|XB2_#Pq)sQ)bG=pt!_qTz>m>SOUZbqU;t0Ueb zeEV$m2+{nm?+L{r0^6C2{ho7IwyFx-+;L^e*b-=fMw9L7WBF~61gDSBY3%$F9oyYA zeN386?ds`c9DW01+SJ17qyJ<~A4f2Kq*9xlJ}ynd^l=2!haoxWsh>^yf2WUM$(7T` zY*2FgxZlVxU1a+B`)=vN>Ej>EO!No6R=;1Op|_yHqTd-}NvZiL4{6vh(A$ z;vd){7S)tP&hMPDm$~#dRZWgDy^S;&kf$_6l^`O#nN;NUM;_g+D;z`cUzS56w>Ne+ zLngqI8{ZXvCqbti#p8ffJjOuGW5HgJiZ=(h>j0^O#``VzTh%>_nTU<)w|SW z$=R(=y~h@HUP89r$==a^5u-O^#=k(Ds|^}$FVM&qon?|nV_-+nMqBk$42StXFyN?O zdJBU4HW3Qzw;d(S13(>Pw%>JvmkF92mfr{Q8#-GLOjS*1ZPQt@wkfHzR_Ltl#Jct~ zd9M}${jSS&!M(G;A!PXy6V>*uCK`(QxiKOi))L8Dq_d)MNMCt$7K;Sdi;TWa&{-@J zSrNXvxHYG<$QW6ta)8xEvNo|~)pj}gN)6RR`Zx01g>5{8O(d!DR+7ZO8B#wtg(SpAF~m8kjDww!Jw*2?OFMgCKtu=+3D1j+$> z$yOCacGgy8sSRQ=oIOgBC$8t)Lmd?F0?dJ9ak%O;wx|f#Y4^ox0e;Z5w{hf+azCS! zE!IgdRYNC7Nj<-Uon*CVW)@gY;XqYs!g3pGjb`j*QP%bDMy;_)V8*`txG>XEgG`xbo!w-`nWH97kWek=h|yqJW4jO} zZvhg573jt6TiGPh1FZ_kR0WpkcMgZ8VGSR`96T-EXlk}V2J83_mcw9JA2<#ynkm7$ z=Y_;)lN=EYN7gW|oBhsz_GrSD&@6ioPiWW$o&X5<`6g=mJxH-gOZU*nrNFcN++)_H z0u!{ECHVb=#XG^Y;Wl0Qr!;O)jhnSS*|B)H>W55Lt)$jQ4-HgFlAY-QdGAOqc@vWR zQo{G&9Q|OtNGb3<)dP&X^)zbM z9fL7M6(qt2UmSB0z4`L;PjI^inwJUNw>glNDL;)a=1tR z2xE4-r%|U&kKG8EV}Z$oZdTJ{QPB?$Kz{-E)w^^-?oV+n(W2so|zf}HS9CAtKXmxM7~+#Iz}=Zu34K;U-v z1#~?24|EgaKK=W{!1LlIP)ZNc;F|UYZ}V3COb*oBODC1XgQ) zJeZ&yx}d7+>^P3t462cX5SPhN%!^0!t(SWnEykAp3-Z98M5QI(aCjD@`P9_B(qRFg zG^Fc6_2aU&L_`Hxn-`TWx_cR5#xaW)IoV*3VWSG5d5V`;#3yd!d-o6g*i++xQN*cPNOP3wEt=*7(p=7wa?GLyJqFvNxJ6+X)P-rUCVGZMTQpHonrt#& zTS)U2(|t6}qoncvH_b5O%n}+?YLw25I+~~iiTeCEQETFKEi9-p(-$x>poN3*I8>eg zrm0Pws)aNTq=U=Wz$(x#GShschq--|lH84krg!!J<=%0-cxwE0`d2${VSBk}MXcF4Xx+ZS?*3{s9bojYHT*06YjsDC{%kcI0;;z|*~Mj=#?}F| z=Y+DmV)7t%ORB<`g1(gw&Pmq(KaDD8iklCKA#(QA4oCSE^zMN--LrO5jKGY$ww)eW z%(T%b2~gDeiWp>`3#E2rrhJc*imKI3S(avDm;t;H!8ye;n?H z4^BeXFn0vSqPY7ZZZ^bimg-|PI3-Q>_J1$8+cIkJO%TTWOixjDBpgvDz}Th;iNl9PACwJ zRoy)NQO0eyFUVT8PlxA58|7_p`M)(9TG!vH>}cPMk=fe{l|#iM9&OAi)OB?$J4bQl z+bPxkQpGPI40PJF7zL@L0&xrFqJXSXE|U*Ipca%xx0fBVvg3hN@4KB})2j z3p7!(2-P3h$4JA+t5Mxcqlm?+BJ&$kg~3N<9lDynwKLhIe&^_9RCTZ56k zM->o)$8aTy<2sUbWwiv+Pum4F6Xip8w%&^xd4XQtp((AY9& zP>@Nu@S&ywW;g9XJlCK$kK}p<8|$I_;*&a&NtMnOhV6}4Uz0gD2U$c zG|9%trniOo76V^4@8bg6ZSvl%9c*}`IM z9tV7=m@a}>v`Gvhbuv=Drj(`ja_eSa6$PHa@4ga?4{@SjOMAn zlrfMjaYHSBm>@wN0}O{kFgf7N#+m7LsXoBVgAOWu(*sIw86Y%BPM-lAHJ5>zM;{tW zIm^87U5Im!?Rj9MoZJD0MBpu^n zlUAB;v8*X_RAVNKkS(;yb`_F+Kr%yV?#K;cJcU2X;uCOQr?2Sq%K4&F-_M+&DGoG5#pY zGdI&7E3n#+GTi3MD|+0N0*l})sdQLM!6Ku}Iy_M_vx#bE&;>pvW}T6`HIx;t0>P?N zT$~w@9DGUuIDvh)=)%y{p+>HkH*?C1{+k$nXIDhOAlaH(&R_)b0dbjJ&kLF}O~V(@ z3W7@m9LTu~-zxmqYGGFQb|qrWF=@VM-6PySL$21d!TX~}wR#pldj-Td)n6|fENd-_ zw2fqYjyLYu;LRxHf})ZtfL#`YgH`;iSaHI(bj7>%e&_ag(DUkSV#QoDrDD7h9mNa~ zHq12}!6WgodMu?1u&IevH1mFEd-%yrW)G6trXq$nA6k4>3ga>{^E+ToLi=&xPa_eq zTMjI=ynmN~o%B1)#&V2ee+EyVJy{4nTB4pwQegbuA2vG|LoaBvt3Sx8j-X4}%2E4^ zfWktcye0sxEdrX0@-)?XC|@lp0(vS0npz%ICP2V6)!YF*l7&`%O4mb=xgAh4!0OX= zJY+=Os;yX2Op)wAKVxE}$=*LyMmxh`<+xNBkF@M9rX3eVFZ;7)#lYLLOc25+_-3PiJ2WF?1h5bBY4SwGB`DKW~y65x>GYZ@+? zbZu#VkkUABMwy_1UkN`LpRsr{ELm&T3t#q3GB(Lr-pK-U5xp~3;J_4JtQ?v8aWaP= zCxZE8Ll*zYwOX8AI$5x2J7`px^eShG<#x|RghNf!^Vm>?iy#=|7W2^?1`d!o7Vh+O zWgjbo=s0=2$!59%=Y!i-RA&Mz`-tX}B>Ox$sv(mhLLimal~mgb>E0$?flLw30iSA( zUt+Q-T~A?{t>zZenIlPbvEU1GugrHLi zsiq-VxD|msNl4h}0#i$f77E(aI6}_S5yD;7duZAc@`FHD>s=OJ*FhvDMm4xbeEec} z=xoAdz|gDmeVHqkq6%qGV;u8XD`S1Tr3dGjs_fT5^1E(Gd>e5qb!Q!^@$`@!zcL6>?W{NzO zJOhu@>7KBU&VF-Emuu72Ws;o=6+?Wc5+WGSf$a~s^q4A6Fe`V9(<`bFsiOKIi|Y7$PH&wTtFH8x-pvPEm1M&DhMqZbWL<=guo4+#pWqH2OWkQp_#h=*^ca}I$+sn( zg{1DLIylsf+u07vwtx6S}(i)Zgs8~gdBN? zLUy3?q}Plgla(03v{F>;dDsows9)EJfNl{1e#`evgJmom`(3bNqM=%hUuizvwLtEt zKmjSuYpi;U2>`Hs$1FtfIHH2{6Y`hw`~tYlGMN;e(OY7Y3HXan%AJO#`NrH#owZv+ z4##h@21%TBUO%UM#bp?HRy(kg`-oDn`yn^uc83Q@|IBWx#92-#p#dg~%F<$$sfC#-JUE=XBD^e?ya<5%Dr>0rT8 z;7VR?ibHktONfCj^A+MyjR3X2Zh9O+dAMEmR!gw{js~ZMz?%RL)VmQ1*Z5qQc_z#s z{SYPbJ3j{j-D=K;A)+~&=RU!7nxAN(&5qx0?st<|89`C!Y__kvn$hRdLP)e|5oh%S~tx{e05Fu5=L2w=#&3hCtl zzpO*(H$Ah09-@R^W_M$I$%ww(6g0g!<@lZdxyoQcj_M#Ykbn;YtR2m!8s|A1CzeUz zHmoCV|6OcC!$yiHRf3;u^t*DA#lY7iUy54sVllR|=wF=)O?rbG7!c_k4K}L-5xQ%o zV<4Q$po~1w=j?+_wX!$Uu!h=vHdvw{sn90iUR_x5T(9g zhOYJz0Rse3DYUMg$|7Jaqtwv0 z0t#8jDD}=csT{52&P+X-Mk#L^)xaAdCVp`)nUC8ZnUvNfEoU4g6w|7Li+VILk#}H zL4VbW2!7}LZ%do01i^>;f=XT@UU|0K2Y*NOTBOMoU}{|uoqfxiY= zW||>rWA*8Gav)V#$XfJr@#xmG&%3cFbZ>MZ0VkeX4MlVS2kyZxd8Ro&EHj=5e-qHF z%19K!k+r$FmFz89#Z?No4^0^@)gBTP^0yol41N9*z!au`FG z0p9Incusz2inO5YJ+}s!o1`=`4P{*?v6TndjB3V!;-GZUIQJkj*A z5D(Ct)ZeiE1Xe}fKiI#f`}I5Wz&doW)MTLJF96jy0@223kZp{veahOnb_+2*%RiVQ z3u(x1#x+d!l`Ke4f`#MiQhfk6FS1ZrWg)?%!AxR={E~{l8f^#B9@A*g+GuG=>LKy@ z#}t(BDE5Drr1E(RzjHE)CXxs?AX23b!_71EW_^c;pU#C8kn%eB+VmOxbwa(>$i#PgecLE|8ea}}ZWZcm z>GaLFr+R-=Z-9l2Z5qi19Z_^|lpi#x80NT>098LJgxXEJ`M!+fp`g@m+Rt-XsH>Ks zI&Wxj62WcI^e}9IYd$b=gf}o{txB^ba(l@pjwav8xVSWWRz8VN_b_HEBvT? zB80R7zD{nbhPzcK7=v*bgKEe#nD+hmPb!DV87D4;HFGP>p%yq;xG0jf|BDYIU{7#JN`b$`x z|F`t8Nz~2``d34>0l&ZwI__}}a?S@=d-l=rVdYMsl!>d2 zU4P5^4RtV;7dgRi*UXm)sjOKGR5J>Ueltc$oM&MHP%sykl>wm)sAh~B+d|Ce`@e|Y zP`5f0c2@Q5NVY(rjb-;sMh3e%fZoILdsKN;F3oH5idiKTOBFd-BBvtctriDm@=diI z4AF%cQ^$@F(VJFg=gLv1q$uu})kKb(g(S{~+#92sM7vc*9IQU~#;8UUa@WLy+-}0q zv|O2xKLwy=X&98HHjBV^-*sKrC@HZ>lRk;j!G`-7#A!Zpso1cQr$MGIOOvNyMKCaa z9!DqktTOSco)$p;VgG8Vj>#|FMJeJ*9bpHZz03XYXbqev*MwyP$f8wVaU>alW(T_=Q8*p<1sKze1w@0 z2E)bm&r&J)b0`dDu7z`iGHZm&d<8s#^^0IR*J$wFF~K6A2e@?LDHNy1?u2Qu#>_Na z@nx<-`!BjlxtencBDOv`Dh)%GHM}mDPADXKES?ygi9684k)^n+1$3H1oVkbj2oiK4 zG(tnaDTJ=1`2Ohngr0>w2mwpv_bBuA2wIM&RJkzkK}TSyj39iq>I2~WUGt@>4Kq%a zWCnc4BJq>y0;KOTP=@fUnsMQ#)>Gu(Mqsio_~k96XUM!#h}1{8;IqSpcoT@%w+Nm| z#V6T_7wOjcKHJY)pl@|Q0l{>)%NWbaYc(Nqj$SKBT^LQ##bQ*TM0YVpgZ1Sn=Xt_2 z{(Y(MmG{`Sxgd&R1}!ivY;q2O2zfR*Mm;G)EY&LJ0%PxQwisvB#W8vgjZ$mcY9=vi zx%?6>?0*w7Ooa?+K+@A?V3fX-h-tT}^HUUs%;!cCuZ`r|cLSyXqN;0TO)m%Nhcnxd zY=n(l*(FD+=4}hCTC;IrW7T`ojSq4`=6625MEL(SGT2W$W00U5zbaVHr!;tN2;2zZ z0FUy8!XJ-oevLK1nwr29BDgg}__f#kYAmTK<&6x%e*rwukHg}?w%|tEWcR-}(#FtL z=0@6AXab0RWRa|_?DM?Qsd7%zV;=#28vTamCLiMp9w|=eIJ5rHS(`YuAn!q1-Z4ci z4#TyuIFo5{taTpTU-=m`r;L+DY;-KIaJ(rlofB*l7!IRX^%%L~D|LD7E%;;$llU8# zL}Nc9E=kW-Jay~Z?gf5>ZTav=#QLvXq0eICtmSr|#hf%;pTp$X;W^BCqk5w-%mC2fMs6_kA@C-E1Ib1Dj_dN9;Ai@y@6!xF*A$gP6!SI1 zLqzjCS7`8c>>TKcd>k462!`tMO+43oHqa8LBos{07rR4;c6p!v4$N-hb^6KTj9Z;2 zM3yl>#qed%%VQJxo^YqNdIAP#HM+3eVMxPq@zC)90^w5S#yAJZJ-KXy9F@o<{+4ge z;g9bU*~7mQ+VS%&;8)tj;jdLm5AgL*irN5^2eRc!1UZoXC!`QVAa(#}oBwSGs;|{8 z3OkSoJFs9Iju!fzZ}=!op85?#i;v0A){7`Z~0`#~w~C zVh=-yV3UUyxx4vqW70aQs4;j4Qe>hf{Kk1Yn!KDvM8eKIN;hGO=re`S=(2z zr2u2fmC_IJY=ZiE4zsl?qf3vqZT(%0l6w?8PP%@GRdFP1#luasnTsqMXruuCbO_u}2B;JMTyH!N*!KC}>rRO{8qDE`sHZ z)8MB=;6E~<^jDx?;MCTfcCx$poxea{H(0d`;jRZR(84vV zS=D@x*3tJ?oCHMhX2N!)9q|j|#GjwNtC?tYKaue9uD>7+&WVRp7QD*>i;g4)ipoor zoW44TBL1dxBE-y`bbAqW|5j&Jm}8Ue!Dpv1?_+FpntgMcWk9n7{#gk!FkMq# zIG=Lw{;AtW7mFG|j_%{qFblKqic4Qjf)b+w* z-4ohs2%jC_WQ$k0*-(NHsd!Qh-le&Qhi$sXpO;8YGfp%9*3cxkkP>e?<~+mxYp&m} zOA=!uM|2Pd#0T?KvyGgr@QX@K^ChPFCPbzc$9|?4OLs_+7Jez!+d3|z6rMwKcs`b? z2A7ypXXj&fEsZ38;kwghl!Do{Wb!-=hpvdqMdHoPM= z{`c}L6XG|u2tQmG%ZO{J`6XU(cnEX*`)p6cvbn22Gb%0qT$+C*LVAcl=v7pzzdMY* zBh}aKQd;6=hi4TRnvzj2)eDfX8!9(37QZ8b3jPx>rRH?JiPpoltP;TN9t)f(H)-Dx zQpq3zZbfv9!TS%;O816x4~rjPSGntOt7P_`Bz%=K3Gcu-vZg}cZXfmyF+gI{TKGpK z0JbX$-wt(n=E(p^fyBH#Vc&0i4#^g7-}p=J#61pArEsh6Nh6_Hv2bh9Nuz=3j?YaE z|CJy3iR7~S0TidX4~mN#mFjrryj(PK<69xTmk@;u54#=Zi*pzh-B4QwQL!jX2wuX0 z{~=Qvnl{T%SdI}#B?OkDyA}ppQ)dqe*6fVK^D{=#zZ9I+9eG!i9nY4-2N}9Y1v(>1 z##bHB#yH9kj0yxKBaA40V}aAJS>OrD($1Tebjqk}&PR@1m(&{J{lFv&^9L;WD7*rT zvxOfZeQ$5bngda}0Uv0p%aAjz4rJywwd1?kuSSn$IDj4Ac-WykeCV+wmv<1umx)>WA(-~in z#KTYAMvGejHp5$hCA@)e8^h}FeuZfW~l(dQ1=g-E2xM*vIRh363j?F)e}G(^<+cN@g`Yjg#arpeCU23bxKvKx1U zpfmWTRulov2yy%a?V?^T0(v3@ns6GRi2z~3;tpXR7PD$yQ&vp&r%ewYeM4(uXW7fT zx%SCwS9eMEBl7G9u7RiI`34sKIyI3D{LcL_Ol;`UO!_v*y$4v(_1q(U1=lVT3SkWR zV$85By-Sf#CP4o-|1CIOtZHk%$AmUVMg0%H?LQNT9!{uO(BD*cl8o%y|$r;L)aGVUrHIgX;U8srTbp zmKR@vzLD6;(KSSHk290D^@MrMdirCd2e^F5_F5J1@$$xXwXE$Zqf@l z8Rqt{h@**7oph1sZQGC_HONtBR6Oue6h#ugsB>|IcI=&J z4rdw3@H#O?2Anc2CrRUuMk~Fln>dpzZYfXS z39XUF?jdEI%VraZw_Kd~oZV9FNUeg3)Fzl%o8uecsBSkBPE(F(PUo4tmy@%-&1hyJ z=@61`*Q9%2)TFEa2kFZ;X$nZ8kwF+Q|6=}twA*nNSIE2=nUB!SYYBrK)#raOpDVpN zTLoGc%3Q<}`~`5De_7ljDr|SlLW{680{kO1|Em+V@P8xf1%;;D$+JxUOVU14&usMq zinBF1fSfjI(qXo3S@AzepQWVSQBNwQtwq|In)W*x5;b#oM-^GU4! z>=nL|#=|L6$|#~P18UG-)mcD`;CF7Yi%cwJ+lshTir|*V3<}iOY}9f<G&Y#Q4|9WBoJ0|zrjFlW+C-JlJb)RBj~$r5=OCT^0N2J$i*_fsLwQ8n+!)4A}R zXc2p0lD9c8MT4u;u*<2wt?Wd>UB53+NN@n7^T&9Hxzf9O`*s zrusULL2Zsrhg`UvHxsyW-41s@%le5+Z_K$Kd>D)p0+~?vqxz~Ru!DAD4(_GV9?y7D z^srLYo!l9^(x0Jo)_odC zLv{Bi2kU-$hSa@{n|0tJu8dd;{ER!b)idyb*Wos`+n;ii8y~6Oj&Ai~9U|hHy)@vl z-^vJYYbRLc?y7~Inn?xRZzsfb#@LDdfbhA^D1_D5e8e@ccDzGD7DrY_X`sy7H80%S z{!>JZNk22I7xQS^0~h|`s)5S@uI11&SO$0-aKWJ`88$54VU~leQ}XvXPjMacGvIE6 ze6Pur6nF>h>=1+YsD9wMNZ=G0^r%jiBC9+#VkR=NQ2_*UW(g{tdC~)*5atA%@^vv= z_WZmAj*s0a&0f%ras-`UreU_|xy>w2TGZh#G7}%HCH8x>_R@AE6(|EQ8$x7Vg_J+R z+m#WaA4_olJ{-JrJQACOC~!e`JK}9Y$FMxV^Hu?c&rws*nCvvO*vile=X!?u-oxLZ z^~Ps-CcjAgfv@R!%7t@fIV~;$E84(oz+yB2@lia(o21ex2v>jhxM(ec=^hePNJm>C z>?nA%V7r=2Z^+l{RIn=r5#u@jp9GMO+rdp>CGWWBs2d%%YNX$7tV!z4dZ>MlL~7#6 zj4|R=p{b|EA;T+&C$st&5YyFzmoL1sOVkXCC^JQR|MLi@>U}c4K@PMQa!12iT7!Fc zDCl9szXhB@!e)U;FyslT1lxscH46flMu~Qh@r<=i#v?P3=XX^HJfxa>Gw|H^M{oH7L40AYZW)VuP|I zVMlMVDtwR1Pt475;!1VlXICOrxuqP5c%~Fj@A5+|&DEU`kTZKX!dtnSIH75ia!FMO z>vRr>cHkg2`f8dSS{EyIw zPt<&`3T=*h;D7KP1glBDTg5Y?8y&ZSrQ2(gP92I2-}|a-xkTo>)i8P!uTotMk-=8m zC3D%Kw$r%csq`OojaKR8T3JY9?|}=`Ey-YT{Zf#D)>{Af5vBBX9404B@q`J3hNs+q z-%Six{{Dsk>_7&0ybwd&iBMffzF}iNvjfRpO!mj|8sh73mf644DQXDRz-U2p-i8XKRLoH2A|1xH|bYyIF)^56$l)=R%yR&;%Jt za7#7Aa|1-ehcv@78r~D5@1WH}hk3#^!;YHamJF#e&$DQLOEkYf@K7zv+pNJ6 zA@B?2*BFgx1{vx_Y4gG81lwvu7JC^u{1!Wej^F61flH|*#$O`80BH8+xSP;mm?P_e z#78`F@^YU4tvE)ni3=;|iHo%p3Bg0Y63wWw6=q%aC{o-EM&P}B;PBD`{arFlUR6k$P>q?Bj@yH4o?KT8M++4`ME$#gfUA>9l!R7(ER?p z>A6NK?`B)x1;UQA7rF62w|_z0F#O(A5~X?Kc(;RtJc@r4zj1hW0!NDPFOb&+nPMb3 zJe`n5F|N3MYiu2Ogc4%xag_JO#jyWT4$s5<0WpNXca7!(G02twN%1x~aUZ;v^Ka8u zYPt0RqvOm8HHha;PSHrlkb}dsfJxYgB$@7&KY$)EIo~WYj-gAbL)O8J#_rj-!X2Ju zX^tNm-*&4SS@c_M9Bl01nuM(e?`u-X9;1p##3}?Z_ClTYHQhAeTUYb_78qFatG%8` z%`+j~8vK6oYGyN%J`G8!wOcf_)HAe|Bih1mw|9Zok=-nA@4i4b2<(m(qO%)Y=-5Nk zyvwACgZ&D#dcY8s*p*<5nb7O(x3pf#!0t`mZy?$_4*7u;{DO6uG)c_OY8q&4)&RkBw$R`gLg34Np!%+`4&c;8bNW$pG6Um|wy_Z$KYwc(&eWg(`zF&XT53b|oYLE@L+rQEG{P2xO zc#;`yFo*NGj6>D%(eIVmAAOHzY4)!Ec-HEk%_#}sI}<)5Gd!QjFBmK!M{pidnZ6$O zUBLrX>A1X1|(Q*N(2(w&o} z&@n;S9^!F_$KU>xdvEkp)ruzjrC``D$xOc)F| z)DxTP!%lT?Tu{fyJw1o$ z*~+dq`gM%iHTcELe7y-dXWjhDs96n)iw$@*0PBye6maB8r%L%&)78*H+Qj8E*uwBbuFqo<7uowM8l;Z0+nlZUt?4b-)$9J zV?5}vkCC7!!x<0Ev)ZmP>NkEI<*Tn=)+bi}q%ei!%^qL9@W~KdA{y$^2Y&*=Re z1^y`f<=U*0XnVI_7jZ;HCvA}+N58|UZr|9#Fi%6~%go-25f( zvLVD8m8qdoDme-@{AJ-CC#~i0b}G&LXFJ|5EQnYpwKk&^F*I4_2AG zm7CrX+QFTO4(0H0pOa^gW7iLr(TBsi(qd<^;TD%Z3VkS@=UtN6W8L9l(eQ2>yhIK- z>f*+_F+xQyE^YN&XVgmma1*zD&Z?%h(G%IvP&Yi78wDY?L55vw#wAjO+WZ;v+umjM(CHUMp=KTW3`7ItECAchUYFeY1DRay_*z_o#|p2xE*daWWMC z%|hLCi=4&u{vh8iyly`i=uY!Z!f6Pr&gse(%~q2To>>a>iZvAjgx=BMQLhpN#K#-) zn<}rwB>D_2b4_&?y5p~kyp@<02THkomQ{@=8W+$pPqH3SF%pl9>flwgFNNdSM-_#~ zyr2cS5ODk{{ffj!vm)2l`h|>-z=3x8%+oC0^)+y0_^O|gArA_JF>@NK*__hw{rFM3 zKk~B&xbRM1x)!?tP(zRg(sRNG56UwMw6DvC(B2-!733otuZxY>5J?=l0;PAH)E|qG zmJbQ5)HGeW2tmO~BKWvDDyKf>MsK>Ie#I+{j&#3p3D-355#=sT4dkgL`~{mdFTTWv^HAJhwI48=_zatEk9r1w*(iSJgJbnB z==t)@+1-C2U+`;deWSl2ra?|RDB*MJLSACn;OPL0Re(>=0+PNg@8xk~-<6beHl zOJ723akmWJ$yVVNJY*$3OPY~kgaJd+O!OppAI`0tq-Uq$kQ6?I#Yw~OD*p`gct?h} zMcF&>s`Ku^Sj=|8$m2f6m}J7XXd*mFaP`PdjHFKxWaQ})lw z3Eo?_QF@C>us2GD(9S&$G>=Bhw9zt|w43xNF^;_KYd$EvUhAZ*lnx{eUdOtfyyhJP zH#Y|&RKiJ_j3(&C&3{S5)3hu2;Y+yJ@Rero3|BSDSag?pfiEU!@pG>-E#6QE>V$rt zsmq_Z3e=GOnmzFf202WYc;R^cUbcwydf-km4OyK1h+6-FczOp<5A#_o^o1SJIiJcG z!vnht?>o;nJbVL>wmu(PrT)-!(Wz*PrqQg+rIn1|n-8=%0<$0$7~TZyBt@N!6l+{jlFcyS(y(aM5Jhb84d~FK?tjXG5=X zh=Oc0$nCB+D^~ZfH!$V0f9YOwh8;{=6=%PSbS{}Q2Mh@;7v~gFVTccTXS2Ilwc8eYohm{6c(6L^4(EjKnU*dD2@=kMi+I#fobd-MsZg-NT$q{b%Fzt4qpI16;X6v}HjMDI; z=sFb_JAOkIA66_3aW<@Yck^T^{ahL%zw?nnQcu-FEV1mAAEBFZ5IZ^O^gM%GL1Xs& ziI_PmvJ_@HZG}>hr9K5F7@a_~Ly2k$lITyMCGwyeEC@!gKuxI0=?o!VWrdT%HHb^K z&xYf-m{vsAF48%Kj8IPUdWZ;yCo$!tZ=M#vF-rT5=neRYTRnD+iYfep@M%n2ILu33 z(zg=VF1g^9_2eKgR{qQ36ETW-TuD74$t!gA@Y=9;!quUYe6EtSYqX$as~sEE0K&^t zRzvhuJ|9fGP)+xu--d_+++IW*ED*zLkUCigh79KdaUU1g5fi-==&C#T*ao^a9w+12 z^q0-h2q%f~pdbXTs&0rXCWesui(bvY4EPfx0r*}3`gVl&Hz9a`LcRjzzg@>0EXT4z z_j->D6RO;t(#>Ej^=c6x2_zN|inC8#&0?68 z(@dhU;md2uKI-;EQiS`wIZLDVPPNOR~l?9CjWhEEwE_VqKFksZ)z!XOv0IkL&f{l z1fc*D;UmaMR2{~sjT5qLr3)b|`)uXJ3=(L}wW64QJU1{aCk*~w;3Ss(I@}XI5Rpim z=7usz@F%QlaEHU^+B;M~wD%9aNZf2jOcO5E`M995mJ4h?*Jnd%*qt5?{viZz-v%5P zqqvaEJVh|0*NRul%HpAMO=X3s%7O|rKwm+<-`P~dCx_q{UACqIi%?y4at5Y=@=run zvHE{+#F^=fsR6uids6-NCK-)$yA#L3K^_g`rg{!zmfTz&e?mL5`(URr5frgqV=-cA zjv@@QqMy}|W9TCws`7;ln%WFrD$2kVJNct@a@-#SNORbX95s?0_DgpV5ib6wMd(_T zgD}`)GngG>@EIAzk-@@32A|su%7hpU3mV|MHivcqp#~L^q;vX5v5*2LfLI-3+V5Nr zC9}%AkPOa-k+7+%9y_5oFQqwkq$2Y3t>Zr!HO&avZM)-eQ&nXl-60XPNbm|u^yN?L z2D=tc8Rvwn;eygSE_1Vd*avMyJAda4__N!mVOorFcrMc_OJs=i6t5g$-eUwF(!(|| z{^akCR_4!02~sgA1w`1<15;Ty&T(KUpig08-A_5itQD3k4gStcz9W1KNDr4e_ zM;x9-5L_e``RWGcpm?dXw3@zs4D~MgBpO|VM)6h%k^7}b(VNa+Hf2t6`snqWrLJ>;{ zz<#;~fo)3)!t|>aVExG92L<45jeoRxj8ZA~uNc)ze!>3rw-zGPDUtn(+a|#(2N{=-^sWMJ|{}s`AAP ztalC=)ryUnZ*4qa)QQcKTI8t>umZW8Y{M=Q2E0@e-Try&_5q`IyN)*2e2ji{#L9GA z(G;7;hlLH6sEK?|1qIf(5g*rxH3bn*-#%vzI%rfkS8aiyVfj>8)=cO=_x&Oz(r;6L zyd4&%<1n*#MeYnWLSdbvliw2MEx~%d@alY|x^M({S+NHTlBUM6is4n7AIP9r1!@g8*pS&vC$h7Y#h+Z$8K z4D@?E#F9-K=r{b{bSF63MYJ3ExbMB`BmYX@_*c40p~#y5J@78K0;A{L%dpD6d(-_! z-kY8~_TKczPugi~>(6i|?(4_iH9eh?8#WRg-ls7EMa#E85TwCb9_&Nx&zz3Weslex zyjR&xw`}L{>H7CK{5?Vcru|kU_3!=sJwSd>pRCe#CKs@(gZ{lTtO61VI&qYM##i&L z=MUp+$Q{lYF)fqE!`k?2Hpicwh^F`#b{-ie-Ck!+q#&)gNe%qa2D@cx4www&o;1*ox$h7k51+1vCiZqMWO(V z9o$KXXnDQ9j3R#5JZ6wp`K(dD_>cXt3_oks>hvx?>?jNBJrIezOtrW$@w=Yiqy3$2 zJ!$)8pQl50Lb!W`HFBpL)ZQRILK86z%$A)sT*eE?w3@q1Rkm)QH5xRW-wy1`cP^HH--^5%TwtP2W|;}UdMOhg%{=rRyS)I&{563 zyD&CmdWc&oJ}QFQfk7xvJu#u0)jD9*8GhmoS^{i6aL+kPEdnP|*eNOuQ^yAcpJd!1 zlOUY0evO9&kh4oY!5q0d!zTr01(_~cdMD{^uu$ELTiXKg(`H`IhhKKn@lqA!cA(fd z)B+A}M4BEVF?_0>>eh9c{eOY-dkym$7he6B*R zmTZUTdFYNl1?{wI(_0SQW({E`d<#sWWbp{g4<+f$G*tD9UC+0EJ!d>nyz<3-t5mL0 ztGV-1enH~V84q|*Kotz`cDThF^0KiQ;2d=o-UHQCS};wkf36XKU#s=(S7oR4s%80d zjmBomHP)81B-`i_rWh&YabCG}xsiR-AARRs9UYI+^3+CII7xuWU0NJ(toxm=UX=a@ zyTTY1#jQsARIKJ79QSYp-<6&~`eACH*aA4CO+{8#aSO7zJAq9RBth^umfZ{zjKNt7 z#(IyajTH;5k>`z;Lzi|1e+rG@Rkr$&%%mIbe+TW?F~~c_x~1gc7z4WWL~@m2=ZW+} zA<1S4umaDbEk;>4&l}CniYUZh>qoENF3o?u3}P6t8gMH|Vtxuj7ZWOzOv649pmPz> z)O$fq36cnpKYC~g)D6E>r6QmX$mpawe%b@Df6&o4Lb8Ibt;AI1sRpu{EAhCrTncIi^Sm3P6YQtE}b@of2ExP8{PvqoK`5k`|XMO`i$b%*Djm)Z4A zH4#XzU!49$KZJRR-)&?%T>guIQ7W*b>L>XKop#V(E*o2z0MyHOn(vR(Ktq80jD4 zsp=fH_jbNDG0&(MbG0^WYzG>7@&z#m^&)FUvO<&a6 zOys?xmclTgRvhk8Qbh@+;gihpIM|{6&Q5q7f&**{xX!s`G^q2gkmRYksk#Tna#lqT znv48Vj%RTe#GFvFsXUu8UJby29oRFnx>e`0(b}wyXfO?I1K1o+5HaAtysJHQj;s9_ zIS3eG!DpCsHpEdIkd2(t$U#R}1DTXaFHUV^6I2ijRC~$3h`w-45P3p4uM5@Vd_(hc z4}z3W6Afjs=*7rS-V9l=swrd&cTS5i5ny%U0!t&?ogubwXtqOaw%}R?)l9fzB$(&Z zWT>3uA2d`Gv~s`;OB7tj&}782Pa#{-J<$M*vcJ(~HgTnJ0j*QG1Vwk?6dpQ! z29X~X#@g$RrD$k4+#qz;)%k`hb0Ocldd2A8d%)`yAy0jUeo9fQ<`rv>HMu*yK^Q(Bok>e%+VHXG^R53}HR=@mtERQ#s!_wb|8E@9X}%WU zzQvY@sK^Z|)IwkJ!kjA1na&)Zl-~9weruvic!`dv-R1*zb_g}|Fdnj5&0?DH%#~fhbX`De z6re54J1n59aO36y3qWtqQ;*sOkiW*f=mloI5N76Kt~jj38+g_szh$j3e8`eZk%{w* zhSm^w(*zSU-LB-l3OG| zfqCf(Oy+E%{q}lpBfb&9@l^~)RtsI~VHS9f%0l%nps&zM;8+B*bbu&xy~eyY518>G z%*?}!(!77c70ZD*xn*R@?EQ@_W=L2rPu<0f7bv{3v(`{43=T*xv!KMo$gc}JmUM)9 zi90j08P?s6roV%FU~z{fFu-U|<&;9XXt@ZGsvk-Yr$|;H-&%hYA41(e7b}_x%$#SXvU9d};z24w~vN7*g4mP|*Xgii)gMEzPVpG73J|G(VxdRPO~)?+i%XySCBWcllGA2h=FjUTtm9NSGThA1ke+Et>-(It7Q4=U? z;7m}|le_c$obhi`1RFYUO}H^`1GCZ*913 z)J&eytgxrcs2hpWfEdRslW1wad%seLA=Ei`0KfAZbekNGZ=d9;1hA=c$7pJ5U*HnB zC-+J9-sN=g6Q4!FW1Q@_V1&JHe0S+25_(=N!*o;h19ZhkusrA%^6ala`lo_A_<%b0 zuxY%SZ?|77!E$jX`V(zQRgc#6tPT>}K<_f0t+cPEP9TrPbpc*lJytdkkHWLmbK;Ed zQE6Mk^@Tt2!#Si=A-1}X*;U-dP&T>x|`hf2j^xdz!_4Om4$CmQf?7c zU;JyteP%}->_-8opg=Y#B6Mme&XpqTNHA-+TE!fWmxZhzv@(obVvJ=mjuhWu>s!8#8;yPp1~a<9^p%u~I7 zL-#^?C)D0;LGGEWI7$-%fvEo0y3gDPIc>AhA2UaX#ps)(ilayRoz;W2*{S~g14OW; z@OxZl9pbbHjy4Gy4hYYg=OQOi+4A7G15Tvq0&bDCF!?5ux;%%cHa7?cp3}yL@5F)o z=v8Q+by!;q^9vc}sTo}K2RE>vjxgjiNPcWH??&d@i!4JCZUCnmL=bUwvNV#Q@YobJ z{s)EP76;vgp)~4PstPW7l|wxAK(UBe^Sj?!P!1Qn`}62#$ft2et`wt=fEFIg{!%6e z&jih*K6ub+d}X`n@-_l&kOx*1T;D!Ea*Kf%sIFDg)_K(4>rSg@^_?zuaa z0ap$^DH$E?4Y*;c-lHA7=eF@+B-QFKI}J=B@vyRgg@^IcC;-Cb5F1vDWpG3@3waq8 zQDQ4yLEvU%%VE?a<@+=oa%u15t!h+8wwi=D&Ny+Pr#nD1roHYW+fV0P-HnLo636jE z5Vo_QG$I~o{K;xP(VDRH)bG5lTEE*_bG#HIv}_}6aah}ph{|TaBq-oC$Ce&u5C2L# zgzMOFgSq=FTKeTy9n}4A(D7VApc!C%YnXmq3(~)@>0!^*-@j=3cFohn&!Lz+rAC7zcqk5_eC#9 z8nO()B*+oo3*%bbR)=Sjv`U_GIHXHe5J~V^aaB(CR$Q((pcD1g-Ea&{{r>PMP|)&W zLAP40E0BN3egrumKMKx%R|aWj+zq$Nmx!onei}mi!bbZ@qje`*=OV0!gji>WXr|gU z&yfZP7g-fVJr@m=q3ul5i0A;250Z4T(c9}HZnoo9xU+W(#cvcUqe7^RDmIaWL@;zE z`Il2l0i*9zaBw;lzvqTZP=qlM!PZKa4?PO7#fhTnImyz)w_(>|TWu7Gjc_mtjFxV9 zR(%3ftIu23iYc&?OF~JSZmOnx0d$n(`6EHRKoyWb19H9F@q3&h5D0R2Z~Ve;7)G@H9srDK!}pMySAF>LnDg3KIsa8T(mJc^LJf)f;NmAV85 zUA+ojR$>O=bLJ5g%RrP`)3;h!?kl4fC0hp~BjPH4O}&U6p;g|ksvOO?B1=WMiv5yr zbt)B6t2|gW|9j(o9DFF%`$$D=VyTEn2>!BEMCLAT@+rOhJ<0+Vh8k}+{PE{4^yM0^r?8lgTs%Wo6i#5XkZ8OPruhp5Hm_?pAL z&f!}cgVVctmJ28W{{tV!tlyT&C;1v^1(?h7PCJUDXVvE*!?pUja_C1;hD5p@KZ0mS zt46g6rULv@`5N+O_SDG|h+z^PscMLfsm{U=lRc;J4qS<9vx`-g720i11|Ct%ooApZ zGHtiZv=L3=z2sn4&i&;%ua`%>#5I2MT<6qGqd=SRJ_%-bmnM|sg6&;&0_Gg;*N=GP zAz~h8Lm=Pl0m{zQQ32K1|Rs zdL8;_9d8_ypuSKa3tq9gjWxmQuZlePW1!SPbQzk$e!G0S`M}bh#l&V9A9LRQ$DXD$ z=bhU)J}t*P?TE&+WTywlW@ee=_E*I><#=6db?wtC{!fnAvQ`ToS~LXmM{gEx8hS0l zzxQsH@!P_jczMf=Qhb1VEw~WG8iQEqTaq|~mX`V+`v#M#oBk(tolw0swg$`KdD=lTHmGK_CKjZ@@n#4``@YI(%DMp z&OMPH|KG`_9hA!D7)m|;e^T!wRoi9w*1SzCBqnY8(p-3b_2g3ZNg?E>5Gv9U!Xu7O zlE_M7EKJ8Z*hz&4_xDm`@NFoSQ3is@uO`iw1;Y0Z!Awri{G`kLNqXiXe&*Aa*>39~ z_XVt0{yH=?LK)QW%R<7|*3+ zgi;9eQV6%DBmB@I$z?c&aA`WiA`oElN}K9Sa3BbhVE6{*R&#+d)?t{V{lu|pX=nIp z+3A$~q>ApBD*C5BY4y)YA#_h6yqAs;-q1eDeSQk#g>;O&QwWEr5F+Ua6WS#y{C=Wz zM6GmLI>N7QlL%j?5C;1QVXLNdQWz^z7zODhPD&xXm_qQ<5oWhZmXVd>a%b-}N!*uj z5td`<9goPnu$Mg9suR=D?n())ON!28>2%IcAsmrHxH%mmJB4r{#p>8}gpX4K{rW`8 zcLM8^j`2_mV?&BWvvh>QSLK2p?Y9E{$T@zT6CUI7}Jjb~v~p z^SWJ`@tcqIx`y*vqBBce$dLc8+cgQ7cS`1;ZOEz8>`K_o>XK$V&tbfWEV7wRyhH;> z@u;&SD;TSyUhjc!*=hlALnj`>v-S);uWBI`9*zJXPljN_rZKpm*V?86z?nO9!L zJERZr6ZKZ|mpE)uPT_8hL)mwXM`or%tC6)~oamg=Dj*t*BdQv-1^a_R&GeekRAm0_ zMExS)*(K+%&Vu!PsuK4g3YY{3M$^gN9 zyj~NJ@Md{$x2?1Ay#s*H;Mx4ZUV>=$gM}UAcjtO-`W2a^*L2+Xgi;^-Lld<^Nqdg? zM?5dMn`$dLlVMKosP+xTNrFdW{F(8+xwsbz$RjXah_;{Vns3J;r&w^et)1rNTZpC< zMuU^V8z`Ynp$Sox?Y!$Wd!v6LKLxT`0%J(V{J;#DB6BEGuKQMAak{~O48i-=50|sX z^rn_rSRAX~b8Iq<%8u((lLC7QH&*oGmOzc*P9z8Pp8(NZQDFr~_)cDMr5WaX^i7Vi zt}r^bKxnns!rx2pWm@rcqP}64>V6`HrMjH5;{X&!JIuB3tQ_g$dEVFi?`3z89_=Q^ zD7Fs*P^j$>F2^<51hegmxA=Tn3Kb z0Kc^`nwLXLQM6mv0x`vP$Y*hFG#NhWZ!>W9v$T21-xR_9#?v*PRQCA7h2uIg!!@f9 zDKxd#M2YGYMlNpOvXCp*xK)4Mo{$_;w|F&fixcUkVMk~JOHDQat*G92EFTp{10|Gb zkAF3$+9Jlj(GBa8i;p%wYd>U)K` z9V4TvPG^#|XOX7e#~{({jVB|@4LPL+zgZpa(t)aSYb0y$a5D;ST-@S4VwkVB@Y*+O zNeM9E&l&1`lNnF6Ahg+}J+8WQU;~Td)^d%w)^<{<-z8{-tidH%2=@WRtPLVyGVZ znEEU{MQyO5I7B%8isOk@bS$)M5&cWnWSagTxJDex3X@%zBBrkP+rUCdSP}BfH4y3j zP5Awy-rdUDba1DZ8GzhZHyIy^SYP2wO;~A-L*UWrCNp&9NQ_Q**5FAe08h*hm;(hir6~(r2p$DeKftV(bi{wds$_q#k}8 z5Bt54gKm}$@ZR(@F0gM+{I{oUq4o9F7piNi0hY5l@78iYVBfpdvG16hY4*LtuOX%H zWa0`J(Y!B09pigjd4cfxR(C7SW{m^VpG+y;HJ2+Y>!PCPW8Ym=w5U4IR^T_`Mgx5* zg8HCLby@Z^UjfCkETJIu-CC6&Vch(|{Wj22A9$EYGF}IY9pygaHmy(8gxuxO*jj7z zprbt$6bwJ#tkwOQENJ-2H!9hdc|Q=-++v4@S%NIMRu?xkmpW}a5g4=V#!|3XRc^#< zFQS->*ZvS2p#ZNT(+hO!efPtRIOdV}o#|+zQlp{s!7y>rvx9u`P;(lAeO?r33L34PF)5Xbb~%xNd;lAUP3hD9;&xcgdV*uxJ+(fZWs z_J8s+RveBej4O4WHm#JE7v&5rr*B=b-ZD538rrZSv(QQM>p%f?Ws}D*{q~2GT)!pc z6uP``NA7n}q@oiP_j~V>RxhWlWo^AIbuU}(NaHsgmH#ZVW=P;1m3qZCc&p>OK%i zxdjl6tp;em#zt$4+5{P$YcQlb%XXRVs5^gGi6T5%`Lw30^^rTj&t$i7Tdzm02Uk_; z6GW}!>)LwV!XF+(LG20Hp@7}`bj(O>UlLZ!g~cmHACGHLWGG|;S!l#-PLwW=$;DQ#7x9XiB&CaiC4Rp z>_m#=^YOpIc^K;8eCKe&Sx&08mHiSLi=_1~=^mH;$8Smb#${UQQnU-id<5K)9U`&| z?Y;otvp5n*j6R@vu@(uc^Bc!Z@25_uLPXF4liQdZ^+*77TFG53IDSf+G zfn7m4Ftw9q0TcdOO72zxv#g&Gcwfr}(NMO_vyMexgmI#HZVbYubDbwR?=a-r+$!eS z)ma&dOdhQss#Auxx3KcM4Plb`Z@XqDyV>W@JYvt~l#f;VosZ`w4%*W#v()3rx4`A= z>+-F3`OJGlTm_<2bn^(;NF-(>K>z)u^(=Tn@cWfn)aV$cp6yagMHe@gwbw+CR0ay_ zO+j|HG7XuSv3@}lDM%_`_Q63uc^$Z)#RZw<1aIW=9CO>96g!e9v6&QY;tD02+X^4- z%*>h^H&9}c5|e8n8yv#JovlRn>>&N018M2cyY!1)`g^21tAE%*B=+bEC$Tj-)Z<>V z)!3M8T)t*5-+eo(!pdkK5$5^n1q^kFXCCczKn(PitCVE$XqVpB5gL|a;En?@(9&n1 zP-G|li-CR3Y|Xbix=nV3E$60%Fngpku)!h*E=Qs4>J4JLwU_R>3%x{&x%{lA8Hu~C z{iOR=c<%<&yXYd8oD)awuBkbJp%pZ~Pk8 zqM=h=+AEIXivilW^v&%jSc_>IWAC*Gbb|eC%0A0cKe1U~8Fj&#R(HFKn3iZGyZPwL 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
    +2%y?-y3l}i+)n-(YOEo4vt=;#N~ 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

    opXLY&i4{&^t#zia({%9s`AcK$F;0FGb8q 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 E4+Sm}YXATM diff --git a/linux/bin/swig/share/swig/4.1.0/allkw.swg b/linux/bin/swig/share/swig/4.1.0/allkw.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/attribute.i b/linux/bin/swig/share/swig/4.1.0/attribute.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/carrays.i b/linux/bin/swig/share/swig/4.1.0/carrays.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/cdata.i b/linux/bin/swig/share/swig/4.1.0/cdata.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/cmalloc.i b/linux/bin/swig/share/swig/4.1.0/cmalloc.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/constraints.i b/linux/bin/swig/share/swig/4.1.0/constraints.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/cpointer.i b/linux/bin/swig/share/swig/4.1.0/cpointer.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i b/linux/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i deleted file mode 100755 index 861da838..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i +++ /dev/null @@ -1,179 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) - -// By default C# will marshal bools as 4 bytes -// UnmanagedType.I1 will change this to 1 byte -// FIXME - When running on mono ArraySubType appears to be ignored and bools will be marshalled as 4-byte -// https://github.com/mono/mono/issues/15592 - -// input only arrays -%typemap(ctype) bool INPUT[] "bool*" -%typemap(cstype) bool INPUT[] "bool[]" -%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray,ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]") bool INPUT[] "bool[]" -%typemap(csin) bool INPUT[] "$csinput" - -%typemap(in) bool INPUT[] %{ -$1 = $input; -%} -%typemap(freearg) bool INPUT[] "" -%typemap(argout) bool INPUT[] "" - -// output only arrays -%typemap(ctype) bool OUTPUT[] "bool*" -%typemap(cstype) bool OUTPUT[] "bool[]" -%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray,ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]") bool OUTPUT[] "bool[]" -%typemap(csin) bool OUTPUT[] "$csinput" - -%typemap(in) bool OUTPUT[] %{ -$1 = $input; -%} -%typemap(freearg) bool OUTPUT[] "" -%typemap(argout) bool OUTPUT[] "" - -// inout arrays -%typemap(ctype) bool INOUT[] "bool*" -%typemap(cstype) bool INOUT[] "bool[]" -%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray,ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]") bool INOUT[] "bool[]" -%typemap(csin) bool INOUT[] "$csinput" - -%typemap(in) bool INOUT[] %{ -$1 = $input; -%} -%typemap(freearg) bool INOUT[] "" -%typemap(argout) bool INOUT[] "" - - -%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/linux/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i b/linux/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i deleted file mode 100755 index 355a910c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i +++ /dev/null @@ -1,517 +0,0 @@ -// 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); - 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)); %} - -// 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/linux/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i deleted file mode 100755 index d47fab55..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i +++ /dev/null @@ -1,323 +0,0 @@ -// 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)); %} - -%typemap(directorin) CONST TYPE -%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (new $1_ltype(SWIG_STD_MOVE($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) : 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/linux/bin/swig/share/swig/4.1.0/csharp/complex.i b/linux/bin/swig/share/swig/4.1.0/csharp/complex.i deleted file mode 100755 index 4a6f91cd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/complex.i +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __cplusplus -%include -#else -#error C# module only supports complex in C++ mode. -#endif diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/csharp.swg b/linux/bin/swig/share/swig/4.1.0/csharp/csharp.swg deleted file mode 100755 index 1f80d12a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/csharp.swg +++ /dev/null @@ -1,1120 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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($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(SWIG_STD_MOVE($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 is null", 0); - return $null; - } %} -%typemap(in, canthrow=1, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ $1 = ($1_ltype)$input; - if (!$1) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "$1_type is null", 0); - return $null; - } - rvrdeleter.reset($1); %} -%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 [] "$csclassname.getCPtr($csinput)" -%typemap(csin) SWIGTYPE && "$csclassname.swigRelease($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(csvarin, excode=SWIGEXCODE2) void *VOID_INT_PTR %{ - set { - $imcall;$excode - } %} -%typemap(csvarout, excode=SWIGEXCODE2) void *VOID_INT_PTR %{ - get { - 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::*) "" -%typemap(csinterfacemodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "public interface" - - -// 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; - } - - CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef swigRelease($csclassname obj) { - if (obj != null) { - if (!obj.swigCMemOwn) - throw new global::System.ApplicationException("Cannot release ownership as memory is not owned"); - global::System.Runtime.InteropServices.HandleRef ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.Dispose(); - return ptr; - } else { - return new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); - } - } -%} - -// 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; - } - - CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef swigRelease($csclassname obj) { - if (obj != null) { - if (!obj.swigCMemOwn) - throw new global::System.ApplicationException("Cannot release ownership as memory is not owned"); - global::System.Runtime.InteropServices.HandleRef ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.Dispose(); - return ptr; - } else { - return new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); - } - } -%} -%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; - } - - CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef swigRelease($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/linux/bin/swig/share/swig/4.1.0/csharp/csharphead.swg b/linux/bin/swig/share/swig/4.1.0/csharp/csharphead.swg deleted file mode 100755 index 56a019bd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/csharphead.swg +++ /dev/null @@ -1,339 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) do { if (!(expr)) {SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, msg, ""); return nullreturn; } } while (0) -%} diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg b/linux/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg deleted file mode 100755 index 1904fce9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef CSHARP_CSHARPKW_SWG_ -#define CSHARP_CSHARPKW_SWG_ - -/* Warnings for C# keywords */ -#define CSHARPKW(x) %keywordwarn("'" `x` "' is a C# keyword",rename="%s_") `x` - -#define CSHARPCLASSKW(x) %keywordwarn("'" `x` "' is a special method name used in the C# wrapper classes",%$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/linux/bin/swig/share/swig/4.1.0/csharp/director.swg b/linux/bin/swig/share/swig/4.1.0/csharp/director.swg deleted file mode 100755 index 5d2ab5d9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/director.swg +++ /dev/null @@ -1,50 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/enums.swg b/linux/bin/swig/share/swig/4.1.0/csharp/enums.swg deleted file mode 100755 index 5cc26547..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/enums.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg b/linux/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg deleted file mode 100755 index 24e4bcf1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg +++ /dev/null @@ -1,88 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg b/linux/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg deleted file mode 100755 index fd680173..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg +++ /dev/null @@ -1,130 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/std_array.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_array.i deleted file mode 100755 index 6e7fe9eb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_array.i +++ /dev/null @@ -1,227 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i deleted file mode 100755 index da15df3e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i +++ /dev/null @@ -1,38 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap (ctype) std::auto_ptr< TYPE > "void *" -%typemap (imtype, out="System.IntPtr") std::auto_ptr< TYPE > "global::System.Runtime.InteropServices.HandleRef" -%typemap (cstype) std::auto_ptr< TYPE > "$typemap(cstype, TYPE)" - -%typemap(in) std::auto_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(csin) std::auto_ptr< TYPE > "$typemap(cstype, TYPE).swigRelease($csinput)" - -%typemap (out) std::auto_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(csout, excode=SWIGEXCODE) std::auto_ptr< TYPE > { - System.IntPtr cPtr = $imcall; - $typemap(cstype, TYPE) ret = (cPtr == System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode - return ret; - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::auto_ptr< TYPE > "" - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/std_common.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/std_complex.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_complex.i deleted file mode 100755 index 6a0cc545..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_complex.i +++ /dev/null @@ -1,95 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/std_deque.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/std_except.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_except.i deleted file mode 100755 index c983bd0f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_except.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/std_list.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_list.i deleted file mode 100755 index cf6f2023..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_list.i +++ /dev/null @@ -1,519 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/std_map.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_map.i deleted file mode 100755 index 7a118569..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_map.i +++ /dev/null @@ -1,312 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/std_pair.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/std_set.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_set.i deleted file mode 100755 index 01215226..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_set.i +++ /dev/null @@ -1,311 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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($typemap(cstype, T) 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 object 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 ($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 = 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/linux/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/std_string.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_string.i deleted file mode 100755 index c8920c09..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_string.i +++ /dev/null @@ -1,111 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 "const 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 = $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 & "const 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 = $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/linux/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i deleted file mode 100755 index 0a4caafb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i +++ /dev/null @@ -1,38 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap (ctype) std::unique_ptr< TYPE > "void *" -%typemap (imtype, out="System.IntPtr") std::unique_ptr< TYPE > "global::System.Runtime.InteropServices.HandleRef" -%typemap (cstype) std::unique_ptr< TYPE > "$typemap(cstype, TYPE)" - -%typemap(in) std::unique_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(csin) std::unique_ptr< TYPE > "$typemap(cstype, TYPE).swigRelease($csinput)" - -%typemap (out) std::unique_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(csout, excode=SWIGEXCODE) std::unique_ptr< TYPE > { - System.IntPtr cPtr = $imcall; - $typemap(cstype, TYPE) ret = (cPtr == System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode - return ret; - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::unique_ptr< TYPE > "" - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/std_vector.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_vector.i deleted file mode 100755 index a2add584..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_vector.i +++ /dev/null @@ -1,418 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 < 0 || ($typemap(cstype, size_t))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/linux/bin/swig/share/swig/4.1.0/csharp/std_wstring.i b/linux/bin/swig/share/swig/4.1.0/csharp/std_wstring.i deleted file mode 100755 index 1d10ca80..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/std_wstring.i +++ /dev/null @@ -1,146 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_wstring.i - * - * Typemaps for std::wstring and const std::wstring& - * std::wstring is mapped to a C# Unicode string (UTF16) and is passed around by value. - * std::wstring support includes wchar_t as a 2 byte type (Windows) and a 4 byte type - * (most Unix systems). - * - * 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 -%} - -%fragment("Swig_csharp_UTF16ToWString", "header") %{ -/* For converting from .NET UTF16 (2 byte unicode) strings. wchar_t is 2 bytes on Windows, 4 bytes on Linux. */ -static std::wstring Swig_csharp_UTF16ToWString(const unsigned short *str) { - if (sizeof(wchar_t) == 2) { - return std::wstring((wchar_t *)str); - } else { - const unsigned short *pBegin(str); - const unsigned short *ptr(pBegin); - - while (*ptr != 0) - ++ptr; - - std::wstring result; - result.reserve(ptr - pBegin); - while(pBegin != ptr) - result.push_back(*pBegin++); - - return result; - } -} -%} - -namespace std { - -%naturalvar wstring; - -class wstring; - -// wstring -%typemap(ctype, out="void *") wstring "unsigned short *" -%typemap(imtype, - inattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - outattributes="[return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directorinattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directoroutattributes="[return: 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, fragment="Swig_csharp_UTF16ToWString") wstring -%{ if (!$input) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); - return $null; - } - $1 = Swig_csharp_UTF16ToWString($input); %} -%typemap(out) wstring %{ $result = SWIG_csharp_wstring_with_length_callback($1.c_str(), (int)$1.size()); %} - -%typemap(directorout, canthrow=1) wstring -%{ if (!$input) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); - return $null; - } - $result = Swig_csharp_UTF16ToWString($input); %} - -%typemap(directorin) wstring %{ $input = SWIG_csharp_wstring_with_length_callback($1.c_str(), (int)$1.size()); %} - -%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 -%{ SWIG_csharp_ApplicationException_callback($1.c_str(), (int)$1.size()); - return $null; %} - -// const wstring & -%typemap(ctype, out="void *") const wstring & "unsigned short *" -%typemap(imtype, - inattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - outattributes="[return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directorinattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directoroutattributes="[return: 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, fragment="Swig_csharp_UTF16ToWString") const wstring & -%{ if (!$input) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); - return $null; - } - std::wstring $1_str(Swig_csharp_UTF16ToWString($input)); - $1 = &$1_str; %} -%typemap(out) const wstring & %{ $result = SWIG_csharp_wstring_with_length_callback($1->c_str(), (int)$1->size()); %} - -%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 = Swig_csharp_UTF16ToWString($input); - $result = &$1_str; %} - -%typemap(directorin) const wstring & %{ $input = SWIG_csharp_wstring_with_length_callback($1.c_str(), (int)$1.size()); %} - -%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 & -%{ SWIG_csharp_ApplicationException_callback($1.c_str(), (int)$1.size()); - return $null; %} - -} - diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/stl.i b/linux/bin/swig/share/swig/4.1.0/csharp/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/swiginterface.i b/linux/bin/swig/share/swig/4.1.0/csharp/swiginterface.i deleted file mode 100755 index e5bfd23a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/swiginterface.i +++ /dev/null @@ -1,63 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/swigmove.i b/linux/bin/swig/share/swig/4.1.0/csharp/swigmove.i deleted file mode 100755 index 2f21bd6f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/swigmove.i +++ /dev/null @@ -1,16 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, canthrow=1, fragment="") SWIGTYPE MOVE ($&1_type argp) -%{ argp = ($&1_ltype)$input; - if (!argp) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null $1_type", 0); - return $null; - } - SwigValueWrapper< $1_ltype >::reset($1, argp); %} - -%typemap(csin) SWIGTYPE MOVE "$&csclassname.swigRelease($csinput)" diff --git a/linux/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i b/linux/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i deleted file mode 100755 index e7312e8f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i +++ /dev/null @@ -1,34 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/typemaps.i b/linux/bin/swig/share/swig/4.1.0/csharp/typemaps.i deleted file mode 100755 index b6f9bddb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/typemaps.i +++ /dev/null @@ -1,253 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/csharp/wchar.i b/linux/bin/swig/share/swig/4.1.0/csharp/wchar.i deleted file mode 100755 index f1e0d5a2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/csharp/wchar.i +++ /dev/null @@ -1,335 +0,0 @@ -/* ----------------------------------------------------------------------------- - * wchar.i - * - * Typemaps for the wchar_t type - * wchar_t * is mapped to a C# Unicode string (UTF16) and is passed around by value. - * wchar_t * support includes wchar_t as a 2 byte type (Windows) and a 4 byte type - * (most Unix systems). - * - * 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_ - -%fragment(""); // TODO: %fragment("") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) (new wchar_t[wcslen((const wchar_t *)$input)+1]); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,fragment="") wchar_t * { - delete [] $1; - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) (new wchar_t[wcslen((const wchar_t *)$input)+1]); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,warning=SWIGWARN_TYPEMAP_WCHARLEAK_MSG,fragment="") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) (new wchar_t[wcslen((const wchar_t *)$input)+1]); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -#else -%typemap(memberin,fragment="") wchar_t * { - free($1); - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(memberin,warning=SWIGWARN_TYPEMAP_WCHARLEAK_MSG,fragment="") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,fragment="") wchar_t * { - free($1); - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,warning=SWIGWARN_TYPEMAP_WCHARLEAK_MSG,fragment="") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} - -#endif diff --git a/linux/bin/swig/share/swig/4.1.0/cstring.i b/linux/bin/swig/share/swig/4.1.0/cstring.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/cwstring.i b/linux/bin/swig/share/swig/4.1.0/cwstring.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i deleted file mode 100755 index 6d85c5ae..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i +++ /dev/null @@ -1,293 +0,0 @@ -%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)); %} - -%typemap(directorin) CONST TYPE -%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (new $1_ltype(SWIG_STD_MOVE($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) : 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/linux/bin/swig/share/swig/4.1.0/d/carrays.i b/linux/bin/swig/share/swig/4.1.0/d/carrays.i deleted file mode 100755 index f2803ea4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/carrays.i +++ /dev/null @@ -1,111 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/cpointer.i b/linux/bin/swig/share/swig/4.1.0/d/cpointer.i deleted file mode 100755 index da3084b7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/cpointer.i +++ /dev/null @@ -1,171 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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() { - delete self; -} -#else -NAME() { - return (TYPE *) calloc(1,sizeof(TYPE)); -} -~NAME() { - 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 -%{ delete self; %} -#else -%{ 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/linux/bin/swig/share/swig/4.1.0/d/d.swg b/linux/bin/swig/share/swig/4.1.0/d/d.swg deleted file mode 100755 index f5bb4596..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/d.swg +++ /dev/null @@ -1,46 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/dclassgen.swg b/linux/bin/swig/share/swig/4.1.0/d/dclassgen.swg deleted file mode 100755 index e4ff8d5f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/dclassgen.swg +++ /dev/null @@ -1,172 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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; -} - -public static void* swigRelease(typeof(this) obj) { - if (obj !is null) { - if (!obj.swigCMemOwn) - throw new Exception("Cannot release ownership as memory is not owned"); - void* ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.dispose(); - return ptr; - } else { - return null; - } -} - -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; -} - -public static void* swigRelease(typeof(this) obj) { - if (obj !is null) { - if (!obj.swigCMemOwn) - throw new Exception("Cannot release ownership as memory is not owned"); - void* ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.dispose(); - return ptr; - } else { - return null; - } -} - -mixin $imdmodule.SwigOperatorDefinitions; -%} - - -/* - * Type wrapper classes. - */ - -%typemap(dbody) SWIGTYPE *, 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; -} - -public static void* swigRelease(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/linux/bin/swig/share/swig/4.1.0/d/ddirectives.swg b/linux/bin/swig/share/swig/4.1.0/d/ddirectives.swg deleted file mode 100755 index 145cf01f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/ddirectives.swg +++ /dev/null @@ -1,11 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/denums.swg b/linux/bin/swig/share/swig/4.1.0/d/denums.swg deleted file mode 100755 index 3f812466..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/denums.swg +++ /dev/null @@ -1,60 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/dexception.swg b/linux/bin/swig/share/swig/4.1.0/d/dexception.swg deleted file mode 100755 index 1aadbaad..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/dexception.swg +++ /dev/null @@ -1,30 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/dhead.swg b/linux/bin/swig/share/swig/4.1.0/d/dhead.swg deleted file mode 100755 index 1ef1e416..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/dhead.swg +++ /dev/null @@ -1,298 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) do { if (!(expr)) {SWIG_DSetPendingException(SWIG_DException, msg); return nullreturn; } } while (0) -%} - - -/* - * 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/linux/bin/swig/share/swig/4.1.0/d/director.swg b/linux/bin/swig/share/swig/4.1.0/d/director.swg deleted file mode 100755 index 02da0e0a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/director.swg +++ /dev/null @@ -1,49 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/dkw.swg b/linux/bin/swig/share/swig/4.1.0/d/dkw.swg deleted file mode 100755 index 2a189ed6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/dkw.swg +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef D_DKW_SWG_ -#define D_DKW_SWG_ - -/* Warnings for D keywords */ -#define DKEYWORD(x) %keywordwarn("'" `x` "' is a D keyword",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/linux/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg b/linux/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg deleted file mode 100755 index a07d0a5d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg +++ /dev/null @@ -1,94 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/doperators.swg b/linux/bin/swig/share/swig/4.1.0/d/doperators.swg deleted file mode 100755 index 0a82a6cb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/doperators.swg +++ /dev/null @@ -1,259 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 overridable 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 overridable 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 overridable 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/linux/bin/swig/share/swig/4.1.0/d/dprimitives.swg b/linux/bin/swig/share/swig/4.1.0/d/dprimitives.swg deleted file mode 100755 index eaee816d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/dprimitives.swg +++ /dev/null @@ -1,171 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/dstrings.swg b/linux/bin/swig/share/swig/4.1.0/d/dstrings.swg deleted file mode 100755 index 02895c15..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/dstrings.swg +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/dswigtype.swg b/linux/bin/swig/share/swig/4.1.0/d/dswigtype.swg deleted file mode 100755 index c227519e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/dswigtype.swg +++ /dev/null @@ -1,241 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 && "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 [], - 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($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(SWIG_STD_MOVE($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 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; -} - - -/* - * Rvalue reference conversion typemaps. - */ - -%typemap(in, canthrow=1, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ $1 = ($1_ltype)$input; - if (!$1) { - SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "$1_type is null"); - return $null; - } - rvrdeleter.reset($1); %} -%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.swigRelease($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]) } -%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/linux/bin/swig/share/swig/4.1.0/d/dvoid.swg b/linux/bin/swig/share/swig/4.1.0/d/dvoid.swg deleted file mode 100755 index 805f1e71..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/dvoid.swg +++ /dev/null @@ -1,18 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i deleted file mode 100755 index 500b6115..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap (ctype) std::auto_ptr< TYPE > "void *" -%typemap (imtype) std::auto_ptr< TYPE > "void*" -%typemap (dtype) std::auto_ptr< TYPE > "$typemap(dtype, TYPE)" - -%typemap(in) std::auto_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(din, - nativepointer="cast(void*)$dinput" -) std::auto_ptr< TYPE > "$typemap(dtype, TYPE).swigRelease($dinput)" - -%typemap (out) std::auto_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(dout, excode=SWIGEXCODE, - nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}" -) std::auto_ptr< TYPE > { - void* cPtr = $imcall; - $typemap(dtype, TYPE) ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode - return ret; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::auto_ptr< TYPE > "" - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/d/std_common.i b/linux/bin/swig/share/swig/4.1.0/d/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/linux/bin/swig/share/swig/4.1.0/d/std_deque.i b/linux/bin/swig/share/swig/4.1.0/d/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/d/std_except.i b/linux/bin/swig/share/swig/4.1.0/d/std_except.i deleted file mode 100755 index fbfd6c33..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_except.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/std_map.i b/linux/bin/swig/share/swig/4.1.0/d/std_map.i deleted file mode 100755 index c5e03d06..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_map.i +++ /dev/null @@ -1,62 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/std_pair.i b/linux/bin/swig/share/swig/4.1.0/d/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/linux/bin/swig/share/swig/4.1.0/d/std_string.i b/linux/bin/swig/share/swig/4.1.0/d/std_string.i deleted file mode 100755 index 8d75d23e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_string.i +++ /dev/null @@ -1,98 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i deleted file mode 100755 index 9317a7e0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap (ctype) std::unique_ptr< TYPE > "void *" -%typemap (imtype) std::unique_ptr< TYPE > "void*" -%typemap (dtype) std::unique_ptr< TYPE > "$typemap(dtype, TYPE)" - -%typemap(in) std::unique_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(din, - nativepointer="cast(void*)$dinput" -) std::unique_ptr< TYPE > "$typemap(dtype, TYPE).swigRelease($dinput)" - -%typemap (out) std::unique_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(dout, excode=SWIGEXCODE, - nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}" -) std::unique_ptr< TYPE > { - void* cPtr = $imcall; - $typemap(dtype, TYPE) ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode - return ret; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::unique_ptr< TYPE > "" - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/d/std_vector.i b/linux/bin/swig/share/swig/4.1.0/d/std_vector.i deleted file mode 100755 index fb8f7d2e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/std_vector.i +++ /dev/null @@ -1,605 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/stl.i b/linux/bin/swig/share/swig/4.1.0/d/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/d/swigmove.i b/linux/bin/swig/share/swig/4.1.0/d/swigmove.i deleted file mode 100755 index e2eb8340..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/swigmove.i +++ /dev/null @@ -1,16 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, canthrow=1) SWIGTYPE MOVE ($&1_type argp) -%{ argp = ($&1_ltype)$input; - if (!argp) { - SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Attempt to dereference null $1_type"); - return $null; - } - SwigValueWrapper< $1_ltype >::reset($1, argp); %} - -%typemap(din) SWIGTYPE MOVE "$dclassname.swigRelease($dinput)" diff --git a/linux/bin/swig/share/swig/4.1.0/d/typemaps.i b/linux/bin/swig/share/swig/4.1.0/d/typemaps.i deleted file mode 100755 index 4f1b5997..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/typemaps.i +++ /dev/null @@ -1,261 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/d/wrapperloader.swg b/linux/bin/swig/share/swig/4.1.0/d/wrapperloader.swg deleted file mode 100755 index 67e03bfc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/d/wrapperloader.swg +++ /dev/null @@ -1,309 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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; - } else { - static import std.c.string; - } - static import std.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 core.sys.posix.dlfcn; - } 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/linux/bin/swig/share/swig/4.1.0/director_common.swg b/linux/bin/swig/share/swig/4.1.0/director_common.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/exception.i b/linux/bin/swig/share/swig/4.1.0/exception.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/go/cdata.i b/linux/bin/swig/share/swig/4.1.0/go/cdata.i deleted file mode 100755 index b4411af9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/cdata.i +++ /dev/null @@ -1,97 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/go/director.swg b/linux/bin/swig/share/swig/4.1.0/go/director.swg deleted file mode 100755 index 103ba22a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/director.swg +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/go/exception.i b/linux/bin/swig/share/swig/4.1.0/go/exception.i deleted file mode 100755 index 5abd306a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/exception.i +++ /dev/null @@ -1,7 +0,0 @@ -%typemap(throws,noblock=1) (...) { - SWIG_exception(SWIG_RuntimeError,"unknown exception"); -} - -%insert("runtime") %{ -#define SWIG_exception(code, msg) _swig_gopanic(msg) -%} diff --git a/linux/bin/swig/share/swig/4.1.0/go/go.swg b/linux/bin/swig/share/swig/4.1.0/go/go.swg deleted file mode 100755 index 348ae5f0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/go.swg +++ /dev/null @@ -1,744 +0,0 @@ -/* ------------------------------------------------------------ - * 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, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) -%{ $1 = *($&1_ltype)&$input; -rvrdeleter.reset($1); %} - -%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[ANY], char[] -%{ free($1); %} - -%typemap(freearg) char *& -%{ free(temp$argnum); %} - -%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; -%} - -/* The int & type needs to convert to intgo. */ - -%typemap(gotype) int & "*int" - -%typemap(in) int & (int e) -%{ - e = (int)*$input; - $1 = &e; -%} - -%typemap(out) int & -%{ $result = new intgo(*$1); %} - -%typemap(argout) int & -%{ *$input = (intgo)e$argnum; %} - -%typemap(goout) int & "" - -%typemap(directorin) int & (intgo e) -%{ - e = (intgo)$1; - $input = &e; -%} - -%typemap(godirectorin) int & "" - -%typemap(directorout) int & -%{ - $*1_ltype f = ($*1_ltype)*$input; - $result = ($1_ltype)&f; -%} - -%typemap(directorargout) int & -%{ $1 = (int)*$input; %} - -%typemap(argout) const int & "" -%typemap(directorargout) const int & "" - -/* 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 & -%{ $result = $input; %} - -/* 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(SWIG_STD_MOVE($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/linux/bin/swig/share/swig/4.1.0/go/gokw.swg b/linux/bin/swig/share/swig/4.1.0/go/gokw.swg deleted file mode 100755 index 35428300..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/gokw.swg +++ /dev/null @@ -1,33 +0,0 @@ -/* Rename keywords. */ - -#define GOKW(x) %keywordwarn("'" `x` "' is a Go keyword",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/linux/bin/swig/share/swig/4.1.0/go/goruntime.swg b/linux/bin/swig/share/swig/4.1.0/go/goruntime.swg deleted file mode 100755 index 7bf083bd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/goruntime.swg +++ /dev/null @@ -1,217 +0,0 @@ -/* ------------------------------------------------------------ - * 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 - -%} - -%insert(cgo_comment_typedefs) %{ -#include -#include -%} - -#if SWIGGO_INTGO_SIZE == 32 -%insert(runtime) %{ -typedef int intgo; -typedef unsigned int uintgo; -%} -%insert(cgo_comment_typedefs) %{ -typedef int intgo; -typedef unsigned int uintgo; -%} -#elif SWIGGO_INTGO_SIZE == 64 -%insert(runtime) %{ -typedef long long intgo; -typedef unsigned long long uintgo; -%} -%insert(cgo_comment_typedefs) %{ -typedef long long intgo; -typedef unsigned long long uintgo; -%} -#else -%insert(runtime) %{ -typedef ptrdiff_t intgo; -typedef size_t uintgo; -%} -%insert(cgo_comment_typedefs) %{ -typedef ptrdiff_t intgo; -typedef size_t uintgo; -%} -#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_; - -%} - -%insert(cgo_comment_typedefs) %{ - -typedef struct { char *p; intgo n; } _gostring_; -typedef struct { void* array; intgo len; intgo cap; } _goslice_; - -%} - -#ifdef SWIGGO_GCCGO - -/* 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 -%} - -#endif - -#ifndef SWIGGO_GCCGO - -%go_import("unsafe", _ "runtime/cgo") - -#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 -%} - -/* Convert a Go interface value into a C++ pointer. */ - -%insert(go_header) %{ -func getSwigcptr(v interface { Swigcptr() uintptr }) uintptr { - if v == nil { - return 0 - } - return v.Swigcptr() -} -%} - -/* 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/linux/bin/swig/share/swig/4.1.0/go/gostring.swg b/linux/bin/swig/share/swig/4.1.0/go/gostring.swg deleted file mode 100755 index 44cbbb8e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/gostring.swg +++ /dev/null @@ -1,29 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/go/std_array.i b/linux/bin/swig/share/swig/4.1.0/go/std_array.i deleted file mode 100755 index 36c790e3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/std_array.i +++ /dev/null @@ -1,43 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; diff --git a/linux/bin/swig/share/swig/4.1.0/go/std_deque.i b/linux/bin/swig/share/swig/4.1.0/go/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/go/std_except.i b/linux/bin/swig/share/swig/4.1.0/go/std_except.i deleted file mode 100755 index 4f021a12..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/std_except.i +++ /dev/null @@ -1,31 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/go/std_list.i b/linux/bin/swig/share/swig/4.1.0/go/std_list.i deleted file mode 100755 index ff6f7001..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/std_list.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/go/std_map.i b/linux/bin/swig/share/swig/4.1.0/go/std_map.i deleted file mode 100755 index 773b6d0c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/std_map.i +++ /dev/null @@ -1,66 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/go/std_pair.i b/linux/bin/swig/share/swig/4.1.0/go/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/go/std_string.i b/linux/bin/swig/share/swig/4.1.0/go/std_string.i deleted file mode 100755 index 35b4a5e4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/std_string.i +++ /dev/null @@ -1,162 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(throws) string -%{ _swig_gopanic($1.c_str()); %} - -%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) %} - -%typemap(throws) const string & -%{ _swig_gopanic($1.c_str()); %} - - -%typemap(gotype) string * "*string" - -%typemap(in) string * (string temp) -%{ - if ($input) { - temp.assign($input->p, $input->n); - $1 = &temp; - } else - $1 = 0; -%} - -%typemap(godirectorout) string * -%{ - if $input != nil { - p := Swig_malloc(len(*$input)) - s := (*[1<<30]byte)(unsafe.Pointer(p))[:len(*$input)] - copy(s, *$input) - $result = (*string)(unsafe.Pointer(&s)) - } else { - $result = nil - } -%} - -%typemap(directorout) string * (string temp) -%{ - temp.assign($input->p, $input->n); - $result = &temp; - free($input.p); -%} - -%typemap(out,fragment="AllocateString") string * (_gostring_ temp) -%{ - temp = Swig_AllocateString($1->data(), $1->length()); - $result = &temp; -%} - -%typemap(goout,fragment="CopyString") string * -%{ *$result = swigCopyString(*$1) %} - -%typemap(directorin,fragment="AllocateString") string * (_gostring_ temp) -%{ - if ($1) { - temp = Swig_AllocateString($1->data(), $1->length()); - $input = &temp; - } else - $input = 0; -%} - -%typemap(godirectorin,fragment="CopyString") string * -%{ *$result = swigCopyString(*$input); %} - -%typemap(argout,fragment="AllocateString") string * -%{ - if ($1) - *$input = Swig_AllocateString($1->data(), $1->length()); -%} - -%typemap(goargout,fragment="CopyString") string * -%{ - if $input != nil { - *$1 = swigCopyString(*$input) - } -%} - -} diff --git a/linux/bin/swig/share/swig/4.1.0/go/std_vector.i b/linux/bin/swig/share/swig/4.1.0/go/std_vector.i deleted file mode 100755 index 679c7075..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/std_vector.i +++ /dev/null @@ -1,92 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/go/swigmove.i b/linux/bin/swig/share/swig/4.1.0/go/swigmove.i deleted file mode 100755 index e1984b6e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/swigmove.i +++ /dev/null @@ -1,15 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in) SWIGTYPE MOVE ($&1_type argp) -%{ - argp = ($&1_ltype)$input; - if (argp == NULL) { - _swig_gopanic("Attempt to dereference null $1_type"); - } - SwigValueWrapper< $1_ltype >::reset($1, argp); -%} diff --git a/linux/bin/swig/share/swig/4.1.0/go/typemaps.i b/linux/bin/swig/share/swig/4.1.0/go/typemaps.i deleted file mode 100755 index d2e60d37..00000000 --- a/linux/bin/swig/share/swig/4.1.0/go/typemaps.i +++ /dev/null @@ -1,298 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/Makefile b/linux/bin/swig/share/swig/4.1.0/guile/Makefile deleted file mode 100755 index fba7fd5d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/Makefile +++ /dev/null @@ -1,3 +0,0 @@ - -co: - co RCS/*.i* RCS/*.swg* diff --git a/linux/bin/swig/share/swig/4.1.0/guile/common.scm b/linux/bin/swig/share/swig/4.1.0/guile/common.scm deleted file mode 100755 index 17c9ab58..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/common.scm +++ /dev/null @@ -1,70 +0,0 @@ -;;;************************************************************************ -;;;*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/linux/bin/swig/share/swig/4.1.0/guile/cplusplus.i b/linux/bin/swig/share/swig/4.1.0/guile/cplusplus.i deleted file mode 100755 index d5d65efa..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/cplusplus.i +++ /dev/null @@ -1,22 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/extra-install.list b/linux/bin/swig/share/swig/4.1.0/guile/extra-install.list deleted file mode 100755 index 05d2c0c4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/extra-install.list +++ /dev/null @@ -1,2 +0,0 @@ -# see top-level Makefile.in -common.scm diff --git a/linux/bin/swig/share/swig/4.1.0/guile/guile.i b/linux/bin/swig/share/swig/4.1.0/guile/guile.i deleted file mode 100755 index ef270d74..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/guile.i +++ /dev/null @@ -1,33 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/guile_scm.swg b/linux/bin/swig/share/swig/4.1.0/guile/guile_scm.swg deleted file mode 100755 index 16dc8aa9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/guile_scm.swg +++ /dev/null @@ -1,46 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg b/linux/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg deleted file mode 100755 index 689a1060..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg +++ /dev/null @@ -1,532 +0,0 @@ -/* ----------------------------------------------------------------------------- - * guile_scm_run.swg - * ----------------------------------------------------------------------------- */ - -#if __GNUC__ >= 10 -#if defined(__cplusplus) -#pragma GCC diagnostic ignored "-Wvolatile" /* For 'volatile SCM *' in at least Guile 3.0 and earlier */ -#endif -#endif - -#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) \ - do { \ - if (!(expr)) \ - scm_error(scm_from_locale_symbol("swig-contract-assertion-failed"), \ - (char *) FUNC_NAME, (char *) msg, \ - SCM_EOL, SCM_BOOL_F); \ - } while (0) - -/* 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 void SWIG_Guile_MarkPointerNoncollectable(SCM s); - -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_is_null(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_is_null(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_is_null(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); - int ret = SWIG_ERROR; - - if (scm_is_null(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 ((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) { - if ((SCM_CELL_TYPE(smob) == swig_collectable_tag && SCM_CELL_WORD_1(smob) == 0) || SCM_CELL_TYPE(smob) == swig_tag) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - } - - 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 */ - ret = SWIG_OK; - } else { - return SWIG_ERROR; - } - } else { - *result = (void *) SCM_CELL_WORD_1(smob); - ret = SWIG_OK; - } - - if (flags & SWIG_POINTER_DISOWN) { - SWIG_Guile_MarkPointerNoncollectable(smob); - } - if (flags & SWIG_POINTER_CLEAR) { - SCM_SET_CELL_WORD_1(smob, 0); - } - } - return ret; -} - -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_is_null(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_is_null(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/linux/bin/swig/share/swig/4.1.0/guile/interpreter.i b/linux/bin/swig/share/swig/4.1.0/guile/interpreter.i deleted file mode 100755 index 524e0694..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/interpreter.i +++ /dev/null @@ -1,59 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/list-vector.i b/linux/bin/swig/share/swig/4.1.0/guile/list-vector.i deleted file mode 100755 index 82405259..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/list-vector.i +++ /dev/null @@ -1,488 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) - {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) - { - 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++) { - 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++) - 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 - {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 - { - 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++) - 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++) - free((*$1)[i]); - free(*$1); - } -} diff --git a/linux/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i b/linux/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i deleted file mode 100755 index d8a631ca..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i +++ /dev/null @@ -1,102 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/ports.i b/linux/bin/swig/share/swig/4.1.0/guile/ports.i deleted file mode 100755 index 7691d3e3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/ports.i +++ /dev/null @@ -1,50 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i deleted file mode 100755 index 59d5c0ed..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scm_misc_error(FUNC_NAME, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'", SCM_EOL); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/guile/std_common.i b/linux/bin/swig/share/swig/4.1.0/guile/std_common.i deleted file mode 100755 index 97974497..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/std_common.i +++ /dev/null @@ -1,25 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - SWIG_free(temp); - return s; -} -%} diff --git a/linux/bin/swig/share/swig/4.1.0/guile/std_deque.i b/linux/bin/swig/share/swig/4.1.0/guile/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/guile/std_except.i b/linux/bin/swig/share/swig/4.1.0/guile/std_except.i deleted file mode 100755 index 6c30a319..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/std_except.i +++ /dev/null @@ -1,13 +0,0 @@ -// 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/linux/bin/swig/share/swig/4.1.0/guile/std_map.i b/linux/bin/swig/share/swig/4.1.0/guile/std_map.i deleted file mode 100755 index f84e78bc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/std_map.i +++ /dev/null @@ -1,1370 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/std_pair.i b/linux/bin/swig/share/swig/4.1.0/guile/std_pair.i deleted file mode 100755 index 050d4880..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/std_pair.i +++ /dev/null @@ -1,867 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/std_string.i b/linux/bin/swig/share/swig/4.1.0/guile/std_string.i deleted file mode 100755 index c49bfcb0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/std_string.i +++ /dev/null @@ -1,95 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - 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); - 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); - 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); - SWIG_free(tempptr); - } else { - SWIG_exception(SWIG_TypeError, "string expected"); - } - } - - %typemap(varout) string { - $result = SWIG_str02scm($1.c_str()); - } - - %typemap(throws) string { - scm_throw(scm_from_locale_symbol((char *) "swig-exception"), - scm_list_n(SWIG_str02scm($1.c_str()), SCM_UNDEFINED)); - } - - %typemap(throws) const string & { - scm_throw(scm_from_locale_symbol((char *) "swig-exception"), - scm_list_n(SWIG_str02scm($1.c_str()), SCM_UNDEFINED)); - } -} diff --git a/linux/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i deleted file mode 100755 index 6f907e90..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scm_misc_error(FUNC_NAME, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'", SCM_EOL); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/guile/std_vector.i b/linux/bin/swig/share/swig/4.1.0/guile/std_vector.i deleted file mode 100755 index 42bad849..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/std_vector.i +++ /dev/null @@ -1,424 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/guile/swigmove.i b/linux/bin/swig/share/swig/4.1.0/guile/swigmove.i deleted file mode 100755 index 87ab91ea..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/swigmove.i +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "$1_type", $symname, $argnum); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/linux/bin/swig/share/swig/4.1.0/guile/swigrun.i b/linux/bin/swig/share/swig/4.1.0/guile/swigrun.i deleted file mode 100755 index e4573eb3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/swigrun.i +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- mode: c -*- */ - -%module swigrun - -#ifdef SWIGGUILE_SCM - -%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/linux/bin/swig/share/swig/4.1.0/guile/typemaps.i b/linux/bin/swig/share/swig/4.1.0/guile/typemaps.i deleted file mode 100755 index 45a2208f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/guile/typemaps.i +++ /dev/null @@ -1,501 +0,0 @@ -/* ----------------------------------------------------------------------------- - * typemaps.i - * - * Guile-specific typemaps - * ----------------------------------------------------------------------------- */ - -/* These are defined with a view to eventually merging with those defined for other target languages in swigtypemaps.swg and exception.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) -#define %argument_nullref(_type, _name, _argn) scm_misc_error(FUNC_NAME, "invalid null reference for argument " #_argn " of type '" _type "'", SCM_EOL) -#define %releasenotowned_fail(_code, _type, _name, _argn) scm_misc_error(FUNC_NAME, "cannot release ownership as memory is not owned for argument " #_argn " of type '" _type "'", SCM_EOL) - -/* Pointers */ - -%typemap(in) SWIGTYPE *, SWIGTYPE [] { - $1 = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, $argnum, 0); -} -%typemap(in) SWIGTYPE & ($1_ltype argp) { - argp = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, $argnum, 0); - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - $1 = argp; -} -%typemap(in, noblock=1, fragment="") SWIGTYPE && (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) { - res = SWIG_ConvertPtr($input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "$1_type", $symname, $argnum); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -} -%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); - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - $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); - $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 = ($&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) SWIG_free($1);" -%typemap (freearg) char **INPUT, char **BOTH "if (must_free$argnum) 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 * { - 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 - * ------------------------------------------------------------ */ - -%typemap(in) SWIGTYPE (CLASS::*) { - int res = SWIG_ConvertMember($input, %as_voidptr(&$1), sizeof($1), $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($1), $descriptor)); -} - -%typemap(varin) SWIGTYPE (CLASS::*) { - int res = SWIG_ConvertMember($input,%as_voidptr(&$1), sizeof($1), $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($1), $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_is_bool($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/linux/bin/swig/share/swig/4.1.0/intrusive_ptr.i b/linux/bin/swig/share/swig/4.1.0/intrusive_ptr.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/inttypes.i b/linux/bin/swig/share/swig/4.1.0/inttypes.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/java/arrays_java.i b/linux/bin/swig/share/swig/4.1.0/java/arrays_java.i deleted file mode 100755 index a57da64b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/arrays_java.i +++ /dev/null @@ -1,392 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - 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)); %} - -// 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/linux/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i deleted file mode 100755 index ce00162d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i +++ /dev/null @@ -1,337 +0,0 @@ -// 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)); %} - -%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(SWIG_STD_MOVE($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/linux/bin/swig/share/swig/4.1.0/java/director.swg b/linux/bin/swig/share/swig/4.1.0/java/director.swg deleted file mode 100755 index 53651355..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/director.swg +++ /dev/null @@ -1,541 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) -#include -#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; - } - } - } - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) - static void detach(void *jvm) { - static_cast(jvm)->DetachCurrentThread(); - } - - static void make_detach_key() { - pthread_key_create(&detach_key_, detach); - } - - /* thread-local key to register a destructor */ - static pthread_key_t detach_key_; -#endif - - private: - /* pointer to Java object */ - jobject jthis_; - /* Local or global reference flag */ - bool weak_global_; - }; - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) - pthread_key_t JObjectWrapper::detach_key_; -#endif - - /* 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 - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) - // At least on Android 6, detaching after every call causes a memory leak. - // Instead, register a thread desructor and detach only when the thread ends. - // See https://developer.android.com/training/articles/perf-jni#threads - static pthread_once_t once = PTHREAD_ONCE_INIT; - - pthread_once(&once, JObjectWrapper::make_detach_key); - pthread_setspecific(JObjectWrapper::detach_key_, director->swig_jvm_); -#endif - } - ~JNIEnvWrapper() { -#if !defined(SWIG_JAVA_DETACH_ON_THREAD_END) && !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_; - } - }; - - struct SwigDirectorMethod { - const char *name; - const char *desc; - jmethodID methid; - SwigDirectorMethod(JNIEnv *jenv, jclass baseclass, const char *name, const char *desc) : name(name), desc(desc) { - methid = jenv->GetMethodID(baseclass, name, desc); - } - }; - - /* 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); - } - } - } - - jclass swig_new_global_ref(JNIEnv *jenv, const char *classname) { - jclass clz = jenv->FindClass(classname); - return clz ? (jclass)jenv->NewGlobalRef(clz) : 0; - } - - 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/linux/bin/swig/share/swig/4.1.0/java/enums.swg b/linux/bin/swig/share/swig/4.1.0/java/enums.swg deleted file mode 100755 index 81fe5787..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/enums.swg +++ /dev/null @@ -1,116 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/enumsimple.swg b/linux/bin/swig/share/swig/4.1.0/java/enumsimple.swg deleted file mode 100755 index c270149b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/enumsimple.swg +++ /dev/null @@ -1,71 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg b/linux/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg deleted file mode 100755 index c2012f56..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg +++ /dev/null @@ -1,117 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg b/linux/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg deleted file mode 100755 index 31fb8a79..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg +++ /dev/null @@ -1,72 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/java.swg b/linux/bin/swig/share/swig/4.1.0/java/java.swg deleted file mode 100755 index 8719818b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/java.swg +++ /dev/null @@ -1,1458 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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($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(SWIG_STD_MOVE($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 is null"); - return $null; - } %} -%typemap(in, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ $1 = *($&1_ltype)&$input; - if (!$1) { - SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type is null"); - return $null; - } - rvrdeleter.reset($1); %} -%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 [] "$javaclassname.getCPtr($javainput)" -%typemap(javain) SWIGTYPE && "$javaclassname.swigRelease($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::*) "" -%typemap(javainterfacemodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "public interface" - -/* 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; - } - - CPTR_VISIBILITY static long swigRelease($javaclassname obj) { - long ptr = 0; - if (obj != null) { - if (!obj.swigCMemOwn) - throw new RuntimeException("Cannot release ownership as memory is not owned"); - ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.delete(); - } - return ptr; - } -%} - -// 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; - } - - CPTR_VISIBILITY static long swigRelease($javaclassname obj) { - long ptr = 0; - if (obj != null) { - if (!obj.swigCMemOwn) - throw new RuntimeException("Cannot release ownership as memory is not owned"); - ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.delete(); - } - return ptr; - } -%} -%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; - } - - CPTR_VISIBILITY static long swigRelease($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/linux/bin/swig/share/swig/4.1.0/java/javahead.swg b/linux/bin/swig/share/swig/4.1.0/java/javahead.swg deleted file mode 100755 index 758a037d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/javahead.swg +++ /dev/null @@ -1,91 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) %{ -#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_JavaIllegalStateException, -} 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_JavaIllegalStateException, "java/lang/IllegalStateException" }, - { (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) do { if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } } while (0) -%} diff --git a/linux/bin/swig/share/swig/4.1.0/java/javakw.swg b/linux/bin/swig/share/swig/4.1.0/java/javakw.swg deleted file mode 100755 index 8a5b76ee..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/javakw.swg +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef JAVA_JAVAKW_SWG_ -#define JAVA_JAVAKW_SWG_ - -/* Warnings for Java keywords */ -#define JAVAKW(x) %keywordwarn("'" `x` "' is a java keyword",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/linux/bin/swig/share/swig/4.1.0/java/std_array.i b/linux/bin/swig/share/swig/4.1.0/java/std_array.i deleted file mode 100755 index d3436cc6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_array.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 "jlong" -%typemap (jtype) std::auto_ptr< TYPE > "long" -%typemap (jstype) std::auto_ptr< TYPE > "$typemap(jstype, TYPE)" - -%typemap(in) std::auto_ptr< TYPE > (TYPE *auto_temp) -%{ auto_temp = *(TYPE **)&$input; - $1.reset(auto_temp); %} - -%typemap(javain) std::auto_ptr< TYPE > "$typemap(jstype, TYPE).swigRelease($javainput)" - -%typemap (out) std::auto_ptr< TYPE > %{ - jlong lpp = 0; - *(TYPE **) &lpp = $1.release(); - $result = lpp; -%} - -%typemap(javaout) std::auto_ptr< TYPE > { - long cPtr = $jnicall; - return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::auto_ptr< TYPE > "" - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/java/std_common.i b/linux/bin/swig/share/swig/4.1.0/java/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/linux/bin/swig/share/swig/4.1.0/java/std_deque.i b/linux/bin/swig/share/swig/4.1.0/java/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/java/std_except.i b/linux/bin/swig/share/swig/4.1.0/java/std_except.i deleted file mode 100755 index 91d2f92c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_except.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/std_list.i b/linux/bin/swig/share/swig/4.1.0/java/std_list.i deleted file mode 100755 index 1077bd0a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_list.i +++ /dev/null @@ -1,225 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/std_map.i b/linux/bin/swig/share/swig/4.1.0/java/std_map.i deleted file mode 100755 index 6d5ca1aa..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_map.i +++ /dev/null @@ -1,224 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/std_pair.i b/linux/bin/swig/share/swig/4.1.0/java/std_pair.i deleted file mode 100755 index 75ad3031..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_pair.i +++ /dev/null @@ -1,37 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/std_set.i b/linux/bin/swig/share/swig/4.1.0/java/std_set.i deleted file mode 100755 index 053866bc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_set.i +++ /dev/null @@ -1,207 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 add($typemap(jboxtype, T) key) { - return addImpl(key); - } - - 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); - } - - public void remove() { - throw new java.lang.UnsupportedOperationException(); - } - }.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 addImpl(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/linux/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/linux/bin/swig/share/swig/4.1.0/java/std_string.i b/linux/bin/swig/share/swig/4.1.0/java/std_string.i deleted file mode 100755 index 830a8961..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_string.i +++ /dev/null @@ -1,121 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i deleted file mode 100755 index 838ca495..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) - -%typemap (jni) std::unique_ptr< TYPE > "jlong" -%typemap (jtype) std::unique_ptr< TYPE > "long" -%typemap (jstype) std::unique_ptr< TYPE > "$typemap(jstype, TYPE)" - -%typemap(in) std::unique_ptr< TYPE > (TYPE *unique_temp) -%{ unique_temp = *(TYPE **)&$input; - $1.reset(unique_temp); %} - -%typemap(javain) std::unique_ptr< TYPE > "$typemap(jstype, TYPE).swigRelease($javainput)" - -%typemap (out) std::unique_ptr< TYPE > %{ - jlong lpp = 0; - *(TYPE **) &lpp = $1.release(); - $result = lpp; -%} - -%typemap(javaout) std::unique_ptr< TYPE > { - long cPtr = $jnicall; - return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::unique_ptr< TYPE > "" - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/java/std_unordered_map.i b/linux/bin/swig/share/swig/4.1.0/java/std_unordered_map.i deleted file mode 100755 index 283a9b46..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_unordered_map.i +++ /dev/null @@ -1,211 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/java/std_unordered_set.i b/linux/bin/swig/share/swig/4.1.0/java/std_unordered_set.i deleted file mode 100755 index ddcedf05..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_unordered_set.i +++ /dev/null @@ -1,203 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - } - - public void remove() { - throw new java.lang.UnsupportedOperationException(); - } - }.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/linux/bin/swig/share/swig/4.1.0/java/std_vector.i b/linux/bin/swig/share/swig/4.1.0/java/std_vector.i deleted file mode 100755 index 60ee23eb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_vector.i +++ /dev/null @@ -1,185 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(); - reserve(initialElements.length); - - 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/linux/bin/swig/share/swig/4.1.0/java/std_wstring.i b/linux/bin/swig/share/swig/4.1.0/java/std_wstring.i deleted file mode 100755 index efa9e63b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/std_wstring.i +++ /dev/null @@ -1,180 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 = (jsize)$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 = (jsize)$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.size(), '\0'); - for (size_t i = 0; i < $1.size(); ++i) { - message[i] = (char)$1[i]; - } - 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 = (jsize)$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 = (jsize)$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.size(), '\0'); - for (size_t i = 0; i < $1.size(); ++i) { - message[i] = (char)$1[i]; - } - SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, message.c_str()); - return $null; %} - -} - diff --git a/linux/bin/swig/share/swig/4.1.0/java/stl.i b/linux/bin/swig/share/swig/4.1.0/java/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/java/swiginterface.i b/linux/bin/swig/share/swig/4.1.0/java/swiginterface.i deleted file mode 100755 index c3ca97d3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/swiginterface.i +++ /dev/null @@ -1,74 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(SWIG_STD_MOVE($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/linux/bin/swig/share/swig/4.1.0/java/swigmove.i b/linux/bin/swig/share/swig/4.1.0/java/swigmove.i deleted file mode 100755 index 671b988a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/swigmove.i +++ /dev/null @@ -1,16 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in) SWIGTYPE MOVE ($&1_type argp) -%{ argp = *($&1_ltype*)&$input; - if (!argp) { - SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type"); - return $null; - } - SwigValueWrapper< $1_ltype >::reset($1, argp); %} - -%typemap(javain) SWIGTYPE MOVE "$&javaclassname.swigRelease($javainput)" diff --git a/linux/bin/swig/share/swig/4.1.0/java/typemaps.i b/linux/bin/swig/share/swig/4.1.0/java/typemaps.i deleted file mode 100755 index e130c193..00000000 --- a/linux/bin/swig/share/swig/4.1.0/java/typemaps.i +++ /dev/null @@ -1,529 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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; igetPrivateObject()->tryAllowDestroyInGC(); %} \ No newline at end of file diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_common.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_common.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_complex.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_complex.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_deque.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_deque.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_except.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_except.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_map.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_map.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_pair.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_pair.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_string.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_string.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_vector.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/std_vector.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/stl.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/stl.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/typemaps.i b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/typemaps.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i deleted file mode 100755 index 713b7ef2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i +++ /dev/null @@ -1,94 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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)) {} -%fragment("SWIG_JSCOutInt", "header", fragment=SWIG_From_frag(int)) {} -%fragment("SWIG_JSCOutNumber", "header", fragment=SWIG_From_frag(double)) {} - -%define JAVASCRIPT_ARRAYS_IN_DECL(NAME, CTYPE, ANY, ANYLENGTH) - -%typemap(in, fragment=NAME) CTYPE[ANY] { - if (JSValueIsObject(context, $input)) - { - int i; - // Convert into Array - JSObjectRef array = JSValueToObject(context, $input, NULL); - - int length = ANYLENGTH; - - $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); - - // Get each element from array - for (i = 0; i < length; i++) - { - JSValueRef jsvalue = JSObjectGetPropertyAtIndex(context, array, i, NULL); - $*1_ltype temp; - - // Get primitive value from JSObject - int res = SWIG_AsVal(CTYPE)(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) CTYPE[ANY] { - free($1); -} - -%enddef - -%define JAVASCRIPT_ARRAYS_OUT_DECL(NAME, CTYPE) - -%typemap(out, fragment=NAME) CTYPE[ANY] { - int length = $1_dim0; - JSValueRef values[length]; - int i; - - for (i = 0; i < length; i++) - { - values[i] = SWIG_From(CTYPE)($1[i]); - } - - $result = JSObjectMakeArray(context, length, values, NULL); -} - -%enddef - -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, , SWIGJSC_ArrayLength(context, array)) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, ANY, $1_dim0) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, , SWIGJSC_ArrayLength(context, array)) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, ANY, $1_dim0) - -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutInt", int) -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutNumber", double) - diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i deleted file mode 100755 index e58dbf71..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ccomplex.i - * - * C complex typemaps - * ISO C99: 7.3 Complex arithmetic - * ----------------------------------------------------------------------------- */ - - -%include - -%{ -#include -%} - -#define complex _Complex - -/* 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i deleted file mode 100755 index 4c3b3c5e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef __cplusplus -%include -#else -%include -#endif - diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i deleted file mode 100755 index 0246cfde..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg deleted file mode 100755 index 3a83b649..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * javascript.swg - * - * Javascript typemaps - * ----------------------------------------------------------------------------- */ - -%include - -%include - -%include - -%include - -%include - -%include - -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg deleted file mode 100755 index 4050a6ee..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg +++ /dev/null @@ -1,429 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg deleted file mode 100755 index dcc205db..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg +++ /dev/null @@ -1,146 +0,0 @@ -/* - 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.0f); - 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg deleted file mode 100755 index 4778bf03..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg deleted file mode 100755 index 45765433..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg +++ /dev/null @@ -1,69 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg deleted file mode 100755 index b0138b39..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg +++ /dev/null @@ -1,112 +0,0 @@ -%insert(init) %{ -SWIGRUNTIME void -SWIG_JSC_SetModule(JSGlobalContextRef context, swig_module_info *swig_module) { - JSObjectRef globalObject; - JSStringRef moduleName; - JSClassDefinition classDef; - JSClassRef classRef; - JSObjectRef object; - - if(context == 0){ - return; - } - - globalObject = JSContextGetGlobalObject(context); - moduleName = JSStringCreateWithUTF8CString("swig_module_info_data"); - - classDef = kJSClassDefinitionEmpty; - classRef = JSClassCreate(&classDef); - - object = JSObjectMake(context, classRef, NULL); - JSObjectSetPrivate(object, (void*)swig_module); - - JSObjectSetProperty(context, globalObject, moduleName, object, kJSPropertyAttributeNone, NULL); - - JSClassRelease(classRef); - JSStringRelease(moduleName); -} -SWIGRUNTIME swig_module_info * -SWIG_JSC_GetModule(JSGlobalContextRef context) { - JSObjectRef globalObject; - JSStringRef moduleName; - JSValueRef value; - JSObjectRef object; - - if(context == 0){ - return 0; - } - - globalObject = JSContextGetGlobalObject(context); - moduleName = JSStringCreateWithUTF8CString("swig_module_info_data"); - - if(JSObjectHasProperty(context, globalObject, moduleName) == false) { - JSStringRelease(moduleName); - return 0; - } - - value = JSObjectGetProperty(context, globalObject, moduleName, NULL); - object = JSValueToObject(context, value, NULL); - JSStringRelease(moduleName); - - return (swig_module_info*)JSObjectGetPrivate(object); -} - -#define SWIG_GetModule(clientdata) SWIG_JSC_GetModule(clientdata) -#define SWIG_SetModule(clientdata, pointer) SWIG_JSC_SetModule(clientdata, pointer) -#define SWIG_INIT_CLIENT_DATA_TYPE JSGlobalContextRef -%} - -%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(context); -%} - -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg deleted file mode 100755 index c3c11839..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg +++ /dev/null @@ -1,40 +0,0 @@ -#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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg deleted file mode 100755 index 20d575d9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg +++ /dev/null @@ -1,192 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg deleted file mode 100755 index 4d5a9355..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg +++ /dev/null @@ -1,369 +0,0 @@ -/* ---------------------------------------------------------------------------- - * 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_ValueRef(JSContextRef context, JSValueRef *exception, JSValueRef valRef) { - JSValueRef error_arguments[1]; - JSObjectRef exception_object; - /* 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] = valRef; - exception_object = JSObjectMakeError(context, 1, error_arguments, NULL); - - /* Return the exception_object */ - *exception = exception_object; -} - -SWIGRUNTIME void SWIG_Javascript_Raise(JSContextRef context, JSValueRef *exception, const char* msg) { - JSStringRef message = JSStringCreateWithUTF8CString(msg); - JSValueRef exception_value = JSValueMakeString(context, message); - - SWIG_Javascript_Raise_ValueRef(context, exception, exception_value); - - 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; - } - assert(ptr); - *ptr = NULL; - if (!info || cdata->info == info) { - *ptr = cdata->swigCObject; - } else { - swig_cast_info *tc = SWIG_TypeCheckStruct(cdata->info, info); - if (tc) { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc, cdata->swigCObject, &newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } else { - return SWIG_ERROR; - } - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !cdata->swigCMemOwn) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (flags & SWIG_POINTER_DISOWN) { - cdata->swigCMemOwn = false; - } - if (flags & SWIG_POINTER_CLEAR) { - cdata->swigCObject = 0; - } - } - - 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 -bool SWIGJSC_ValueIsArray(JSContextRef context, JSValueRef value) { - if (JSValueIsObject(context, value)) { - static JSStringRef ArrayString = NULL; - static JSStringRef isArrayString = NULL; - JSObjectRef array = NULL; - JSObjectRef isArray = NULL; - JSValueRef retval = NULL; - - if (!ArrayString) - ArrayString = JSStringCreateWithUTF8CString("Array"); - if (!isArrayString) - isArrayString = JSStringCreateWithUTF8CString("isArray"); - - array = (JSObjectRef)JSObjectGetProperty(context, JSContextGetGlobalObject(context), ArrayString, NULL); - isArray = (JSObjectRef)JSObjectGetProperty(context, array, isArrayString, NULL); - retval = JSObjectCallAsFunction(context, isArray, NULL, 1, &value, NULL); - - if (JSValueIsBoolean(context, retval)) - return JSValueToBoolean(context, retval); - } - return false; -} - -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 if (!SWIGJSC_ValueIsArray(context, value)) { - arr = JSObjectMakeArray(context, 1, &value, 0); - } else { - arr = JSValueToObject(context, value, 0); - } - - length = SWIGJSC_ArrayLength(context, arr); - JSObjectSetPropertyAtIndex(context, arr, length, obj, 0); - return arr; -} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg deleted file mode 100755 index a626390c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg +++ /dev/null @@ -1,20 +0,0 @@ -/* ----------------------------------------------------------------------------- - * javascriptruntime.swg - * - * Javascript support code - * ----------------------------------------------------------------------------- */ - -%insert(runtime) %{ -#include -#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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg deleted file mode 100755 index 5c8081a8..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg +++ /dev/null @@ -1,187 +0,0 @@ -/* ------------------------------------------------------------ - * 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_ValueRef(context, exception, obj) - -%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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i deleted file mode 100755 index a252e0aa..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i deleted file mode 100755 index 9fa10880..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i +++ /dev/null @@ -1,81 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i deleted file mode 100755 index 586ac5c6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i +++ /dev/null @@ -1,99 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i b/linux/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i deleted file mode 100755 index b5b441bc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i +++ /dev/null @@ -1,148 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/linux/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i deleted file mode 100755 index 6dc7e4b9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i +++ /dev/null @@ -1,86 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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)) {} -%fragment("SWIG_JSCOutInt", "header", fragment=SWIG_From_frag(int)) {} -%fragment("SWIG_JSCOutNumber", "header", fragment=SWIG_From_frag(double)) {} - -%define JAVASCRIPT_ARRAYS_IN_DECL(NAME, CTYPE, ANY, ANYLENGTH) - -%typemap(in, fragment=NAME) CTYPE[ANY] { - if ($input->IsArray()) { - // Convert into Array - v8::Local array = v8::Local::Cast($input); - - int length = ANYLENGTH; - - $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); - - // Get each element from array - for (int i = 0; i < length; i++) { - v8::Local jsvalue = SWIGV8_ARRAY_GET(array, i); - $*1_ltype temp; - - // Get primitive value from JSObject - int res = SWIG_AsVal(CTYPE)(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 an array"); - } -} - -%typemap(freearg) CTYPE[ANY] { - free($1); -} - -%enddef - -%define JAVASCRIPT_ARRAYS_OUT_DECL(NAME, CTYPE) - -%typemap(out, fragment=NAME) CTYPE[ANY] { - int length = $1_dim0; - v8::Local array = SWIGV8_ARRAY_NEW(length); - - for (int i = 0; i < length; i++) { - SWIGV8_ARRAY_SET(array, i, SWIG_From(CTYPE)($1[i])); - } - - $result = array; -} - -%enddef - -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, , array->Length()) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, ANY, $1_dim0) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, , array->Length()) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, ANY, $1_dim0) - -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutInt", int) -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutNumber", double) - diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i deleted file mode 100755 index e58dbf71..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ccomplex.i - * - * C complex typemaps - * ISO C99: 7.3 Complex arithmetic - * ----------------------------------------------------------------------------- */ - - -%include - -%{ -#include -%} - -#define complex _Complex - -/* 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/linux/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/complex.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/complex.i deleted file mode 100755 index 4c3b3c5e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/complex.i +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef __cplusplus -%include -#else -%include -#endif - diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/exception.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/exception.i deleted file mode 100755 index 0246cfde..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/exception.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg deleted file mode 100755 index 3a83b649..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * javascript.swg - * - * Javascript typemaps - * ----------------------------------------------------------------------------- */ - -%include - -%include - -%include - -%include - -%include - -%include - -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg deleted file mode 100755 index dcda0ee6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg +++ /dev/null @@ -1,435 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(); - - SWIGV8_OBJECT self = args.Holder(); - $jslocals - if(self->InternalFieldCount() < 1) SWIG_exception_fail(SWIG_ERROR, "Illegal call of constructor $jswrapper."); - 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; - SWIGV8_VALUE 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(); - - SWIGV8_OBJECT self = args.Holder(); - $jslocals - if(self->InternalFieldCount() < 1) SWIG_exception_fail(SWIG_ERROR, "Illegal call of constructor $jswrapper."); - 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(); - $jswrapper(args, errorHandler); - if(errorHandler.err.IsEmpty()) { - return; - } - } -%} - -/* ----------------------------------------------------------------------------- - * js_dtor: template for a destructor wrapper - * - $jsmangledname: mangled class name - * - $jstype: class type - * ----------------------------------------------------------------------------- */ -%fragment ("js_dtor", "templates") -%{ - -static void $jswrapper(const v8::WeakCallbackInfo &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - - if(proxy->swigCMemOwn && proxy->swigCObject) { -#ifdef SWIGRUNTIME_DEBUG - printf("Deleting wrapped instance: %s\n", proxy->info->name); -#endif - $jsfree proxy->swigCObject; - } - delete proxy; -} -%} - -/* ----------------------------------------------------------------------------- - * 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") -%{ -static void $jswrapper(const v8::WeakCallbackInfo &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - - if(proxy->swigCMemOwn && proxy->swigCObject) { - $jstype arg1 = ($jstype)proxy->swigCObject; - ${destructor_action} - } - delete proxy; -} -%} - -/* ----------------------------------------------------------------------------- - * 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 SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { - SWIGV8_HANDLESCOPE(); - - SWIGV8_VALUE 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") -%{ -static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { - 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(); - - SWIGV8_VALUE 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(); - - SWIGV8_VALUE 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(); - - SWIGV8_VALUE 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(); - $jswrapper(args, errorHandler); - if(errorHandler.err.IsEmpty()) { - return; - } - } -%} - -/* ----------------------------------------------------------------------------- - * 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 */ - SWIGV8_FUNCTION_TEMPLATE $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())) - { - $jsmangledname_class->Inherit( - v8::Local::New( - v8::Isolate::GetCurrent(), - static_cast(SWIGTYPE_p$jsbaseclass->clientdata)->class_templ) - ); - -#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) */ - SWIGV8_FUNCTION_TEMPLATE $jsmangledname_class_0 = SWIGV8_CreateClassTemplate("$jsname"); - $jsmangledname_class_0->SetCallHandler($jsctor); - $jsmangledname_class_0->Inherit($jsmangledname_class); -#if (SWIG_V8_VERSION < 0x0704) - $jsmangledname_class_0->SetHiddenPrototype(true); - v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(); -#else - v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(context).ToLocalChecked(); -#endif -%} - -/* ----------------------------------------------------------------------------- - * 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") -%{ - SWIGV8_MAYBE_CHECK($jsparent_obj->Set(context, 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") -%{ - SWIGV8_OBJECT $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") -%{ - SWIGV8_MAYBE_CHECK($jsparent_obj->Set(context, 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, context); -%} - -/* ----------------------------------------------------------------------------- - * 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, context); -%} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg deleted file mode 100755 index 7b3c5547..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg +++ /dev/null @@ -1,124 +0,0 @@ -/* - 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 SWIGV8_VALUE -SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) -{ - SWIGV8_HANDLESCOPE_ESC(); - - v8::Local vals = SWIGV8_ARRAY_NEW(0); - - SWIGV8_ARRAY_SET(vals, 0, SWIG_From(double)(Real(c))); - SWIGV8_ARRAY_SET(vals, 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) (SWIGV8_VALUE o, Type* val) -{ - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { - SWIGV8_ARRAY array = SWIGV8_ARRAY::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)(SWIGV8_ARRAY_GET(array, 0), &re); - if (!SWIG_IsOK(res)) { - return SWIG_TypeError; - } - - res = SWIG_AsVal(double)(SWIGV8_ARRAY_GET(array, 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) (SWIGV8_VALUE o, Type* val) -{ - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { - SWIGV8_ARRAY array = SWIGV8_ARRAY::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)(SWIGV8_ARRAY_GET(array, 0), &re); - if (!SWIG_IsOK(res)) { - return SWIG_TypeError; - } - - res = SWIG_AsVal(double)(SWIGV8_ARRAY_GET(array, 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/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg deleted file mode 100755 index 4778bf03..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg deleted file mode 100755 index ea303fa3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg +++ /dev/null @@ -1,87 +0,0 @@ -%insert(runtime) %{ - -typedef v8::FunctionCallback SwigV8FunctionCallback; -typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; -typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; -typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; - -/** - * Creates a class template for a class with specified initialization function. - */ -SWIGRUNTIME SWIGV8_FUNCTION_TEMPLATE SWIGV8_CreateClassTemplate(const char* symbol) { - SWIGV8_HANDLESCOPE_ESC(); - - v8::Local class_templ = SWIGV8_FUNCTEMPLATE_NEW_VOID(); - class_templ->SetClassName(SWIGV8_SYMBOL_NEW(symbol)); - - SWIGV8_OBJECT_TEMPLATE inst_templ = class_templ->InstanceTemplate(); - inst_templ->SetInternalFieldCount(1); - - SWIGV8_OBJECT_TEMPLATE equals_templ = class_templ->PrototypeTemplate(); - equals_templ->Set(SWIGV8_SYMBOL_NEW("equals"), SWIGV8_FUNCTEMPLATE_NEW(_SWIGV8_wrap_equals)); - - SWIGV8_OBJECT_TEMPLATE 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(SWIGV8_FUNCTION_TEMPLATE class_templ, const char* symbol, - SwigV8FunctionCallback _func) { - SWIGV8_OBJECT_TEMPLATE 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(SWIGV8_FUNCTION_TEMPLATE class_templ, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { - SWIGV8_OBJECT_TEMPLATE 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(SWIGV8_OBJECT obj, const char* symbol, - const SwigV8FunctionCallback& _func, v8::Local context) { - SWIGV8_MAYBE_CHECK(obj->Set(context, SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction(context).ToLocalChecked())); -} - -/** - * Registers a class method with given name for a given object. - */ -SWIGRUNTIME void SWIGV8_AddStaticVariable(SWIGV8_OBJECT obj, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter, - v8::Local context) { - SWIGV8_MAYBE_CHECK(obj->SetAccessor(context, SWIGV8_SYMBOL_NEW(symbol), getter, setter)); -} - -SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) -{ - char buffer[256]; - char msg[512]; - int res; - - 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; - } - - 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/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg deleted file mode 100755 index 3bf8c416..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg +++ /dev/null @@ -1,126 +0,0 @@ -%insert(header) %{ -#include -%} - -%insert(init) %{ - -SWIGRUNTIME void -SWIG_V8_SetModule(v8::Local context, swig_module_info *swig_module) { - v8::Local global_obj = context->Global(); - v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); - assert(!mod.IsEmpty()); - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); - global_obj->SetPrivate(context, privateKey, mod); -} - -SWIGRUNTIME swig_module_info * -SWIG_V8_GetModule(v8::Local context) { - v8::Local global_obj = context->Global(); - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); - v8::Local moduleinfo; - if (!global_obj->GetPrivate(context, privateKey).ToLocal(&moduleinfo)) - return 0; - - 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) -#define SWIG_INIT_CLIENT_DATA_TYPE v8::Local - -%} - -%insert(init) "swiginit.swg" - -// Open the initializer function definition here - -%fragment ("js_initializer_define", "templates") %{ -#define SWIGV8_INIT $jsname_initialize -%} - -%insert(init) %{ -#if !defined(NODE_MODULE_VERSION) || (NODE_MODULE_VERSION < 12) -// Note: 'extern "C"'' disables name mangling which makes it easier to load the symbol manually -extern "C" void SWIGV8_INIT (SWIGV8_OBJECT exports_obj) -#elif (NODE_MODULE_VERSION < 64) -void SWIGV8_INIT (SWIGV8_OBJECT exports_obj, SWIGV8_VALUE /*module*/, void*) -#else -void SWIGV8_INIT (SWIGV8_OBJECT exports_obj, SWIGV8_VALUE /*module*/, v8::Local context, void*) -#endif -{ -#if !defined(NODE_MODULE_VERSION) || NODE_MODULE_VERSION < 64 - v8::Local context = SWIGV8_CURRENT_CONTEXT(); -#endif - - SWIG_InitializeModule(context); -%} - - -/* ----------------------------------------------------------------------------- - * 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) -#if (NODE_MODULE_VERSION < 64) -NODE_MODULE($jsname, $jsname_initialize) -#else -NODE_MODULE_CONTEXT_AWARE($jsname, $jsname_initialize) -#endif -#endif -%} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg deleted file mode 100755 index c3c11839..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg +++ /dev/null @@ -1,40 +0,0 @@ -#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/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg deleted file mode 100755 index 8ed571df..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg +++ /dev/null @@ -1,203 +0,0 @@ -/* ------------------------------------------------------------ - * Primitive Types - * ------------------------------------------------------------ */ - -/* boolean */ - -%fragment(SWIG_From_frag(bool),"header") { -SWIGINTERNINLINE -SWIGV8_VALUE -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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(int)(int value) -{ - return SWIGV8_INT32_NEW(value); -} -} - -%fragment(SWIG_AsVal_frag(int),"header") { -SWIGINTERN -int SWIG_AsVal_dec(int)(SWIGV8_VALUE 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 -SWIGV8_VALUE 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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(unsigned long)(unsigned long value) -{ - return value <= UINT32_MAX ? (SWIGV8_VALUE)SWIGV8_INTEGER_NEW_UNS(value) : (SWIGV8_VALUE)SWIGV8_NUMBER_NEW(static_cast(value)); -} -} - -%fragment(SWIG_AsVal_frag(unsigned long),"header", - fragment="SWIG_CanCastAsInteger") { -SWIGINTERN -int SWIG_AsVal_dec(unsigned long)(SWIGV8_VALUE 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 -SWIGV8_VALUE 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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(unsigned long long)(unsigned long long value) -{ - return value <= UINT32_MAX ? (SWIGV8_VALUE)SWIGV8_INTEGER_NEW_UNS(value) : (SWIGV8_VALUE)SWIGV8_NUMBER_NEW(static_cast(value)); -} -%#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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(double) (double val) -{ - return SWIGV8_NUMBER_NEW(val); -} -} - -%fragment(SWIG_AsVal_frag(double),"header") { -SWIGINTERN -int SWIG_AsVal_dec(double)(SWIGV8_VALUE obj, double *val) -{ - if(!obj->IsNumber()) { - return SWIG_TypeError; - } - if(val) *val = SWIGV8_NUMBER_VALUE(obj); - - return SWIG_OK; -} -} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg deleted file mode 100755 index f7627085..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg +++ /dev/null @@ -1,487 +0,0 @@ -/* --------------------------------------------------------------------------- - * These typedefs and defines are used to deal with v8 API changes - * - * Useful table of versions: https://nodejs.org/en/download/releases/ - * ---------------------------------------------------------------------------*/ - -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_STRING_NEW2(cstr, len) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::String::kNormalString, len) -#else -#define SWIGV8_STRING_NEW2(cstr, len) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::NewStringType::kNormal, len)).ToLocalChecked() -#endif - -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 - -#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) - -#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) - -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_STRING_NEW(str) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::String::kNormalString) -#define SWIGV8_SYMBOL_NEW(sym) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::String::kNormalString) -#else -#define SWIGV8_STRING_NEW(str) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::NewStringType::kNormal)).ToLocalChecked() -#define SWIGV8_SYMBOL_NEW(sym) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::NewStringType::kNormal)).ToLocalChecked() -#endif - -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_MAYBE_CHECK(maybe) maybe.FromJust() -#else -#define SWIGV8_MAYBE_CHECK(maybe) maybe.Check() -#endif - -#define SWIGV8_ARRAY_NEW(size) v8::Array::New(v8::Isolate::GetCurrent(), size) -#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_ARRAY v8::Local -#define SWIGV8_FUNCTION_TEMPLATE v8::Local -#define SWIGV8_OBJECT v8::Local -#define SWIGV8_OBJECT_TEMPLATE v8::Local -#define SWIGV8_VALUE v8::Local -#define SWIGV8_NULL() v8::Null(v8::Isolate::GetCurrent()) -#define SWIGV8_ARRAY_GET(array, index) (array)->Get(SWIGV8_CURRENT_CONTEXT(), index).ToLocalChecked() -#define SWIGV8_ARRAY_SET(array, index, value) SWIGV8_MAYBE_CHECK((array)->Set(SWIGV8_CURRENT_CONTEXT(), index, value)) - -#define SWIGV8_SET_CLASS_TEMPL(class_templ, class) class_templ.Reset(v8::Isolate::GetCurrent(), class); - -#if SWIG_V8_VERSION < 0x0608 -#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_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(v8::Isolate::GetCurrent(), buffer, len) -#define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length(v8::Isolate::GetCurrent()) -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() -#else -#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(v8::Isolate::GetCurrent()) -#endif -#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))); -} - -SWIGINTERN void SWIG_V8_Raise(SWIGV8_VALUE obj, const char *msg) { - SWIGV8_THROW_EXCEPTION(v8::Exception::Error(SWIGV8_TO_STRING(obj))); -} - - -/* - 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); - } - } - SWIGV8_VALUE 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() { - handle.ClearWeak(); - handle.Reset(); - - 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; - - void (*dtor) (const v8::WeakCallbackInfo &data); -}; - -SWIGRUNTIME v8::Persistent SWIGV8_SWIGTYPE_Proxy_class_templ; - -SWIGRUNTIME int SWIG_V8_ConvertInstancePtr(SWIGV8_OBJECT objRef, void **ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE(); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - - SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); - - if(cdata == NULL) { - return SWIG_ERROR; - } - if(info && 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; - } - int newmemory = 0; - *ptr = SWIG_TypeCast(tc, cdata->swigCObject, &newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } else { - *ptr = cdata->swigCObject; - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !cdata->swigCMemOwn) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (flags & SWIG_POINTER_DISOWN) { - cdata->swigCMemOwn = false; - } - if (flags & SWIG_POINTER_CLEAR) { - cdata->swigCObject = 0; - } - } - return SWIG_OK; -} - - -SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - delete proxy; -} - -SWIGRUNTIME int SWIG_V8_GetInstancePtr(SWIGV8_VALUE valRef, void **ptr) { - if(!valRef->IsObject()) { - return SWIG_TypeError; - } - SWIGV8_OBJECT objRef = SWIGV8_OBJECT::Cast(valRef); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - - SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); - - if(cdata == NULL) { - return SWIG_ERROR; - } - - *ptr = cdata->swigCObject; - - return SWIG_OK; -} - -SWIGRUNTIME void SWIGV8_SetPrivateData(SWIGV8_OBJECT 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; - - obj->SetAlignedPointerInInternalField(0, cdata); - - cdata->handle.Reset(v8::Isolate::GetCurrent(), obj); - - 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); - } - -#if (SWIG_V8_VERSION < 0x0704) - cdata->handle.MarkIndependent(); -// Looks like future versions do not require that anymore: -// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 -#endif -} - -SWIGRUNTIME int SWIG_V8_ConvertPtr(SWIGV8_VALUE 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; - } - SWIGV8_OBJECT objRef = SWIGV8_OBJECT::Cast(valRef); - return SWIG_V8_ConvertInstancePtr(objRef, ptr, info, flags); -} - -SWIGRUNTIME SWIGV8_VALUE SWIG_V8_NewPointerObj(void *ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE_ESC(); - - SWIGV8_FUNCTION_TEMPLATE class_templ; - - if (ptr == NULL) { - v8::Local result = SWIGV8_NULL(); - SWIGV8_ESCAPE(result); - } - - 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); - } - - v8::Local result = class_templ->InstanceTemplate()->NewInstance(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked(); - - 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(); - - SWIGV8_VALUE 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(); - - SWIGV8_VALUE 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(SWIGV8_VALUE valRef) { - SWIGV8_HANDLESCOPE(); - - SWIGV8_OBJECT objRef = SWIGV8_TO_OBJECT(valRef); - if(objRef->InternalFieldCount() < 1) return false; - 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; - return (flag->IsBoolean() && SWIGV8_BOOLEAN_VALUE(flag)); -} - -SWIGRUNTIME -swig_type_info *SwigV8Packed_UnpackData(SWIGV8_VALUE valRef, void *ptr, size_t size) { - if (SwigV8Packed_Check(valRef)) { - SWIGV8_HANDLESCOPE(); - - SwigV8PackedData *sobj; - - SWIGV8_OBJECT objRef = SWIGV8_TO_OBJECT(valRef); - - sobj = static_cast(objRef->GetAlignedPointerFromInternalField(0)); - if (sobj == NULL || sobj->size != size) return 0; - memcpy(ptr, sobj->data, size); - return sobj->type; - } else { - return 0; - } -} - -SWIGRUNTIME -int SWIGV8_ConvertPacked(SWIGV8_VALUE 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; -} - -SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo &data) { - SwigV8PackedData *cdata = data.GetParameter(); - delete cdata; -} - -SWIGRUNTIME -SWIGV8_VALUE 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(); - - 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)); - - obj->SetAlignedPointerInInternalField(0, cdata); - - cdata->handle.Reset(v8::Isolate::GetCurrent(), obj); - - cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter); - -#if (SWIG_V8_VERSION < 0x0704) - cdata->handle.MarkIndependent(); -// Looks like future versions do not require that anymore: -// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 -#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 - -SWIGV8_VALUE SWIGV8_AppendOutput(SWIGV8_VALUE result, SWIGV8_VALUE obj) { - SWIGV8_HANDLESCOPE_ESC(); - - if (result->IsUndefined()) { - result = SWIGV8_ARRAY_NEW(0); - } else if (!result->IsArray()) { - SWIGV8_ARRAY tmparr = SWIGV8_ARRAY_NEW(0); - SWIGV8_ARRAY_SET(tmparr, 0, result); - result = tmparr; - } - - SWIGV8_ARRAY arr = SWIGV8_ARRAY::Cast(result); - SWIGV8_ARRAY_SET(arr, arr->Length(), obj); - SWIGV8_ESCAPE(arr); -} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg deleted file mode 100755 index 4e93fc4c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg +++ /dev/null @@ -1,47 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 doesn't support anything that -// old so SWIG generated code can rely on these. - -// 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 - -#undef SWIG_V8_VERSION -#define SWIG_V8_VERSION ((V8_MAJOR_VERSION / 10) * 4096 + \ - (V8_MAJOR_VERSION % 10) * 256 + \ - (V8_MINOR_VERSION / 10) * 16 + \ - (V8_MINOR_VERSION % 10)) - -#include -#include -#include -#include -%} - -%insert(runtime) "swigrun.swg"; /* SWIG API */ -%insert(runtime) "swigerrors.swg"; /* SWIG errors */ - -%insert(runtime) "javascriptrun.swg" - diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg deleted file mode 100755 index 8dc2d945..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg +++ /dev/null @@ -1,59 +0,0 @@ - -/* ------------------------------------------------------------ - * utility methods for char strings - * ------------------------------------------------------------ */ -%fragment("SWIG_AsCharPtrAndSize", "header", fragment="SWIG_pchar_descriptor") { -SWIGINTERN int -SWIG_AsCharPtrAndSize(SWIGV8_VALUE valRef, char** cptr, size_t* psize, int *alloc) -{ - if(valRef->IsString()) { - v8::Local js_str = v8::Local::Cast(valRef); - - size_t len = SWIGV8_UTF8_LENGTH(js_str) + 1; - char* cstr = (char*) %new_array(len, char); - 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()) { - SWIGV8_OBJECT obj = SWIGV8_OBJECT::Cast(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 SWIGV8_VALUE -SWIG_FromCharPtrAndSize(const char* carray, size_t size) -{ - if (carray) { - if (size > INT_MAX) { - // TODO: handle extra long strings - return SWIGV8_UNDEFINED(); - } else { - v8::Local js_str = SWIGV8_STRING_NEW2(carray, size); - return js_str; - } - } else { - return SWIGV8_UNDEFINED(); - } -} -} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg b/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg deleted file mode 100755 index c4d341be..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg +++ /dev/null @@ -1,43 +0,0 @@ -/* ------------------------------------------------------------ - * 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 SWIGV8_VALUE -#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(obj, type) - -/* Include the unified typemap library */ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i deleted file mode 100755 index a252e0aa..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i deleted file mode 100755 index 3b8b0936..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i deleted file mode 100755 index b72c50b9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i +++ /dev/null @@ -1,35 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i deleted file mode 100755 index 586ac5c6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i +++ /dev/null @@ -1,99 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i b/linux/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i deleted file mode 100755 index e88f0019..00000000 --- a/linux/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i +++ /dev/null @@ -1,148 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/linux/bin/swig/share/swig/4.1.0/linkruntime.c b/linux/bin/swig/share/swig/4.1.0/linkruntime.c old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/lua/_std_common.i b/linux/bin/swig/share/swig/4.1.0/lua/_std_common.i deleted file mode 100755 index 567e68b7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/_std_common.i +++ /dev/null @@ -1,93 +0,0 @@ -/* ----------------------------------------------------------------------------- - * _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/linux/bin/swig/share/swig/4.1.0/lua/argcargv.i b/linux/bin/swig/share/swig/4.1.0/lua/argcargv.i deleted file mode 100755 index 94cc8ed4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/argcargv.i +++ /dev/null @@ -1,57 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - - Use it as follows: - - %apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) } - extern int mainApp(size_t argc, const char **argv); - - then from lua: - - args = { "arg0", "arg1" } - mainApp(args) - - * ------------------------------------------------------------ */ - -%{ -SWIGINTERN int SWIG_argv_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; -} -%} - -%typemap(in) (int ARGC, char **ARGV) { - if (lua_istable(L,$input)) { - int i, size = SWIG_argv_size(L,$input); - $1 = ($1_ltype) size; - $2 = (char **) malloc((size+1)*sizeof(char *)); - for (i = 0; i < size; i++) { - lua_rawgeti(L,$input,i+1); - if (lua_isnil(L,-1)) - break; - $2[i] = (char *)lua_tostring(L, -1); - lua_pop(L,1); - } - $2[i]=NULL; - } else { - $1 = 0; $2 = 0; - lua_pushstring(L,"Expecting argv array"); - lua_error(L); - } -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - $1 = lua_istable(L,$input); -} - -%typemap(freearg) (int ARGC, char **ARGV) { - free((char *) $2); -} diff --git a/linux/bin/swig/share/swig/4.1.0/lua/carrays.i b/linux/bin/swig/share/swig/4.1.0/lua/carrays.i deleted file mode 100755 index 1bc45d81..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/carrays.i +++ /dev/null @@ -1,8 +0,0 @@ -/* 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/linux/bin/swig/share/swig/4.1.0/lua/factory.i b/linux/bin/swig/share/swig/4.1.0/lua/factory.i deleted file mode 100755 index 7e605c5d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/factory.i +++ /dev/null @@ -1,23 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/lua/lua.swg b/linux/bin/swig/share/swig/4.1.0/lua/lua.swg deleted file mode 100755 index 12c635d7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/lua.swg +++ /dev/null @@ -1,236 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 it's 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 it's 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),$&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 -// it's 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/linux/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i b/linux/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i deleted file mode 100755 index 81fa54bd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i +++ /dev/null @@ -1,124 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 it's 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/linux/bin/swig/share/swig/4.1.0/lua/luakw.swg b/linux/bin/swig/share/swig/4.1.0/lua/luakw.swg deleted file mode 100755 index 394e4005..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/luakw.swg +++ /dev/null @@ -1,67 +0,0 @@ -/* - Warnings for Lua keywords, built-in names and bad names. -*/ - -#define LUAKW(x) %keywordwarn("'" `x` "' is a Lua keyword", 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/linux/bin/swig/share/swig/4.1.0/lua/luarun.swg b/linux/bin/swig/share/swig/4.1.0/lua/luarun.swg deleted file mode 100755 index f47fd4fa..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/luarun.swg +++ /dev/null @@ -1,1950 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) \ - do { if (!(expr)) { SWIG_Lua_pusherrstring(L, (char *) msg); goto fail; } } while (0) - - -/* 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 it's 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) */ - swig_lua_userdata* userData; - assert(lua_isuserdata(L,1)); /* just in case */ - userData = (swig_lua_userdata*)lua_touserdata(L,1); /* get the userdata address */ - - lua_pushfstring(L, "", userData->type->str, userData->ptr); - 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 its bases (recursively) for first instance of something that is - * not equal to SWIG_Lua_resolve_metamethod. (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 skipping searching metamethod in the given class and immediately going to searching in bases. skip_check - * is not carried 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 metamethods 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) -{ - int ret = SWIG_ERROR; - 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; - } - if (lua_islightuserdata(L,index)) - { - *ptr=lua_touserdata(L,index); - 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_RELEASE) == SWIG_POINTER_RELEASE) && !usr->own) - { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - if (flags & SWIG_POINTER_DISOWN) /* must disown the object */ - { - usr->own = 0; - } - if (!type) /* special cast void*, no casting fn */ - { - *ptr=usr->ptr; - ret = SWIG_OK; - } - else - { - cast=SWIG_TypeCheck(usr->type->name,type); /* performs normal type checking */ - if (cast) - { - int newmemory = 0; - *ptr=SWIG_TypeCast(cast,usr->ptr,&newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - ret = SWIG_OK; - } - } - if ((ret == SWIG_OK) && (flags & SWIG_POINTER_CLEAR)) - { - usr->ptr = 0; - } - } - return ret; -} - -SWIGRUNTIME void* SWIG_Lua_MustGetPtr(lua_State *L,int index,swig_type_info *type,int flags, - int argnum,const char *func_name){ - void *result = 0; - 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/linux/bin/swig/share/swig/4.1.0/lua/luaruntime.swg b/linux/bin/swig/share/swig/4.1.0/lua/luaruntime.swg deleted file mode 100755 index 399bb640..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/luaruntime.swg +++ /dev/null @@ -1,104 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg b/linux/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg deleted file mode 100755 index 7d23917e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg +++ /dev/null @@ -1,418 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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&($*1_ltype temp) -%{ temp=($*1_ltype)lua_tonumber(L,$input); $1=&temp;%} - -%typemap(in,checkfn="lua_isnumber") const unsigned int&($*1_ltype temp) -%{SWIG_contract_assert((lua_tonumber(L,$input)>=0),"number must not be negative"); -temp=($*1_ltype)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",fragment="") SWIGTYPE&& (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) %{ - res = SWIG_ConvertPtr(L, $input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type '$1_type' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $descriptor); - } - } - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -%} - -// 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($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($1),$descriptor))) - SWIG_fail_ptr("$symname",$argnum,$descriptor); -%} - -%typemap(out) SWIGTYPE (CLASS::*) -%{ - SWIG_NewMemberObj(L,(void*)(&$1),sizeof($1),$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 it's 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 it's 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 it's 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/linux/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i deleted file mode 100755 index b3b71d0f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, checkfn="SWIG_isptrtype", noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(L, $input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $descriptor(TYPE *)); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - SWIG_NewPointerObj(L, $1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); SWIG_arg++; -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(L, $input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/lua/std_common.i b/linux/bin/swig/share/swig/4.1.0/lua/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/linux/bin/swig/share/swig/4.1.0/lua/std_deque.i b/linux/bin/swig/share/swig/4.1.0/lua/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/lua/std_except.i b/linux/bin/swig/share/swig/4.1.0/lua/std_except.i deleted file mode 100755 index 34ab6a1a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/std_except.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/lua/std_map.i b/linux/bin/swig/share/swig/4.1.0/lua/std_map.i deleted file mode 100755 index 773b6d0c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/std_map.i +++ /dev/null @@ -1,66 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/lua/std_pair.i b/linux/bin/swig/share/swig/4.1.0/lua/std_pair.i deleted file mode 100755 index 410da922..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/std_pair.i +++ /dev/null @@ -1,26 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/lua/std_string.i b/linux/bin/swig/share/swig/4.1.0/lua/std_string.i deleted file mode 100755 index b95a8a4a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/std_string.i +++ /dev/null @@ -1,125 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i deleted file mode 100755 index ad08f3b0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, checkfn="SWIG_isptrtype", noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(L, $input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $descriptor(TYPE *)); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - SWIG_NewPointerObj(L, $1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); SWIG_arg++; -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(L, $input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/lua/std_vector.i b/linux/bin/swig/share/swig/4.1.0/lua/std_vector.i deleted file mode 100755 index 9eb85e9e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/std_vector.i +++ /dev/null @@ -1,140 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/lua/stl.i b/linux/bin/swig/share/swig/4.1.0/lua/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/lua/swigmove.i b/linux/bin/swig/share/swig/4.1.0/lua/swigmove.i deleted file mode 100755 index d130e797..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/swigmove.i +++ /dev/null @@ -1,18 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, checkfn="lua_isuserdata", noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(L, $input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type '$1_type' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $&1_descriptor); - } - } - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/linux/bin/swig/share/swig/4.1.0/lua/typemaps.i b/linux/bin/swig/share/swig/4.1.0/lua/typemaps.i deleted file mode 100755 index 68f6f6cc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/typemaps.i +++ /dev/null @@ -1,554 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 it's 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 don't 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); - -*/ - -%{ -#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/linux/bin/swig/share/swig/4.1.0/lua/wchar.i b/linux/bin/swig/share/swig/4.1.0/lua/wchar.i deleted file mode 100755 index 9f3be6fc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/lua/wchar.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/math.i b/linux/bin/swig/share/swig/4.1.0/math.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/mzscheme/Makefile b/linux/bin/swig/share/swig/4.1.0/mzscheme/Makefile deleted file mode 100755 index fba7fd5d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/Makefile +++ /dev/null @@ -1,3 +0,0 @@ - -co: - co RCS/*.i* RCS/*.swg* diff --git a/linux/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg b/linux/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg deleted file mode 100755 index 57d04081..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg +++ /dev/null @@ -1,521 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) \ - do { \ - 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); \ - } \ - } while (0) - -/* 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; - int own; -}; - -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 && proxy->own) { - ((Scheme_Prim *)proxy->type->clientdata)(1, (Scheme_Object **)&proxy); - } - } -} - -static Scheme_Object * -SWIG_MzScheme_NewPointerObj(void *ptr, swig_type_info *type, int owner) { - if (ptr) { - 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; - new_proxy->own = owner & SWIG_POINTER_OWN; - if (new_proxy->own) { - scheme_add_finalizer(new_proxy, mz_free_swig, NULL); - } - return (Scheme_Object *) new_proxy; - } else { - return scheme_make_null(); - } -} - -static int -SWIG_MzScheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type, int flags) { - swig_cast_info *cast; - int ret = SWIG_ERROR; - - 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 ((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE && !proxy->own) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - - 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 */ - ret = SWIG_OK; - } else { - return SWIG_ERROR; - } - } else { - *result = proxy->object; - ret = SWIG_OK; - } - - if (flags & SWIG_POINTER_DISOWN) { - scheme_subtract_finalizer(proxy, mz_free_swig, NULL); - proxy->own = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - proxy->object = 0; - } - } - return ret; -} - -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/linux/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg b/linux/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg deleted file mode 100755 index f45c8725..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg +++ /dev/null @@ -1,56 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i deleted file mode 100755 index c61bc8b2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'"); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_common.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/std_common.i deleted file mode 100755 index a83e2731..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_common.i +++ /dev/null @@ -1,23 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_map.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/std_map.i deleted file mode 100755 index 1d3eec24..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_map.i +++ /dev/null @@ -1,1388 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i deleted file mode 100755 index 75f6751c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i +++ /dev/null @@ -1,874 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/mzscheme/std_string.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/std_string.i deleted file mode 100755 index 70673ead..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_string.i +++ /dev/null @@ -1,64 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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()); - } - - %typemap(throws) string { - scheme_signal_error("%s: %s", FUNC_NAME, $1.c_str()); - } - - %typemap(throws) const string & { - scheme_signal_error("%s: %s", FUNC_NAME, $1.c_str()); - } -} - - diff --git a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i deleted file mode 100755 index 53cf4669..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'"); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i deleted file mode 100755 index 0ef5edb1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i +++ /dev/null @@ -1,451 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i deleted file mode 100755 index bbfcdcb1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type '$1_type'"); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (argp == NULL) scheme_signal_error(FUNC_NAME ": swig-type-error (null reference)"); - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/linux/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i b/linux/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i deleted file mode 100755 index 6c31aea5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i +++ /dev/null @@ -1,399 +0,0 @@ -/* ----------------------------------------------------------------------------- - * typemaps.i - * ----------------------------------------------------------------------------- */ - -#define %set_output(obj) $result = obj -#define %set_varoutput(obj) $result = obj -#define %argument_fail(code, type, name, argn) scheme_wrong_type(FUNC_NAME, type, argn, argc, argv) -#define %as_voidptr(ptr) (void*)(ptr) - - -/* 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 & { - $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum, 0); - if ($1 == NULL) scheme_signal_error(FUNC_NAME ": swig-type-error (null reference)"); -} - -%typemap(in, noblock=1, fragment="") SWIGTYPE && (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) { - res = SWIG_ConvertPtr($input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type '$1_type'"); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (argp == NULL) scheme_signal_error(FUNC_NAME ": swig-type-error (null reference)"); - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -} - -%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); - $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); - $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); - -%typemap(throws) char * { - scheme_signal_error("%s: %s", FUNC_NAME, $1); -} - -/* 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/linux/bin/swig/share/swig/4.1.0/ocaml/carray.i b/linux/bin/swig/share/swig/4.1.0/ocaml/carray.i deleted file mode 100755 index 4378f733..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/carray.i +++ /dev/null @@ -1,131 +0,0 @@ -%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; - const 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/linux/bin/swig/share/swig/4.1.0/ocaml/class.swg b/linux/bin/swig/share/swig/4.1.0/ocaml/class.swg deleted file mode 100755 index eb369cd7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/class.swg +++ /dev/null @@ -1,67 +0,0 @@ -(*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/linux/bin/swig/share/swig/4.1.0/ocaml/cstring.i b/linux/bin/swig/share/swig/4.1.0/ocaml/cstring.i deleted file mode 100755 index f1190ad5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/cstring.i +++ /dev/null @@ -1,268 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ocaml/director.swg b/linux/bin/swig/share/swig/4.1.0/ocaml/director.swg deleted file mode 100755 index eb91aaf4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/director.swg +++ /dev/null @@ -1,101 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ocaml/extra-install.list b/linux/bin/swig/share/swig/4.1.0/ocaml/extra-install.list deleted file mode 100755 index 16486eb2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/extra-install.list +++ /dev/null @@ -1,4 +0,0 @@ -# see top-level Makefile.in -swigp4.ml -swig.mli -swig.ml diff --git a/linux/bin/swig/share/swig/4.1.0/ocaml/ocaml.i b/linux/bin/swig/share/swig/4.1.0/ocaml/ocaml.i deleted file mode 100755 index cc26d185..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/ocaml.i +++ /dev/null @@ -1,50 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ocaml.i - * - * SWIG Configuration File for Ocaml - * ----------------------------------------------------------------------------- */ - -/* Insert common stuff */ -%insert(runtime) "swigrun.swg" - -/* Include headers */ -%insert(runtime) "ocamlrundec.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) "ocamlrun.swg" -/*#endif*/ - -%insert(classtemplate) "class.swg" - -/* 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/linux/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg b/linux/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg deleted file mode 100755 index 703b7e44..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg +++ /dev/null @@ -1,320 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ocaml.swg - * - * 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, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ - $1 = ($ltype) caml_ptr_val($input,$1_descriptor); - rvrdeleter.reset($1); -%} - -%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 & { - const 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 && { - const 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)) ; -} - -%typemap(varout) SWIGTYPE { - $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)&$1, $&1_descriptor); -} - -#ifdef __cplusplus - -%typemap(out) SWIGTYPE { - $&1_ltype temp = new $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(varout) SWIGTYPE * { - $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)$1, $1_descriptor); -} - -%typemap(directorin) SWIGTYPE { - $<ype temp = new $1_ltype(SWIG_STD_MOVE($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); -} -/* 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(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/linux/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg b/linux/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg deleted file mode 100755 index 5e66085e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg +++ /dev/null @@ -1,72 +0,0 @@ -#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/linux/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg b/linux/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg deleted file mode 100755 index 53ad952f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg +++ /dev/null @@ -1,607 +0,0 @@ -/* -*-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(Bp_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); - const 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 const 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); - - const 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/linux/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg b/linux/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg deleted file mode 100755 index dde0b8e5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg +++ /dev/null @@ -1,212 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ocamlrundec.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) do { if(!(expr)) {SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, msg);} } while (0) - - 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/linux/bin/swig/share/swig/4.1.0/ocaml/preamble.swg b/linux/bin/swig/share/swig/4.1.0/ocaml/preamble.swg deleted file mode 100755 index 39374ce4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/preamble.swg +++ /dev/null @@ -1,17 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/ocaml/std_common.i b/linux/bin/swig/share/swig/4.1.0/ocaml/std_common.i deleted file mode 100755 index 7e64607d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/std_common.i +++ /dev/null @@ -1,23 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ocaml/std_complex.i b/linux/bin/swig/share/swig/4.1.0/ocaml/std_complex.i deleted file mode 100755 index 5192261a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/std_complex.i +++ /dev/null @@ -1,65 +0,0 @@ -// -*- 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/linux/bin/swig/share/swig/4.1.0/ocaml/std_deque.i b/linux/bin/swig/share/swig/4.1.0/ocaml/std_deque.i deleted file mode 100755 index 5b38962b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/std_deque.i +++ /dev/null @@ -1,28 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ocaml/std_except.i b/linux/bin/swig/share/swig/4.1.0/ocaml/std_except.i deleted file mode 100755 index 74ddcb51..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/std_except.i +++ /dev/null @@ -1,23 +0,0 @@ -%{ -#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/linux/bin/swig/share/swig/4.1.0/ocaml/std_list.i b/linux/bin/swig/share/swig/4.1.0/ocaml/std_list.i deleted file mode 100755 index e0524aa4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/std_list.i +++ /dev/null @@ -1,217 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ocaml/std_map.i b/linux/bin/swig/share/swig/4.1.0/ocaml/std_map.i deleted file mode 100755 index 3f197baa..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/std_map.i +++ /dev/null @@ -1,79 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ocaml/std_pair.i b/linux/bin/swig/share/swig/4.1.0/ocaml/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ocaml/std_string.i b/linux/bin/swig/share/swig/4.1.0/ocaml/std_string.i deleted file mode 100755 index 2564cfb3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/std_string.i +++ /dev/null @@ -1,136 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(varout) 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(varout) string * { - $result = caml_val_string_len((*$1).c_str(),(*$1).size()); -} - -%typemap(typecheck) string, const string & = char *; - -%typemap(throws) string, const string & "SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1.c_str());" - -} - -#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/linux/bin/swig/share/swig/4.1.0/ocaml/std_vector.i b/linux/bin/swig/share/swig/4.1.0/ocaml/std_vector.i deleted file mode 100755 index 891d038c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/std_vector.i +++ /dev/null @@ -1,98 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ocaml/stl.i b/linux/bin/swig/share/swig/4.1.0/ocaml/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/ocaml/swig.ml b/linux/bin/swig/share/swig/4.1.0/ocaml/swig.ml deleted file mode 100755 index 58a93347..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/swig.ml +++ /dev/null @@ -1,166 +0,0 @@ -(* -*- 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/linux/bin/swig/share/swig/4.1.0/ocaml/swig.mli b/linux/bin/swig/share/swig/4.1.0/ocaml/swig.mli deleted file mode 100755 index c5ffadb1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/swig.mli +++ /dev/null @@ -1,62 +0,0 @@ -(* -*- 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/linux/bin/swig/share/swig/4.1.0/ocaml/swigmove.i b/linux/bin/swig/share/swig/4.1.0/ocaml/swigmove.i deleted file mode 100755 index 32f9903b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/swigmove.i +++ /dev/null @@ -1,11 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0) { - argp1 = ($&1_ltype) caml_ptr_val($input,$&1_descriptor); - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/linux/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml b/linux/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml deleted file mode 100755 index 2f6074a9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml +++ /dev/null @@ -1,135 +0,0 @@ -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/linux/bin/swig/share/swig/4.1.0/ocaml/typecheck.i b/linux/bin/swig/share/swig/4.1.0/ocaml/typecheck.i deleted file mode 100755 index 0c0a600a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/typecheck.i +++ /dev/null @@ -1,197 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ocaml/typemaps.i b/linux/bin/swig/share/swig/4.1.0/ocaml/typemaps.i deleted file mode 100755 index 39231e22..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/typemaps.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ---------------------------------------------------------------------------- - * typemaps.i - * - * These typemaps provide support for input/output arguments for C/C++ pointers - * and C++ references. -* ---------------------------------------------------------------------------- */ - -%define INPUT_OUTPUT_INOUT_TYPEMAPS(type, c_to_ocaml, ocaml_to_c) -%typemap(in) type *INPUT(type temp), type &INPUT(type temp) { - temp = (type)ocaml_to_c($input); - $1 = &temp; -} -%typemap(typecheck) type *INPUT = type; -%typemap(typecheck) type &INPUT = type; - -%typemap(in, numinputs=0) type *OUTPUT($*1_ltype temp), type &OUTPUT($*1_ltype temp) "$1 = &temp;" -%typemap(argout) type *OUTPUT, type &OUTPUT { - swig_result = caml_list_append(swig_result, c_to_ocaml(*$1)); -} -%typemap(in) type *INOUT = type *INPUT; -%typemap(in) type &INOUT = type &INPUT; - -%typemap(argout) type *INOUT = type *OUTPUT; -%typemap(argout) type &INOUT = type &OUTPUT; - -%typemap(typecheck) type *INOUT = type; -%typemap(typecheck) type &INOUT = type; -%enddef - -INPUT_OUTPUT_INOUT_TYPEMAPS(bool, caml_val_bool, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(int, caml_val_int, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(long, caml_val_long, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(short, caml_val_int, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(char, caml_val_char, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(signed char, caml_val_char, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(float, caml_val_float, caml_double_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(double, caml_val_double, caml_double_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned int, caml_val_uint, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long, caml_val_ulong, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned short, caml_val_ushort, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned char, caml_val_uchar, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(long long, caml_val_long, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long long, caml_val_ulong, caml_long_val); -#undef INPUT_OUTPUT_INOUT_TYPEMAPS diff --git a/linux/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg b/linux/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg deleted file mode 100755 index c3ba904a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg +++ /dev/null @@ -1,2 +0,0 @@ -SWIGEXT void SWIG_init() { - SWIG_InitializeModule(0); diff --git a/linux/bin/swig/share/swig/4.1.0/octave/argcargv.i b/linux/bin/swig/share/swig/4.1.0/octave/argcargv.i deleted file mode 100755 index 8d455e58..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/argcargv.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - if ($input.is_scalar_type()) { - $1 = 0; $2 = NULL; - %argument_fail(SWIG_TypeError, "'int ARGC, char **ARGV' is not a list", $symname, $argnum); - } - octave_value_list list = $input.list_value(); - int i, len = list.length(); - $1 = ($1_ltype) len; - $2 = (char **) malloc((len+1)*sizeof(char *)); - for (i = 0; i < len; i++) { - if (!list(i).is_string()) { - $1 = 0; - %argument_fail(SWIG_TypeError, "'int ARGC, char **ARGV' use a non-string", $symname, $argnum); - } - $2[i] = (char *)list(i).string_value().c_str(); - } - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - $1 = 0; - const octave_value& ov = $input; - if (!ov.is_scalar_type()) { - octave_value_list list = ov.list_value(); - int i, len = list.length(); - $1 = 1; - for (i = 0; i < len; i++) { - if (!list(i).is_string()) { - $1 = 0; - break; - } - } - } -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/linux/bin/swig/share/swig/4.1.0/octave/attribute.i b/linux/bin/swig/share/swig/4.1.0/octave/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i deleted file mode 100755 index 87c89b5f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i +++ /dev/null @@ -1,401 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/linux/bin/swig/share/swig/4.1.0/octave/carrays.i b/linux/bin/swig/share/swig/4.1.0/octave/carrays.i deleted file mode 100755 index 014de37f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/carrays.i +++ /dev/null @@ -1,5 +0,0 @@ -%define %array_class(TYPE,NAME) - %array_class_wrap(TYPE,NAME,__paren__,__paren_asgn__) -%enddef - -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/cdata.i b/linux/bin/swig/share/swig/4.1.0/octave/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/cmalloc.i b/linux/bin/swig/share/swig/4.1.0/octave/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/director.swg b/linux/bin/swig/share/swig/4.1.0/octave/director.swg deleted file mode 100755 index 5b9cd86e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/director.swg +++ /dev/null @@ -1,146 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) - -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/linux/bin/swig/share/swig/4.1.0/octave/exception.i b/linux/bin/swig/share/swig/4.1.0/octave/exception.i deleted file mode 100755 index 2f0f489a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/exception.i +++ /dev/null @@ -1,14 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/octave/extra-install.list b/linux/bin/swig/share/swig/4.1.0/octave/extra-install.list deleted file mode 100755 index 41ef9477..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/extra-install.list +++ /dev/null @@ -1,2 +0,0 @@ -# see top-level Makefile.in -octheaders.hpp diff --git a/linux/bin/swig/share/swig/4.1.0/octave/factory.i b/linux/bin/swig/share/swig/4.1.0/octave/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/implicit.i b/linux/bin/swig/share/swig/4.1.0/octave/implicit.i deleted file mode 100755 index 152c2b05..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/implicit.i +++ /dev/null @@ -1,7 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/octave/octave.swg b/linux/bin/swig/share/swig/4.1.0/octave/octave.swg deleted file mode 100755 index 872054d8..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octave.swg +++ /dev/null @@ -1,8 +0,0 @@ -%include -%include -%include -%include -%include -%include - -%define %docstring %feature("docstring") %enddef diff --git a/linux/bin/swig/share/swig/4.1.0/octave/octcomplex.swg b/linux/bin/swig/share/swig/4.1.0/octave/octcomplex.swg deleted file mode 100755 index 553c25a3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octcomplex.swg +++ /dev/null @@ -1,92 +0,0 @@ -/* - 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 - accessor 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.0f); - 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/linux/bin/swig/share/swig/4.1.0/octave/octcontainer.swg b/linux/bin/swig/share/swig/4.1.0/octave/octcontainer.swg deleted file mode 100755 index 394c90ba..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octcontainer.swg +++ /dev/null @@ -1,623 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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. - * ----------------------------------------------------------------------------- */ - -#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="") -{ - -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() 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)) - 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; - } - } -%#if SWIG_OCTAVE_PREREQ(6,0,0) - catch (octave::execution_exception& exec) { - } -%#endif - catch (std::exception& e) { -%#if SWIG_OCTAVE_PREREQ(6,0,0) - if (seq) // Know that octave is not in an error state -%#else - if (seq&&!error_state) -%#endif - 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/linux/bin/swig/share/swig/4.1.0/octave/octfragments.swg b/linux/bin/swig/share/swig/4.1.0/octave/octfragments.swg deleted file mode 100755 index 8b137891..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octfragments.swg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/linux/bin/swig/share/swig/4.1.0/octave/octheaders.hpp b/linux/bin/swig/share/swig/4.1.0/octave/octheaders.hpp deleted file mode 100755 index 26e5564d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octheaders.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// -// This header includes all C++ headers required for generated Octave wrapper code. -// Using a single header file allows pre-compilation of Octave headers, as follows: -// * Check out this header file: -// swig -octave -co octheaders.hpp -// * Pre-compile header file into octheaders.hpp.gch: -// g++ -c ... octheaders.hpp -// * Use pre-compiled header file: -// g++ -c -include octheaders.hpp ... -// - -#if !defined(SWIG_OCTAVE_OCTHEADERS_HPP) -#define SWIG_OCTAVE_OCTHEADERS_HPP - -// Required C++ headers -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Minimal headers to define Octave version -#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) - -// Required Octave headers -#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 - -#endif // !defined(SWIG_OCTAVE_OCTHEADERS_HPP) diff --git a/linux/bin/swig/share/swig/4.1.0/octave/octiterators.swg b/linux/bin/swig/share/swig/4.1.0/octave/octiterators.swg deleted file mode 100755 index e186c94a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octiterators.swg +++ /dev/null @@ -1,357 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/octave/octopers.swg b/linux/bin/swig/share/swig/4.1.0/octave/octopers.swg deleted file mode 100755 index 665b7033..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octopers.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg b/linux/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg deleted file mode 100755 index 1c9aa908..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg +++ /dev/null @@ -1,254 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/octave/octrun.swg b/linux/bin/swig/share/swig/4.1.0/octave/octrun.swg deleted file mode 100755 index 2973318c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octrun.swg +++ /dev/null @@ -1,1669 +0,0 @@ -#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 - -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; } - -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { - return execute(tw,nargout,args); - } -#endif -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave_value_list execute(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -#else - octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -#endif - 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; - - }; -#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 thisown; // 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), thisown(_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 (thisown) { - ++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; - try { - a = out.int_vector_value(); - } - catch (octave::execution_exception& oee) { - return dim_vector(1,1); - } -#else - Array a = out.int_vector_value(); - if (error_state) return dim_vector(1,1); -#endif - 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.thisown = 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; - int clear_pointer = 0; - - if (own) - *own = 0; - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !thisown) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (own) - *own = *own | thisown; - if (flags & SWIG_POINTER_DISOWN) { - thisown = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - clear_pointer = 1; - } - } - - if (!type && types.size()) { - if (vptr) { - *vptr = types[0].second.ptr; - if (clear_pointer) - types[0].second.ptr = 0; - } - return SWIG_OK; - } - for (unsigned int j = 0; j < types.size(); ++j) - if (type == types[j].first) { - if (vptr) { - *vptr = types[j].second.ptr; - if (clear_pointer) - types[j].second.ptr = 0; - } - 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; - } - if (clear_pointer) - types[j].second.ptr = 0; - } - res = SWIG_OK; - break; - } - return res; - } - - bool is_owned() const { - return thisown; - } - -#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; - } - -#if SWIG_OCTAVE_PREREQ(6,0,0) - virtual bool isstruct() const { -#else - virtual bool is_map() const { -#endif - 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(); - } - -#if SWIG_OCTAVE_PREREQ(4,4,0) - virtual bool isobject() const { -#else - virtual bool is_object() const { -#endif - 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, -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::mach_info::float_format fmt) { -#else - oct_mach_info::float_format fmt) { -#endif - 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) - { - // Ensure type_id() is set correctly - if (t_id == -1) { - t_id = octave_swig_ref::static_type_id(); - } - } - - ~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(); } - -#if SWIG_OCTAVE_PREREQ(6,0,0) - virtual bool isstruct() const - { return ptr->isstruct(); } -#else - virtual bool is_map() const - { return ptr->is_map(); } -#endif - - 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); } - -#if SWIG_OCTAVE_PREREQ(4,4,0) - virtual bool isobject() const - { return ptr->isobject(); } -#else - virtual bool is_object() const - { return ptr->is_object(); } -#endif - - 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, -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::mach_info::float_format fmt) -#else - oct_mach_info::float_format fmt) -#endif - { 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); } - -#if SWIG_OCTAVE_PREREQ(4,4,0) - static void set_type_id(int type_id) { t_id=type_id; } -#endif - - 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) - { - // Ensure type_id() is set correctly - if (t_id == -1) { - t_id = octave_swig_packed::static_type_id(); - } - } - - 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, -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::mach_info::float_format fmt) { -#else - oct_mach_info::float_format fmt) { -#endif - 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 - -#if SWIG_OCTAVE_PREREQ(4,4,0) - static void set_type_id(int type_id) { t_id=type_id; } -#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; - - if (ptr) { -#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)); - } - return octave_value(Matrix()); // null matrix -} - -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(6,0,0) - octave::interpreter *interp = octave::interpreter::the_interpreter (); - return interp->global_varval(name); -#else -#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 -#endif -} - -SWIGRUNTIME void SWIG_Octave_SetGlobalValue(std::string name, const octave_value& value) { -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::interpreter *interp = octave::interpreter::the_interpreter (); - interp->global_assign(name, value); -#elif 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_scope symscope = octave::interpreter::the_interpreter()->get_current_scope(); -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::interpreter *interp = octave::interpreter::the_interpreter (); - interp->assign(name, interp->global_varval(name)); - octave::tree_evaluator& tree_eval = interp->get_evaluator(); - octave::call_stack& callStack = tree_eval.get_call_stack(); - std::shared_ptr stackFrame = callStack.get_current_stack_frame(); - octave::symbol_record sym=symscope.lookup_symbol(name); - stackFrame->mark_global(sym); -#else - octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); - symscope.assign(name, symtab.global_varval(name)); - symscope.mark_global(name); -#endif -#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/linux/bin/swig/share/swig/4.1.0/octave/octruntime.swg b/linux/bin/swig/share/swig/4.1.0/octave/octruntime.swg deleted file mode 100755 index e76151f1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octruntime.swg +++ /dev/null @@ -1,425 +0,0 @@ -#ifdef SWIG_OCTAVE_EXTERNAL_OCTHEADERS -%insert(runtime) %{ -#include "octheaders.hpp" -%} -#else -%insert(runtime) "octheaders.hpp"; -#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(6,0,0) -#elif 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(6,0,0) -#elif 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_exit_usage = "-*- texinfo -*- \n\ -@deftypefn {Loadable Function} {} swig_exit([@var{exit_status}])\n\ -Exit Octave without performing any memory cleanup.\n\ -@end deftypefn"; - -DEFUN_DLD( swig_exit, args, nargout, swig_exit_usage ) { - if (args.length() > 1) { - error("swig_exit: must be called with at most one arguments"); - return octave_value_list(); - } - int exit_status = 0; - if (args.length() == 1) { - exit_status = args(0).int_value(); - } - ::_Exit(exit_status); - return octave_value(); -} - -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"; - -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.*, reappeared in 4.2.*, hack not possible in 4.4.* or later due to - // removal of octave_exit, so turn on for all versions between 3.2.*. and 4.4.*. - // can be turned off with macro definition. -#ifndef SWIG_OCTAVE_NO_SEGFAULT_HACK -#if !SWIG_OCTAVE_PREREQ(4,4,0) -#if SWIG_OCTAVE_PREREQ(3,2,0) - octave_exit = ::_Exit; -#endif -#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; - for (int i = 0; i < types.numel(); ++i) { - if (types(i) == octave_swig_ref::static_type_name()) { - register_octave_swig_ref = false; - octave_swig_ref::set_type_id(i); - } - if (types(i) == octave_swig_packed::static_type_name()) { - register_octave_swig_packed = false; - octave_swig_packed::set_type_id(i); - } - } - if (register_octave_swig_ref) { - octave_swig_ref::register_type(); - } - if (register_octave_swig_packed) { - octave_swig_packed::register_type(); - } - } -#else - octave_swig_ref::register_type(); - octave_swig_packed::register_type(); -#endif - SWIG_InitializeModule(0); - SWIG_PropagateClientData(); - -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); - octave::call_stack& stack = tree_eval.get_call_stack(); - octave_function *me = stack.current_function(); -#elif 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(); - } - if (!SWIG_Octave_InstallFunction(me, "swig_exit")) { - 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/linux/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg b/linux/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg deleted file mode 100755 index 80b2154d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg +++ /dev/null @@ -1,222 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg b/linux/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg deleted file mode 100755 index 4984fddf..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg +++ /dev/null @@ -1,99 +0,0 @@ - -// 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 -%runtime %{ -SWIGINTERN void SWIG_Octave_Raise(const octave_value &obj, const char *type) { - if (obj.is_string()) - error("%s", obj.string_value().c_str()); - else - error("C++ side threw an exception of type %s", type); -} -%} -#define SWIG_Raise(obj, type, desc) SWIG_Octave_Raise(obj, type) - -// 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/linux/bin/swig/share/swig/4.1.0/octave/octuserdir.swg b/linux/bin/swig/share/swig/4.1.0/octave/octuserdir.swg deleted file mode 100755 index ebb11b3a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/octuserdir.swg +++ /dev/null @@ -1,72 +0,0 @@ -/* ------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/octave/std_alloc.i b/linux/bin/swig/share/swig/4.1.0/octave/std_alloc.i deleted file mode 100755 index 35dc051b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/octave/std_basic_string.i b/linux/bin/swig/share/swig/4.1.0/octave/std_basic_string.i deleted file mode 100755 index 01a2c34a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_basic_string.i +++ /dev/null @@ -1,64 +0,0 @@ -#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/linux/bin/swig/share/swig/4.1.0/octave/std_carray.i b/linux/bin/swig/share/swig/4.1.0/octave/std_carray.i deleted file mode 100755 index e69de29b..00000000 diff --git a/linux/bin/swig/share/swig/4.1.0/octave/std_char_traits.i b/linux/bin/swig/share/swig/4.1.0/octave/std_char_traits.i deleted file mode 100755 index bf4e6c47..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/std_common.i b/linux/bin/swig/share/swig/4.1.0/octave/std_common.i deleted file mode 100755 index c8f17ba7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_common.i +++ /dev/null @@ -1,72 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/octave/std_complex.i b/linux/bin/swig/share/swig/4.1.0/octave/std_complex.i deleted file mode 100755 index 461e2fdf..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_complex.i +++ /dev/null @@ -1,25 +0,0 @@ -/* - * STD C++ complex typemaps - */ - -%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/linux/bin/swig/share/swig/4.1.0/octave/std_container.i b/linux/bin/swig/share/swig/4.1.0/octave/std_container.i deleted file mode 100755 index cab76452..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/std_deque.i b/linux/bin/swig/share/swig/4.1.0/octave/std_deque.i deleted file mode 100755 index c40cfee1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_deque.i +++ /dev/null @@ -1,25 +0,0 @@ -// 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/linux/bin/swig/share/swig/4.1.0/octave/std_except.i b/linux/bin/swig/share/swig/4.1.0/octave/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/std_list.i b/linux/bin/swig/share/swig/4.1.0/octave/std_list.i deleted file mode 100755 index 35f6c132..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_list.i +++ /dev/null @@ -1,26 +0,0 @@ -// 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/linux/bin/swig/share/swig/4.1.0/octave/std_map.i b/linux/bin/swig/share/swig/4.1.0/octave/std_map.i deleted file mode 100755 index fd15661c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_map.i +++ /dev/null @@ -1,157 +0,0 @@ -// 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/linux/bin/swig/share/swig/4.1.0/octave/std_pair.i b/linux/bin/swig/share/swig/4.1.0/octave/std_pair.i deleted file mode 100755 index 2f307380..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_pair.i +++ /dev/null @@ -1,147 +0,0 @@ -// 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/linux/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/std_string.i b/linux/bin/swig/share/swig/4.1.0/octave/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/octave/std_vector.i b/linux/bin/swig/share/swig/4.1.0/octave/std_vector.i deleted file mode 100755 index 2862b5e7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_vector.i +++ /dev/null @@ -1,26 +0,0 @@ -// 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/linux/bin/swig/share/swig/4.1.0/octave/std_wstring.i b/linux/bin/swig/share/swig/4.1.0/octave/std_wstring.i deleted file mode 100755 index dc1378ae..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/std_wstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/stl.i b/linux/bin/swig/share/swig/4.1.0/octave/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/octave/swigmove.i b/linux/bin/swig/share/swig/4.1.0/octave/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/octave/typemaps.i b/linux/bin/swig/share/swig/4.1.0/octave/typemaps.i deleted file mode 100755 index 1f9b9c43..00000000 --- a/linux/bin/swig/share/swig/4.1.0/octave/typemaps.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/Makefile.in b/linux/bin/swig/share/swig/4.1.0/perl5/Makefile.in deleted file mode 100755 index e0b3b74b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/Makefile.in +++ /dev/null @@ -1,120 +0,0 @@ -# --------------------------------------------------------------- -# SWIG Perl5 Makefile -# -# This file can be used to build various Perl5 extensions with SWIG. -# By default this file is set up for dynamic loading, but it can -# be easily customized for static extensions by modifying various -# portions of the file. -# -# SRCS = C source files -# CXXSRCS = C++ source files -# OBJCSRCS = Objective-C source files -# OBJS = Additional .o files (compiled previously) -# INTERFACE = SWIG interface file -# TARGET = Name of target module or executable -# -# Many portions of this file were created by the SWIG configure -# script and should already reflect your machine. -#---------------------------------------------------------------- - -SRCS = -CXXSRCS = -OBJCSRCS = -OBJS = -INTERFACE = -WRAPFILE = $(INTERFACE:.i=_wrap.c) -WRAPOBJ = $(INTERFACE:.i=_wrap.o) -TARGET = module@SO@ # Use this kind of target for dynamic loading -#TARGET = myperl # Use this target for static linking - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -CC = @CC@ -CXX = @CXX@ -OBJC = @CC@ -Wno-import # -Wno-import needed for gcc -CFLAGS = -INCLUDES = -LIBS = - -# SWIG Options -# SWIG = location of the SWIG executable -# SWIGOPT = SWIG compiler options -# SWIGCC = Compiler used to compile the wrapper file - -SWIG = $(exec_prefix)/bin/swig -SWIGOPT = -perl5 -SWIGCC = $(CC) - -# SWIG Library files. Uncomment this to statically rebuild Perl -#SWIGLIBS = -static -lperlmain.i - -# Rules for creating .o files from source. - -COBJS = $(SRCS:.c=.o) -CXXOBJS = $(CXXSRCS:.cxx=.o) -OBJCOBJS = $(OBJCSRCS:.m=.o) -ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) - -# Command that will be used to build the final extension. -BUILD = $(SWIGCC) - -# Uncomment the following if you are using dynamic loading -CCSHARED = @CCSHARED@ -BUILD = @LDSHARED@ - -# Uncomment the following if you are using dynamic loading with C++ and -# need to provide additional link libraries (this is not always required). - -#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ - -L/usr/local/lib -lg++ -lstdc++ -lgcc - -# Perl installation - -PERL_INCLUDE = -I@PERL5EXT@ -PERL_LIB = -L@PERL5EXT@ -lperl -PERL_FLAGS = -Dbool=char -Dexplicit= - -# Build libraries (needed for static builds) - -LIBM = @LIBM@ -LIBC = @LIBC@ -SYSLIBS = $(LIBM) $(LIBC) @LIBS@ - -# Build options - -BUILD_LIBS = $(LIBS) # Dynamic loading - -# Compilation rules for non-SWIG components - -.SUFFIXES: .c .cxx .m - -.c.o: - $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - -.cxx.o: - $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< - -.m.o: - $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - - -# ---------------------------------------------------------------------- -# Rules for building the extension -# ---------------------------------------------------------------------- - -all: $(TARGET) - -# Convert the wrapper file into an object file - -$(WRAPOBJ) : $(WRAPFILE) - $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(PERL_INCLUDE) $(PERL_FLAGS) $(WRAPFILE) - -$(WRAPFILE) : $(INTERFACE) - $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) - -$(TARGET): $(WRAPOBJ) $(ALLOBJS) - $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) - -clean: - rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/Makefile.pl b/linux/bin/swig/share/swig/4.1.0/perl5/Makefile.pl deleted file mode 100755 index cffdc8e7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/Makefile.pl +++ /dev/null @@ -1,19 +0,0 @@ -# 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/linux/bin/swig/share/swig/4.1.0/perl5/argcargv.i b/linux/bin/swig/share/swig/4.1.0/perl5/argcargv.i deleted file mode 100755 index 48a6047b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/argcargv.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - int i; - I32 len; - AV *av = (AV *)SvRV($input); - if (SvTYPE(av) != SVt_PVAV) { - SWIG_croak("in method '$symname', Expecting reference to argv array"); - goto fail; - } - len = av_len(av) + 1; - $1 = ($1_ltype) len; - $2 = (char **) malloc((len+1)*sizeof(char *)); - for (i = 0; i < len; i++) { - SV **tv = av_fetch(av, i, 0); - $2[i] = SvPV_nolen(*tv); - } - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - AV *av = (AV *)SvRV($input); - $1 = SvTYPE(av) == SVt_PVAV; -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/attribute.i b/linux/bin/swig/share/swig/4.1.0/perl5/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/carrays.i b/linux/bin/swig/share/swig/4.1.0/perl5/carrays.i deleted file mode 100755 index 8be67abc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/carrays.i +++ /dev/null @@ -1,2 +0,0 @@ -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/cdata.i b/linux/bin/swig/share/swig/4.1.0/perl5/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/cmalloc.i b/linux/bin/swig/share/swig/4.1.0/perl5/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/cpointer.i b/linux/bin/swig/share/swig/4.1.0/perl5/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/cstring.i b/linux/bin/swig/share/swig/4.1.0/perl5/cstring.i deleted file mode 100755 index ede9c596..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/director.swg b/linux/bin/swig/share/swig/4.1.0/perl5/director.swg deleted file mode 100755 index f0a6614f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/director.swg +++ /dev/null @@ -1,317 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/perl5/exception.i b/linux/bin/swig/share/swig/4.1.0/perl5/exception.i deleted file mode 100755 index b786f25e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/exception.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) -} diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/extra-install.list b/linux/bin/swig/share/swig/4.1.0/perl5/extra-install.list deleted file mode 100755 index db93830a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/extra-install.list +++ /dev/null @@ -1,2 +0,0 @@ -# see top-level Makefile.in -Makefile.pl noembed.h diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/factory.i b/linux/bin/swig/share/swig/4.1.0/perl5/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/noembed.h b/linux/bin/swig/share/swig/4.1.0/perl5/noembed.h deleted file mode 100755 index 4e30f111..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/noembed.h +++ /dev/null @@ -1,116 +0,0 @@ -/* 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/linux/bin/swig/share/swig/4.1.0/perl5/perl5.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perl5.swg deleted file mode 100755 index 693c2b94..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perl5.swg +++ /dev/null @@ -1,42 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg deleted file mode 100755 index 57296c67..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg +++ /dev/null @@ -1,34 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg deleted file mode 100755 index 45d25d1f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/linux/bin/swig/share/swig/4.1.0/perl5/perlhead.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlhead.swg deleted file mode 100755 index 773adee9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlhead.swg +++ /dev/null @@ -1,91 +0,0 @@ -#ifdef __cplusplus -/* Needed on some windows machines---since MS plays funny games with the header files under C++ */ -#include -#include -extern "C" { -#endif - -#if __GNUC__ >= 10 -#if defined(__cplusplus) -#pragma GCC diagnostic ignored "-Wvolatile" -#endif -#endif - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#if __GNUC__ >= 10 -#pragma GCC diagnostic pop -#endif - -/* PERL_REVISION was added in Perl 5.6. */ -#if !defined PERL_REVISION || (PERL_REVISION-0 == 5 && PERL_VERSION-0 < 8) -# error SWIG requires Perl >= 5.8.0 -#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 - -#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/linux/bin/swig/share/swig/4.1.0/perl5/perlinit.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlinit.swg deleted file mode 100755 index c26b93fa..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlinit.swg +++ /dev/null @@ -1,78 +0,0 @@ - -/* Export the SWIG initialization function */ -%header %{ -#ifdef __cplusplus -extern "C" -#endif -#ifndef MULTIPLICITY -SWIGEXPORT void SWIG_init (CV* cv); -#else -SWIGEXPORT void SWIG_init (pTHXo_ CV* cv); -#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/linux/bin/swig/share/swig/4.1.0/perl5/perlkw.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlkw.swg deleted file mode 100755 index 00648e0b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlkw.swg +++ /dev/null @@ -1,251 +0,0 @@ -/* 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/linux/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg deleted file mode 100755 index 4917f6ef..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg +++ /dev/null @@ -1,2 +0,0 @@ -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/perlmain.i b/linux/bin/swig/share/swig/4.1.0/perl5/perlmain.i deleted file mode 100755 index 18ecb7eb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlmain.i +++ /dev/null @@ -1,82 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/perl5/perlopers.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlopers.swg deleted file mode 100755 index e7d13b67..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlopers.swg +++ /dev/null @@ -1,54 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg deleted file mode 100755 index 4cb67567..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg +++ /dev/null @@ -1,364 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/perl5/perlrun.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlrun.swg deleted file mode 100755 index 71f19cbf..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlrun.swg +++ /dev/null @@ -1,493 +0,0 @@ -/* ----------------------------------------------------------------------------- - * perlrun.swg - * - * This file contains the runtime support for Perl modules - * and includes code for managing global variables and pointer - * type checking. - * ----------------------------------------------------------------------------- */ - -#define SWIG_PERL_OBJECT_DECL -#define SWIG_PERL_OBJECT_CALL - -/* 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 */ -#ifndef MULTIPLICITY -# define SWIG_CALLXS(_name) _name(cv) -#else -# define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) -#endif - -#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 */ - -static void SWIGUNUSED SWIG_croak_null() -{ - SV *err = get_sv("@", GV_ADD); - if (sv_isobject(err)) - croak(0); - else - croak("%s", SvPV_nolen(err)); -} - - -/* - 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; - int check_owned_pointer_release = (flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE; - - 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) || check_owned_pointer_release)) { - /* - * 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); - int owned = 0; - 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)) { - owned = 1; - if (flags & SWIG_POINTER_DISOWN) { - hv_delete_ent(hv, obj, 0, 0); - } - } - } - if (check_owned_pointer_release && !owned) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - } - - if (tsv && (flags & SWIG_POINTER_CLEAR)) { - SvIV_set(tsv, 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 */ -#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 -{ - 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/linux/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg deleted file mode 100755 index f948023d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg +++ /dev/null @@ -1,8 +0,0 @@ - -%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/linux/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg deleted file mode 100755 index 242a9c96..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg +++ /dev/null @@ -1,59 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg deleted file mode 100755 index 42f8887b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg +++ /dev/null @@ -1,104 +0,0 @@ -/* ------------------------------------------------------------ - * 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), $1_descriptor); -} - -%typemap(varout) SWIGTYPE *const = SWIGTYPE *; - diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg b/linux/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg deleted file mode 100755 index 718440e8..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg +++ /dev/null @@ -1,2 +0,0 @@ -#define %perlcode %insert("perl") - diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/reference.i b/linux/bin/swig/share/swig/4.1.0/perl5/reference.i deleted file mode 100755 index b424c533..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/reference.i +++ /dev/null @@ -1,261 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/std_common.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_common.i deleted file mode 100755 index 7c1ff232..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_common.i +++ /dev/null @@ -1,28 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/perl5/std_deque.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/std_except.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/std_list.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_list.i deleted file mode 100755 index 36678add..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_list.i +++ /dev/null @@ -1,377 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/perl5/std_map.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_map.i deleted file mode 100755 index 1b373183..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_map.i +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/perl5/std_pair.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/perl5/std_string.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_string.i deleted file mode 100755 index 6f34f184..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_string.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/std_vector.i b/linux/bin/swig/share/swig/4.1.0/perl5/std_vector.i deleted file mode 100755 index 5bfd2c5a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/std_vector.i +++ /dev/null @@ -1,592 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/perl5/swigmove.i b/linux/bin/swig/share/swig/4.1.0/perl5/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/perl5/typemaps.i b/linux/bin/swig/share/swig/4.1.0/perl5/typemaps.i deleted file mode 100755 index 3e1f60d9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/perl5/typemaps.i +++ /dev/null @@ -1,371 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/php/argcargv.i b/linux/bin/swig/share/swig/4.1.0/php/argcargv.i deleted file mode 100755 index e0093c21..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/argcargv.i +++ /dev/null @@ -1,40 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - int len, i; - zval *val; - zend_array *ar; - if (Z_TYPE($input) != IS_ARRAY) { - SWIG_PHP_Error(E_ERROR, "Type error in '$symname'. Expected array"); - goto fail; - } - ar = Z_ARR($input); - len = zend_array_count(ar); - $1 = ($1_ltype) len; - $2 = (char **) malloc((len+1)*sizeof(char *)); - i = 0; - ZEND_HASH_FOREACH_VAL(ar, val) { - if (Z_TYPE(*val) != IS_STRING) { - SWIG_PHP_Error(E_ERROR, "Array must use strings only, in '$symname'."); - goto fail; - } - if (i == len) { - SWIG_PHP_Error(E_ERROR, "Array is bigger than zend report in '$symname'."); - goto fail; - } - $2[i++] = Z_STRVAL(*val); - } ZEND_HASH_FOREACH_END(); - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - $1 = Z_TYPE($input) == IS_ARRAY; -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/linux/bin/swig/share/swig/4.1.0/php/const.i b/linux/bin/swig/share/swig/4.1.0/php/const.i deleted file mode 100755 index a74af0d7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/const.i +++ /dev/null @@ -1,103 +0,0 @@ -/* ----------------------------------------------------------------------------- - * const.i - * - * Typemaps for constants - * ----------------------------------------------------------------------------- */ -%typemap(classconsttab) int, - unsigned int, - short, - unsigned short, - long, - unsigned long, - unsigned char, - signed char, - enum SWIGTYPE %{ - zend_declare_class_constant_long(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, ($1_type)($value)); -%} - -%typemap(classconsttab) bool %{ - zend_declare_class_constant_bool(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, ($1_type)($value)); -%} - -%typemap(classconsttab) float, - double %{ - zend_declare_class_constant_double(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, $value); -%} - -%typemap(classconsttab) char %{ -{ - char swig_char = $value; - zend_declare_class_constant_stringl(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, &swig_char, 1); -} -%} - -%typemap(classconsttab) char *, - const char *, - char [], - const char [] %{ - zend_declare_class_constant_string(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, $value); -%} - -// This creates a zend_object to wrap the pointer, and we can't do that -// before the Zend runtime has been initialised so we delay it until -// RINIT. The downside is it then happens for every request. -%typemap(classconsttab,rinit=1) SWIGTYPE *, - SWIGTYPE &, - SWIGTYPE &&, - SWIGTYPE [] %{ -{ - zval z; - ZVAL_UNDEF(&z); - SWIG_SetPointerZval(&z, (void*)($value), $1_descriptor, 0); - zval_copy_ctor(&z); - zend_declare_class_constant(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, &z); -} -%} - -%typemap(classconsttab) SWIGTYPE (CLASS::*) "" - -%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);"; - -// This creates a zend_object to wrap the pointer, and we can't do that -// before the Zend runtime has been initialised so we delay it until -// RINIT. The downside is it then happens for every request. -%typemap(consttab,rinit=1) SWIGTYPE *, - SWIGTYPE &, - SWIGTYPE &&, - SWIGTYPE [] { - zend_constant c; - ZVAL_UNDEF(&c.value); - 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/linux/bin/swig/share/swig/4.1.0/php/director.swg b/linux/bin/swig/share/swig/4.1.0/php/director.swg deleted file mode 100755 index 55ffff51..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/director.swg +++ /dev/null @@ -1,180 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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_ - -#define SWIG_DIRECTOR_CAST(ARG) dynamic_cast(ARG) - -#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 { - private: - /* flag indicating whether the object is owned by PHP or C++ */ - mutable bool swig_disown_flag; - - 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) : swig_disown_flag(false) { - ZVAL_COPY_VALUE(&swig_self, self); - } - - ~Director() { - if (swig_disown_flag) { - Z_DELREF(swig_self); - } - } - - zend_object *swig_get_self() const { return Z_OBJ(swig_self); } - - void swig_disown() const { - if (!swig_disown_flag) { - swig_disown_flag = true; - Z_ADDREF(swig_self); - } - } - - 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); - } - } - }; - - /* 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; - } - // Don't replace an already active PHP exception. - if (!EG(exception)) zend_throw_exception(NULL, swig_msg.c_str(), code); - } - - 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/linux/bin/swig/share/swig/4.1.0/php/factory.i b/linux/bin/swig/share/swig/4.1.0/php/factory.i deleted file mode 100755 index 5f2b397e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/factory.i +++ /dev/null @@ -1,109 +0,0 @@ -/* - 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, phptype="?SWIGTYPE") Method { - int dcast = 0; - %formacro(%_factory_dispatch, Types) - if (!dcast) { - SWIG_SetPointerZval(return_value, SWIG_as_voidptr($1), $descriptor, $owner); - } -}%enddef diff --git a/linux/bin/swig/share/swig/4.1.0/php/php.swg b/linux/bin/swig/share/swig/4.1.0/php/php.swg deleted file mode 100755 index fd092807..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/php.swg +++ /dev/null @@ -1,594 +0,0 @@ -/* ----------------------------------------------------------------------------- - * php.swg - * - * PHP configuration file - * ----------------------------------------------------------------------------- */ - -// Default to generating PHP type declarations (for PHP >= 8) except for -// cases which are liable to cause compatibility issues with existing -// bindings. -%feature("php:type", "compat"); - -%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 - -// 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, "bool", CONVERT_BOOL_IN); - -%pass_by_val(size_t, "int", CONVERT_INT_IN); - -%pass_by_val(enum SWIGTYPE, "int", CONVERT_INT_IN); - -%pass_by_val(signed int, "int", CONVERT_INT_IN); -%pass_by_val(int,"int", CONVERT_INT_IN); -%pass_by_val(unsigned int,"int", CONVERT_INT_IN); - -%pass_by_val(signed short, "int", CONVERT_INT_IN); -%pass_by_val(short,"int", CONVERT_INT_IN); -%pass_by_val(unsigned short, "int", CONVERT_INT_IN); - -%pass_by_val(signed long, "int", CONVERT_INT_IN); -%pass_by_val(long, "int", CONVERT_INT_IN); -%pass_by_val(unsigned long, "int", CONVERT_INT_IN); - -%pass_by_val(signed long long, "int|string", CONVERT_LONG_LONG_IN); -%pass_by_val(long long, "int|string", CONVERT_LONG_LONG_IN); -%pass_by_val(unsigned long long, "int|string", CONVERT_UNSIGNED_LONG_LONG_IN); - -%pass_by_val(signed char, "int", CONVERT_INT_IN); -%pass_by_val(char, "string", CONVERT_CHAR_IN); -%pass_by_val(unsigned char, "int", CONVERT_INT_IN); - -%pass_by_val(float, "float", CONVERT_FLOAT_IN); - -%pass_by_val(double, "float", CONVERT_FLOAT_IN); - -%pass_by_val(char *, "string", 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, phptype="string") char[ANY] -%{ - convert_to_string(&$input); - $1 = ($1_ltype) Z_STRVAL($input); -%} - -%typemap(in, phptype="string") (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, phptype="SWIGTYPE") SWIGTYPE ($&1_ltype tmp) -%{ - if (SWIG_ConvertPtr(&$input, (void **) &tmp, $&1_descriptor, 0) < 0 || tmp == NULL) { - zend_type_error("Expected $&1_descriptor for argument $argnum of $symname"); - return; - } - $1 = *tmp; -%} - -%typemap(directorout) SWIGTYPE ($&1_ltype tmp) -%{ - if (SWIG_ConvertPtr($input, (void **) &tmp, $&1_descriptor, 0) < 0 || tmp == NULL) { - zend_type_error("Expected $&1_descriptor for argument $argnum of $symname"); - SWIG_fail; - } - $result = *tmp; -%} - -%typemap(in, phptype="?SWIGTYPE") SWIGTYPE *, - SWIGTYPE [] -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } -%} - -%typemap(directorout) SWIGTYPE * (swig_owntype own), - SWIGTYPE [] (swig_owntype own) -%{ - if (SWIG_ConvertPtrAndOwn($input, (void **)&$result, $1_descriptor, SWIG_POINTER_DISOWN, &own) < 0) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - SWIG_fail; - } - swig_acquire_ownership_obj((void*)$result, own); -%} - -%typemap(in, phptype="SWIGTYPE") SWIGTYPE & -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0 || $1 == NULL) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } -%} -%typemap(in, fragment="") SWIGTYPE && (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) %{ - res = SWIG_ConvertPtr(&$input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $1_descriptor of $symname"); - return; - } else { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } - } - if (!argp) { - zend_type_error("Invalid null reference for argument $argnum of $1_descriptor of $symname"); - return; - } - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -%} - -%typemap(directorout) SWIGTYPE & ($1_ltype tmp), - SWIGTYPE && ($1_ltype tmp) -%{ - if (SWIG_ConvertPtr($input, (void **) &tmp, $1_descriptor, 0) < 0 || tmp == NULL) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - SWIG_fail; - } - $result = tmp; -%} - -%typemap(in, phptype="?SWIGTYPE") SWIGTYPE *const& ($*ltype temp) -%{ - if (SWIG_ConvertPtr(&$input, (void **) &temp, $*1_descriptor, 0) < 0) { - zend_type_error("Expected $*1_descriptor for argument $argnum of $symname"); - return; - } - $1 = ($1_ltype)&temp; -%} - -%typemap(in, phptype="?SWIGTYPE") SWIGTYPE *DISOWN -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, SWIG_POINTER_DISOWN) < 0) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } -%} - -%typemap(argout) SWIGTYPE *, - SWIGTYPE [], - SWIGTYPE &, - SWIGTYPE &&; - -%typemap(in, phptype="?SWIGTYPE") void * -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, 0, 0) < 0) { - /* Allow NULL from php for void* */ - if (Z_ISNULL($input)) { - $1=0; - } else { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } - } -%} - -/* Special case when void* is passed by reference so it can be made to point - to opaque api structs */ -%typemap(in, phptype="?SWIG\\_p_void", byref=1) 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 */ - zend_throw_exception(zend_ce_type_error, "Type error in argument $arg of $symname", 0); - goto fail; - } - } - 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 && Z_ISREF($input)) { - SWIG_SetPointerZval(Z_REFVAL($input), (void*) ptr$argnum, $*1_descriptor, 1); - } -%} - -/* Typemap for output values */ - -%typemap(out, phptype="int") - int, - unsigned int, - short, - unsigned short, - long, - unsigned long, - signed char, - unsigned char, - size_t -%{ - RETVAL_LONG($1); -%} - -%typemap(out, phptype="int") enum SWIGTYPE -%{ - RETVAL_LONG((long)$1); -%} - -%typemap(out, phptype="int|string") long long -%{ - if ((long long)LONG_MIN <= $1 && $1 <= (long long)LONG_MAX) { - RETVAL_LONG((long)($1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%lld", (long long)$1)); - } -%} -%typemap(out, phptype="int|string") unsigned long long -%{ - if ($1 <= (unsigned long long)LONG_MAX) { - RETVAL_LONG((long)($1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%llu", (unsigned long long)$1)); - } -%} - -%typemap(out, phptype="int") - 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, phptype="int") const enum SWIGTYPE & -%{ - RETVAL_LONG((long)*$1); -%} - -%typemap(out, phptype="int") const enum SWIGTYPE && -%{ - RETVAL_LONG((long)*$1); -%} - -%typemap(out, phptype="int|string") const long long & -%{ - if ((long long)LONG_MIN <= *$1 && *$1 <= (long long)LONG_MAX) { - RETVAL_LONG((long)(*$1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%lld", (long long)(*$1))); - } -%} -%typemap(out, phptype="int|string") const unsigned long long & -%{ - if (*$1 <= (unsigned long long)LONG_MAX) { - RETVAL_LONG((long)(*$1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%llu", (unsigned long long)(*$1))); - } -%} - -%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, phptype="bool") bool -%{ - RETVAL_BOOL(($1) ? 1 : 0); -%} - -%typemap(out, phptype="bool") const bool & -%{ - RETVAL_BOOL((*$1) ? 1 : 0); -%} - -%typemap(directorin) bool -%{ - ZVAL_BOOL($input, ($1) ? 1 : 0); -%} - -%typemap(out, phptype="float") float, - double -%{ - RETVAL_DOUBLE($1); -%} - -%typemap(out, phptype="float") const float &, - const double & -%{ - RETVAL_DOUBLE(*$1); -%} - -%typemap(directorin) float, - double -%{ - ZVAL_DOUBLE($input, $1); -%} - -%typemap(out, phptype="string") char -%{ - RETVAL_STRINGL(&$1, 1); -%} - -%typemap(out, phptype="string") const char & -%{ - RETVAL_STRINGL(&*$1, 1); -%} - -%typemap(out, phptype="string") char [] -%{ - RETVAL_STRING((const char *)$1); -%} - -%typemap(out, phptype="?string") char * -%{ - if (!$1) { - RETVAL_NULL(); - } else { - RETVAL_STRING((const char *)$1); - } -%} - -%typemap(out, phptype="?string") char *& -%{ - if (!*$1) { - RETVAL_NULL(); - } else { - RETVAL_STRING((const char *)*$1); - } -%} - -%typemap(out, phptype="?SWIGTYPE") SWIGTYPE * -%{ - SWIG_SetPointerZval($result, (void *)$1, $1_descriptor, $owner); -%} - -%typemap(out, phptype="SWIGTYPE") - SWIGTYPE [], - SWIGTYPE &, - SWIGTYPE && -%{ - SWIG_SetPointerZval($result, (void *)$1, $1_descriptor, $owner); -%} - -%typemap(out, phptype="?SWIGTYPE") SWIGTYPE *const& -%{ - SWIG_SetPointerZval($result, (void *)*$1, $*1_descriptor, $owner); -%} - -%typemap(directorin) SWIGTYPE *, - SWIGTYPE [], - SWIGTYPE &, - SWIGTYPE && -%{ - ZVAL_UNDEF($input); - SWIG_SetPointerZval($input, (void *)&$1, $1_descriptor, $owner); -%} - -%typemap(out, phptype="SWIGTYPE") SWIGTYPE (CLASS::*) -{ - void * p = emalloc(sizeof($1)); - memcpy(p, &$1, sizeof($1)); - SWIG_SetPointerZval($result, (void *)p, $&1_descriptor, 1); -} - -%typemap(in, phptype="SWIGTYPE") SWIGTYPE (CLASS::*) -{ - void * p = SWIG_Z_FETCH_OBJ_P(&$input)->ptr; - memcpy(&$1, p, sizeof($1)); -} - -%typemap(out, phptype="?SWIGTYPE") SWIGTYPE *DYNAMIC -{ - swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor, (void **) &$1); - SWIG_SetPointerZval($result, (void *)$1, ty, $owner); -} - -%typemap(out, phptype="SWIGTYPE") SWIGTYPE &DYNAMIC -{ - swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor, (void **) &$1); - SWIG_SetPointerZval($result, (void *)$1, ty, $owner); -} - -%typemap(out, phptype="SWIGTYPE") SWIGTYPE -{ -#ifdef __cplusplus - $&1_ltype resultobj = new $1_ltype($1); -#else - $&1_ltype resultobj = ($&1_ltype) malloc(sizeof($1_type)); - memcpy(resultobj, &$1, sizeof($1_type)); -#endif - SWIG_SetPointerZval($result, (void *)resultobj, $&1_descriptor, 1); -} - -%typemap(directorin) SWIGTYPE -%{ - ZVAL_UNDEF($input); - SWIG_SetPointerZval($input, (new $1_ltype(SWIG_STD_MOVE($1))), $&1_descriptor, 1); -%} - -%typemap(out, phptype="void") void "" - -%typemap(out, phptype="string") char [ANY] -{ - size_t 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 *& - " $1 = (Z_TYPE($input) == IS_STRING || Z_TYPE($input) == IS_NULL); " - -%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) 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); - goto fail; -%} - -%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE *, SWIGTYPE [], SWIGTYPE [ANY] %{ - (void)$1; - zend_throw_exception(NULL, "C++ $1_type exception thrown", 0); - goto fail; -%} - -%typemap(throws) char * %{ - zend_throw_exception(NULL, $1, 0); - goto fail; -%} - -/* 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 - -/* PHP known interfaces */ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/php/phpinit.swg b/linux/bin/swig/share/swig/4.1.0/php/phpinit.swg deleted file mode 100755 index ae72a10a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/phpinit.swg +++ /dev/null @@ -1,16 +0,0 @@ - -/* ------------------------------------------------------------ - * The start of the PHP initialization function - * ------------------------------------------------------------ */ - -%insert(init) "swiginit.swg" - -%init %{ -SWIG_php_minit { - zend_class_entry SWIGUNUSED internal_ce; - SWIG_InitializeModule((void*)&module_number); -#if PHP_MAJOR_VERSION == 8 && PHP_MINOR_VERSION == 0 - /* This hack is needed to avoid segfaults. */ - EG(class_table) = CG(class_table); -#endif -%} diff --git a/linux/bin/swig/share/swig/4.1.0/php/phpinterfaces.i b/linux/bin/swig/share/swig/4.1.0/php/phpinterfaces.i deleted file mode 100755 index 5b1da8b7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/phpinterfaces.i +++ /dev/null @@ -1,62 +0,0 @@ -/* ----------------------------------------------------------------------------- - * phpinterfaces.i - * - * Define "known" PHP interfaces. - * - * These can be added at MINIT time (which is when PHP loads the extension - * module). - * - * Any interface can be added via phpinterfaces, but looking up the - * zend_class_entry by name has to wait until RINIT time, which means it - * happens for every request. - * ----------------------------------------------------------------------------- */ - -// Note: Abstract interfaces such as "Traversable" can't be used in -// "implements" so are not relevant here. - -%insert(header) %{ - -#define SWIG_PHP_INTERFACE_Iterator_CE zend_ce_iterator -#define SWIG_PHP_INTERFACE_Iterator_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_IteratorAggregate_CE zend_ce_aggregate -#define SWIG_PHP_INTERFACE_IteratorAggregate_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_ArrayAccess_CE zend_ce_arrayaccess -#define SWIG_PHP_INTERFACE_ArrayAccess_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_Serializable_CE zend_ce_serializable -#define SWIG_PHP_INTERFACE_Serializable_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_Countable_CE zend_ce_countable -#define SWIG_PHP_INTERFACE_Countable_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_OuterIterator_CE spl_ce_OuterIterator -#define SWIG_PHP_INTERFACE_OuterIterator_HEADER "ext/spl/spl_iterators.h" - -#define SWIG_PHP_INTERFACE_RecursiveIterator_CE spl_ce_RecursiveIterator -#define SWIG_PHP_INTERFACE_RecursiveIterator_HEADER "ext/spl/spl_iterators.h" - -#define SWIG_PHP_INTERFACE_SeekableIterator_CE spl_ce_SeekableIterator -#define SWIG_PHP_INTERFACE_SeekableIterator_HEADER "ext/spl/spl_iterators.h" - -#define SWIG_PHP_INTERFACE_SplObserver_CE spl_ce_SplObserver -#define SWIG_PHP_INTERFACE_SplObserver_HEADER "ext/spl/spl_observer.h" - -#define SWIG_PHP_INTERFACE_SplSubject_CE spl_ce_SplSubject -#define SWIG_PHP_INTERFACE_SplSubject_HEADER "ext/spl/spl_observer.h" - -#define SWIG_PHP_INTERFACE_DateTimeInterface_CE php_date_get_interface_ce() -#define SWIG_PHP_INTERFACE_DateTimeInterface_HEADER "ext/date/php_date.h" - -// The "json" extension needs to be loaded earlier that us for this to work. -#define SWIG_PHP_INTERFACE_JsonSerializable_CE php_json_serializable_ce -#define SWIG_PHP_INTERFACE_JsonSerializable_HEADER "ext/json/php_json.h" - -// New in PHP 8.0. -#if PHP_MAJOR_VERSION >= 8 -# define SWIG_PHP_INTERFACE_Stringable_CE zend_ce_stringable -# define SWIG_PHP_INTERFACE_Stringable_HEADER "zend_interfaces.h" -#endif - -%} diff --git a/linux/bin/swig/share/swig/4.1.0/php/phpkw.swg b/linux/bin/swig/share/swig/4.1.0/php/phpkw.swg deleted file mode 100755 index 443ac8bf..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/phpkw.swg +++ /dev/null @@ -1,888 +0,0 @@ -/* ----------------------------------------------------------------------------- - * phpkw.swg - * ----------------------------------------------------------------------------- */ - -/* Keyword (case insensitive) */ -#define PHPKW(x) %keywordwarn("'" `x` "' is a PHP keyword",sourcefmt="%(lower)s",rename="c_%s") `x` - -/* Keyword, except ok as a function */ -#define PHPKW_ok_as_function(x) %keywordwarn("'" `x` "' is a PHP keyword, renaming to 'c_" `x` "'",%$not %$isfunction,sourcefmt="%(lower)s",rename="c_%s") `x` - -/* Class (case insensitive) */ -#define PHPCN(x) %keywordwarn("'" `x` "' is a PHP reserved class name",%$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",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(fn); // as of PHP 7.4 -PHPKW(for); -PHPKW(foreach); -PHPKW(function); -PHPKW(global); -PHPKW(goto); -PHPKW(if); -PHPKW(implements); -PHPKW(instanceof); -PHPKW(insteadof); -PHPKW(interface); -PHPKW(match); // as of PHP 8.0 -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); - -/* PHP 8.1 made `readonly` a keyword, but (unlike any other keyword it seems) - * it may still be used as a function name. - */ -PHPKW_ok_as_function(readonly); - -// 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(PHP_FLOAT_DIG); // Since 7.2.0 -PHPBN2(PHP_FLOAT_EPSILON); // Since 7.2.0 -PHPBN2(PHP_FLOAT_MIN); // Since 7.2.0 -PHPBN2(PHP_FLOAT_MAX); // Since 7.2.0 -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(PHP_FD_SETSIZE); // Since 7.1.0 -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_RECOVERABLE_ERROR); -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); -/* Since 7.4.0 (Microsoft Windows only) */ -PHPBN2(PHP_WINDOWS_EVENT_CTRL_C); -PHPBN2(PHP_WINDOWS_EVENT_CTRL_BREAK); -/* 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(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. */ -/* Check is case insensitive - these *MUST* be listed in lower case here. */ -PHPCN(directory); -PHPCN(stdclass); -PHPCN(__php_incomplete_class); -PHPCN(exception); -PHPCN(errorexception); -PHPCN(php_user_filter); -PHPCN(closure); -PHPCN(generator); -PHPCN(self); -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 -/* Predefined interfaces and classes, introduced in PHP 7.0.0 */ -PHPCN(arithmeticerror); -PHPCN(assertionerror); -PHPCN(divisionbyzeroerror); -PHPCN(error); -PHPCN(throwable); -PHPCN(parseerror); -PHPCN(typeerror); -/* 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 PHPKW_ok_as_function -#undef PHPBN1a -#undef PHPBN1b -#undef PHPBN1 -#undef PHPBN2a -#undef PHPBN2b -#undef PHPBN2 -#undef PHPCN -#undef PHPFN diff --git a/linux/bin/swig/share/swig/4.1.0/php/phppointers.i b/linux/bin/swig/share/swig/4.1.0/php/phppointers.i deleted file mode 100755 index a4ff3c0b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/phppointers.i +++ /dev/null @@ -1,42 +0,0 @@ -%define %pass_by_ref( TYPE, PHP_TYPE, CONVERT_IN, CONVERT_OUT ) -%typemap(in,byref=1,phptype=PHP_TYPE) TYPE *REF ($*1_ltype tmp), - TYPE &REF ($*1_ltype tmp) -%{ - if (Z_ISREF($input)) { - CONVERT_IN(tmp, $*1_ltype, $input); - $1 = &tmp; - } else { - zend_type_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, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed int, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( int, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( unsigned int, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed short, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( short, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( unsigned short, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed long, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( long, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( unsigned long, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed char, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( char, "string", CONVERT_CHAR_IN, ZVAL_STRING ); -%pass_by_ref( unsigned char, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( float, "float", CONVERT_FLOAT_IN, ZVAL_DOUBLE ); -%pass_by_ref( double, "float", CONVERT_FLOAT_IN, ZVAL_DOUBLE ); - -%pass_by_ref( char *, "string", CONVERT_CHAR_IN, ZVAL_STRING ); diff --git a/linux/bin/swig/share/swig/4.1.0/php/phprun.swg b/linux/bin/swig/share/swig/4.1.0/php/phprun.swg deleted file mode 100755 index d3ad0d26..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/phprun.swg +++ /dev/null @@ -1,272 +0,0 @@ -/* ----------------------------------------------------------------------------- - * phprun.swg - * - * PHP runtime library - * ----------------------------------------------------------------------------- */ - -#define swig_owntype int - -#ifdef __cplusplus -extern "C" { -#endif - -#if PHP_MAJOR_VERSION < 7 -# error These bindings need PHP 7 or later - to generate PHP5 bindings use: SWIG < 4.0.0 and swig -php5 -#endif - -#include "zend_inheritance.h" -#include "zend_exceptions.h" -#include "zend_inheritance.h" - -#if PHP_MAJOR_VERSION == 7 -/* These macros were new in PHP 8.0. For PHP 7.x we define them to give the - * same result except without any type declarations. PHP 7.x supports type - * declarations, but not for the return type, and alternate types aren't - * supported, so we don't try to support these. - */ -# define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(name, byref, num_req, classes, types) \ - ZEND_BEGIN_ARG_INFO_EX(name, 0, byref, num_req) -# define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(name, byref, num_req, types) \ - ZEND_BEGIN_ARG_INFO_EX(name, 0, byref, num_req) - -/* NB We can just ignore `default` here we currently always pass NULL for it - * (this mechanism for specifying default parameter values was new in PHP 8.0 - * so it's not useful while we still want to support PHP7 too). - */ -# define ZEND_ARG_OBJ_TYPE_MASK(byref, name, classes, types, default) \ - ZEND_ARG_INFO(byref, name) -# define ZEND_ARG_TYPE_MASK(byref, name, types, default) \ - ZEND_ARG_INFO(byref, name) -#endif - -#include /* for abort(), used in generated code. */ - -#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 was 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 - -/* zend_object_alloc was new in PHP 7.3. */ -#if PHP_MAJOR_VERSION == 7 && PHP_MINOR_VERSION < 3 -static zend_always_inline void *zend_object_alloc(size_t obj_size, zend_class_entry *ce) { - void *obj = emalloc(obj_size + zend_object_properties_size(ce)); - memset(obj, 0, obj_size - sizeof(zval)); - return obj; -} -#endif - -/* ZEND_THIS was new in PHP 7.4. */ -#ifndef ZEND_THIS -# define ZEND_THIS &EX(This) -#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 { zend_throw_exception(NULL, msg, code); SWIG_fail; } while (0) - -#define SWIG_contract_assert(expr,msg) \ - do { if (!(expr)) zend_printf("Contract Assert Failed %s\n", msg); } while (0) - -/* Standard SWIG API */ -#define SWIG_GetModule(clientdata) SWIG_Php_GetModule() -#define SWIG_SetModule(clientdata, pointer) SWIG_Php_SetModule(pointer, *(int*)clientdata) - -static zend_class_entry SWIG_Php_swig_wrapped_interface_ce; - -#if PHP_MAJOR_VERSION == 7 -/* zend_class_implements_interface() was new in PHP 8.0. - * - * We could use instanceof_function_ex(C, I, 1) here for 7.4, but for 7.3 - * and earlier that doesn't work, so instead we just provide a compatibility - * implementation which does what zend_class_implements_interface() does in 8.x - * and use that for all 7.x so there are fewer variants to worry about testing. - */ -static int zend_class_implements_interface(const zend_class_entry *class_ce, const zend_class_entry *interface_ce) { - uint32_t i; - if (class_ce->num_interfaces) { - for (i = 0; i < class_ce->num_interfaces; i++) { - if (class_ce->interfaces[i] == interface_ce) { - return 1; - } - } - } - return 0; -} -#endif - -/* used to wrap returned objects in so we know whether they are newobject - and need freeing, or not */ -typedef struct { - void * ptr; - int newobject; - const swig_type_info * type; - zend_object std; -} swig_object_wrapper; - -#define SWIG_Z_FETCH_OBJ_P(zv) swig_php_fetch_object(Z_OBJ_P(zv)) - -static inline -swig_object_wrapper * swig_php_fetch_object(zend_object *obj) { - return (swig_object_wrapper *)((char *)obj - XtOffsetOf(swig_object_wrapper, std)); -} - -#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) { - // Return PHP NULL for a C/C++ NULL pointer. - if (!ptr) { - ZVAL_NULL(z); - return; - } - - if (!type->clientdata) { - zend_type_error("Type: %s not registered with zend", type->name); - return; - } - - { - zend_object *obj; - swig_object_wrapper *value; - if (Z_TYPE_P(z) == IS_OBJECT) { - /* The PHP object is already initialised - this is the case when wrapping - * the return value from a PHP constructor. */ - obj = Z_OBJ_P(z); - } else { - zend_class_entry *ce = (zend_class_entry*)(type->clientdata); - obj = ce->create_object(ce); - ZVAL_OBJ(z, obj); - } - value = swig_php_fetch_object(obj); - value->ptr = ptr; - value->newobject = (newobject & 1); - value->type = type; - } -} - -/* We wrap C/C++ pointers as PHP objects. */ -static int -SWIG_ConvertPtrAndOwn(zval *z, void **ptr, swig_type_info *ty, int flags, swig_owntype *own) { - if (own) - *own = 0; - - if (z == NULL) { - *ptr = 0; - return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; - } - - switch (Z_TYPE_P(z)) { - case IS_OBJECT: { - zend_object *obj = Z_OBJ_P(z); - swig_object_wrapper *value; - if (ty && ty->clientdata == (void*)obj->ce) { - // Object is exactly the class asked for - this handles common cases cheaply, - // and in particular the PHP classes we use to wrap a pointer to a non-class. - } else if (!zend_class_implements_interface(obj->ce, &SWIG_Php_swig_wrapped_interface_ce)) { - // Not an object we've wrapped. - return -1; - } - - /* convert and cast value->ptr from value->type to ptr as ty. */ - value = swig_php_fetch_object(obj); - if (!ty) { - /* They don't care about the target type, so just pass on the pointer! */ - *ptr = value->ptr; - } else { - swig_cast_info *tc = SWIG_TypeCheck(value->type->name, ty); - if (tc) { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc, value->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 |= SWIG_CAST_NEW_MEMORY; - } - } else { - *ptr = NULL; - } - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !value->newobject) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (*ptr == NULL) - return SWIG_ERROR; /* should be SWIG_NullReferenceError?? */ - if (flags & SWIG_POINTER_DISOWN) { - value->newobject = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - value->ptr = 0; - } - } - - return SWIG_OK; - } - case IS_NULL: - *ptr = 0; - return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; - } - - return -1; -} - -static int -SWIG_ConvertPtr(zval *z, void **ptr, swig_type_info *ty, int flags) { - return SWIG_ConvertPtrAndOwn(z, ptr, ty, flags, 0); -} - -static const char const_name[] = "swig_runtime_data_type_pointer"; -static swig_module_info *SWIG_Php_GetModule(void) { - 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); -} - -/* Common parts of the "create_object" object handler. */ -static zend_object *SWIG_Php_do_create_object(zend_class_entry *ce, zend_object_handlers *handlers) { - swig_object_wrapper *obj = (swig_object_wrapper*)zend_object_alloc(sizeof(swig_object_wrapper), ce); - zend_object_std_init(&obj->std, ce); - object_properties_init(&obj->std, ce); - obj->std.handlers = handlers; - obj->newobject = 1; - return &obj->std; -} - -/* Common parts of the "free_obj" object handler. - Returns void* pointer if the C/C++ object should be destroyed. */ -static void* SWIG_Php_free_obj(zend_object *object) { - if (object) { - swig_object_wrapper *obj = swig_php_fetch_object(object); - zend_object_std_dtor(&obj->std); - if (obj->newobject) return obj->ptr; - } - return NULL; -} diff --git a/linux/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i deleted file mode 100755 index 28409165..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(&$input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $descriptor(TYPE *) of $symname"); - return; - } else { - zend_type_error("Expected $descriptor(TYPE *) for argument $argnum of $symname"); - return; - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - SWIG_SetPointerZval($result, (void *)$1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(&$input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/php/std_common.i b/linux/bin/swig/share/swig/4.1.0/php/std_common.i deleted file mode 100755 index 1b69fc77..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/std_common.i +++ /dev/null @@ -1,9 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_common.i - * - * SWIG typemaps for STL - common utilities - * ----------------------------------------------------------------------------- */ - -%include - -%apply size_t { std::size_t }; diff --git a/linux/bin/swig/share/swig/4.1.0/php/std_deque.i b/linux/bin/swig/share/swig/4.1.0/php/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/php/std_map.i b/linux/bin/swig/share/swig/4.1.0/php/std_map.i deleted file mode 100755 index fed3cf0b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/std_map.i +++ /dev/null @@ -1,82 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/php/std_pair.i b/linux/bin/swig/share/swig/4.1.0/php/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/php/std_string.i b/linux/bin/swig/share/swig/4.1.0/php/std_string.i deleted file mode 100755 index b2039786..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/std_string.i +++ /dev/null @@ -1,90 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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, phptype="string") string %{ - convert_to_string(&$input); - $1.assign(Z_STRVAL($input), Z_STRLEN($input)); - %} - - %typemap(directorout) string %{ - convert_to_string($input); - $result.assign(Z_STRVAL_P($input), Z_STRLEN_P($input)); - %} - - %typemap(out, phptype="string") string %{ - ZVAL_STRINGL($result, $1.data(), $1.size()); - %} - - %typemap(directorin) string, const string& %{ - ZVAL_STRINGL($input, $1.data(), $1.size()); - %} - - %typemap(out, phptype="string") const string & %{ - ZVAL_STRINGL($result, $1->data(), $1->size()); - %} - - %typemap(throws) string, const string& %{ - zend_throw_exception(NULL, $1.c_str(), 0); - goto fail; - %} - - %typemap(in, phptype="string") 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, phptype="string") 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) %{ - 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/linux/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i deleted file mode 100755 index 1bf31595..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(&$input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $descriptor(TYPE *) of $symname"); - return; - } else { - zend_type_error("Expected $descriptor(TYPE *) for argument $argnum of $symname"); - return; - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - SWIG_SetPointerZval($result, (void *)$1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(&$input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/php/std_vector.i b/linux/bin/swig/share/swig/4.1.0/php/std_vector.i deleted file mode 100755 index 382b37ca..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/std_vector.i +++ /dev/null @@ -1,114 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/php/swigmove.i b/linux/bin/swig/share/swig/4.1.0/php/swigmove.i deleted file mode 100755 index b16a3c54..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/swigmove.i +++ /dev/null @@ -1,24 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(&$input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $&1_descriptor of $symname"); - return; - } else { - zend_type_error("Expected $&1_descriptor for argument $argnum of $symname"); - return; - } - } - if (!argp) { - zend_type_error("Invalid null reference for argument $argnum of $&1_descriptor of $symname"); - return; - } - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/linux/bin/swig/share/swig/4.1.0/php/typemaps.i b/linux/bin/swig/share/swig/4.1.0/php/typemaps.i deleted file mode 100755 index 718469ed..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/typemaps.i +++ /dev/null @@ -1,295 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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, phptype="bool") 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, phptype="float") 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, phptype="float") 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, phptype="float") 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, phptype="int") 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, phptype="int") 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 { - ZVAL_NEW_STR(&o, zend_strpprintf(0, "%lld", (long long)temp$argnum)); - } - t_output_helper($result, &o); -} -%typemap(in, phptype="int|string") 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 { - ZVAL_NEW_STR(&$arg, zend_strpprintf(0, "%lld", (long long)lvalue$argnum)); - } -%} -%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 { - ZVAL_NEW_STR($result, zend_strpprintf(0, "%lld", (long long)(*arg$argnum))); - } -%} - -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 { - ZVAL_NEW_STR(&o, zend_strpprintf(0, "%llu", (unsigned long long)temp$argnum)); - } - t_output_helper($result, &o); -} -%typemap(in, phptype="int|string") 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 { - ZVAL_NEW_STR((*$arg), zend_strpprintf(0, "%llu", (unsigned long long)lvalue$argnum)); - } -%} -%typemap(argout) unsigned long long &OUTPUT -%{ - if (*arg$argnum <= (unsigned long long)LONG_MAX) { - ZVAL_LONG($result, (long)(*arg$argnum)); - } else { - ZVAL_NEW_STR($result, zend_strpprintf(0, "%llu", (unsigned long long)(*arg$argnum))); - } -%} - -%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, phptype="string") 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,phptype="?SWIGTYPE") 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 */ - zend_type_error("Expected reference or NULL for argument $arg of $symname"); - return; - } - } - 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/linux/bin/swig/share/swig/4.1.0/php/utils.i b/linux/bin/swig/share/swig/4.1.0/php/utils.i deleted file mode 100755 index 33db942a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/php/utils.i +++ /dev/null @@ -1,115 +0,0 @@ - -%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 == '\0' && !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 == '\0' && !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, PHP_TYPE, CONVERT_IN ) -%typemap(in, phptype=PHP_TYPE) TYPE -%{ - CONVERT_IN($1,$1_ltype,$input); -%} -%typemap(in, phptype=PHP_TYPE) const TYPE & ($*1_ltype temp) -%{ - CONVERT_IN(temp,$*1_ltype,$input); - $1 = &temp; -%} -%typemap(directorout) TYPE -%{ - CONVERT_IN($result, $1_ltype, *$input); -%} -%typemap(directorout) const TYPE & -%{ - $*1_ltype swig_val; - CONVERT_IN(swig_val, $*1_ltype, *$input); - $1_ltype temp = new $*1_ltype(swig_val); - swig_acquire_ownership(temp); - $result = temp; -%} -%typemap(directorfree) const TYPE & -%{ - if (director) { - director->swig_release_ownership(%as_voidptr($input)); - } -%} -%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/linux/bin/swig/share/swig/4.1.0/pointer.i b/linux/bin/swig/share/swig/4.1.0/pointer.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/python/Makefile.in b/linux/bin/swig/share/swig/4.1.0/python/Makefile.in deleted file mode 100755 index 27c38444..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/Makefile.in +++ /dev/null @@ -1,119 +0,0 @@ -# --------------------------------------------------------------- -# SWIG Python Makefile -# -# This file can be used to build various Python extensions with SWIG. -# By default this file is set up for dynamic loading, but it can -# be easily customized for static extensions by modifying various -# portions of the file. -# -# SRCS = C source files -# CXXSRCS = C++ source files -# OBJCSRCS = Objective-C source files -# OBJS = Additional .o files (compiled previously) -# INTERFACE = SWIG interface file -# TARGET = Name of target module or executable -# -# Many portions of this file were created by the SWIG configure -# script and should already reflect your machine. -#---------------------------------------------------------------- - -SRCS = -CXXSRCS = -OBJCSRCS = -OBJS = -INTERFACE = -WRAPFILE = $(INTERFACE:.i=_wrap.c) -WRAPOBJ = $(INTERFACE:.i=_wrap.o) -TARGET = module@SO@ # Use this kind of target for dynamic loading -#TARGET = mypython # Use this target for static linking - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -CC = @CC@ -CXX = @CXX@ -OBJC = @CC@ -Wno-import # -Wno-import needed for gcc -CFLAGS = -INCLUDES = -LIBS = - -# SWIG Options -# SWIG = location of the SWIG executable -# SWIGOPT = SWIG compiler options -# SWIGCC = Compiler used to compile the wrapper file - -SWIG = $(exec_prefix)/bin/swig -SWIGOPT = -python -SWIGCC = $(CC) - -# SWIG Library files. Uncomment if rebuilding the Python interpreter -#SWIGLIBS = -lembed.i - -# Rules for creating .o files from source. - -COBJS = $(SRCS:.c=.o) -CXXOBJS = $(CXXSRCS:.cxx=.o) -OBJCOBJS = $(OBJCSRCS:.m=.o) -ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) - -# Command that will be used to build the final extension. -BUILD = $(SWIGCC) - -# Uncomment the following if you are using dynamic loading -CCSHARED = @CCSHARED@ -BUILD = @LDSHARED@ - -# Uncomment the following if you are using dynamic loading with C++ and -# need to provide additional link libraries (this is not always required). - -#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ - -L/usr/local/lib -lg++ -lstdc++ -lgcc - -# Python installation - -PY_INCLUDE = -DHAVE_CONFIG_H @PYINCLUDE@ -PY_LIB = @PYLIB@ - -# Build libraries (needed for static builds) - -LIBM = @LIBM@ -LIBC = @LIBC@ -SYSLIBS = $(LIBM) $(LIBC) @LIBS@ - -# Build options - -BUILD_LIBS = $(LIBS) # Dynamic loading - -# Compilation rules for non-SWIG components - -.SUFFIXES: .c .cxx .m - -.c.o: - $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - -.cxx.o: - $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< - -.m.o: - $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - - -# ---------------------------------------------------------------------- -# Rules for building the extension -# ---------------------------------------------------------------------- - -all: $(TARGET) - -# Convert the wrapper file into an object file - -$(WRAPOBJ) : $(WRAPFILE) - $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDES) $(PY_INCLUDE) - -$(WRAPFILE) : $(INTERFACE) - $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) - -$(TARGET): $(WRAPOBJ) $(ALLOBJS) - $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) - -clean: - rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/linux/bin/swig/share/swig/4.1.0/python/README b/linux/bin/swig/share/swig/4.1.0/python/README deleted file mode 100755 index 70968e7d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/README +++ /dev/null @@ -1,103 +0,0 @@ -/* ----------------------------------------------------------------------------- - * - * User interfaces: include these ones as needed - * - * ----------------------------------------------------------------------------- */ - -/* ----------------------------------------------------------------------------- - * Special types and user helpers - * ----------------------------------------------------------------------------- */ - -argcargv.i Handler for (int argc, char **argv) -attribute.i Convert a pair of set/get methods into a "native" python attribute -ccomplex.i C99 complex type -complex.i C99 or C++ complex type -cstring.i Various forms of C character string handling -cwstring.i Various forms of C wchar_t string handling -embed.i embedding the Python interpreter in something else -file.i FILE C type -implicit.i Allow the use of implicit C++ constructors -wchar.i wchar_t C type - -/* ----------------------------------------------------------------------------- - * C++ STD + STL - * ----------------------------------------------------------------------------- */ - -std_alloc.i allocator -std_basic_string.i basic string -std_char_traits.i char traits -std_complex.i complex -std_deque.i deque -std_except.i exceptions -std_ios.i ios -std_iostream.i istream/ostream -std_list.i list -std_map.i map -std_multimap.i multimap -std_multiset.i multiset -std_pair.i pair -std_set.i set -std_sstream.i string stream -std_streambuf.i streambuf -std_string.i string -std_vector.i vector -std_wios.i wios -std_wiostream.i wistream/wostream -std_wsstream.i wstring stream -std_wstreambuf.i wstreambuf -std_wstring.i wstring - - - -/* ----------------------------------------------------------------------------- -/* - * Implementation files: don't look at them unless you are really drunk - * - * ----------------------------------------------------------------------------- */ - -/* ----------------------------------------------------------------------------- - * Basic files - * ----------------------------------------------------------------------------- */ - -python.swg Main language file, it just includes what is needed. -pyuserdir.swg User visible directives (%pythonnondynamic, etc) -pymacros.swg Internal macros used for typemaps -pyfragments.swg Allow the user to overload the default fragments -pyopers.swg Python operations (+=, *=, etc) -pythonkw.swg Python keywords and special names -pyinit.swg Python Init method - -/* ----------------------------------------------------------------------------- - * The runtime part - * ----------------------------------------------------------------------------- */ - -pyruntime.swg Main runtime file definition -pyapi.swg SWIG/Python API declarations -pyrun.swg Python run-time code - -/* ----------------------------------------------------------------------------- - * Internal typemap specializations - * ----------------------------------------------------------------------------- */ - -pyswigtype.swg SWIGTYPE -pystrings.swg Char strings (char *) -pywstrings.swg Wchar Strings (wchar_t *) -pyprimtypes.swg Primitive types (shot,int,double,etc) -pycomplex.swg PyComplex and helper for C/C++ complex types -pydocs.swg Typemaps documentation - -/* ----------------------------------------------------------------------------- - * C++ STD + STL - * ----------------------------------------------------------------------------- */ - -pycontainer.swg python container iterators -std_common.i general common code for the STD/STL implementation -std_container.i general common code for the STD/STL containers - - -/*----------------------------------------------------------------------------- - * Backward compatibility and deprecated - * ----------------------------------------------------------------------------- */ - -std_vectora.i vector + allocator (allocators are now supported in STD/STL) -typemaps.i old in/out typemaps (doesn't need to be included) diff --git a/linux/bin/swig/share/swig/4.1.0/python/argcargv.i b/linux/bin/swig/share/swig/4.1.0/python/argcargv.i deleted file mode 100755 index 419803a8..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/argcargv.i +++ /dev/null @@ -1,89 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%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/linux/bin/swig/share/swig/4.1.0/python/attribute.i b/linux/bin/swig/share/swig/4.1.0/python/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i deleted file mode 100755 index bfd8787c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i +++ /dev/null @@ -1,411 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/linux/bin/swig/share/swig/4.1.0/python/builtin.swg b/linux/bin/swig/share/swig/4.1.0/python/builtin.swg deleted file mode 100755 index 5cff6835..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/builtin.swg +++ /dev/null @@ -1,764 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -SWIGINTERN Py_hash_t -SwigPyObject_hash(PyObject *obj) { - SwigPyObject *sobj = (SwigPyObject *)obj; - void *ptr = sobj->ptr; -#if PY_VERSION_HEX < 0x03020000 - return (Py_hash_t)(Py_ssize_t)ptr; -#else - return (Py_hash_t)ptr; -#endif -} - -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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /* tp_print */ -#else - (Py_ssize_t)0, /* tp_vectorcall_offset */ -#endif - 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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /* tp_print */ -#else - (Py_ssize_t)0, /* tp_vectorcall_offset */ -#endif - 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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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 >= 0x030900a4 - Py_SET_TYPE(type, metatype); -#else - Py_TYPE(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/linux/bin/swig/share/swig/4.1.0/python/carrays.i b/linux/bin/swig/share/swig/4.1.0/python/carrays.i deleted file mode 100755 index 74b2be9c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/carrays.i +++ /dev/null @@ -1,13 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/python/ccomplex.i b/linux/bin/swig/share/swig/4.1.0/python/ccomplex.i deleted file mode 100755 index b99f96a4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/ccomplex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ccomplex.i - * - * C complex typemaps - * ISO C99: 7.3 Complex arithmetic - * ----------------------------------------------------------------------------- */ - - -%include - -%{ -#include -%} - -#define complex _Complex - -/* 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/linux/bin/swig/share/swig/4.1.0/python/cdata.i b/linux/bin/swig/share/swig/4.1.0/python/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/cmalloc.i b/linux/bin/swig/share/swig/4.1.0/python/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/complex.i b/linux/bin/swig/share/swig/4.1.0/python/complex.i deleted file mode 100755 index 4c3b3c5e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/complex.i +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef __cplusplus -%include -#else -%include -#endif - diff --git a/linux/bin/swig/share/swig/4.1.0/python/cpointer.i b/linux/bin/swig/share/swig/4.1.0/python/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/cstring.i b/linux/bin/swig/share/swig/4.1.0/python/cstring.i deleted file mode 100755 index ede9c596..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/cwstring.i b/linux/bin/swig/share/swig/4.1.0/python/cwstring.i deleted file mode 100755 index 2824d9c7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/cwstring.i +++ /dev/null @@ -1,3 +0,0 @@ -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/python/director.swg b/linux/bin/swig/share/swig/4.1.0/python/director.swg deleted file mode 100755 index 9694c623..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/director.swg +++ /dev/null @@ -1,389 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - } - }; - - /* 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/linux/bin/swig/share/swig/4.1.0/python/embed.i b/linux/bin/swig/share/swig/4.1.0/python/embed.i deleted file mode 100755 index 3fc2d14e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/embed.i +++ /dev/null @@ -1,120 +0,0 @@ -// -// 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 %{ -#if !defined(PY_SSIZE_T_CLEAN) && !defined(SWIG_NO_PY_SSIZE_T_CLEAN) -#define PY_SSIZE_T_CLEAN -#endif - -#if __GNUC__ >= 7 -#pragma GCC diagnostic push -#if defined(__cplusplus) && __cplusplus >=201703L -#pragma GCC diagnostic ignored "-Wregister" /* For python-2.7 headers that use register */ -#endif -#endif - -#include - -#if __GNUC__ >= 7 -#pragma GCC diagnostic pop -#endif - -#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/linux/bin/swig/share/swig/4.1.0/python/exception.i b/linux/bin/swig/share/swig/4.1.0/python/exception.i deleted file mode 100755 index bb0b15c9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/exception.i +++ /dev/null @@ -1,6 +0,0 @@ -%include - - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) -} diff --git a/linux/bin/swig/share/swig/4.1.0/python/factory.i b/linux/bin/swig/share/swig/4.1.0/python/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/file.i b/linux/bin/swig/share/swig/4.1.0/python/file.i deleted file mode 100755 index 359c34d2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/file.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/python/implicit.i b/linux/bin/swig/share/swig/4.1.0/python/implicit.i deleted file mode 100755 index 152c2b05..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/implicit.i +++ /dev/null @@ -1,7 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/python/pyabc.i b/linux/bin/swig/share/swig/4.1.0/python/pyabc.i deleted file mode 100755 index cae1e703..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyabc.i +++ /dev/null @@ -1,14 +0,0 @@ -%define %pythonabc(Type, Abc) - %feature("python:abc", Abc) Type; -%enddef -%pythoncode %{if _swig_python_version_info[0:2] >= (3, 3): - import collections.abc -else: - import collections -%} -%pythonabc(std::vector, "collections.abc.MutableSequence if _swig_python_version_info >= (3, 3) else collections.MutableSequence"); -%pythonabc(std::list, "collections.abc.MutableSequence if _swig_python_version_info >= (3, 3) else collections.MutableSequence"); -%pythonabc(std::map, "collections.abc.MutableMapping if _swig_python_version_info >= (3, 3) else collections.MutableMapping"); -%pythonabc(std::multimap, "collections.abc.MutableMapping if _swig_python_version_info >= (3, 3) else collections.MutableMapping"); -%pythonabc(std::set, "collections.abc.MutableSet if _swig_python_version_info >= (3, 3) else collections.MutableSet"); -%pythonabc(std::multiset, "collections.abc.MutableSet if _swig_python_version_info >= (3, 3) else collections.MutableSet"); diff --git a/linux/bin/swig/share/swig/4.1.0/python/pyapi.swg b/linux/bin/swig/share/swig/4.1.0/python/pyapi.swg deleted file mode 100755 index 19e6979b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyapi.swg +++ /dev/null @@ -1,30 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/python/pybackward.swg b/linux/bin/swig/share/swig/4.1.0/python/pybackward.swg deleted file mode 100755 index 8305fc78..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pybackward.swg +++ /dev/null @@ -1,45 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/pybuffer.i b/linux/bin/swig/share/swig/4.1.0/python/pybuffer.i deleted file mode 100755 index 2fdaa6d6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pybuffer.i +++ /dev/null @@ -1,119 +0,0 @@ -/* 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/linux/bin/swig/share/swig/4.1.0/python/pycomplex.swg b/linux/bin/swig/share/swig/4.1.0/python/pycomplex.swg deleted file mode 100755 index 28c96361..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pycomplex.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* - 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.0f); - 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/linux/bin/swig/share/swig/4.1.0/python/pycontainer.swg b/linux/bin/swig/share/swig/4.1.0/python/pycontainer.swg deleted file mode 100755 index d6fdff08..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pycontainer.swg +++ /dev/null @@ -1,1082 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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_SLICEOBJECT PyObject -#else -# define SWIGPY_SLICEOBJECT PySliceObject -#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) { - return PyObject_SetAttr(child, container_owner_attribute(), owner) != -1; - } - 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() 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)) - 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__(SWIGPY_SLICEOBJECT *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) SWIGPY_SLICEOBJECT* { - if (!PySlice_Check($input)) { - %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); - } - $1 = (SWIGPY_SLICEOBJECT *) $input; - } - %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) SWIGPY_SLICEOBJECT* { - $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__(SWIGPY_SLICEOBJECT *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(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__(SWIGPY_SLICEOBJECT *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(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__(SWIGPY_SLICEOBJECT *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(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__(SWIGPY_SLICEOBJECT *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(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/linux/bin/swig/share/swig/4.1.0/python/pydocs.swg b/linux/bin/swig/share/swig/4.1.0/python/pydocs.swg deleted file mode 100755 index 5a25423d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pydocs.swg +++ /dev/null @@ -1,45 +0,0 @@ - -// 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/linux/bin/swig/share/swig/4.1.0/python/pyerrors.swg b/linux/bin/swig/share/swig/4.1.0/python/pyerrors.swg deleted file mode 100755 index 10b694cd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyerrors.swg +++ /dev/null @@ -1,107 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - 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 - if (newvalue) { - Py_XDECREF(value); - PyErr_Restore(type, newvalue, traceback); - } else { - PyErr_Restore(type, value, traceback); - } - } else { - /* Raise TypeError using given message */ - PyErr_SetString(PyExc_TypeError, message); - } -} diff --git a/linux/bin/swig/share/swig/4.1.0/python/pyfragments.swg b/linux/bin/swig/share/swig/4.1.0/python/pyfragments.swg deleted file mode 100755 index 535a45bd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/linux/bin/swig/share/swig/4.1.0/python/pyhead.swg b/linux/bin/swig/share/swig/4.1.0/python/pyhead.swg deleted file mode 100755 index 6f37160b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyhead.swg +++ /dev/null @@ -1,75 +0,0 @@ -/* 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 _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 - - -SWIGINTERN char* -SWIG_Python_str_AsChar(PyObject *str) -{ -#if PY_VERSION_HEX >= 0x03030000 - return (char *)PyUnicode_AsUTF8(str); -#else - return PyString_AsString(str); -#endif -} - -/* Was useful for Python 3.0.x-3.2.x - now provided only for compatibility - * with any uses in user interface files. */ -#define SWIG_Python_str_DelForPy3(x) - - -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 -#ifdef SWIGPYTHON_BUILTIN -# define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule_builtin" SWIG_TYPE_TABLE_NAME -#else -# define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule" SWIG_TYPE_TABLE_NAME -#endif -# define SWIGPY_CAPSULE_NAME ("swig_runtime_data" SWIG_RUNTIME_VERSION "." SWIGPY_CAPSULE_ATTR_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/linux/bin/swig/share/swig/4.1.0/python/pyinit.swg b/linux/bin/swig/share/swig/4.1.0/python/pyinit.swg deleted file mode 100755 index 6833b455..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyinit.swg +++ /dev/null @@ -1,325 +0,0 @@ -/* ------------------------------------------------------------ - * The start of the Python initialization function - * ------------------------------------------------------------ */ - -%insert(init) "swiginit.swg" - -#if defined(SWIGPYTHON_BUILTIN) -%fragment(""); // For offsetof -#endif - -#if defined SWIGPYTHON_FASTPROXY && !defined SWIGPYTHON_BUILTIN - -%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 -%} - -#endif - -%init %{ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------------------------------------------------------- - * 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); - } - } -} - -/* ----------------------------------------------------------------------------- - * Patch %callback methods' docstrings to hold the callback ptrs - * -----------------------------------------------------------------------------*/ - -SWIGINTERN void -SWIG_Python_FixMethods(PyMethodDef *methods, const 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; - const 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; - } - } - } - } - } -} - -#ifdef __cplusplus -} -#endif - -%} - -#if defined SWIGPYTHON_FASTPROXY && !defined SWIGPYTHON_BUILTIN - -%init %{ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------------------------------------------------------- - * 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 - -%} - -#endif - -%init %{ - -/* -----------------------------------------------------------------------------* - * 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/linux/bin/swig/share/swig/4.1.0/python/pyiterators.swg b/linux/bin/swig/share/swig/4.1.0/python/pyiterators.swg deleted file mode 100755 index cb15e35c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyiterators.swg +++ /dev/null @@ -1,458 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/python/pymacros.swg b/linux/bin/swig/share/swig/4.1.0/python/pymacros.swg deleted file mode 100755 index ab7bace5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pymacros.swg +++ /dev/null @@ -1,4 +0,0 @@ -%include - - - diff --git a/linux/bin/swig/share/swig/4.1.0/python/pyname_compat.i b/linux/bin/swig/share/swig/4.1.0/python/pyname_compat.i deleted file mode 100755 index a9630dbe..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyname_compat.i +++ /dev/null @@ -1,85 +0,0 @@ -/* -* 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/linux/bin/swig/share/swig/4.1.0/python/pyopers.swg b/linux/bin/swig/share/swig/4.1.0/python/pyopers.swg deleted file mode 100755 index fd2fcc58..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyopers.swg +++ /dev/null @@ -1,264 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg b/linux/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg deleted file mode 100755 index 6a01af17..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg +++ /dev/null @@ -1,353 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/python/pyrun.swg b/linux/bin/swig/share/swig/4.1.0/python/pyrun.swg deleted file mode 100755 index 6b119be1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyrun.swg +++ /dev/null @@ -1,1913 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 < 0x03030000 -# error "This version of SWIG only supports Python 3 >= 3.3" -#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); - if (result) { - PyList_SET_ITEM(result, 0, o2); - } else { - Py_DECREF(obj); - return 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; - } - } -} - -SWIGINTERN int -SWIG_Python_CheckNoKeywords(PyObject *kwargs, const char *name) { - int no_kwargs = 1; - if (kwargs) { - assert(PyDict_Check(kwargs)); - if (PyDict_Size(kwargs) > 0) { - PyErr_Format(PyExc_TypeError, "%s() does not take keyword arguments", name); - no_kwargs = 0; - } - } - return no_kwargs; -} - -/* A functor is a function object with one single object argument */ -#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); - -/* - 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 - -#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(PyObject *SWIGUNUSEDPARM(v)) { -#if PY_VERSION_HEX >= 0x03000000 - return PyUnicode_InternFromString(""); -#else - return PyString_FromString(""); -#endif -} - -SWIGINTERN PyObject * -swig_varlink_str(PyObject *o) { - swig_varlinkobject *v = (swig_varlinkobject *) o; -#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(PyObject *o) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - swig_globalvar *var = v->vars; - while (var) { - swig_globalvar *n = var->next; - free(var->name); - free(var); - var = n; - } -} - -SWIGINTERN PyObject * -swig_varlink_getattr(PyObject *o, char *n) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - 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(PyObject *o, char *n, PyObject *p) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - 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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /*tp_print*/ -#else - (Py_ssize_t)0, /*tp_vectorcall_offset*/ -#endif - (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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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; -} - - -static PyObject *Swig_Globals_global = NULL; - -SWIGINTERN PyObject * -SWIG_globals(void) { - if (Swig_Globals_global == NULL) { - Swig_Globals_global = SWIG_newvarlink(); - } - return Swig_Globals_global; -} - -#ifdef __cplusplus -} -#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; - Py_INCREF(obj); - data->newargs = obj; - } else { - data->newraw = PyObject_GetAttrString(data->klass, "__new__"); - if (data->newraw) { - data->newargs = PyTuple_New(1); - if (data->newargs) { - Py_INCREF(obj); - PyTuple_SET_ITEM(data->newargs, 0, obj); - } else { - Py_DECREF(data->newraw); - Py_DECREF(data->klass); - free(data); - return 0; - } - } else { - Py_INCREF(obj); - data->newargs = obj; - } - } - /* 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) { - data->delargs = !(PyCFunction_GET_FLAGS(data->destroy) & METH_O); - } else { - data->delargs = 0; - } - data->implicitconv = 0; - data->pytype = 0; - return data; - } -} - -SWIGRUNTIME void -SwigPyClientData_Del(SwigPyClientData *data) -{ - Py_XDECREF(data->klass); - Py_XDECREF(data->newraw); - Py_XDECREF(data->newargs); - Py_XDECREF(data->destroy); - free(data); -} - -/* =============== 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_XINCREF(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) { - PyObject *val = SwigPyObject_long(v); - if (val) { - PyObject *ofmt; - PyTuple_SET_ITEM(args, 0, val); - 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 (repr && v->next) { - PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); - if (nrep) { -# 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 - } else { - Py_DecRef(repr); - repr = NULL; - } - } - 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); - -static PyObject* Swig_Capsule_global = NULL; - -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); - if (tmp) { - res = SWIG_Python_CallFunctor(destroy, tmp); - } else { - res = 0; - } - Py_XDECREF(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(Swig_Capsule_global); - } - Py_XDECREF(next); -#ifdef SWIGPYTHON_BUILTIN - Py_XDECREF(sobj->dict); -#endif - 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; - } - ((SwigPyObject *)next)->next = sobj->next; - 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)) { - Py_DECREF(SwigPyObject_acquire(v,args)); - } else { - Py_DECREF(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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /*tp_print*/ -#else - (Py_ssize_t)0, /*tp_vectorcall_offset*/ -#endif - (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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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; -#ifdef SWIGPYTHON_BUILTIN - sobj->dict = 0; -#endif - if (own == SWIG_POINTER_OWN) { - /* Obtain a reference to the Python capsule wrapping the module information, so that the - * module information is correctly destroyed after all SWIG python objects have been freed - * by the GC (and corresponding destructors invoked) */ - Py_XINCREF(Swig_Capsule_global); - } - } - 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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /*tp_print*/ -#else - (Py_ssize_t)0, /*tp_vectorcall_offset*/ -#endif - (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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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 (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !sobj->own) { - res = SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (own) - *own = *own | sobj->own; - if (flags & SWIG_POINTER_DISOWN) { - sobj->own = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - sobj->ptr = 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; - } - if (dict) { - PyDict_SetItem(dict, SWIG_This(), swig_this); - } else{ - Py_DECREF(inst); - inst = 0; - } - } -#else - if (PyObject_SetAttr(inst, SWIG_This(), swig_this) == -1) { - Py_DECREF(inst); - inst = 0; - } -#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) { - if (PyObject_SetAttr(inst, SWIG_This(), swig_this) == -1) { - Py_DECREF(inst); - inst = 0; - } else { - PyType_Modified(Py_TYPE(inst)); - } - } - } - 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 int -SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) -{ -#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; - } - if (dict) { - return PyDict_SetItem(dict, SWIG_This(), swig_this); - } else{ - return -1; - } - } -#endif - return PyObject_SetAttr(inst, SWIG_This(), swig_this); -} - - -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) { - Py_DECREF(SwigPyObject_append((PyObject*) sthis, obj[1])); - } else { - if (SWIG_Python_SetSwigThis(obj[0], obj[1]) != 0) - return NULL; - } - 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 - if (newobj) { - 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 - -static PyObject *Swig_TypeCache_global = NULL; - -/* The python cached type query */ -SWIGRUNTIME PyObject * -SWIG_Python_TypeCache(void) { - if (Swig_TypeCache_global == NULL) { - Swig_TypeCache_global = PyDict_New(); - } - return Swig_TypeCache_global; -} - -SWIGRUNTIME swig_module_info * -SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { -#ifdef SWIG_LINK_RUNTIME - static void *type_pointer = (void *)0; - /* first check if module already created */ - if (!type_pointer) { - type_pointer = SWIG_ReturnGlobalTypeList((void *)0); - } -#else - void *type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); - if (PyErr_Occurred()) { - PyErr_Clear(); - type_pointer = (void *)0; - } -#endif - return (swig_module_info *) type_pointer; -} - - -static int interpreter_counter = 0; // how many (sub-)interpreters are using swig_module's types - -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; - if (--interpreter_counter != 0) // another sub-interpreter may still be using the swig_module's types - return; - for (i =0; i < swig_module->size; ++i) { - swig_type_info *ty = types[i]; - if (ty->owndata) { - SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; - ty->clientdata = 0; - if (data) SwigPyClientData_Del(data); - } - } - Py_DECREF(SWIG_This()); - Swig_This_global = NULL; - Py_DECREF(SWIG_globals()); - Swig_Globals_global = NULL; - Py_DECREF(SWIG_Python_TypeCache()); - Swig_TypeCache_global = NULL; - Swig_Capsule_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) { - if (PyModule_AddObject(module, SWIGPY_CAPSULE_ATTR_NAME, pointer) == 0) { - ++interpreter_counter; - Swig_Capsule_global = pointer; - } else { - Py_DECREF(pointer); - } - } else { - Py_XDECREF(pointer); - } -} - -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); - if (obj) { - 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); - } - 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); - } 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(); - } - 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) - goto done; - } - 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/linux/bin/swig/share/swig/4.1.0/python/pyruntime.swg b/linux/bin/swig/share/swig/4.1.0/python/pyruntime.swg deleted file mode 100755 index 1d028ada..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyruntime.swg +++ /dev/null @@ -1,49 +0,0 @@ -%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(PY_SSIZE_T_CLEAN) && !defined(SWIG_NO_PY_SSIZE_T_CLEAN) -#define PY_SSIZE_T_CLEAN -#endif - -#if __GNUC__ >= 7 -#pragma GCC diagnostic push -#if defined(__cplusplus) && __cplusplus >=201703L -#pragma GCC diagnostic ignored "-Wregister" /* For python-2.7 headers that use register */ -#endif -#endif - -#if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) -/* Use debug wrappers with the Python release dll */ - -#if defined(_MSC_VER) && _MSC_VER >= 1929 -/* Workaround compilation errors when redefining _DEBUG in MSVC 2019 version 16.10 and later - * See https://github.com/swig/swig/issues/2090 */ -# include -#endif - -# undef _DEBUG -# include -# define _DEBUG 1 -#else -# include -#endif - -#if __GNUC__ >= 7 -#pragma GCC diagnostic pop -#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/linux/bin/swig/share/swig/4.1.0/python/pystdcommon.swg b/linux/bin/swig/share/swig/4.1.0/python/pystdcommon.swg deleted file mode 100755 index afa71350..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pystdcommon.swg +++ /dev/null @@ -1,265 +0,0 @@ -%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) { - int res = SWIG_ERROR; - swig_type_info *descriptor = type_info(); - if (val) { - Type *p = 0; - int newmem = 0; - res = descriptor ? SWIG_ConvertPtrAndOwn(obj, (void **)&p, descriptor, 0, &newmem) : SWIG_ERROR; - if (SWIG_IsOK(res)) { - if (newmem & SWIG_CAST_NEW_MEMORY) { - res |= SWIG_NEWOBJMASK; - } - *val = p; - } - } else { - res = descriptor ? SWIG_ConvertPtr(obj, 0, descriptor, 0) : SWIG_ERROR; - } - 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/linux/bin/swig/share/swig/4.1.0/python/pystrings.swg b/linux/bin/swig/share/swig/4.1.0/python/pystrings.swg deleted file mode 100755 index 64ed685e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pystrings.swg +++ /dev/null @@ -1,139 +0,0 @@ -/* ------------------------------------------------------------ - * 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 - if (PyBytes_AsStringAndSize(obj, &cstr, &len) == -1) - return SWIG_TypeError; -%#else - if (PyString_AsStringAndSize(obj, &cstr, &len) == -1) - return SWIG_TypeError; -%#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/linux/bin/swig/share/swig/4.1.0/python/python.swg b/linux/bin/swig/share/swig/4.1.0/python/python.swg deleted file mode 100755 index 769d9e10..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/python.swg +++ /dev/null @@ -1,59 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/python/pythonkw.swg b/linux/bin/swig/share/swig/4.1.0/python/pythonkw.swg deleted file mode 100755 index a2103452..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pythonkw.swg +++ /dev/null @@ -1,140 +0,0 @@ -/* - Warnings for Python keywords, built-in names and bad names. -*/ - -#define PYTHONKW(x) %keywordwarn("'" `x` "' is a python keyword", 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/linux/bin/swig/share/swig/4.1.0/python/pythreads.swg b/linux/bin/swig/share/swig/4.1.0/python/pythreads.swg deleted file mode 100755 index 8d6c5ab4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pythreads.swg +++ /dev/null @@ -1,68 +0,0 @@ -#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 */ -# if !defined(SWIG_PYTHON_INITIALIZE_THREADS) -# if PY_VERSION_HEX < 0x03070000 -# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() -# else -# define SWIG_PYTHON_INITIALIZE_THREADS -# endif -# 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/linux/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg b/linux/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg deleted file mode 100755 index 32e15803..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg +++ /dev/null @@ -1,8 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/pytypemaps.swg b/linux/bin/swig/share/swig/4.1.0/python/pytypemaps.swg deleted file mode 100755 index 0ae25a68..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pytypemaps.swg +++ /dev/null @@ -1,105 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/python/pyuserdir.swg b/linux/bin/swig/share/swig/4.1.0/python/pyuserdir.swg deleted file mode 100755 index 31107607..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pyuserdir.swg +++ /dev/null @@ -1,242 +0,0 @@ -/* ------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/python/pywstrings.swg b/linux/bin/swig/share/swig/4.1.0/python/pywstrings.swg deleted file mode 100755 index 0e5a78df..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/pywstrings.swg +++ /dev/null @@ -1,85 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/python/std_alloc.i b/linux/bin/swig/share/swig/4.1.0/python/std_alloc.i deleted file mode 100755 index 35dc051b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_array.i b/linux/bin/swig/share/swig/4.1.0/python/std_array.i deleted file mode 100755 index a3de3125..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_array.i +++ /dev/null @@ -1,91 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_basic_string.i b/linux/bin/swig/share/swig/4.1.0/python/std_basic_string.i deleted file mode 100755 index e3f524db..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_basic_string.i +++ /dev/null @@ -1,89 +0,0 @@ -#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/linux/bin/swig/share/swig/4.1.0/python/std_carray.i b/linux/bin/swig/share/swig/4.1.0/python/std_carray.i deleted file mode 100755 index 680d6711..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_carray.i +++ /dev/null @@ -1,54 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/python/std_char_traits.i b/linux/bin/swig/share/swig/4.1.0/python/std_char_traits.i deleted file mode 100755 index bf4e6c47..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_common.i b/linux/bin/swig/share/swig/4.1.0/python/std_common.i deleted file mode 100755 index 60576623..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_common.i +++ /dev/null @@ -1,74 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/python/std_complex.i b/linux/bin/swig/share/swig/4.1.0/python/std_complex.i deleted file mode 100755 index c9c46c4c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_complex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/python/std_container.i b/linux/bin/swig/share/swig/4.1.0/python/std_container.i deleted file mode 100755 index d24c1570..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_deque.i b/linux/bin/swig/share/swig/4.1.0/python/std_deque.i deleted file mode 100755 index d9a17470..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_deque.i +++ /dev/null @@ -1,27 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/std_except.i b/linux/bin/swig/share/swig/4.1.0/python/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_ios.i b/linux/bin/swig/share/swig/4.1.0/python/std_ios.i deleted file mode 100755 index aa6f0994..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_ios.i +++ /dev/null @@ -1,3 +0,0 @@ -%rename(ios_base_in) std::ios_base::in; - -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_iostream.i b/linux/bin/swig/share/swig/4.1.0/python/std_iostream.i deleted file mode 100755 index 43d6b0c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_iostream.i +++ /dev/null @@ -1,8 +0,0 @@ -namespace std -{ -%callback(1) endl; -%callback(1) ends; -%callback(1) flush; -} - -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_list.i b/linux/bin/swig/share/swig/4.1.0/python/std_list.i deleted file mode 100755 index 24d274b4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_list.i +++ /dev/null @@ -1,28 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/std_map.i b/linux/bin/swig/share/swig/4.1.0/python/std_map.i deleted file mode 100755 index e0b7d69d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_map.i +++ /dev/null @@ -1,310 +0,0 @@ -/* - 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 = 0; - 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/linux/bin/swig/share/swig/4.1.0/python/std_multimap.i b/linux/bin/swig/share/swig/4.1.0/python/std_multimap.i deleted file mode 100755 index bbffb6bc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_multimap.i +++ /dev/null @@ -1,93 +0,0 @@ -/* - 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 = 0; - 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/linux/bin/swig/share/swig/4.1.0/python/std_multiset.i b/linux/bin/swig/share/swig/4.1.0/python/std_multiset.i deleted file mode 100755 index ac430334..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_multiset.i +++ /dev/null @@ -1,41 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/std_pair.i b/linux/bin/swig/share/swig/4.1.0/python/std_pair.i deleted file mode 100755 index cf463cb8..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_pair.i +++ /dev/null @@ -1,206 +0,0 @@ -/* - 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 = 0; - 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 = 0; - 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/linux/bin/swig/share/swig/4.1.0/python/std_set.i b/linux/bin/swig/share/swig/4.1.0/python/std_set.i deleted file mode 100755 index 0ef01199..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_set.i +++ /dev/null @@ -1,67 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_sstream.i b/linux/bin/swig/share/swig/4.1.0/python/std_sstream.i deleted file mode 100755 index 6647df8c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_sstream.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_streambuf.i b/linux/bin/swig/share/swig/4.1.0/python/std_streambuf.i deleted file mode 100755 index 44b9bb4d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_streambuf.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_string.i b/linux/bin/swig/share/swig/4.1.0/python/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_unordered_map.i b/linux/bin/swig/share/swig/4.1.0/python/std_unordered_map.i deleted file mode 100755 index 784be4c8..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_unordered_map.i +++ /dev/null @@ -1,296 +0,0 @@ -/* - 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 = 0; - 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/linux/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i b/linux/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i deleted file mode 100755 index bc095ea4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i +++ /dev/null @@ -1,100 +0,0 @@ -/* - 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 = 0; - 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/linux/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i b/linux/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i deleted file mode 100755 index b0f3f096..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i +++ /dev/null @@ -1,48 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/std_unordered_set.i b/linux/bin/swig/share/swig/4.1.0/python/std_unordered_set.i deleted file mode 100755 index 79fca6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_unordered_set.i +++ /dev/null @@ -1,67 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/std_vector.i b/linux/bin/swig/share/swig/4.1.0/python/std_vector.i deleted file mode 100755 index 2ac41a54..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_vector.i +++ /dev/null @@ -1,34 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/std_vectora.i b/linux/bin/swig/share/swig/4.1.0/python/std_vectora.i deleted file mode 100755 index 3f084bd7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_vectora.i +++ /dev/null @@ -1,31 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/python/std_wios.i b/linux/bin/swig/share/swig/4.1.0/python/std_wios.i deleted file mode 100755 index 930a57dd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_wios.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_wiostream.i b/linux/bin/swig/share/swig/4.1.0/python/std_wiostream.i deleted file mode 100755 index d3a5ee78..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_wiostream.i +++ /dev/null @@ -1,10 +0,0 @@ -namespace std -{ -%callback(1) wendl; -%callback(1) wends; -%callback(1) wflush; -} - -%include -%include -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_wsstream.i b/linux/bin/swig/share/swig/4.1.0/python/std_wsstream.i deleted file mode 100755 index 8843f56d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_wsstream.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i b/linux/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i deleted file mode 100755 index c0f09201..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/std_wstring.i b/linux/bin/swig/share/swig/4.1.0/python/std_wstring.i deleted file mode 100755 index ef862813..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/std_wstring.i +++ /dev/null @@ -1,3 +0,0 @@ -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/python/stl.i b/linux/bin/swig/share/swig/4.1.0/python/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/python/swigmove.i b/linux/bin/swig/share/swig/4.1.0/python/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/python/typemaps.i b/linux/bin/swig/share/swig/4.1.0/python/typemaps.i deleted file mode 100755 index dba63dd5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/typemaps.i +++ /dev/null @@ -1,148 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/linux/bin/swig/share/swig/4.1.0/python/wchar.i b/linux/bin/swig/share/swig/4.1.0/python/wchar.i deleted file mode 100755 index 308139a3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/python/wchar.i +++ /dev/null @@ -1,21 +0,0 @@ -#ifdef __cplusplus - -%{ -#include -%} - -#else - -%{ -#include -%} - -#endif - -%types(wchar_t *); -%include - -/* - Enable swig wchar support. -*/ -#define SWIG_WCHAR diff --git a/linux/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i deleted file mode 100755 index 13f041fb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i +++ /dev/null @@ -1,420 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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" -%} - -%typemap(rtype) 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(rtype, TYPE)" - -%typemap(scoercein) 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 > *& - %{ if (inherits($input, "ExternalReference")) $input = slot($input,"ref"); %} - -%typemap(scoerceout) 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 > *& - %{ $result <- if (is.null($result)) $result - else new("$typemap(rtype, TYPE)", ref=$result); %} - - -%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; - - -%enddef diff --git a/linux/bin/swig/share/swig/4.1.0/r/cdata.i b/linux/bin/swig/share/swig/4.1.0/r/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/r/exception.i b/linux/bin/swig/share/swig/4.1.0/r/exception.i deleted file mode 100755 index 39cb0959..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/exception.i +++ /dev/null @@ -1,8 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/r/r.swg b/linux/bin/swig/share/swig/4.1.0/r/r.swg deleted file mode 100755 index c1ce37c3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/r.swg +++ /dev/null @@ -1,281 +0,0 @@ -/* */ - - -%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 - -%runtime %{ -SWIGINTERN void SWIG_R_Raise(SEXP obj, const char *msg) { - Rf_error(Rf_isString(obj) ? CHAR(Rf_asChar(obj)) : msg); -} -%} - -#define %raise(OBJ, TYPE, DESC) SWIG_R_Raise(OBJ, "C/C++ exception of type " TYPE); return R_NilValue - -%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/linux/bin/swig/share/swig/4.1.0/r/rcontainer.swg b/linux/bin/swig/share/swig/4.1.0/r/rcontainer.swg deleted file mode 100755 index 54b31b39..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/rcontainer.swg +++ /dev/null @@ -1,198 +0,0 @@ - -// -// 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/linux/bin/swig/share/swig/4.1.0/r/rfragments.swg b/linux/bin/swig/share/swig/4.1.0/r/rfragments.swg deleted file mode 100755 index c3b40a90..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/rfragments.swg +++ /dev/null @@ -1,191 +0,0 @@ -/* 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/linux/bin/swig/share/swig/4.1.0/r/rkw.swg b/linux/bin/swig/share/swig/4.1.0/r/rkw.swg deleted file mode 100755 index c4af7084..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/rkw.swg +++ /dev/null @@ -1,36 +0,0 @@ -/* - Warnings for R keywords, built-in names and bad names. -*/ - -#define RKW(x) %keywordwarn("'" `x` "' is a R keyword", rename="_%s") `x` -#define RSWIGKW(x) %keywordwarn("'" `x` "' is a SWIG R reserved parameter name", 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/linux/bin/swig/share/swig/4.1.0/r/ropers.swg b/linux/bin/swig/share/swig/4.1.0/r/ropers.swg deleted file mode 100755 index acb99798..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/ropers.swg +++ /dev/null @@ -1,32 +0,0 @@ -#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/linux/bin/swig/share/swig/4.1.0/r/rrun.swg b/linux/bin/swig/share/swig/4.1.0/r/rrun.swg deleted file mode 100755 index 79844612..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/rrun.swg +++ /dev/null @@ -1,420 +0,0 @@ -/* 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 -#include - -#if R_VERSION >= R_Version(2,6,0) -#define VMAXTYPE void * -#else -#define VMAXTYPE char * -#endif - -/* Last error */ -static int SWIG_lasterror_code = 0; -static char SWIG_lasterror_msg[1024]; -SWIGRUNTIME void SWIG_Error(int code, const char *format, ...) { - va_list arg; - SWIG_lasterror_code = code; - va_start(arg, format); - vsnprintf(SWIG_lasterror_msg, sizeof(SWIG_lasterror_msg), format, arg); - va_end(arg); -} - -SWIGRUNTIME const char *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:UnknownError"; -} - -#define SWIG_fail goto fail - -/* - 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/linux/bin/swig/share/swig/4.1.0/r/rstdcommon.swg b/linux/bin/swig/share/swig/4.1.0/r/rstdcommon.swg deleted file mode 100755 index 5f41fd14..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/rstdcommon.swg +++ /dev/null @@ -1,205 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/r/rtype.swg b/linux/bin/swig/share/swig/4.1.0/r/rtype.swg deleted file mode 100755 index a9c06758..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/rtype.swg +++ /dev/null @@ -1,328 +0,0 @@ - -/* 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 *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 *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); %} - -%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/linux/bin/swig/share/swig/4.1.0/r/srun.swg b/linux/bin/swig/share/swig/4.1.0/r/srun.swg deleted file mode 100755 index 2e8eda11..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/srun.swg +++ /dev/null @@ -1,150 +0,0 @@ -# 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/linux/bin/swig/share/swig/4.1.0/r/std_alloc.i b/linux/bin/swig/share/swig/4.1.0/r/std_alloc.i deleted file mode 100755 index 87fa8d4a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include \ No newline at end of file diff --git a/linux/bin/swig/share/swig/4.1.0/r/std_common.i b/linux/bin/swig/share/swig/4.1.0/r/std_common.i deleted file mode 100755 index cda26231..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_common.i +++ /dev/null @@ -1,73 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/r/std_container.i b/linux/bin/swig/share/swig/4.1.0/r/std_container.i deleted file mode 100755 index 076c1c6a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/linux/bin/swig/share/swig/4.1.0/r/std_deque.i b/linux/bin/swig/share/swig/4.1.0/r/std_deque.i deleted file mode 100755 index 0c757ab0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include \ No newline at end of file diff --git a/linux/bin/swig/share/swig/4.1.0/r/std_except.i b/linux/bin/swig/share/swig/4.1.0/r/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/r/std_list.i b/linux/bin/swig/share/swig/4.1.0/r/std_list.i deleted file mode 100755 index d67ec021..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_list.i +++ /dev/null @@ -1,5 +0,0 @@ -#define %swig_list_methods(Type...) %swig_sequence_methods(Type) -#define %swig_list_methods_val(Type...) %swig_sequence_methods_val(Type); - -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/r/std_map.i b/linux/bin/swig/share/swig/4.1.0/r/std_map.i deleted file mode 100755 index 56057514..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_map.i +++ /dev/null @@ -1,5 +0,0 @@ -%fragment("StdMapTraits","header") -%{ -%} - -%include diff --git a/linux/bin/swig/share/swig/4.1.0/r/std_pair.i b/linux/bin/swig/share/swig/4.1.0/r/std_pair.i deleted file mode 100755 index e9803449..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_pair.i +++ /dev/null @@ -1,5 +0,0 @@ -%fragment("StdPairTraits","header") -%{ -%} - -%include diff --git a/linux/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/linux/bin/swig/share/swig/4.1.0/r/std_string.i b/linux/bin/swig/share/swig/4.1.0/r/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/r/std_vector.i b/linux/bin/swig/share/swig/4.1.0/r/std_vector.i deleted file mode 100755 index 62478fe6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/std_vector.i +++ /dev/null @@ -1,1105 +0,0 @@ -// 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 > > > { - 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(STRSXP, val->at(pos).size())); - // Fill the R vector - for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) - { - CHARACTER_POINTER(VECTOR_ELT(result, pos))[vpos] = Rf_mkChar(val->at(pos).at(vpos).c_str()); - } - } - 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 > & -%{ %} - -// 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);" - -%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.character)) %} -%typemap("rtype") std::vector > >, std::vector > > *, std::vector > > & "list" -%typemap("scoercein") std::vector< std::vector > >, std::vector > > *, std::vector > > & "$input = lapply($input, as.character);" - -// 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 >&, - 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 - -%apply std::vector< std::basic_string > { std::vector }; -%apply std::vector< std::vector< std::basic_string > > { std::vector< std::vector > }; diff --git a/linux/bin/swig/share/swig/4.1.0/r/stl.i b/linux/bin/swig/share/swig/4.1.0/r/stl.i deleted file mode 100755 index 91da6a2b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/stl.i +++ /dev/null @@ -1,9 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/r/swigmove.i b/linux/bin/swig/share/swig/4.1.0/r/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/r/typemaps.i b/linux/bin/swig/share/swig/4.1.0/r/typemaps.i deleted file mode 100755 index 1f9b9c43..00000000 --- a/linux/bin/swig/share/swig/4.1.0/r/typemaps.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/Makefile.swig b/linux/bin/swig/share/swig/4.1.0/ruby/Makefile.swig deleted file mode 100755 index 648b3213..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/Makefile.swig +++ /dev/null @@ -1,42 +0,0 @@ -# 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/linux/bin/swig/share/swig/4.1.0/ruby/argcargv.i b/linux/bin/swig/share/swig/4.1.0/ruby/argcargv.i deleted file mode 100755 index 24df9c94..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/argcargv.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - - Use it as follows: - - %apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) } - - %inline %{ - - int mainApp(size_t argc, const char **argv) { - return argc; - } - - then from ruby: - - $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/linux/bin/swig/share/swig/4.1.0/ruby/attribute.i b/linux/bin/swig/share/swig/4.1.0/ruby/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i deleted file mode 100755 index 70deae4f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i +++ /dev/null @@ -1,401 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/linux/bin/swig/share/swig/4.1.0/ruby/carrays.i b/linux/bin/swig/share/swig/4.1.0/ruby/carrays.i deleted file mode 100755 index 8f74cd9b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/carrays.i +++ /dev/null @@ -1,6 +0,0 @@ -%define %array_class(TYPE,NAME) - %array_class_wrap(TYPE,NAME,__getitem__,__setitem__) -%enddef - -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/cdata.i b/linux/bin/swig/share/swig/4.1.0/ruby/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/cmalloc.i b/linux/bin/swig/share/swig/4.1.0/ruby/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/cpointer.i b/linux/bin/swig/share/swig/4.1.0/ruby/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/cstring.i b/linux/bin/swig/share/swig/4.1.0/ruby/cstring.i deleted file mode 100755 index ede9c596..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/director.swg b/linux/bin/swig/share/swig/4.1.0/ruby/director.swg deleted file mode 100755 index 9395b818..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/director.swg +++ /dev/null @@ -1,311 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(); - } - }; - - /* 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/linux/bin/swig/share/swig/4.1.0/ruby/embed.i b/linux/bin/swig/share/swig/4.1.0/ruby/embed.i deleted file mode 100755 index 9226ef45..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/embed.i +++ /dev/null @@ -1,16 +0,0 @@ -%wrapper %{ - -#include - -int -main(argc, argv) - int argc; - char **argv; -{ - ruby_init(); - ruby_options(argc, argv); - ruby_run(); - return 0; -} - -%} diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/exception.i b/linux/bin/swig/share/swig/4.1.0/ruby/exception.i deleted file mode 100755 index 1e80d96d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/exception.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg);)) -} diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/extconf.rb b/linux/bin/swig/share/swig/4.1.0/ruby/extconf.rb deleted file mode 100755 index 3bac8ccc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/extconf.rb +++ /dev/null @@ -1,9 +0,0 @@ -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/linux/bin/swig/share/swig/4.1.0/ruby/extra-install.list b/linux/bin/swig/share/swig/4.1.0/ruby/extra-install.list deleted file mode 100755 index 4610fa8f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/extra-install.list +++ /dev/null @@ -1,3 +0,0 @@ -# see top-level Makefile.in -Makefile.swig -extconf.rb diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/factory.i b/linux/bin/swig/share/swig/4.1.0/ruby/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/file.i b/linux/bin/swig/share/swig/4.1.0/ruby/file.i deleted file mode 100755 index f9aaa275..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/file.i +++ /dev/null @@ -1,39 +0,0 @@ -// 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/linux/bin/swig/share/swig/4.1.0/ruby/progargcargv.i b/linux/bin/swig/share/swig/4.1.0/ruby/progargcargv.i deleted file mode 100755 index a2843c34..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/progargcargv.i +++ /dev/null @@ -1,34 +0,0 @@ -/* -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/linux/bin/swig/share/swig/4.1.0/ruby/ruby.swg b/linux/bin/swig/share/swig/4.1.0/ruby/ruby.swg deleted file mode 100755 index d1335974..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/ruby.swg +++ /dev/null @@ -1,72 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg deleted file mode 100755 index e0077572..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg deleted file mode 100755 index 6b0472ce..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg +++ /dev/null @@ -1,105 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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-, "Subtraction 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__, "Subtraction 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/linux/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg deleted file mode 100755 index c43f38fc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg +++ /dev/null @@ -1,404 +0,0 @@ -#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) - { - /* - 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(VALUEFUNC(swig_rescue_funcall), VALUE(&args), - (VALUEFUNC(swig_rescue_swallow)), Qnil); - } - if (ret == Qnil) { - VALUE a = rb_funcall2( _obj, hash_id, 0, 0 ); - VALUE b = rb_funcall2( VALUE(other), hash_id, 0, 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(VALUEFUNC(swig_rescue_funcall), VALUE(&args), - (VALUEFUNC(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(VALUEFUNC(swig_rescue_funcall), VALUE(&args), - (VALUEFUNC(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/linux/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg deleted file mode 100755 index d2aaf6cb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg +++ /dev/null @@ -1,148 +0,0 @@ -/* - 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_funcall2(obj, real_id, 0, 0); -} - -SWIGINTERN VALUE SWIG_Complex_Imaginary(VALUE obj) { - static ID imag_id = rb_intern("imag"); - return rb_funcall2(obj, imag_id, 0, 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.0f); - 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/linux/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg deleted file mode 100755 index 597ae83d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg +++ /dev/null @@ -1,1114 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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() const - { - int s = (int) size(); - for (int i = 0; i < s; ++i) { - VALUE item = rb_ary_entry(_seq, i ); - if (!swig::check(item)) - 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( const 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 (const 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( const 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( const 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( const 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_funcall2( i, id_start, 0, 0 ); - VALUE end = rb_funcall2( i, id_end, 0, 0 ); - bool noend = ( rb_funcall2( i, id_noend, 0, 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 (const 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 (const 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/linux/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg deleted file mode 100755 index 663dddb8..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg +++ /dev/null @@ -1,134 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubydef.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubydef.swg deleted file mode 100755 index 956aaee0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubydef.swg +++ /dev/null @@ -1 +0,0 @@ -/* empty file added for backward comp. */ diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg deleted file mode 100755 index 434544bc..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg +++ /dev/null @@ -1,154 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg deleted file mode 100755 index 3c3b6581..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/linux/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg deleted file mode 100755 index e4d9e214..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg +++ /dev/null @@ -1,185 +0,0 @@ -#if __GNUC__ >= 7 -#pragma GCC diagnostic push -#if defined(__cplusplus) -#pragma GCC diagnostic ignored "-Wregister" -#if __GNUC__ >= 10 -#pragma GCC diagnostic ignored "-Wvolatile" -#if __GNUC__ >= 11 -#pragma GCC diagnostic ignored "-Wdeprecated-enum-enum-conversion" -#endif -#endif -#endif -#endif - -#include - -#if __GNUC__ >= 7 -#pragma GCC diagnostic pop -#endif - -/* 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 - - - -/* - * The following macros are used for providing the correct type of a - * function pointer to the Ruby C API. - * Starting with Ruby 2.7 (corresponding to RB_METHOD_DEFINITION_DECL being - * defined) these macros act transparently due to Ruby's moving away from - * ANYARGS and instead employing strict function signatures. - * - * Note: In case of C (not C++) the macros are transparent even before - * Ruby 2.7 due to the fact that the Ruby C API used function declarators - * with empty parentheses, which allows for an unspecified number of - * arguments. - * - * PROTECTFUNC(f) is used for the function pointer argument of the Ruby - * C API function rb_protect(). - * - * VALUEFUNC(f) is used for the function pointer argument(s) of Ruby C API - * functions like rb_define_method() and rb_define_singleton_method(). - * - * VOIDFUNC(f) is 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 Ruby C API functions like Data_Wrap_Struct() - * and Data_Make_Struct(). - * - * SWIG_RUBY_VOID_ANYARGS_FUNC(f) is used for the function pointer - * argument(s) of Ruby C API functions like rb_define_virtual_variable(). - * - * SWIG_RUBY_INT_ANYARGS_FUNC(f) is used for the function pointer - * argument(s) of Ruby C API functions like st_foreach(). - */ -#if defined(__cplusplus) && !defined(RB_METHOD_DEFINITION_DECL) -# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f) -# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f) -# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) -# define SWIG_RUBY_VOID_ANYARGS_FUNC(f) ((void (*)(ANYARGS))(f)) -# define SWIG_RUBY_INT_ANYARGS_FUNC(f) ((int (*)(ANYARGS))(f)) -#else -# define PROTECTFUNC(f) (f) -# define VALUEFUNC(f) (f) -# define VOIDFUNC(f) (f) -# define SWIG_RUBY_VOID_ANYARGS_FUNC(f) (f) -# define SWIG_RUBY_INT_ANYARGS_FUNC(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/linux/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg deleted file mode 100755 index fc6e039b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg +++ /dev/null @@ -1 +0,0 @@ -%insert(initbeforefunc) "swiginit.swg" diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg deleted file mode 100755 index 89fea452..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg +++ /dev/null @@ -1,932 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubykw.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubykw.swg deleted file mode 100755 index 6b4685eb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubykw.swg +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef RUBY_RUBYKW_SWG_ -#define RUBY_RUBYKW_SWG_ - -/* Warnings for Ruby keywords */ -#define RUBYKW(x) %keywordwarn("'" `x` "' is a ruby keyword",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/linux/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg deleted file mode 100755 index de2a52ba..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg +++ /dev/null @@ -1,13 +0,0 @@ - -// 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/linux/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg deleted file mode 100755 index d1ac8bf0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg +++ /dev/null @@ -1,55 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg deleted file mode 100755 index 4b078dee..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg +++ /dev/null @@ -1,228 +0,0 @@ -/* ----------------------------------------------------------------------------- - * rubyprimtypes.swg - * ----------------------------------------------------------------------------- */ -/* ------------------------------------------------------------ - * Primitive Types - * ------------------------------------------------------------ */ - -/* auxiliary ruby fail method */ - -%fragment("SWIG_ruby_failed","header") -{ -SWIGINTERN VALUE -SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2)) -{ - return Qnil; -} -} - -%define %ruby_aux_method(Type, Method, Action) -SWIGINTERN VALUE SWIG_AUX_##Method##(VALUE arg) -{ - VALUE *args = (VALUE *)arg; - 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(VALUEFUNC(SWIG_AUX_NUM2LONG), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2LL), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2ULL), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2DBL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { - if (val) *val = v; - return SWIG_OK; - } - } - return SWIG_TypeError; -} -} - - diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg deleted file mode 100755 index 6cac4626..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg +++ /dev/null @@ -1,468 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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__"); - if (NIL_P(stype)) - return NULL; - 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; - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE)) { - if (!RDATA(obj)->dfree) - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - - /* 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; - } - } - - if (flags & SWIG_POINTER_CLEAR) { - DATA_PTR(obj) = 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); - rb_undef_alloc_func(cl); - /* 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_funcall2( proc, swig_arity_id, 0, 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/linux/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg deleted file mode 100755 index 41215614..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg +++ /dev/null @@ -1,9 +0,0 @@ - -%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/linux/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg deleted file mode 100755 index e14f6590..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg +++ /dev/null @@ -1,33 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg deleted file mode 100755 index 99dd7f81..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg +++ /dev/null @@ -1,199 +0,0 @@ - -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg deleted file mode 100755 index 4120b38e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg +++ /dev/null @@ -1,15 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg deleted file mode 100755 index 5150333c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg +++ /dev/null @@ -1,162 +0,0 @@ -/** - * @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/linux/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg deleted file mode 100755 index 3adf0008..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg +++ /dev/null @@ -1,57 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg deleted file mode 100755 index 1edcc568..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg +++ /dev/null @@ -1,136 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(ID id, VALUE *var) { - 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", - VALUEFUNC(swig_ruby_trackings_count), - SWIG_RUBY_VOID_ANYARGS_FUNC((rb_gvar_setter_t*)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(st_data_t ptr, st_data_t obj, st_data_t meth) { - ((void (*) (void *, VALUE))meth)((void *)ptr, (VALUE)obj); - return ST_CONTINUE; -} - -SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) { - st_foreach(swig_ruby_trackings, - SWIG_RUBY_INT_ANYARGS_FUNC(swig_ruby_internal_iterate_callback), - (st_data_t)meth); -} - -#ifdef __cplusplus -} -#endif diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg deleted file mode 100755 index 3837df07..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg +++ /dev/null @@ -1,62 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg deleted file mode 100755 index 1689c7f0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg +++ /dev/null @@ -1,20 +0,0 @@ -#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/linux/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg b/linux/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg deleted file mode 100755 index 7da6f4bf..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg +++ /dev/null @@ -1,58 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/ruby/std_alloc.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_alloc.i deleted file mode 100755 index 35dc051b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/std_array.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_array.i deleted file mode 100755 index a4d3ef54..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_array.i +++ /dev/null @@ -1,102 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i deleted file mode 100755 index ba13ba76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i +++ /dev/null @@ -1,92 +0,0 @@ -#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/linux/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i deleted file mode 100755 index bf4e6c47..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/std_common.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_common.i deleted file mode 100755 index 0cf9ce10..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_common.i +++ /dev/null @@ -1,74 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/ruby/std_complex.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_complex.i deleted file mode 100755 index ef4e8a10..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_complex.i +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/ruby/std_container.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_container.i deleted file mode 100755 index 85379505..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/std_deque.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_deque.i deleted file mode 100755 index b70f34ee..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_deque.i +++ /dev/null @@ -1,30 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_except.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/std_functors.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_functors.i deleted file mode 100755 index 54ee97b5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_functors.i +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @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/linux/bin/swig/share/swig/4.1.0/ruby/std_ios.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_ios.i deleted file mode 100755 index 7aafae28..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_ios.i +++ /dev/null @@ -1,14 +0,0 @@ - -#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/linux/bin/swig/share/swig/4.1.0/ruby/std_iostream.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_iostream.i deleted file mode 100755 index ee36bec4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_iostream.i +++ /dev/null @@ -1,12 +0,0 @@ -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/linux/bin/swig/share/swig/4.1.0/ruby/std_list.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_list.i deleted file mode 100755 index b0b4928e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_list.i +++ /dev/null @@ -1,42 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_map.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_map.i deleted file mode 100755 index 6dd2ffa7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_map.i +++ /dev/null @@ -1,424 +0,0 @@ -// -// 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_funcall2(obj, id_to_a, 0, 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/linux/bin/swig/share/swig/4.1.0/ruby/std_multimap.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_multimap.i deleted file mode 100755 index 5d8e33e9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_multimap.i +++ /dev/null @@ -1,226 +0,0 @@ -/* - 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_funcall2(obj, id_to_a, 0, 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/linux/bin/swig/share/swig/4.1.0/ruby/std_multiset.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_multiset.i deleted file mode 100755 index 252ae10d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_multiset.i +++ /dev/null @@ -1,50 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_pair.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_pair.i deleted file mode 100755 index 38a4ffb9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_pair.i +++ /dev/null @@ -1,212 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_queue.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_queue.i deleted file mode 100755 index 2a16d9cf..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_queue.i +++ /dev/null @@ -1,33 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_set.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_set.i deleted file mode 100755 index 1b425c6b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_set.i +++ /dev/null @@ -1,228 +0,0 @@ -/* - 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<$type>($1, 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($1.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/linux/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i deleted file mode 100755 index 086e3081..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i +++ /dev/null @@ -1,144 +0,0 @@ -#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) { - int res = SWIG_ERROR; - swig_type_info *descriptor = type_info >(); - if (val) { - std::shared_ptr *p = 0; - swig_ruby_owntype newmem = {0, 0}; - res = descriptor ? SWIG_ConvertPtrAndOwn(obj, (void **)&p, descriptor, 0, &newmem) : SWIG_ERROR; - if (SWIG_IsOK(res)) { - 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; - } - } else { - res = descriptor ? SWIG_ConvertPtr(obj, 0, descriptor, 0) : SWIG_ERROR; - } - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_sstream.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_sstream.i deleted file mode 100755 index 537a3ae5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_sstream.i +++ /dev/null @@ -1,2 +0,0 @@ - -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/std_stack.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_stack.i deleted file mode 100755 index 7df48ef1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_stack.i +++ /dev/null @@ -1,35 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i deleted file mode 100755 index 44b9bb4d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/std_string.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_string.i deleted file mode 100755 index f9ecd8e8..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_string.i +++ /dev/null @@ -1,7 +0,0 @@ - -%warnfilter(SWIGWARN_RUBY_WRONG_NAME) std::basic_string; - -AUTODOC(substr, "Return a portion of the String"); - -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i deleted file mode 100755 index 3c6b6502..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i +++ /dev/null @@ -1,83 +0,0 @@ -// -// 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_funcall2(obj, id_to_a, 0, 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/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i deleted file mode 100755 index c3261f9e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i +++ /dev/null @@ -1,100 +0,0 @@ -/* - 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_funcall2(obj, id_to_a, 0, 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/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i deleted file mode 100755 index dae13eef..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i +++ /dev/null @@ -1,50 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i deleted file mode 100755 index e8e1b087..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i +++ /dev/null @@ -1,50 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_vector.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_vector.i deleted file mode 100755 index 67fdcd1f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_vector.i +++ /dev/null @@ -1,52 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_vectora.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_vectora.i deleted file mode 100755 index 1708361e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_vectora.i +++ /dev/null @@ -1,36 +0,0 @@ -/* - 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/linux/bin/swig/share/swig/4.1.0/ruby/std_wstring.i b/linux/bin/swig/share/swig/4.1.0/ruby/std_wstring.i deleted file mode 100755 index c5d168a0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/std_wstring.i +++ /dev/null @@ -1,63 +0,0 @@ -%{ -#if defined(__linux__) -#include -#if BYTE_ORDER == LITTLE_ENDIAN -#define SWIG_RUBY_ENDIAN "LE" -#elif BYTE_ORDER == BIG_ENDIAN -#define SWIG_RUBY_ENDIAN "BE" -#endif -#else -#define SWIG_RUBY_ENDIAN "LE" -#endif - -#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-16" SWIG_RUBY_ENDIAN -#elif WCHAR_MAX == 0x7fffffff || WCHAR_MAX == 0xffffffff -#define SWIG_RUBY_WSTRING_ENCODING "UTF-32" SWIG_RUBY_ENDIAN -#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/linux/bin/swig/share/swig/4.1.0/ruby/stl.i b/linux/bin/swig/share/swig/4.1.0/ruby/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/swigmove.i b/linux/bin/swig/share/swig/4.1.0/ruby/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/ruby/timeval.i b/linux/bin/swig/share/swig/4.1.0/ruby/timeval.i deleted file mode 100755 index 94a75c80..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/timeval.i +++ /dev/null @@ -1,69 +0,0 @@ -/* - 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_funcall2($input, rb_intern("tv_sec"), 0, 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/linux/bin/swig/share/swig/4.1.0/ruby/typemaps.i b/linux/bin/swig/share/swig/4.1.0/ruby/typemaps.i deleted file mode 100755 index 68343646..00000000 --- a/linux/bin/swig/share/swig/4.1.0/ruby/typemaps.i +++ /dev/null @@ -1,314 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/linux/bin/swig/share/swig/4.1.0/runtime.swg b/linux/bin/swig/share/swig/4.1.0/runtime.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i deleted file mode 100755 index 87c89b5f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i +++ /dev/null @@ -1,401 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/linux/bin/swig/share/swig/4.1.0/scilab/carrays.i b/linux/bin/swig/share/swig/4.1.0/scilab/carrays.i deleted file mode 100755 index 014de37f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/carrays.i +++ /dev/null @@ -1,5 +0,0 @@ -%define %array_class(TYPE,NAME) - %array_class_wrap(TYPE,NAME,__paren__,__paren_asgn__) -%enddef - -%include diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/cmalloc.i b/linux/bin/swig/share/swig/4.1.0/scilab/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/cpointer.i b/linux/bin/swig/share/swig/4.1.0/scilab/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/exception.i b/linux/bin/swig/share/swig/4.1.0/scilab/exception.i deleted file mode 100755 index 17f4175c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/exception.i +++ /dev/null @@ -1,6 +0,0 @@ -%include - - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), SWIG_Scilab_Error(code, msg);) -} diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/matrix.i b/linux/bin/swig/share/swig/4.1.0/scilab/matrix.i deleted file mode 100755 index 0936d936..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/matrix.i +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Matrix typemaps - * - */ - -%include -%include -%include -%include - - diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/sciarray.swg b/linux/bin/swig/share/swig/4.1.0/scilab/sciarray.swg deleted file mode 100755 index c00e3837..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/sciarray.swg +++ /dev/null @@ -1,115 +0,0 @@ -/* -------------------------------------------------------------------------- - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scibool.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scibool.swg deleted file mode 100755 index 9aed88ec..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scibool.swg +++ /dev/null @@ -1,156 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scichar.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scichar.swg deleted file mode 100755 index 5edbf5b7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scichar.swg +++ /dev/null @@ -1,292 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg deleted file mode 100755 index f6078690..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg +++ /dev/null @@ -1,445 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scidouble.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scidouble.swg deleted file mode 100755 index 1b826330..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scidouble.swg +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scienum.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scienum.swg deleted file mode 100755 index cc1f7c97..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scienum.swg +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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(), (int)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/linux/bin/swig/share/swig/4.1.0/scilab/sciexception.swg b/linux/bin/swig/share/swig/4.1.0/scilab/sciexception.swg deleted file mode 100755 index 1d653b31..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/sciexception.swg +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scifloat.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scifloat.swg deleted file mode 100755 index f0af17c0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scifloat.swg +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/sciint.swg b/linux/bin/swig/share/swig/4.1.0/scilab/sciint.swg deleted file mode 100755 index 2d699356..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/sciint.swg +++ /dev/null @@ -1,202 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scilab.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scilab.swg deleted file mode 100755 index 3b5f6e81..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scilab.swg +++ /dev/null @@ -1,6 +0,0 @@ -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/scilist.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scilist.swg deleted file mode 100755 index 513f40b6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scilist.swg +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scilong.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scilong.swg deleted file mode 100755 index 4e55be53..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scilong.swg +++ /dev/null @@ -1,123 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg deleted file mode 100755 index 37f68339..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg +++ /dev/null @@ -1,199 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg deleted file mode 100755 index 9444a807..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg +++ /dev/null @@ -1,170 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg deleted file mode 100755 index e304d4f6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg +++ /dev/null @@ -1,175 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg deleted file mode 100755 index fe75e156..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg +++ /dev/null @@ -1,69 +0,0 @@ -// 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/linux/bin/swig/share/swig/4.1.0/scilab/scipointer.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scipointer.swg deleted file mode 100755 index 94ca4ef3..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scipointer.swg +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg b/linux/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg deleted file mode 100755 index b5e30d93..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg +++ /dev/null @@ -1,23 +0,0 @@ -%include -%include - -%include - -%include -%include - -%include -%include - -%include -%include - -%include -%include -%include - -%include - -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/scirun.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scirun.swg deleted file mode 100755 index 586d5f16..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scirun.swg +++ /dev/null @@ -1,532 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) { - 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 -SWIGEXPORT 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 -SWIGEXPORT 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/linux/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg b/linux/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg deleted file mode 100755 index e772926f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg +++ /dev/null @@ -1,47 +0,0 @@ -%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 -SWIGEXPORT int SWIG__Init(SWIG_GatewayParameters) { - SWIG_InitializeModule(NULL); - SWIG_CreateScilabVariables(pvApiCtx); - swig_module_initialized = 1; -%} diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/scisequence.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scisequence.swg deleted file mode 100755 index 5fe0fdbe..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scisequence.swg +++ /dev/null @@ -1,195 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg deleted file mode 100755 index b7d07844..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg +++ /dev/null @@ -1,98 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg deleted file mode 100755 index 29cc52d6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg deleted file mode 100755 index 41d37e55..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg +++ /dev/null @@ -1,98 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg deleted file mode 100755 index 3a9f7bf6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg +++ /dev/null @@ -1,104 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg deleted file mode 100755 index b3618e94..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg +++ /dev/null @@ -1,123 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scishort.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scishort.swg deleted file mode 100755 index 3d2f0f97..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scishort.swg +++ /dev/null @@ -1,188 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg b/linux/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg deleted file mode 100755 index 99fdce7b..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg +++ /dev/null @@ -1,259 +0,0 @@ -// 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/linux/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg b/linux/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg deleted file mode 100755 index f7338958..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg +++ /dev/null @@ -1,190 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i deleted file mode 100755 index b5735381..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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/linux/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i deleted file mode 100755 index bf4e6c47..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/std_common.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_common.i deleted file mode 100755 index 97cfa7b0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_common.i +++ /dev/null @@ -1,72 +0,0 @@ -%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/linux/bin/swig/share/swig/4.1.0/scilab/std_container.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_container.i deleted file mode 100755 index a1e037b8..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_container.i +++ /dev/null @@ -1,3 +0,0 @@ -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/std_deque.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_deque.i deleted file mode 100755 index d2ca597a..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_deque.i +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/std_except.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/std_list.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_list.i deleted file mode 100755 index 75d002d4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_list.i +++ /dev/null @@ -1,30 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/std_map.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_map.i deleted file mode 100755 index 07eb63fd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_map.i +++ /dev/null @@ -1,79 +0,0 @@ -// -// 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/linux/bin/swig/share/swig/4.1.0/scilab/std_multiset.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_multiset.i deleted file mode 100755 index 67e17926..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_multiset.i +++ /dev/null @@ -1,30 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/std_pair.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_pair.i deleted file mode 100755 index 39ef008d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/scilab/std_set.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_set.i deleted file mode 100755 index 9070e2d6..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_set.i +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/std_string.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_string.i deleted file mode 100755 index 8736c2a2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_string.i +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 - -%typemap(throws, noblock=1) std::string { - SWIG_Scilab_Raise_Ex($1.c_str(), "$type", $&descriptor); -} - -%typemap(throws, noblock=1) const std::string & { - SWIG_Scilab_Raise_Ex($1.c_str(), "$type", $descriptor); -} diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/std_vector.i b/linux/bin/swig/share/swig/4.1.0/scilab/std_vector.i deleted file mode 100755 index 6eaeeca5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/std_vector.i +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * 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/linux/bin/swig/share/swig/4.1.0/scilab/stl.i b/linux/bin/swig/share/swig/4.1.0/scilab/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/swigmove.i b/linux/bin/swig/share/swig/4.1.0/scilab/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/scilab/typemaps.i b/linux/bin/swig/share/swig/4.1.0/scilab/typemaps.i deleted file mode 100755 index 9d713874..00000000 --- a/linux/bin/swig/share/swig/4.1.0/scilab/typemaps.i +++ /dev/null @@ -1,62 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/shared_ptr.i b/linux/bin/swig/share/swig/4.1.0/shared_ptr.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/README b/linux/bin/swig/share/swig/4.1.0/std/README old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/_std_deque.i b/linux/bin/swig/share/swig/4.1.0/std/_std_deque.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_alloc.i b/linux/bin/swig/share/swig/4.1.0/std/std_alloc.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_array.i b/linux/bin/swig/share/swig/4.1.0/std/std_array.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_basic_string.i b/linux/bin/swig/share/swig/4.1.0/std/std_basic_string.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_carray.swg b/linux/bin/swig/share/swig/4.1.0/std/std_carray.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_char_traits.i b/linux/bin/swig/share/swig/4.1.0/std/std_char_traits.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_common.i b/linux/bin/swig/share/swig/4.1.0/std/std_common.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_container.i b/linux/bin/swig/share/swig/4.1.0/std/std_container.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_deque.i b/linux/bin/swig/share/swig/4.1.0/std/std_deque.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_except.i b/linux/bin/swig/share/swig/4.1.0/std/std_except.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_ios.i b/linux/bin/swig/share/swig/4.1.0/std/std_ios.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_iostream.i b/linux/bin/swig/share/swig/4.1.0/std/std_iostream.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_list.i b/linux/bin/swig/share/swig/4.1.0/std/std_list.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_map.i b/linux/bin/swig/share/swig/4.1.0/std/std_map.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_multimap.i b/linux/bin/swig/share/swig/4.1.0/std/std_multimap.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_multiset.i b/linux/bin/swig/share/swig/4.1.0/std/std_multiset.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_pair.i b/linux/bin/swig/share/swig/4.1.0/std/std_pair.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_queue.i b/linux/bin/swig/share/swig/4.1.0/std/std_queue.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_set.i b/linux/bin/swig/share/swig/4.1.0/std/std_set.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_sstream.i b/linux/bin/swig/share/swig/4.1.0/std/std_sstream.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_stack.i b/linux/bin/swig/share/swig/4.1.0/std/std_stack.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_streambuf.i b/linux/bin/swig/share/swig/4.1.0/std/std_streambuf.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_string.i b/linux/bin/swig/share/swig/4.1.0/std/std_string.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_unordered_map.i b/linux/bin/swig/share/swig/4.1.0/std/std_unordered_map.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_unordered_multimap.i b/linux/bin/swig/share/swig/4.1.0/std/std_unordered_multimap.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_unordered_multiset.i b/linux/bin/swig/share/swig/4.1.0/std/std_unordered_multiset.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_unordered_set.i b/linux/bin/swig/share/swig/4.1.0/std/std_unordered_set.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_vector.i b/linux/bin/swig/share/swig/4.1.0/std/std_vector.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_vectora.i b/linux/bin/swig/share/swig/4.1.0/std/std_vectora.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_wios.i b/linux/bin/swig/share/swig/4.1.0/std/std_wios.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_wiostream.i b/linux/bin/swig/share/swig/4.1.0/std/std_wiostream.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_wsstream.i b/linux/bin/swig/share/swig/4.1.0/std/std_wsstream.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_wstreambuf.i b/linux/bin/swig/share/swig/4.1.0/std/std_wstreambuf.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std/std_wstring.i b/linux/bin/swig/share/swig/4.1.0/std/std_wstring.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/std_except.i b/linux/bin/swig/share/swig/4.1.0/std_except.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/stdint.i b/linux/bin/swig/share/swig/4.1.0/stdint.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/stl.i b/linux/bin/swig/share/swig/4.1.0/stl.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swig.swg b/linux/bin/swig/share/swig/4.1.0/swig.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swigarch.i b/linux/bin/swig/share/swig/4.1.0/swigarch.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swigerrors.swg b/linux/bin/swig/share/swig/4.1.0/swigerrors.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swigfragments.swg b/linux/bin/swig/share/swig/4.1.0/swigfragments.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swiginit.swg b/linux/bin/swig/share/swig/4.1.0/swiginit.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swiglabels.swg b/linux/bin/swig/share/swig/4.1.0/swiglabels.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swigrun.i b/linux/bin/swig/share/swig/4.1.0/swigrun.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swigrun.swg b/linux/bin/swig/share/swig/4.1.0/swigrun.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swigwarn.swg b/linux/bin/swig/share/swig/4.1.0/swigwarn.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/swigwarnings.swg b/linux/bin/swig/share/swig/4.1.0/swigwarnings.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/Makefile.in b/linux/bin/swig/share/swig/4.1.0/tcl/Makefile.in deleted file mode 100755 index 019091c9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/Makefile.in +++ /dev/null @@ -1,122 +0,0 @@ -# --------------------------------------------------------------- -# SWIG Tcl Makefile -# -# This file can be used to build various Tcl extensions with SWIG. -# By default this file is set up for dynamic loading, but it can -# be easily customized for static extensions by modifying various -# portions of the file. -# -# SRCS = C source files -# CXXSRCS = C++ source files -# OBJCSRCS = Objective-C source files -# OBJS = Additional .o files (compiled previously) -# INTERFACE = SWIG interface file -# TARGET = Name of target module or executable -# -# Many portions of this file were created by the SWIG configure -# script and should already reflect your machine. However, you -# may need to modify the Makefile to reflect your specific -# application. -#---------------------------------------------------------------- - -SRCS = -CXXSRCS = -OBJCSRCS = -OBJS = -INTERFACE = -WRAPFILE = $(INTERFACE:.i=_wrap.c) -WRAPOBJ = $(INTERFACE:.i=_wrap.o) -TARGET = module@SO@ # Use this kind of target for dynamic loading -#TARGET = my_tclsh # Use this target for static linking - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -CC = @CC@ -CXX = @CXX@ -OBJC = @CC@ -Wno-import # -Wno-import needed for gcc -CFLAGS = -INCLUDES = -LIBS = - -# SWIG Options -# SWIG = location of the SWIG executable -# SWIGOPT = SWIG compiler options -# SWIGCC = Compiler used to compile the wrapper file - -SWIG = $(exec_prefix)/bin/swig -SWIGOPT = -tcl -SWIGCC = $(CC) - -# SWIG Library files. Uncomment if rebuilding tclsh -#SWIGLIBS = -ltclsh.i - -# Rules for creating .o files from source. - -COBJS = $(SRCS:.c=.o) -CXXOBJS = $(CXXSRCS:.cxx=.o) -OBJCOBJS = $(OBJCSRCS:.m=.o) -ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) - -# Command that will be used to build the final extension. -BUILD = $(SWIGCC) - -# Uncomment the following if you are using dynamic loading -CCSHARED = @CCSHARED@ -BUILD = @LDSHARED@ - -# Uncomment the following if you are using dynamic loading with C++ and -# need to provide additional link libraries (this is not always required). - -#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ - -L/usr/local/lib -lg++ -lstdc++ -lgcc - -# Tcl installation (where is Tcl located) - -TCL_INCLUDE = @TCLINCLUDE@ -TCL_LIB = @TCLLIB@ - -# Build libraries (needed for static builds) - -LIBM = @LIBM@ -LIBC = @LIBC@ -SYSLIBS = $(LIBM) $(LIBC) @LIBS@ - -# Build options (uncomment only one of these) - -BUILD_LIBS = $(LIBS) # Dynamic loading -#BUILD_LIBS = $(TCL_LIB) -ltcl $(LIBS) $(SYSLIBS) # tclsh - -# Compilation rules for non-SWIG components - -.SUFFIXES: .c .cxx .m - -.c.o: - $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - -.cxx.o: - $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< - -.m.o: - $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - - -# ---------------------------------------------------------------------- -# Rules for building the extension -# ---------------------------------------------------------------------- - -all: $(TARGET) - -# Convert the wrapper file into an object file - -$(WRAPOBJ) : $(WRAPFILE) - $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDES) $(TCL_INCLUDE) - -$(WRAPFILE) : $(INTERFACE) - $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) - -$(TARGET): $(WRAPOBJ) $(ALLOBJS) - $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) - -clean: - rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/argcargv.i b/linux/bin/swig/share/swig/4.1.0/tcl/argcargv.i deleted file mode 100755 index bbe149ef..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/argcargv.i +++ /dev/null @@ -1,29 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - int i, nitems; - Tcl_Obj **listobjv; - if (Tcl_ListObjGetElements(interp, $input, &nitems, &listobjv) == TCL_ERROR) { - SWIG_exception_fail(SWIG_ValueError, "in method '$symname', Expecting list of argv"); - goto fail; - } - $1 = ($1_ltype) nitems; - $2 = (char **) malloc((nitems+1)*sizeof(char *)); - for (i = 0; i < nitems; i++) { - $2[i] = Tcl_GetStringFromObj(listobjv[i], NULL); - } - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - int len; - $1 = Tcl_ListObjLength(interp, $input, &len) == TCL_OK; -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/attribute.i b/linux/bin/swig/share/swig/4.1.0/tcl/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/carrays.i b/linux/bin/swig/share/swig/4.1.0/tcl/carrays.i deleted file mode 100755 index 0236672d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/carrays.i +++ /dev/null @@ -1,4 +0,0 @@ -%include - - - diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/cdata.i b/linux/bin/swig/share/swig/4.1.0/tcl/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/cmalloc.i b/linux/bin/swig/share/swig/4.1.0/tcl/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/cpointer.i b/linux/bin/swig/share/swig/4.1.0/tcl/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/cstring.i b/linux/bin/swig/share/swig/4.1.0/tcl/cstring.i deleted file mode 100755 index ede9c596..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/cwstring.i b/linux/bin/swig/share/swig/4.1.0/tcl/cwstring.i deleted file mode 100755 index b17ca763..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/cwstring.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/exception.i b/linux/bin/swig/share/swig/4.1.0/tcl/exception.i deleted file mode 100755 index 4d22797c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/exception.i +++ /dev/null @@ -1,6 +0,0 @@ -%include - - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg); return TCL_ERROR;)) -} diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/factory.i b/linux/bin/swig/share/swig/4.1.0/tcl/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i deleted file mode 100755 index b24809af..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - Tcl_SetObjResult(interp, SWIG_NewInstanceObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/std_common.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_common.i deleted file mode 100755 index 0718facb..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_common.i +++ /dev/null @@ -1,17 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/tcl/std_deque.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/std_except.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/std_map.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_map.i deleted file mode 100755 index 2c7f40ac..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_map.i +++ /dev/null @@ -1,79 +0,0 @@ -// -// 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/linux/bin/swig/share/swig/4.1.0/tcl/std_pair.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_pair.i deleted file mode 100755 index 39ef008d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/tcl/std_string.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_string.i deleted file mode 100755 index 5b31b28c..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_string.i +++ /dev/null @@ -1,2 +0,0 @@ -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i deleted file mode 100755 index 0ea324cd..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - Tcl_SetObjResult(interp, SWIG_NewInstanceObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/std_vector.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_vector.i deleted file mode 100755 index a74bf3a1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_vector.i +++ /dev/null @@ -1,436 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -SWIGINTERN Tcl_Obj* SwigString_FromString(const std::string &s) { - return Tcl_NewStringObj(s.data(), (int)s.length()); -} - -SWIGINTERN 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; -} - -SWIGINTERN int SwigString_AsString(Tcl_Interp *interp, Tcl_Obj *o, std::string *val) { - int len; - const char* temp = Tcl_GetStringFromObj(o, &len); - (void)interp; - 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 - else 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 - else 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/linux/bin/swig/share/swig/4.1.0/tcl/std_wstring.i b/linux/bin/swig/share/swig/4.1.0/tcl/std_wstring.i deleted file mode 100755 index f1326149..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/std_wstring.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/stl.i b/linux/bin/swig/share/swig/4.1.0/tcl/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/swigmove.i b/linux/bin/swig/share/swig/4.1.0/tcl/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/tcl8.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tcl8.swg deleted file mode 100755 index 5da1bc07..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tcl8.swg +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/tcl/tclapi.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclapi.swg deleted file mode 100755 index 2187de52..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclapi.swg +++ /dev/null @@ -1,108 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg deleted file mode 100755 index 889d3ad5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg +++ /dev/null @@ -1,76 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg deleted file mode 100755 index ba6398c7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg +++ /dev/null @@ -1,22 +0,0 @@ -/* - - 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/linux/bin/swig/share/swig/4.1.0/tcl/tclinit.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclinit.swg deleted file mode 100755 index cf14de88..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclinit.swg +++ /dev/null @@ -1,140 +0,0 @@ -/* ------------------------------------------------------------ - * 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.4" -#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 - if (Tcl_InitStubs(interp, 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/linux/bin/swig/share/swig/4.1.0/tcl/tclinterp.i b/linux/bin/swig/share/swig/4.1.0/tcl/tclinterp.i deleted file mode 100755 index 3b45b6d4..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclinterp.i +++ /dev/null @@ -1,17 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/tcl/tclkw.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclkw.swg deleted file mode 100755 index e96e885d..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclkw.swg +++ /dev/null @@ -1,10 +0,0 @@ -#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/linux/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg deleted file mode 100755 index ab7bace5..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg +++ /dev/null @@ -1,4 +0,0 @@ -%include - - - diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/tclopers.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclopers.swg deleted file mode 100755 index f113ccd1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclopers.swg +++ /dev/null @@ -1,43 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg deleted file mode 100755 index febbffb7..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg +++ /dev/null @@ -1,230 +0,0 @@ -/* ------------------------------------------------------------ - * 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) -{ - Tcl_WideInt v; - if (Tcl_GetWideIntFromObj(0, obj, &v) == TCL_OK) { - if (sizeof(v) > sizeof(*val) && (v < LLONG_MIN || v > LLONG_MAX)) { - return SWIG_OverflowError; - } - 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/linux/bin/swig/share/swig/4.1.0/tcl/tclresult.i b/linux/bin/swig/share/swig/4.1.0/tcl/tclresult.i deleted file mode 100755 index c63b3ee1..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclresult.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/tcl/tclrun.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclrun.swg deleted file mode 100755 index e8136051..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclrun.swg +++ /dev/null @@ -1,722 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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_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; - const char *cmd_name; - /* 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); - } - cmd_name = c; - - c++; - c = SWIG_UnpackData(c,ptr,sizeof(void *)); - - if (ty) { - tc = c ? SWIG_TypeCheck(c,ty) : 0; - if (tc) { - Tcl_CmdInfo info; - if (Tcl_GetCommandInfo(interp, cmd_name, &info)) { - swig_instance *inst = (swig_instance *)info.objClientData; - if (!inst->thisvalue) { - *ptr = 0; - } - assert(inst->thisvalue == *ptr); - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !SWIG_Thisown(inst->thisvalue)) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (flags & SWIG_POINTER_DISOWN) { - SWIG_Disown((void *) *ptr); - } - if (flags & SWIG_POINTER_CLEAR) { - inst->thisvalue = 0; - } - { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc,(void *) *ptr,&newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } - } - } - } else { - return SWIG_ERROR; - } - } - - 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; - int has_command; - char *name; - name = Tcl_GetStringFromObj(robj,NULL); - has_command = Tcl_GetCommandInfo(interp, name, &ci); - if (!has_command || 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); - } - } else { - swig_instance *inst = (swig_instance *)ci.objClientData; - /* Restore thisvalue as SWIG_POINTER_CLEAR may have been used to set it to zero. - Occurs when the C pointer is re-used by the memory allocator and the command has - been created and not destroyed - bug?? - see cpp11_std_unique_ptr_runme.tcl test. */ - if (inst->thisvalue != thisvalue) { - assert(inst->thisvalue == 0); - inst->thisvalue = 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/linux/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg deleted file mode 100755 index bb4edd74..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg +++ /dev/null @@ -1,15 +0,0 @@ -/* 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/linux/bin/swig/share/swig/4.1.0/tcl/tclsh.i b/linux/bin/swig/share/swig/4.1.0/tcl/tclsh.i deleted file mode 100755 index 21dc35af..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclsh.i +++ /dev/null @@ -1,57 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - - -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; - Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); - - return TCL_OK; -} - -int main(int argc, char **argv) { - Tcl_Main(argc, argv, Tcl_AppInit); - return(0); - -} - -%} - diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg deleted file mode 100755 index 540d6270..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg +++ /dev/null @@ -1,31 +0,0 @@ -/* ------------------------------------------------------------ - * 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/linux/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg deleted file mode 100755 index 66cce47e..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* ------------------------------------------------------------ - * 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(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/linux/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg deleted file mode 100755 index d5b41fb9..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg +++ /dev/null @@ -1,5 +0,0 @@ -/* ----------------------------------------------------------------------------- - * Special user directives - * ----------------------------------------------------------------------------- */ - - diff --git a/linux/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg b/linux/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg deleted file mode 100755 index 09374c54..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg +++ /dev/null @@ -1,68 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - - *cptr = (wchar_t*)dst; - 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/linux/bin/swig/share/swig/4.1.0/tcl/typemaps.i b/linux/bin/swig/share/swig/4.1.0/tcl/typemaps.i deleted file mode 100755 index 04a5c78f..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/typemaps.i +++ /dev/null @@ -1,464 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/linux/bin/swig/share/swig/4.1.0/tcl/wish.i b/linux/bin/swig/share/swig/4.1.0/tcl/wish.i deleted file mode 100755 index 42902850..00000000 --- a/linux/bin/swig/share/swig/4.1.0/tcl/wish.i +++ /dev/null @@ -1,113 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -/* - *---------------------------------------------------------------------- - * - * 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) -{ - Tk_Window main; - main = Tk_MainWindow(interp); - - /* - * 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; - } - - /* - * 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. - */ - - Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); - return TCL_OK; -} - -#if TK_MAJOR_VERSION >= 4 -int main(int argc, char **argv) { - Tk_Main(argc, argv, Tcl_AppInit); - return(0); -} -#else -extern int main(); -#endif - -%} - - - diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/README b/linux/bin/swig/share/swig/4.1.0/typemaps/README old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/attribute.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/attribute.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/carrays.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/carrays.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/cdata.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/cdata.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/cmalloc.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/cmalloc.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/cpointer.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/cpointer.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/cstring.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/cstring.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/cstrings.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/cstrings.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/cwstring.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/cwstring.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/enumint.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/enumint.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/exception.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/exception.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/factory.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/factory.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/fragments.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/fragments.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/implicit.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/implicit.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/inoutlist.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/inoutlist.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/misctypes.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/misctypes.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/primtypes.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/primtypes.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/ptrtypes.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/ptrtypes.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/std_except.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/std_except.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/std_string.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/std_string.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/std_strings.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/std_strings.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/std_wstring.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/std_wstring.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/string.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/string.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/strings.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/strings.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/swigmacros.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/swigmacros.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/swigmove.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/swigmove.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/swigobject.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/swigobject.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/swigtype.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/swigtype.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/swigtypemaps.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/swigtypemaps.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/typemaps.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/typemaps.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/valtypes.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/valtypes.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/void.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/void.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/typemaps/wstring.swg b/linux/bin/swig/share/swig/4.1.0/typemaps/wstring.swg old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/wchar.i b/linux/bin/swig/share/swig/4.1.0/wchar.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/windows.i b/linux/bin/swig/share/swig/4.1.0/windows.i old mode 100755 new mode 100644 diff --git a/linux/bin/swig/share/swig/4.1.0/xml/typemaps.i b/linux/bin/swig/share/swig/4.1.0/xml/typemaps.i deleted file mode 100755 index 29736135..00000000 --- a/linux/bin/swig/share/swig/4.1.0/xml/typemaps.i +++ /dev/null @@ -1,3 +0,0 @@ -// -------------------------------------------------------------------- -// Empty file for %include to work -// -------------------------------------------------------------------- diff --git a/linux/bin/swig/share/swig/4.1.0/xml/xml.swg b/linux/bin/swig/share/swig/4.1.0/xml/xml.swg deleted file mode 100755 index c7bdbad0..00000000 --- a/linux/bin/swig/share/swig/4.1.0/xml/xml.swg +++ /dev/null @@ -1 +0,0 @@ -/* nothing special */ \ No newline at end of file diff --git a/mac/bin/swig/bin/swig b/mac/bin/swig/bin/swig index df3a39684c88d469da040e3e9fdd3a1591cbd997..23c33f68c6f22607e95a72f4fd0d49e1459a02d6 100755 GIT binary patch literal 1854017 zcmeFa33QZ2)<4{xq#;1!6BHyWNYqAyh!7=8glO6%@-#GxqKKk^1`tM6lx~HQCD@7Z z*tFv7K5n>-%Z%eNjw7f65&{Xh0xGMJfCAOF5ELarg#Q12Rn<$7nb-Hc|L;5JJ74FV zPFLNkx^?T;ty{NlE&b8a50=?%wiLU~))wEXHd~R+c0$|!2%i902EGw0x7jj3axuhc z@-NAOBnOflNOB;_fg}f#97u8?$$=yXk{n2KAjyFw2a+5}av;fpBnOflNOB;_fg}f# z97u8?$$=yXk{n2KAjyFw2a+5}av;fpBnOflNOB;_fg}f#97u8?$$=yXk{n2KAjyFw z2a+5}av;fpBnOflNOB;_fg}f#97u8?$$=yXk{n2KAjyFw2mbGJ;PYSh9>v9fJ1+j) zQt-*bXAuCEPQiZ@pD|;GxdxTqSbEJ>65Q$^-U;|`|A=QbDi|~7+R~BNw$3ig zSF5K6VktWA0Dzx#oiJvMclm{7XbG z@%jEEeSPO=NPPEb{xSaF;Jfp_Nq3GLGwIF=cS-!M<>l3&!Z+_kMF``^wlR^!F=NJ0 z95dmbTkaUIpucJFLWOU2ca`23aoshEXky{G9GAGRb;ZCo8{}0sv0THn{Mw3CoH+T3 z%kiC)$4s4m$E|lw9y7&z5BlZ!_@eoVKanoV+m#Bn{6A*QZFj|cmHpfrU%IAmo-V`q zvG@{)_Lwn~Z~0I3EztO;Xy!AXh>wqnjMa7VYs{EC?qa7-@{XC{yR+;!^x0|^|FWZH z5KqL{TB?sH$F19&qw!7Ca>Dq3mb-DccyEbT{#*Vn{7TU`k;({vjQ?kRWp~|i$6a@- z+`q+_wN>GJJVAI9@#*0bEe?L&IyJ7Pev5C>HifURGghP(eaGU9>vfO&$|0pC?x;>K z%2aY(6fKb{5%zDZ;`|>?VZxa66DH&cD;}AssJoxVUZhto{$amvQMGU;lN|Eo2|(KwCT1o|<7h zHyS4lf4OKc%N1oLN~fxa?PZ$m(k`7qxjkMt>M!fn>-@a)LByn6C0+d!@~4jL{+s;6 zr%&~czvKMNbrIyY+0Mp?^yOq_+H%0>o;qH1a;9xcV#ffU{7Z5m$$=yXk{n2KAjyFw z2a+5}av;fpBnOflNOB;_fg}f#97u8?$$=yXk{n2KAjyFw2a+5}av;fpBnOflNOB;_ zfg}f#97u8?$$=yXk{n2KAjyFw2a+5}av;fpBnOflNOB;_fg}f#97uBD|7#q$&UL+O zgzGxjwZn&**5PG0fqs$ug3ac(>P)L)SrOyeGG3pz)no1Vv}-Xca6id5wDRCkqx7iT zUvJOb>k0PwW^RVfwbX_J;nSA!OMHqert9ExS2%_x0f4b*>S^tpnB(j4utBfI5T{IsOLnvem2pg~<_gL-GGcD=@wN55i9)3T$H z2>NJ+SU1*Y^BxtwFHe~y^eo9 zm0^>3ovQSBU3ygLeiToTSCg_=_#{dOM}P};p{)>+g!DRxg)|$)O$oSFI1BN(ywy4G zJ|=xat8~*Uyn%pdc{AW}C&m-Trze>IV>g@46D+L9ZN0EzbT6^lT>f9X8uhHe4}kDG#}@$F#YIn1;vC(dlYHrqFLBa!0M$Ek5$0b> zpvO{VEv@|4s5EiG4or9yaWNTKtlHANy}@F;za_vm?ENz# zgPxR-VT61Ph-s}t?QbHVzcw=GFz?_Rb8o=K$|dJu+`Fn$@ZVjQ@uJ6mD6%8qaH3q$ zj98hcAy8RuJTeYh1NlEZ0j$B!ugFo_gr2X?O10HHengM*FXV>YQoc3=Al^l_{+1rz zw94w)VdCgTsSXr6K|~<`HHGRypaPz0z!U0#^wPY8$np%!SF9)59KmAJ2r_RK`1&F8 zf54l)1h%B`6=?S*d9q$W0>^;+dprzt7IGJkB(>>c`>WK-uc@89gI?d?%Pe*U|DBnMcnxN>*E|1J^p!taYaS z)1GUA*Qyge9+#YB-2+Q2BEHkipkoI*-VF4I2>YRZq?#3Xj6%MkqfRAh)w@NE064S* z?KXqG|H3ruW^yWmp!n0vl*|THk~Ic}12Sb7Q^u+kXf5%t(Lk^e2-u{j<@Y`_(0iH0 z)g)f~oH&})MEvGUm{R;lBTzJ>yI?pjMWby-#V@#W4zL|+=yu$eHY!7h(GQ0J{g7`3 zgcqU1CoCwjdd~z>f8ly)Seq{+;28X0n2Q`M5p@MCoJUc&zonxww-}|}WoZw3?E52) zXv>A9_;g7}y=Vj8x~-Mv{d*XdY3L=00LI5O7!+dqX&h!oMIWG7;7J7Es=)(e;2Q}Z zqQUMM*iCRh4IU8#UqWy<4W1GM_a?ZF20s)7pG9!fsfrTn8%0SMf;VaKq8PXX!8IB@ z5;CN6=MelC1+JV4l?IdG324ed=Pr+C*p~B!3p1D*IisB|G%#MMI|}(Ut_yKXT;a+j zc(eu=#lT0PM8qHs9vTCO3GS=G<6_{=1fQb8vtrXz;ceco4yZHTatt zxIe)cYH$c(f8n`M|B&#VF-hynJciC=!`*qs<#q(OWUD6sgdS7ipSuCPLxV*Oyp!OM zH2CWncpbt2)Zn!-@Ct&T)8Lgc@H+%oYVeX6_|F92slji>z)ui-y#_Cgf#(riq`{BJ zz_SSMsloGN;3)*3sKGO0;9Cej+(k8hN(?-b;BOVUvJyA&F=-4XY-bQ*t2R-)L*HYh zyCLJk`9f5`ukyEa_X=p=m%gOEXH@n9zoDo7M@}&2_LB%RFYk}Qe z&l5$8QMm&z1%$3Jh&=z=$2fpC;1!hR6Vw3uFLWB_t_#yJsc$+MiKsp+?FtfmOR{}A zDA!e%dx7P8LkuwR=AscOcQ`dwck@EF>X(xh0~W+a_kR)mjRxNrtDu75Pc#^hyl5m| zg8!w#!7pgAHwGR~@LUa^7y}m*JVk?Vi-9j7_y!Fg6$9rGe7Oc+6$57x+)IOt zV_-YMoiw;420lQ39qFtZ-#-R+5WHK1|M)W|gmaMQs>%cpL;DX!BCe`j26xHexeRVW z(C@hFaoC}*D)KtCS|%1SxKsu&VelOUAuXpNqiC~+^HaUp=Rw!t``)t<4`#lIPBSf_ zaj?J~Rp2`S#je%J5GdTv@EV3u=pVXpfhv4!v@j=_P>HPA!(f5J^D@iMe3mjc!F#e* z>u>QHm0h5ST~+ro+ljJ-kHNMwn8Dz$FdpmXmcc9rw;~A2N{GFWrfl&; zQsUNPrbKf{>k~s*PkR*Lhcch~NijJ#F3eep$y(iNr$Y6lMQ8IWDgTrL-4hBnQ@JQk_L0H43_4}7g27W{a1Mhf$lwDErpjPBgDp@3t|~u+du8x826xKfL6|tdYSWgYU`Udpstuh4 z;F4JYxU7|-Hi*ESybH*IR9p}IF>~_9r-<_r!RUM$h4l;hXoS{6Bi>JmYV0ea--X#x zDXrC*N|f#|Bsfolt770j1fQzGZ|{%J6kQ2U)!?RB?hXWhpQUh@$8sMA4dN>eo)iOr zPw+Agehy1UMag!8U)SITF)*hMu|R{JF(g$4PuJjSvD|MHe5(dej)B_|JVb-LrAMo@ z2=1rB#WC<73GSxB7stSp2yUany<*^-2yQY|U|{vC*8_O#VdXd_aLGXz+Xu-lM?RYp_p)w<@q(gGXy{F8T(z2Waph4L(bO&(q+(8r(&J&(Ppg zG`NETXK8SX21lR(f!n6R;SP!?2NZb!Ns5DCYVaNfZq(qV8oX73*J|)<8vMBeuh8H} zG`LoQ|E0mxGf8*Q+rQFI&}|YFbGP@WaT3TcKn^-?-W*Er;Xmi7 z*jB`#NZz#=-7Y)}s7o3|S`nutIoJLZo(fl$obTU|K{?4kFN1Q5{x2CEL`j+}gKh?A z$lzcG@0P(K3{H^2s~8+5gV!=ROa`xGuv7*|FnEa!Uddn|863`_QwE1Ic!~^;Wbgz8 zm-DeTaqcH_$oe_o(>Bgwa?>wt!=(&3ndJfoC&}Q2430*yyl^No+kH2)&n|38 zgW>1Bn&H=HQ^+!_Wrv{&XRyS13jbdLthWIW#ovkWK;Z$v#r7)Md(kb65IcehujnFq za+g9_@7REVLP1w^Xq~j*Z)UJg2Crf8Lm9lD!9_Ay%;2A8&}8sW2nHN~m<>h;Gfx6a zvim-!lp_TO$$cllcSH9XjHY6QJ;C1ZLTdA>U2w|>3X4c`uht}s+XqQ`bTTdSFiaOAly~Nt#uZj2%oqpd_?lMo%=COw& zJ6s3r?Y_AXZN;2m=Wn3p#E~mN?cH)VnMA_tY1;=oFF{(kEduW#5G^CtA~Slp=Yy22 zY**DZmUu!g4F162Lozsu!Pzo+6N6qEyqv*F2*U0|dBo6vHxPKOOdrpnTLwonc&QAI zVemo(!NA_6X#@hf3=Bn}8v`X^MRO%su@kOyEY?O(6XrVpC7;DM-PD9E*u11U1O5(ix>x)@^36a~j0?CQ<_VcWK?- zpvFpzpQ+o$f`{bj7be~~c2!LWLqg4JIk5pbO03;P{xLFX(cOZ?I>$PsVce42q1Ax6 zs>U+7R0h)-d`AXvVeoYsyp_S{WU!3EM`e(`8+uR%r!siI43;uDMFz()I9>)PFnA+^ zD}Ibb8uww-1fPTWoVhC!NpFfoPQvGnZ`J2?gs;M9K0Z(3vkafLA`iSH$Mdk--=HFpC|Eo37_Xt&s+FjjE}(QvL7Omv49Q6ceLF9AHT<- z{eQs6hfg^^0eqgs=OujJ!e=o)EAaUgpH29DgU>#E4&jpqUK{wFicb%G`rbH3@m5dH>ya&2h>T?}CIsXzI!B zsreia$a&Xsn~Kd)vD;PbUc|7a4n1NOrohV@-;a;)r<-%W=jb-EpEt#Aed)Fin${7K zaXY7ldXXl-SBYQ$z$_)s{vu@>L$yOIzx8&2F7jBr#q7VO!MqsfETV3@<|4Ug#bA9t zvIg_5G!oh*`VU~qdeIj-h-)Gv2k3=FWEe88YNs+9%vf3Nv1T}@d91gb^PowIf2?Uu zc8)YEXr6g2uhT@CM|GL4P0j z36Ps;{YXy$eDr{?>1F`kYg%bei3i)F*E%P9tRIG2jYF+N;&yBqtnwQHz?qR>{+(ZTj^HX(}GnvJza8@gDb6ZtG2MsO< zm^2pQpp{WEQLZ9;Z$+lW4V5BbXaLUcpiZpoFFOlVQ5b3wgRB}AOSp>Vi76%o^Tz{) zcnyiB^_+7p>!vOGoFW5UJnb|JQH680P6B92CxYbJhnruKR(f|<3*x4Ts-Kk@_oZlj zegV)0Zi0MS@*k#f(cxp20la4QVVD%+999nwUIVOQXJUg;58Fe7N!TTkwakd!`35#> zA7u~m%^(^BkX_aH{d7<&`dtS3SutS&her{lL<~olV<>^hzO&A^YV-E0^A1P?o(I*4 z1PYi03c&%`dHz-Qg0Syv%1nQ8qC{Xk{1(t#t8kP-osVEziFH&I1BE;!ha+8L!Y^nf z=(<|52`$KF3og^-USj&IoaMk{^Y)SKepkjscZfPlou(R{#v&QI$a(tw8n_m1s2JNo z$7VAbKgoC{>lekMwUF_IF{|k^RpLL9=&!XGZ1YutMzOLl z^F~A!zR6EhyrV;X#TznIB}Gg;%ZzGhqUR`yYr!X+b7+G0Wb1=H7R%6Xu^;S`ESJi6 zCt?^I9;0MGzPxU-o}>P|UonFXPSk7`du4BUe}6(c{cAI;J_LvD~dQx zL#nmIt8$j4+?11(!Tc|v3rW!mNH)0^%pZjgBxDgG7;iW`y3$Oj zmD(x?`Nnf5!II7%}kK0x2)Z;TrN3Ae`ngFM?`y z;?rY&CmN)|5Tmhh&L76o6?-2nO|8GPW|>C@5Jm1r@~OJH=R5NCAp5 z_ew%&qwN#lPzj)~F|$958vc&jm^WK|!~}}($@FT&4ht5(it3?9?^5!O++#`4OUNjd zJn$VAk4bzmRH9w^ooIw|h{kD%t(D3mN)I8+2q8VY#qb1rLeD}6*Es?>$Y4ipy;wcQ zUteYk=3k(q1c%@}2)ktg^4DVj<=?>dLNDl?_pq#g5<8K4N_j>iS;j z$$I1UJ$y`k+Yyh|7tFsJno2cpys8fq7S?QJP_TE$Bk7QL*_$5gJf{>~>a^o&zLRAs zY0{lWOmgb>)rQIl59a>_RP5AJfRI$Y_xPxRmaw!*5%W>8Fbkqzw zfxfw$fYbo>pwcEc8UOyM&lep_se)h)3in0&Pvq~x5?6Sh(Cim*iOa$ zJyca3;um6dEJ^9{7<8+uxB?-u3OUr+M!`Q5@=umYB;`9{JBF0~ax}(CX_P}+j&7eU ztw;$ig+mr-Z&a-pH$Z5WSp>Gv=J*TdyOBn=7qZ*{%s<{@DJA)23nkqdO)x6uA(deM zX|e?kqCHcB`6ud(hasYDs;Mf?|5+ja7NP+baLVd$R9wnM8i#4U_&Arr`eg$#d5bH4 zKy57DL9ODNe^RAiV`+?1J&{=}Ld|LHmL~Ds3v!B}k=GxqQCfCu=mNmlItl3zXpgm1 zS-drJ5H*O+J&+#EzerCUgB4}o0!`3hiIK};BAXFK206rvCWg!_ku{0=Kt?*!5}Pr5 zzix&!7K8bHbu${ME?PCC0<8uuZyl7-}4CSu+qzTh|w=8ptsbnG#f$_O9?)k=sl;ETkoD*G9S6vOjXjX1nbwXM|f8Hu$% z*CZ(>Rb9nX5r)%2kxknjHWinEXr7v1QA*s9SQ;bj6schvL>@|p zcxV~TxIxqPJftf|I27()4!K}{QHvsbmQ3CgQy8DA@c=9lN)WrZ{eZU#n3PE0!tmGS6=utgNIMrwq13^OY4k*0V)c|$@UWKx`E7a_Z%>>L)Hh}0O%OhQIT zRIOO{3e-THm@VQl8IQBfPc@-fmK`I+M?D{AZPJ8@oGr;PDu%#&OUVf4|5fTgc&$8^ z^FPnA@4)j5B}36zOgtFsuoY`V5d~KwCC6$D2WK$fr&X(^YW3crhMAat7E5c5`coLh zfivfTb}{A*g*TXApvux_c}P~)AXenSBhy)_xr9*~P-A41uB_M5S5%$P?Ni_(k_y`OqUhN)5F|~`9u=5YK*{ak zY50nGlVC43i8sJTW@`{HAk-66MU%Df1Ds}wh@eyn4Z?>j7R*-Q>F4A1_P(72O7U*ZS!TgpVVHn2lw}H6+GD%8i zH?7UlhFzf%fXDk6{`raM6u0%2a?OLb7YCCzaKFOIJvunv_U?w;rtox0{aA=3x=XAf zMRH=J>~DPn91A$SvM8H%GRQ$|{>gpapu;&{H`np<7#ub2i`C@r1MEp$V-yYBQxIwp z&E44Y7PQN>-jZ%N`g3`h%&2$@|EU|SRbrT|xWqY@oj(;WTO}DMqC$?AJUNcI?*5Tx z2{7?MFjKl9h3m+PCX8&XMb7Lzh4M$+Z{2dv^=MPaPzUgno|Abdt#nCQO) zxm?YyI+K{C@AM)G+AZE82y(LxW0?!cok!`IrP$Gthk?6JmT400(Aw}~8p~s4;z98g zq~Bk-WCCU6G%)iVT&GboB4pdPfLCROtPx(}cO~KCv4d=Xy_ALZYzdTvBsn5-Sy3?m z;9hc}UYr6&L5bOwMoGMewHOse4&(_qmYS?78@UHU@lZ8~&ya=pu@~3SD+GrSYL&#U z03BOl_~q>lP3uBr4oPx0`(Gkr|F4Invj35f{a+UA|C@FHAAkV_=M=mqKpjHXiJMY1 zU?NT*Z-py3bPCW*=Ij&SrE*AOxh7314+b6^^Dr8N45I2ZSSE{yF~Xkz2l)j*9(!Ko zuql)&_#2Iiw^4%K49!1Ll-|aZALyrM@esPhENgL>eQsLwrCZT7{(i`;*^?qZzn*wW zXHYpJDe&#V&O}G#LNNb;ahLK$BA{H66O7sOr4JH;3THX;kgR$9u8bHJyoQK1T?djI z?A8%q7|7?+MpK(5C2(Y6K{llXuBc(5yZ_gX{WOL3?Gp=tOuE4| zBd}1O36Q^V8H7YierE40C@ux)$qppeqQp&tvm7(McyxTKt)!sEsO(Q;0y}RL!L%x8 z5xUx__!hd&V|^ocWHuqpJDp%9wgTY}j1S=jrNI)X{ev7d7Q&9}r@_pxq&SL4zaew5 zoyR`jEj5j_^>DBSKoGPX!%2J^OE4;UDvPpZN+3(2) zPq3K%o_s(};auuFD6~#8FGyMV;)8bEhv-Zk75)%B=Bc53k)0D~Ka^&r=Mf9kh!fwH zTj>{?673`^5z~11HoDC;PYY36OveE9SVx9hdxly+X%8z@4tCv`I!dNuJ9TK~-l5jd zL#^FLMYCMw)DE?Nbz@4xp+suI$}>Px=xgP+`b8*h)(xelicFQARSW%hi`0KSAxQmK zOnJ*iWdnDs5@GT_nBN8FMoj-<_Msp)V(%!#+Ddce31Bm0H%QyZ}y`P%hR{F(ug`c7dJ#!Y5e)1lq)g zCCKo%*fBq%JJ|Yd?8boO`^&Yy&9}1!)uI=xMK_ELIXfa0bo>|euvGbutdY>jY`abC z{w63>h*B|VR#%I$sT`OuCuFx(4P?vKW5Pz?jTI#znW2f|5`;o4z)KhT4w@Vj&5~7c!3uV$OyC)SJ^qv72K)zSPw?;WCI|O3$$VZvzz4lOt5LpyHs7b5Pa~mZ5_6@J-7qB_%5n!(#(Jm*<2N*)i^qOze1_#eu zO1^o5=iR|?w|(#6VA>G|OY_!yKxzMQPMlVQ`+IKx3cK51n>MuI7o%c0NRS%P?LU-i z_-CMC-gLEt##Nh5`*)_lKH|ex=o;=Y^@Tlw(jJ_m zTc21XbVfmUvz1}R?;A?aptj3_70Oc8;Axnq5wJMLiX&(C? zcfkgu;#TAe7_$D$0~yN;HqScaia=V#Rj_*2S(gX8_9-c-o&EVS`}@{ron`hmm$f>Y z>&+4@i(buJuWA=il$>7r4-RHL%4X+93c5a8WISJQ4SY285mIGGw3t{2tVJtLf3*y+ zW*8Gn&AwCb;m!ql~N}$S_BXRv=*6hSv0PuGW4tA3LY+8>ymjDY!$^_#s z$MyBNwFL2u}IH5R?Q$c;0aN58+7rO`KRK!&X8w z76H9cNo~SY1#B}0{7%?w6O4P;n1Qz>*&b^PHyQ3-4}8a!{RUv3oB=&oux~*QfDs+|yaVmjL8LO?LtFU7Iy=A8X*_zolUl#i}M0ss?`YbyW^_zrKG;4)@m4?+tHESQ37U;FSV*D}a%ByX#UcY~VO znyFND;3j+6=DiS}H`v%;(7`yx40d`FSLI+Fv(Fa z88-25jp1L1EG3wc*wySgqw;ZtK*OD%fxCTJ}OC!e9e?rD5#>WA=FDn0+0s{%bRt`KHYOlzSZW%)T}g z)U7~2?!s_N@jVsm$BQ@uNf!kV$T}?`#s%!pg!(72k5&VZ6UnnZ3vf9r%JUWAxlwVF z+>Knz5$-+9wAKPEPR>x@6K_dDKR*U|oz>5eG}FJ@ZZ@ws2RtqZtx>T7R+GnCVfI{M z1}EB4^gDc3&>op`41e+t0#&L)l`12>RHT<_Ka2(*^=%8y12)aw-}VElms+TDBm^XM zFaAmAmDzKP8N5A}Rhz-$6jtvE-fkbNNZG;-{VCy&*#AoPz#8|j_|>R5fEK#~{Z7#W zGbqrtXKBHKS=~wlY1l5@G%Kex&<~Kh*&kyOAN7xvS_gFc?8Z`SQ#8vPm~XX@<}u%v^L(NcuEQFO`p`IobrCe%M)rsuX2`y<&^G`;%nGJqRZuoB5jzz@C!bP z;pK|?@`9+PcJNy{W6y!-PTMjKSe;WiF+)H63dGe~h4#aE024548vb^2`Iz=MR3j1N z++FVG$Fuqedyzg_G~qdb*rb-*~D zyEy?3^5DXt@pl}v!ORorH-{Sw{$K3g!c^~^H2*It-hK$A`+rIG_Cg@T|4W+pOa!w0 zzc{?7AkfMGOB-(%0@?8vO<3SBoO2yHdK1s3xdSt4TRx4Y91N7a^Nul|xSnB_%LASM ziRBlvoPaFKe)^gAlPo==L6$xM|1n8KFBV}kuB??E9bbG8Q;YAeonb${jx^{P(-VBv z*+}LFx{bS-y^)^@QqUx$Fzo-7p8>0m4#{c&LyzO%|G59mpzF?*^p!Dy<^tH%E|q3I+U zQLg3KKm~?Mgne|tg-LAgf(gdawG5WbU5H=}gPysI_;u6VYJQEIyA}zUkdE$T^xC#Jdr99@k-4J;5sX5k=+_S9Lc&4Q3OK_j?QZ>ppa*v*1fz90RC zWmi+;C+oG*EH$>fE`&&K>9ulGE^_qq`lcBaH1Xy z_*rLh-7!*pk0lEIC~%@e)YbAA_tVY}@kR?1K4u1;AlGc5mL86WOOXLe1hWK}*=eW; zlrG+e*#Iu6&fo&Rc`)k6M(KCpOoNpOcdmJ;dp0}+(}qH4(M9h#I0&8rOj2Cw|LHmS zv4fd+ZBMr?=LJV-4r_~Y2VAx+1<{DucoJA7-7pYm)6S+f|f(2O_^ znwF(0HtB}K`W)1QM)}wb$b}R8Yxsb!S2$w6@27AkS8x2>6s@{RJc=N0^KlC$n12VV z7u|K;8}Z6Wl=c#9Ct4E*UsN0JN9A1SW0~uF0G#ld{=)P5ii`JROw!NiX=h1(SGGrc zmf7ao_L9LhlEK<>!TqpsdNdcPczv^C!jsG_*>cMU)gcw=U-;qrfZ2ABHUu2A;r*0b zBsCB)dSGJCmrc;mt{OUD)UJV8$wdsrp$gyr!kJf+;0xH1y+QS!zEP?te4z;Ftf(E4 zNNq<@%PyWM?vpDbI3PsxXXz9NqhcQf8V%UJNtOQ!LW*dOj@GH@Sn!0>wYaVFK~aqNSQceBpq~vy^ext!V6ATStUJ65Yo@LLA2mu9D$7t?7R#h_F#T3zGC(oSk2RK z*RewQO;NT#WKdLI1!D^v0!`w6gbHfCcgTzf#d*l6wncm^!P`Gax1}6sm1^F4fj)t^ zph_%Hv4vA5%<)_wvJPiz)E1bpnEO(5R!&5v2`5_pg&kxgKLfM>C`+)B{Yby{3oyQS z7RO0MJbWnC7JgF<_%z+7@7T23e@n+q=jP#6M-N>srUV;+V!T80yBcyp26sZYNH=B{ z=%AO#+7mum>TkZd=RMao&)`F`)O*Hz=@o0d+2x0NdcP?@lQTx|b*A^W) z!^1Dem@J(0tOew}3=wEHYfISb4Vmm7@ z!n7Ygn>p^MEuoy}ix>=cu0>9&36jwp8VKy$-8?}17JNg=73npH1dpGn5%ulh>XfY)VRV?xC!D?_bb7_)&oFz={v_L8kfsamB3 zcmSkHO0A^>eu zjI71KQK2_*bf1sW4q#n-#Yw;-;R^s~dkCIH5|+bPj-rObW8xJ28egCAl^`V8D@w?I z405q@O_Y!s1JE8>t;~)sepI`T1ax7y1?~rui1!5XI0V{lU6DmSgBu_Fb=PADIpR(8 z56aHs6}l4Q8pI}K6GKX*u@?04BApyIhe61%=PF5$Dhl3bK~~&28-jAK9F}wAHRms7 zzINt-`BI_yW`eHRpcu_Z-W>nXsG#cPpt-SCme2#2LD&O0Uz~Xnn(VfAf52Q2yS#&L zxqClmHN~Y_+<=Uz@z!H%>=3W6Rumv_V*C2)_T^Q#60aiJAAA-TY=HnB7U#jik0za> zySBgNED2RZ2MvLgZ3K33yClxm*!&^+2?QO$)S`q+qxz8VQ_K5=$kSO@lFNMXSvHJ{ zG)foNsAKLoatPqG@?r5Xoa{ege6Vl|p z1Xy7}#Rq<52e(Z&d)ocrJsnp9z3pWoUbrz3^>tnXxrs2^Azr2ywP=QzpmmM6J+MOP z;Nwlf_BpE0bO)}0bGQQ@%yETunonB4w#j0RDO++J1__X367|LBJ!J7HUe$vA4nmVkqS#$jL81r z9Eu17bh!%Zjmm&Tcm*U{HL#RzK?Ccco20XOyF?3451%H9uo5QR#u0zK|gw^TJjPpk+tDHcz3RE;u%mi8373OX>x*;HMDR&Jt3EpVp89ZH%c0<#L0-zi zst-(EyjA@eII{jTP3sGgfSlRTKy5&TIl#`Vr(DB~3YB67g?G^TzB!5`7f#cv zHpF$Otp8a2*a4IHZ&b)J{Bdl=@mdk_XM0O1h41IdPV6s5%D-eGI|>6DDKDxNttXUd z@&uk7d-xs|np8_WcT_Fa2BJ42+FD+uzPVoEIf+VwR>1qR4&w20_Mlo{J~4} zlK!jNKgdm;F$f&`_A<8M6z>4i+1yvQ080VPhtU>vXUaB}(&c!X4mCqK60660?AZE; z==zHj>d#00<8=MJNhc{pxIv&Okd+^&!RS)8tBHG_aw*TMNzZvCx?ZT($tqGs1>YvE^XSb>!=hHCQ zWS=DVN5XioTu-T^#StAnzB9rX!%9At*otA!U^lsS20DJ#_%Kj$d?LU!rsgxw_j+;x zq77?-=oh(x&)MBlgLDngh(R4d6`ZKCpdLLR?ua6aofneBYXM}K+-k48PYqA5x0QHB z(-X(9oO%+3F=75LPs|@3&%ZZ+)VBG(`Ey7(2tICp`FjoO1mj^5=`H)cmty+7r_pFx zh^*>q2HNqPlLHuUea9bBi0m-SzT%Z8&P$kv#ShEVY4!5wEtEap3jd1=|9Qv555=YW zcT#=b;LVT7&2{~`ne=rvn6!yUI zf@=X|>sf{C!bDtJ=jNJLw_gh}4i&b9$_N;nE%D#JEJ`GJTx7%VccAU~y^VtWH7F`? zqKk`F9R;oHkaCufIu;^hSR3hzM}eX&AjfGHj)I#bjgm_$5;`$jp^CQ>=!E()dskyk zBbl5)d7wy&U$=jY{?Y${9`?MpuXvw!n9KSMS8CDEX61Su$2$vFD<;(~!c_J4)xEw@ z_j-;VtKb`N5aM1yiS>gX-uML;PO$M<+&s%~;Ak9S6qng!s zTKEFt?n=$g=PwhJXmP6n4pD>cc@zs?j5F65TJSO;F|0yv3%bdO>A z3NK6E-f#}|cRef@vbCQ7dBdK$7bADUs+oh#`ZOoOQh3D=@-kb!;8QiS34D0~K9u`E zgd7Iaoc?JTe@l7p7&7s?SoDDcho2+Lad>|xLE2*dPyX`9jocP2>jU%*{6*e>kgnzc zQE*N0m?WZhc^1CKbc}9zl<2I?fCZ<|z>P4DlgaNQa;0c$6Ee!NOOtHb-VOtWnb%>jQ3!8&`AhlfG8R7^Wg{r5&AS_t83rYd&4tc^V2lUIPq5ttr z5c)rVf$GY$TjZ+%yztgbEjc>suCGGIf>kp%g}ElgQBse}DIUi=R-EJ1z<~M)Wq_6m z3x=5i41YN@!jj!@maUi5A>>2sT9R(Np;k^PH^k<{Xn%VG=ePqI*m+pvz1aE!B|T-o zL`(8wRW%A@=~-HE)Z3MtFXA=;^0vZ5b;{P}FG|`Sz!6f;G0_E(Vn5dlZME8KPgPkL z8jf<329N-KD$}KeIzlLLyH|p>G z`rF2;QC}9mA3D7PPZs?m9qeckPG!Mo{|Po0_++@;zlICFzQl>F(n*aV$2;{i$1$SV z8^Q+3Kx5f~4>}?Qaqoupw|MP6@R@4j3e<}2_{h?6NLBWW>!Hy&zg1^v)i0oG|B-?B z6#7{~LPouRdBWK`L_4q@jJhRT*TY>hb|4^4VO5WHe7en-cc%ZGi-593@QpWmGKoU;)WxaQrA_N=lmWy8&2g>whL$&8Q_vY$|z zPm^-rF@0XP+`MES*F$Yw^Gf3gLi=&dp#1RpMkSwZbk&vG&X>rc6eaS;81i~#j3K|z z0kV9Tlpj9VsQg$~lhCT^$F_>^DaDE!bI)c?x)q>@4vF-6*k`~-G!CPrFU53f3yqX? z^;9R~%Ma%om3-fm&B@_LEZUNTZHL^@Wq=yX;Kjt7K_V4Tn&V7f8h+g_)CCBl647BL zB;xURl|)qXSz&f@#df%siMpai2GEucbZ#g1&|2y3PUsBwFrF0*MvCQ>2bAm3sDrz?#`Gj1@MvW9>$-mG~IDzDv*PXjO zOX2&rg}wnGTIWWrT*X+{$-R>gWL7PCq%yQvLm)GD+1?!VvUmvvTz2e|z2)T5JJ+0F zt0h}*au&@nT>h0VZrpt01c$6uE@N36fAxp{mJ5x!A7Ox-@7rwY)meOi&3L88@P7~2 zZ~!h!jugD6qee=x94Q?_xL<{yx*Rh(3@U3d>@BPmn#9#Pw8e~yIUteo9hjm_D@+g{ zi!8_HGvGMMWK_u0`q;G^%MI)s+A@Ew{D~?#TBB^{MT15l<1R_#KU8P(fffi32F+Yh zkvOC{Y*;)!bO-6H#Qv6JK^1t2PL*{V6&~q!ZxZ(*ubidT&kLHgaH7=6{djrJOZ45t z226I!*1Zy9WL3xj4)kTuSkI~cfzEWlg9m*faYU zrQ04-N3UeFDsVR=sv(T`iZLu}?G@F&@5!|E&&4&Cq=6#ewZZaquh)TY z4CC-GcamR0c}#ndAzo4;cC?_q>J<+q>r8}UfxG#l1)VtX=t_SCrazc(C9om*>c3SZ zCx3Wi=5;|gSs%IWU%GmJ?%P@Z$oBtlAuaTTd{yUcz&mpbC@J zIVkCc=rxHTV6O5@hht!-@e&MjTD9UnK&?$wrZ}j|GwEsE?W~Y3cEcZCF$A4RsoM1S zbUd9)sdyi1$Ob{w^4|}zz>qX^&Y^{X8FR}yk~mv%3}jhD(n5a(B+BzBySt-9CA*tM zCj{f{HX#ihldaiZbOw=PSpb)rVkvGAfvfL=DkXuRAq1XYg--2{TNoU;*2-4)2Ad52 z9>p;Tkpm+*fxnB<2J&~KtLG=+?_RLCzcKG6wpR1P#6~;V*dW%v4eJi;YkV zZs4R%;RzkU?|*Qh$EFmi20a{xp^f})kmy{?sXw$z=7zUJSNS7cJ^;o-%d3>0b zi~-iT2$==-5Xa~KhIL7>$Fs;GITSjBH2Pb58I{vu3@Gh+-?W(2q+1=r_x>Ig@i!s3sX^lYUv=eBW%Du%L zj4Y$#3DhJ;plaxVDKtzlSek?jg&?kc=kh^h;AO-#Yg?i;maxO6Jnpl;6OVqMz~5=- zQ53)G`KfPP<<@E4ORN_ACTubu$!t}%_w?{w4rQc#(>led^%$MC(}@WtPPc zqoC3AU3HbVXO(jy;#kSKJH%FUYYD+IXe{cg8H8SKl%NWEFw%q?$bb8o{1cZCKheCB^wx@vZ*Wgn`x|vDxJbphXsGP}d#$-&Qh-)OuOGB(jSbq3 zNlQpOme;LY!ymFPyrc)tg6QL$uov$e8txGnK>9bZUKU@WGwiDpvz;v!qv9JEU>XBX zDZ-J`BYb0Qze86p6~8*~%G-``v|a2T(A|3h#bqN7ZDR}QF@~Q7-=wr|hkNJ*7%i=< z{d;&Wy70kvsta*cLb5#zJHm?ba#??Ktr+<_*$;oRbdbp3`*v9yt)IDzo_(SoD-Ghv zH}vCh9~0&sWb_D(vm#^J-f&M%Kb{)p;E4^YD!fe%K^0$qjVaE5B;uVeHp_d)E7kg# zO&AHP{Vh00QXsrd3=HN7*)0}I6AbS`;M=tn`YjSZQKdYnQ%=_0I0;1{1{GifKCteV+J`a#gllhMrZ8RSp2ZG7dXkz*Y6 zw`>LdXxfG1Xg7*aqW_uLrlGWjpD~PhYy3yrd#j{(U#uX`#u!oZ6cv6CyYPb36W^l_ zIL>SpkNdAKb_K4;hEHuIycXe3(e}z?bY-jE1)tBn%pJHgYjB|JAqvl)n0yWJ1j@2R z3226+I$aE40F7AsXUY*Tp!>EGbNFBGz^p9sngnaVn^H870TiE)wf__j!{s>`E@D&{ z$pUxTtZZvqHl86!6{Z9gX9cEa<8a2qFLG?v;~%^sM{$Jr5ytuJ+5Wnt)>>Skl!v-Z z|IyTYt}*>Pf6ZHyIKBc?v&{OE&p0%poKz$$F_N7a$&nEp^`eOLdvF^b!2&*{V9l(Y|DhsChi?Xxe_Ia->#uJuu56h9UQuoBw z?1@w3xG66Q{c*wZ`vW^s!=d8$h&eFH&A=%5^|$(j>;kMl^v0^v_|T8P?f=QFwQIEh z2iK<^BIybB4oR%HA(1?3zbJX=w^_?WF9skFe|se^4@4jdddXFPh2%`a#FHTHQT?s_ zf&TBY^K;k}=p**velpfsJn)8}sH-v5BnA8>R=3M9gE zWFRm!aBmiiKU-NntzIdX1(H(!_BDn#^6xqWKVyuVUGQOl8-5wh=@e}aTQVA%LLYz{ zB%~!K$lq7gO$;JEZ)>=t^7mp*ESvH1%xP?b88{Ey|9fNOdHMOsO=US1D$5Mq0qNQ6 z`;H6T3fz;FVg1A1S8JTn9cdJ0+49FVz~mOU)Z^zyOU zN5YxQXX-i()S*N&JHaGPlqd*r+dxs*g#9%fKMtI1TK8d;4U$7s9wKTR7@S?XW>ya~ za7|X?6PpW6|G*z@zLR)A*DUzKx8E{zYV+3czcnSt3}j#-WH&mZ8aK=vGaHM^77vaZ z!6yU%6TJDpYZ=P+1lqaFrsWJRy8$wI)U4T^V_Lu9+MV4^?sJyc{#j4KmYKucz~-@U zkSCA_u0!WsWB2ZMS<`aNnxl9>BO?!$x^%5>)asTelgu0!4={Cv=-}+6WoF?UwSg!g zVrh4MQMAP@eVm+8L~(v`{{|aTP^UbPwJ%d{_qC@6KO4hG9taa};Kc%JqfVG=uyw5u zkXC15{O|xBc5B4=uV`nUuD44PhN#+Kh}Va>H6^`O9Gk51_;97wD={~sHZ+JngXR74 zPuwkGF}40QV2Nsd9^=PX>qC@Ur+$p8@c&ozxrrYa#b14~sx4T!?_{aRM}<~loXGK( zVE>q~esD%62U~;KE#f+xk0*fdaIxV1cp3JYVVo*Z`}VG=T@k96I%-SQW-_Z%&;l$3^ z1;~t)61^4d+r_?DKk>B@yLqN1U0P}W((EjcH7%Xnl@1qA>YDXMYQlt2_2b>_@Flba zmU2*d3UGIVZ;gnvzTjBDpXH2-ACM%=hN!%8u`G3HDxWpxsgKlBsN8H9MqO7-uP&@P zx)ujZ?tr!_s4?a*M*iSPJAS5fMlWmgxS*Y)`q z4u&OPg00Pmai}rNEc*yP_fIh!jR5st2KaE6Z&Ua^H&*gl;=SkSO2HhGw>NrfGTNKm81GGH;6l%U z3F$uE8Hl(dUx5?fdID3^!`n&g0G2XYAmQqp-rrQ^yZ)xUPnSn27|pTyCqcJSpTw3g zIN|IGT*mgi2|-frX%>a>0ZDc@if^N$^8*&g^Ee728?)dXqQudQ$YtmGkaXU#EJr&1^uvrS zY$qC7yk)5t{aF61`|22Qc-hG79NW5mph8^?PL&2Be}9G!1S6MzgIxLzqK9>{5)vo; zPwMl%LI=j2l_VZQsJ5gz->Jg}X|`EiIeA@yV_gF`iB~>DQ(*kK%dUX&UOQtqmLu7s z%QGAd(PIFibVOUzukoqD^*M$J*aOow%_>fF1=?7t?y^hen&e%XR1Cd!Wf}~TOFy9Y zgZ=6b+>83X8(QFaSPRnyCTXAq0Z2kRjeq7h%WBMm6*Jq*RM-^ZkK}o2tQ43{t`Sfr zreiJ@Ztp0k7(Mbryblwn82+k%+x}0FX+KPF^fnr##xSR7*zXDRmE6+rF8&C0iOYqw z*WXC-O^03WvcS_|em$1>@N2@p+XyF?|9&w1ZkW=G2@dx7C%$kdr&F9bH6C#e2WMu< zhE4*dm2vze5GVt?7@f0f=4P3~Gb=NgQdXQ6=9M3hsu71xka8Bp_+g+lQZFHigI?V;|0gtwBlrxAx(zbW!p#72#+cua+}H z48ODwVE{(!llGy!+@tzK@+%>(?Zfe44i!95er(t%#WhFVNGikYH)*SnnJ;MJU7#m*9NBm2 zS!1J^ik%?L8mCh&UyMr0P@FTZl?Ge-63mMcoRY`fk?k(q2MHA7hc#d+;-=MAa3V?b z7sJ>>@l8m;)>(Y+jgPVD_$SS6U4eTg(bbaZIxI&)^d{imES><0Qm7smez>!w;NzM1 zyUW&;SfBT7aAV)Ed9B;N+QeH%-g|KW8~Q6a9QW)?wnK8#@KDhg^5v)9ZoEKqPqEUk z-nB^Uw>BC9m4HNJXn=Pu7Bf`D-n9@)?^>X|96L=b%z_%<(o*Znv{-Yn0NX;$Q(p_i z#Z&|~#rf&BHn_A^u~D1_SqDG6bK2Mg3q$e~Q?cY{JH<~-?Jj@hXbE;AOO294d3)i~ za~bZYl7dfN##Nz`0Udm&y32lmwF<}5?ldum9uus3)}6&7CDvy>_suGDmmM<8K6P8G zC0|-hyqtimSk2p&zBB{3qcPWWd3yvpzT^lHY&0WvKFOb{S>dZuIPAe{QSnQuK28PT zS2VIeVRG=U6^!kVrZqB#<@DvhN`9@LjT4E*@WS_7O~bUE%YQ|77O6!~;svT9aZch) z8>U3~$p3*E1I9x;Z4bF&$FIRD%Yy0I_x*tXIroO8b$}rX{Z)QdHjZY--{Xk-hoB~5 zqn69*2Tym*;i&A3f8xNSax=uJ;1Bpho|oHfMYd%*Ou8qUL???0j~5O}6d}O|VHuJh z9l7+$IANXJMoH?tv=j$KGoBME0= zt;`LG%12)CPQ?cZySVIe;r9U2ePb25B~h9xQDtj#YZs_(9b66kJ*0Z9GSWC4)#O#X zt*_}-!47v#qr;t==G03U*vZr21L_-HBVoZyeWk{(a>B_AoXaFHAAycY;9ohSfvd6) z*4TZ0aP~LL40Qh4ppxt2-(g6%$DnlUDh#i}?F2)ifCu%V_g6ucMD=ZaKF39>T-XmM zyo9qce`HgGg(ow7C&HdUegG&SQTX8@be1QW*$ev`o?z!+)A`k{Grpqd#_){^K^|$# zTa#A}qkC3dVDN?nmQy9*dj>sc+=tEJ@&~oO{vz##gZQ=JQVZ`pd#q1A))#z+IH%Ow zH`LlD)<1&F_Exym`dR+IjhoLZgs=gg?Ml5j9T+>|KmeD8CH6ybo#jeu=_POlMxdvlcp{Q&LN}XN)+GvTRjC0#^bg2ZQ)PlCGvU~ynW#sY+O|5t$}GCWlWS&XtQ`h zKYe)cVaf5of(PPP6;4OEL_QX{Sphl#faYevlBrjaOa;MCHY6rDX20JYdL8L%JX?h! z?A^xtdpOr+jt$(-l@m<8qYh#IS-Ad-$>W<~qKPZ-Gl)K{4cSvh)kl(L+d1qLE%9+CimIR@wZeo9~B{=@;% z_Bi!DhAi|)!yeI>NiRfkCDhucz}!c(jC(K9ATEzl`#l%U z5eCVV_IoF*xDzc}C?9+s$0?8fhAg?UyA>-uY9>sCIqtF%nA++^M^u4z1T69lc`klP zPF)%gk`*3o!{N!_)#9=^v>Zo{;-qN(+m>q3W&MCJNf`80O-CQ^i#p7Dsp z)Ev`Z*Au$~&7$ik(&ja=>o+{B;Jeuk;Wn^#Q!L#1M2l{Qvk3m!1bfXBfSFO$31+gr z){T3Zh-CR&E?CB6W`<{f9&C>^`7|RCR?KReFMph$|g2?C0`?;~~ayUL#q}f}fDG;L)bYcI=+dT## z+5V#`-pn`zd3vDZXS=MTP8hRA=uq_U$tB=gNnmhRX+aHMk#rfJL-4NAnT-i?N)8TB zgEz`vHr~rf>7UWY*Nw+w3+jDXexZ=@95qnE>R^d2VwBX>8qd>1WUt0nLxME0zG3ow z`$cBi)lez}Mr8R;HUra9%e^@w{~_qAn!IY9Eqk1|TBW?UULU*-M?Un#G3$eg=t2(E zf4e@oRPl2@tuGZ>*U7_+ zSPvD+GviuKX!p3fM#5*3si^9UGiYLA$#$S2r41AnA_?dDX=mPnoT-*adI%JQw21RlAJ(tUVpwhR~kq;s<8JoF8w zdMLb4>(b!7!mOUff4^nhLw3nFPKsQ9hpqwX(*N=Q;9-x41?NDp^0t+O<@g=>giUs&82^(*LybLn8G`y)4CIh^U>4KY6>v1}QPf6HX}}FZ zf7vFGNq?Dmw-O9i^Q}lD7QWunEDrr2=H5KM>gxFaPe>w>#T!&KR?%2vB?1!Et4RS( zAi%wn2rekr1u8Dol|mv|7J~`O_4=+#?Sra_&b+pU-rwE#ETn{&GI8 z6FH5!TzaDYJ5~h$X$b#b%WUxP(kJuT!z42fZm!C+W4jbgS9cO+GkcRR>LkGO&cb{c zZ?M`l*ME&BbmC`IcEd}8u^mi-BO_jC#{MNU_UGG%A1EQfd7G(cCeJFZetym&ElWBQ zXE7%|3ugPIdC2kIntHYjFYZVokS!_}3^_iQ|GJhAcdlkaJZY6Xoa*pKVa>)m5~I=G zX#TqV4vZbn4w}5o+S@t;#$vT*;sYdhrm{<#29N!kp(R0uz-WrKKZo{DY-f+LVXI<# z(4ArvzqZ)KlGK^Xw4v2RnuJj+chVzXJb?J53rmItC!R1YC_DjuQJZY&5uDLcy^6_a zc_erjMu;b`E^FVzhrs;Wz_9(Gp`^M!;Ue{m5smXU*G1ynYLgfC7#19etQ}ES{jVGP zr}a_(JF!VA2Cr6-$`CHNq7i^s_Ye%_uYPULyYWeDV)<`2O#1w^U`S=fTd_$TR$T60 zX)%K>UNE~1C!ns&d7K!nG*`bltN)03AI>Rbs!-eVZ*H|+3W9@PVItJnqqcd-!QGlz zc^Xli&wQXZF#?Cl2$oy7@rjqA!ECYiW=bTU&woDuIXoP!2UV|#)PKs2mSy#m*f_Vr zH6kt84lHy>BrfeiU-zpGMzS=%N^2yQU=p9yP+I-gtdnBN6U!6ZDpqg`Isc`){Ld0^ zS3J+`ZpV`R#{HXT=cRFx`x13q{X)~k+C)?7i2NpRwPOfo7JL#bxx9POE2)FCEQ=x0 zg^REwtw+F});2Y9*1`GRnm$ZLkY{RV81XL)q+aCe`R7vmd46LH3T&B&R_vlOOKQ<_eAPe4cctJqb(fCuC3U@hMU-= z-PK#>oSOKguHqBWKK-T0m`@X)%ek$^zae?V`T*9uT=gZ17b=zpLrSV&j-3AX zym#jGju(t9OT5i0k2tgvlxp)YDn)9BGmz|l(AvbSnx-U=2+5TkU4mPNo5+ix1{aM7 z2bK*!tH*!5;J>HPT3P|9GbK%Rxp!k#;cm= z{IywI;3pxW@QX|ujs36r;<_9=f%D3ts}c1bOAge2j!74mhJzos9>(2>vS4(6qM@{I z{)wd+Fx?t!Qp4&e&Bo=-Kn>2_Q@wi5K@IsJWBT_(@TyCY%D7O8<#na`x(+aLVQJ#R z5|yVXHS#i73(3utrSSrpmy^yYHTz)j86~q>cdIQ6rsgNUUm96h$kd=))4naW#rco2 zUcxkIfn|ipcwQHD$7%G69!8)qg~)>SMY5yaT9{<1MI7fQS=cW3jgZXIfRO)>7$=NiwfODs-xH~T%Y zv-*?9Va>C?-O&v_7EIs6CwOnv5QN`UA{)C}!PE<};QRSNgh>T4Kc4?ZQ=~3YQ_4Yd zaEak@_@sH(@%iv~EI7RjpIy2&ZAii6HG;<#ROv{;%TK+~iT+(Jc;Wqz<<6S<||C#@V=o zUS)Ge>P+`uHuV)gNf^xXP^#KJn@xDkCoEAynfp^V;U1rG9_DGPD@7}TiNPV;H?btq zUdv@GX=CmYxFbiOo_&_aY;q(UaOOx;&Y2w#4r3a(v;#-q;x*m#o|0n`xw=3LWp%-f zju8pX-{I_f8Eo_)n{#yM30etsf?r08i@7dJIXf zRj%g2-J1T4i$Br~5oyHlG)8ASBj~OcGlssS)F<==|{_;~) zYV#=^68H^!aT?&R#P)dN-?8L`GWx^ynJq;wn@aoDV)7*(zz|lU#0EYET1=ZsMEGbzajW&9gf$XnZJDk>y_CQ%kOTTtL_mUdob5ef4(T z_lcz78mQ|Ihy_h@(LtpoYhxY%0!{A{)anY_m>o94@!gpssU8NyAz3VUgN`XiTHhAL z#I}a&osk<4LiwhOSX@uMDWVo?*B_oQ)~MC~NUJmFH@CV8jfY543*F#HW(w&+Blng-zqV z)|}oKkqxV`d7w0vT3nIG2D0?1jnu6aw{a(qu$p>XYJcIRR%bEMwW0Hgaew)N`fssd zPOhtP{M1E$xD@wN9JdgmDNuGI;@B{&lW&r-zW?NQW8mw(bh*;q`#BkKEA-ccV ze1o`fAbxS<{teX|A~zlab7Jgyc@E)pi-P2%r&$oa7Wabd0+d>R;ee=j3oBxf&bmC( zavQmQ;sWs>Z_2C4%QM7-<3k>NGtxS)P=!9Yt}GTz>x@3)Cyjk2nbH&vqMtEecQ*;p zyhVn3U8L@l#&1&f)SsjdRi9C{Zt(}{d827adPLa6WFO*W7HgHrIHJWRFiT(9Ei&(+ z-E3_AF@@9J9)c*=Kz#yFei+_`cQ*AW!bbQo@&iTQNnj$-IkYE2aS(mJmX0+;xdN^VBzL6^5^C$qamzaD z=^Nu!hbcgw!FKj<2wM|#j5o%}N4+?B**B(WzRJeM*dLXarGaP^v#>Oy!pwe3#Ax?IDH=e7peei#@!jEm5(RfmJTpua`e-Qx066(ZuIY;WAmulgu zCq}1+`0efY^2O+D|3&ya%l{gW8`;{gAVwTkWjYW_vNJ^^X+K+ZwiJsDhksq3&>Cz?>DkcX}mhcOQ)LVh5~>gZun?ZJ`w>5&<7_7v>s2MJg(O?@T|VX3dT|e zn{R;6q+Qm9+gIQdTZKQ_#v{dmF&@2J5@}tA7S-UMk&y|~rSA2q!iYn?F*dw5N#xRpk>^GgTtY5Gj#BLN>&cfs8-yZFjNi zjM;C=;sjCYhhrZ$?^H_$tk}n=Qh49C6ERh7FH7$(~{1JI+$6 z9dp>>rdUmQ`8N9Tc~S`Ue;uEL|NHn%?KM7AHa;7`E>@k&+B7*@3tF0qD5IIiXgEid zJv%m6d|zWzNl>qo&W*IDpgLA=yn1uw#{D!ruV<`f^smv2@%bgb0T%$qz<)PqI2!SE z1xRMV(p6)#YNVWgef>~O&-xMa?sbBb(0rms9-yh|S zC8m}ohm~;RqI&VHu4t;d#A&6bxrUX*ezv@j>%zk=qlsZX+#}a&djX3d?GJ+h>c9Pd zenWlA%m>s=*-8LiW}3-zH%^F68pog;S5{xaOJ7Uiunq3lz)Fow)3v?dc8I>yQ=r5v7Ail*}qZ z_Kd)C-G;|p^SB&0p4FKVY3)P5>gezjsZ5-i$|hIZk0RBioRPPE2dgyM(G>b`?0nN$ z-HA6t^K=$N@ISrojssWNt8tPX^OJTn)qVZt?s>IO7N(-FB7X`>^5r!2ccJzk;vPG>h>YG#!lnF?}QLM8EF8^kkblQu`5?$Nhp@v4?D_MLu^pLwJ4*0>L-o;EkFW8k&u zPRNWu)j+f_CEfN^gzGgJuzpqX-S;FSa4SsV?uel)H?X3VU8q^hp6+aC89(~{7=Gt+ z5qr{g1f5M84_z7h6G&%$rPKqz!2@S8%yb^gaC~H|+F>D_f0X>6`s5v$my6J#(`#p0OW>`c5CtKbOI<~f{9 z9DxeQIM~!Nb|PvbGVfW#?VZREf2@y|uMW12S=06l3J;}~#oF1wZ|YmI;7Yt|A8nKI zQv;sZSQ5Uav6h!Gh-BMggp?p33nL4+;o6h+v5kDS%L@{GH0@F%%;v#6%AjgR})`Q9eHsUgLFpJNE-IKz#9|DWJ(xV#g*Hwb0quOEu@i|&-qBvJGyAG+O#e(yuK`p~a^=q4Y!%ZFzB&>cQ>v=0S7 zbh8iL+$rZ=A9C_0B#LJG(9aMYgqnQlaUZ(Yhqn6A_k8G74|9?aMSbW(9~$UG=lW2E z51rvdTQtrSMWcP_0G~F(htBf2oa#d{AFB4DV}0lZA3E5F2Kdk_A3DZ|E|86uC^}N1 zWYL-Hjk<^Ww6~^PT5lg(=|d48dfbQh^`TY|v%rUb;6uCVD%%NKl*}fhSv&$ zorVMa>f3RWp&UKNx1+Cb$05EQS7`VKz3b z<-FxIvt?09EYWqxs2Y#%Sa-6=@BH=>KD<2^<{$U9`Mdi3?)^#DuJhY>@R6%Pb-%j~ zjLfO5Po6VAUj5~?uCc_N@$tl$JXjoWTTD|rT0SU^v`SpJd{xTw8296~E+o{zvRKKE zku~{j4GS)+k;Rfac*LN0IKuo5j+ErDzCPCeL-NIv7maO5{3~8TO5=u>FS;}y0*t2X zc!adL2^IQ9tl#OZbg#btkkrNX2_AZ0eSIV~KBlt+{Z20-IAe6Y`h{5|wTZk`g^=hi zb4v3XPb5&nm1j6mD=eOSRM{?>|9mWQ4)()2WtQGutN#V(^d+*AH8|_OnkgJmnaJN* z{x}d;Q^{W$e;iyvP0eox?ezW%HY#CJ&?P_iv-spbgP!YPX0D6+y}dB1GL{@Oo|6Tl z-6$Mpi*1c@$EbqJtV^%4+6M?MQ6nW(b_-iE}MV*F$IgXW8|kv4T^s0}Z;= z;Btl-*8(FvyZwBqF z8%1NQT?*gK@EFG`$FiM*Q=Y&dUe%Dly*_beWqtnkc+kKh`u134czY~y<@g=Lq3BVn zr>Pr9L|{3Nu5nGi15l_TcQR+Vjg%`=GNtf)+)$(hlf z-ZRm$E=xQ0?^ss?-q|=!n*Q(d<)(?992TVS90XU`%9Wi z?=Nn;0M6ARe9q*TKy5Dll)oo=4FmVO@eQo$Rc{fKUBlSr$mT_T*je$I%z4@b<$3SA^qy}mlt)YNV-f+a61sZU;3rlXw|@5NhoQ)sXi+I>*u=6k7* z6VU^>h?LP07X2VHPfXFiQpTXn)p*NBy0D`j4sk!3pgB0*pQs`J<@|;O{_2TrZBIp7 ze@Our*6Jgpw#O^h#9Q{1MQ)r<+-X6N6JpgXruF25MX47eH-1++b>sT`>tez6>+Bwc zEk)WMmH4z}JzHWsCPrFr1c^Z%?eFo!)1p}{mbns;h+~>*mkv18C*(!C8YDi5w6e(n zitMIpEe26zzjW1ot?ETqb^HHZwewXEBQHG93#MxZbu5UK6b|OR>R?1kVHIaht4cV+ zI+#;&^@EWzbybL&`l?FB)hKSP;t)agRXXZASVvt4Pf^@N#Z8H|Y;C5&g-!SCToO-T zp2&Xq^`4EbgZz39I=IsoYu=SG1H?0`4Tqp|L^U4iFd}Ofb(DAhQ$hY)~t!`e7!!O z-LC7qHuk=3L8tagYBp`=rk<{m8;dB#da$KO7LLxJ&+D8EM|YVY>%vdL{1_5@bm9CM z6OGYD^J7K)>@z>M4?kV!$IwWNL_{%H(^Kt_aay~mi{z1Efd zv@=RIAxfo(bw(-Hsg};;gL&3YTG`t}-i|Hq9=o%{pI3)gcAhbuiUrZFa&!c}Up9+< zty@4wUuAj%wuhQK!|#OuL%#fNVfnHDQT`fUqwZYZP|r~c+5Vgy5~*{3)#uNz8`f>=Qzcn^*3+fkjE*{zFV3BZ`icRIF9sck$aw>`}v8rwLHp?{^Mq=@>t?R2Eov-40vqg zZKoF^K8E&^ka-p>itmGb%IiMmF}38Dhb&jIa{W-bSZoHYKx7gtvJ8|*c4~$B| z(0#CaT?dD=*t711y~^|s%bb-h(?w+p ze3@UV%un|!v)u_d$l%z82K%L}ZYD^zCEUS-~ZeiA7u@`SiOE0W&r%bcV#1NSO( zS6I(Kvt@2lJ(v43T~y{PE*i+CK~q?!C0piVl{vweS&7x@+V(0lJ}fgPTV{l!LO0&7 z+p_ENk?vVxW%k@&VUy3{f(RP~wQTbk#f4!Jp5j!TAvkfNhF}#PwgiuxzrEt#2Rb_Z znaR_ZlRa59Jd^3ytSWPQ^2SV#zT_Cx;quiAe?())^OELA#1o_NO78N)+WQ|Qzr3;^ zubFs}`%?nr=ca$CD5I5GRuDbUy8#Ei!qj=eD!5aMAvu$=9K8!Kj(ROh8<+r2go|#y z2nx=lLI6zZB~2X1I2_XWLH^GLonaT2S{iv57td5dZyKUoI1ttH_f zB)9>pBZz(&LVTJ`dQy)^3*yX&!k6l5A`4&h3)r2-BQJmj(Hqk615scZG2M-PZ7x6Q z(ff@@ud79Gb(?PS(dI}`7ESs`y7PAdDRm(Ljxubvx&;QH5wCjmkg%57swId9Q&iELtarA$o2`n*b6}go4EPvjxXEOZi{H=npnI?7`R3NlNZ}H&hBt%t*Ec$( z-)t&#o9O~7zSk;lb8}z|QBS){e;#(n6&6>^v!JzQ?-5^%eW4CHlX#<75N52kjE$(j zXfljC&Z3&mAnL|2>QJImHAGAdBf1fx_fUiAxG-iHoyz#?%54r!2c=FRWki^=h7?`f zdg!26c(eN_OTxC^LtAk&ywrXWbfn~gos*?MQfo~Ew=X3}cEpGK{k7bJQODZK|H$3t z8F3vwIYj8sbRe66GK&^ifMcQWyWo5vbaH{E+uKjLk)qwK*hW1V^mkH-*=5w+=q^!4 zzffX!q&M?3Gs6G2J|x4j6Vmm;iA=wjGq|^T9W!Kc?c5DgGVZ$%cXW(S4#6BB@Y8V` zffyG{Tt6zdSj>vG@Etfkd7e^vQ$eQa3yMoDO=o%1g6yn#N4w#pJI+#8+l8{;7yi)4 zxI29CKCN-H(o^id3G2^WWOr}!ya`?6wml}|@gPTZekRuiDn=KMmLv=Y3=%5AfXSqX z>*2E1ws4l!vPD{DBEaTcs7+gLkThVqh71QPgDvAWy+{S^7(yP6uaKA8zXBhSVTl_} z8TJ%tGgC?9X`VjO>1We-tH~)4!GQD4pW6mpwrjXAEZ%DQiwEYu)e2Mh1gtxZFM}0N zUN|v?Rv~CDRw_fdJ_gbV_eZ55c6^Ncj$j5yZwF%mOg$T75&h)ibQ@0gB?ch5t+`8( z3MbraP#%>lC>XHX1Pr9w-se8qNB076%N<6S`RI-5 z+#&3Jee`NgzH(rH%D4^*&=;O?H_lf>G6Wc))_BgjUnxQKP#@#Yvy5xq>KiTkODrSb zbv2gI=H6T?NS-Bw=nH28{OHcWSDCqH)E(`CKkZ}Ozi&36PiBCo6oE3D*1rHf2{R6z ziK*-wtq!S!Un#3j&#Z^aFa0*tsIye>pRF`|GB$e#(wO+Z6@WiBxs|@Q2|mW%Ku~?U zbFPpWI*w@9y;EcMoI%uh1Dc`KNmkk#GsnX#_c3muWnAm-^YE6?M)$;$T;lvi@QORb zOJQb(lt0eHd&|eTwKrv2*QA0k6Q)5gSaO>i>xc9T1#L(_M7n6kcpZfBVxzu{pr=T8 zKlVkJC~wg7Q{yDja0GX0EOH|uBNP2US}M!H8q&A#@Rh^8yT*$5x41DL$dATY54aiy zIUrC z`EOJH%RJ=Osx#>MtclPpwMu`Z3Iyuu8~j(9`v+fXV=Z?n+|JL3`s{yHX8l8D=1zM+ znrGH~h>fEsUMRxrxQ;sjlzcSP&*expi2geelj{E`LDPCFMe=M(5J4|K3tz1Bda*xx@k7&#@jr@nW_<+d`%I=v`7j~C{#5Lv>9}PrMu0O(7UBzi zu)hi5HXDB+&S|dbK%$i6$K*({88><@VnPuuDnbKBU)2RU(-u}3-FZH3yxh`w_o2g- z>Tl|W1XB7-7x;>9^D*ueA1n;}VW1CQ7mklI#DM6RhJCkSclUXg@U7}^Wf-_OUe&}D z^$w5i==hPAHn6rc^vC}&oZ&+E`yo?E4!W?5{p z_OMKxyWXbSY&#zB77i#>C(yn+3=E0nR(hLU{gFz?t9C{%t~`H4%kBI`DtW-OY6+7( zv1>5kEc!&JV8&+6N%+tBevA7FT@gygZ&=h0ccX-~#K0DJ-yF5Q>0i`;7=%;(m-tk7 z!7SyH{k;V>L~UKY9AZ}K1>N0VpDj0k4m=V@xBBS6DmobOsEw$#s32eHGM`%G*(eh| z#z!9{<4F7#!m9God1)IWj6PD)ScH$w)NfsR4YbrXE2QktmUoZ~UwAbK04O+EHErPEVhH~ix!33+I^$31s5Gw$RKrLM#f8rqKn zt{jY+&U1O}wIu)c*E0-EIm@P-@N>!F5qaTVB>vJ&Rw3#W zU(`Ozpv|kb?(JA0*O+kHFYr}E;u{dTY~|ApUha($jt78T;py*=1&b);W*H@A=S-z$ z!FU_y^c*mj#mrVZ5@Ks{IJr8{oj7PaYP^@>#T=^^T(t7p5d;)x(y;}du=3fz6l zYnCFFc4eVyN2!r}j>R))dhYcZ6y&SSy~vlC2M1?#vvu57>o^bQhsJcjC~u}I_A(kK zzy`$lKVxeA8n>U?5=7V9U}%+Yuvj&%WYwamwfODGsZE& z!V(ANlz6~r`FNzNY;$+};70(+t>Z(_dtx_T(WA%z3l%RDH$vJ(|MU`Ta1<|o8r!fVmd4x8gghXLXvcpD+ zFnioI2|9q7UEby{@p2E6x$_Jmf32_-@gKv1Jj0#J<5mWS@+bK6hlJ(Jt$dq%5Y$cL za7Ir4=OB8?XrXz5&U^A64XiAm)V$yN#MO*+#ebxDdhgHQ?*evQxXeVL_eT1VrGAlV zvJp*0NTtXLxXFONz_^4#A5M@uP+u4?o1xm!6X6H7GbzYH^c0(Mx4Bt9xYB}aGYqvX zQ<5U%eV(7!d5((v;2nDvx!vo^Jw|}F>WGk|uFr+l!x!G^4RE*H%g8d1c&7T1R^%e% zh{^6vMw4;G8rPGj1bvIZYmqPfhY;3ZeefgS1Acz=XDwVYa3{M1n*7%kw=Z9*s2`cp zJ|hr@(|yScLqL;#@E0DCu@pk<;t*7gThZu2VgH6-*uUXdrF$U!s&e=6QyWA5$7IGHZ+amQK#vd%QI~l*>?LkIDLxRoO?p8|~>^`5SIZB87*nT&<5AFAa z6x*0jknbj3$I&WXC;KAD{%QF*#=>F7$VU>?$SJ#*2PkItPholJ1;UKkjc~-)|B8W# zsc;ktkR&* zsIXVllK&mAR`)TRRg+pTA)fWopGYqTNAD7DTIvc1)*pOov*DVJzRgFUvlpxxKDx%N z$ZQqgwdmeMjqA3ea>ts?*yMc1HIBHGo23Ks z(Sf}G%FS@N9ZdPIb)yAJlM99+2g=asufRq{cX;**))rv8vm7;F*-_&9iPUY=X6-WB z5r_q@op8Nx2TBmVCIq_UIs+iRYz^RC?H} z(jA!Huvo@wy~{_x>2pgkmt{=X**@*r5RzFYX(RZ%KJDSKTv|7sX3_FcuKP;jTgUde zW%UaQ!Jzj~l^X?M6xsSwr}mstLwo+jSlF8)M}^fxkr$O5M0@!dH(S9hMIwUmJ)h+; zIL_og?f+6u zF-Jx3BfTkB>_%TJjCDSuHvFn|C+mx`GLT=%#$)(RJ0oHlpS8}QObj@@R^jpQu#nm9+`R*1HYLJ4A3|4{LT>1BXKvV8p z%=&9{zpB=vd1T({I))xZUxjMI_AXeCQP`imcIt|EotV%0hZ1-15i)&rFw>H}+|EfKrJfmFww?=UkEqJzw>!3NJICco3j9wlV&FhR&@MutrD%r0=VEV|7V zLNd!=N00RP6C2#r*edQkpM~5!%<4uf#4?p{v`sh>iw%j-8P%uC-yKAEBcjx>GO}tM z>;En8n?KN;0FrKTC(q<$9;Z%=6K{5-v5lum0IhG9mgnrO_@#=wbR!F2Nc7->h=p9V z3phl8%@o>et!w=xBNxhGE)M;U8~hMBc%Y;@#Nu=h0lRq1~1JC$~bc`1DGc=cB&DT4T){sDBN+!qf+RJoekJ5 zw_YV+TU{%^T(M?5CTZ6u9Uv_U=Rh<5Vsvv;>{oN4kLU;Cwld_ZQ@l$1T&85ur<_r1 zlwHC+$~!chGk>*_&zC3=G;a_3zT{lcdDTYdcH#HS7Z8u!Hxk;Hi9xIW(C z-*8x=wfCYcy;?cPez&^Q`PJaBadqKW%zc}$^k5&KGuXZTVD^d5F2!_Z6>C#L^l=PV z*E+>2b+ZJALD~A6yB7t z#47sV{0gqSq!5{px`OiuUTH*Uo}%ivy4x7!5>7Xhrnc&px-Blw9Y4|my1=El@tVsx z?^@Yq!t%QELRRa9`%VxV(a+Vl%ISs?L5@;8cEy2L z9lJWa{1EWLy!k%jz$aSqzHYLLgX)S)e7pF(`g>rOJgi*nd8f(+Qq1vYcDyInroQFR zpCXZ~-)m$gezMz9&l$^24^#N4s1D+Z{_@b&@Pr~d}z-&eShp%NIUpUX0amad} zc!^g+;|W}LomMUXV4(Z@b!Sz%__|97^}&6-eN zbVuy=0+yXQ;#qa)61VAU4Xz<;Fb7DX!8^UC-j8gmYH1N_iiT2JL7$IImOAvU4eT|pHyNc* z@iK0n#|HHa^m07@6r|>X-0DG5=DUpq#LzrVEYZ>QOv|+( z+wr#~#I+{9)xB{UGsbUnmOP7is+eG^fGW+avc?Vfg#~APqu^}B-zJg5{*bQHVWm0B z46ID(o4EFx3@5>Xc}+#!DAm-9%`v5+mvEE&He8X>6y|Je5B0>@`;Gc8X1{V2KE-TS zHUA-Gzfe!SsOaG6e`9}m9}ri{csQs|yaz!v)HPtKhF_ogJH z-#6ZeVxczpp^v^Y9UXdVrz_g)hm9saLp?CT$4fuFl^Z{bcpQ^v23ESawyF1wZTCCa z>xbnBNk43Lr(Ehg_#}QMk}6&Q@T!z?Ck<1|iw3Fqoc8{|@q;(4YB+T4KyZTn`F zsI{K(ZkjLKcqDNzgmDwnwWPXpVRd^SbA++yrgvXuKqzS+ulpWHr!m(UXo!xEu{DMg z3iLsySMoR=A}B$hJ@8m44Z0fKHh0@4;gS~F;*ek~<1@_ip+19XsV`)6Q7jY&`a6F8 zXru{MO}*V0$_l6AeBbJB-KUUq)!%Bm7U?hyV!6Th+8_Z|8Ud!DWdOR}1Ny>Pp8>ha zJ#5tjll>fD$?x`+jovx%Ve~UYWQokQVhWE_VXAxTVs>jJwx*blaj1%Enbc2TMDOyG zZLGN`e<$J`m+_cGqcuF3gaAaKzZFj`YDj$1@e>({YC;J${S>D{?K8|ZpqAR_O{Np2 zx`XI*=7Y-)xIR95>0Z(MDB2IW>%5P`L)ju7#dX9$nw%T|I`L_Pti(;;tj5`Z`{e=h zw^`p}(Dv;Zi;HKi8%3<2gFW?K0hH?hJ70Bajhpdv<({AS&%WtKA3cYT(zWx>xdW^} zOQOr@3Y&CclGsAoWcRcE!_~3gbJR{*8sfW8UZ?ILx<5QEnRg~kg>nd@LDWb5#(2NY z-6b4l+082F5W@y{o;>`R7Gq`bjBlJKgJ+5vJW~xgGo(fmF}wV1`EQT!E78xc>MHkw*vg$lbXFS|B1b*dm8 z&dAhQ%gxEC9Klvqo3XQ=I%qhIm}+g`G?GKw;JlpU90_S1^A25wpu^Q7Y%iIu_zr3s5)K*LW=NuM!VPH z2|!V<+`0m)p~J(JYgGwiMR?XQGm-KK)xI9p_r+fbdlS=$lu%he@1vKdqr-X5-xcje z%26JahjO=%R~5Z;<6AtK2Mw!@?m)FBh%U3Bj5A;QLMyG++2mxztOUs>M@}z&j)-`5 z|Hgh&_dDH~3q`aJH;P}c?uUk7eccK6rDYYS4kK*!R8xn8VcJyxtj?E5=WFHEN(Exr>**tuD*#gucDO)QogqUpMw>9uJcf%~-;Y|K|Vy(Z(oZv6p z9#n5stcBt?0LtBIBCyTyA2xDq41N((|W4G&^=T;e)3gFgz$cX?|gOJ-v}H zb97*8Fzy{Tt00{}+$K@`$kG0)Icg#9Mb1{1mrF$>mK)`nq?6d0_^CS&A`V|(cru;0 zQP*%FW!Ae*-$tY|=&-XoJY`GVMF4EiSFrO%8gBRS+|x9j{daRet};jQYg%=Hekji; z%kR-xP7ZCjxqDtbxVA=IWSOj~Pt zUx@|&ts=b&Lhh%7)<5{M3=!?;cM!;cXg6ja%Im_NQ`wqnQ1) zrSaKa?UDIQ$M!WBd+T?ouCZmhysol$Qp=-r_ zyduM%an~v^_gQsZuB#?wfhv(3js`FfUDutZ-^ zwENIRopRkyFe5Jqgi00-KAF+B(>?it5Z@Zk7MHjl7^HH8xTD7F1B=uh!dH8p23OGg zK(LV8M@YGcUjmyT`jw{DXo)i5XaIaql9aha{#_Cl+77+SW*u8i{+dH~t9$k%JwO#b zvcKT9xu~JL(LHq@Mi}S#I^5s&wWeY@LmzGbdlNtcFNJieki`)9U!cN=y)IFo;9hgL6_v(HhGM2wD`%9*DM9nyvcE5f!Vq7 zDX)kI`M8XI{VLHRA}N^^mk53k{R4tY?HlKVzxK6fy5m;@#`pk(@l&9y8?c@T$>TNd z;$ku3R`(5lB{Xk8M|tU)gng)IZs03DMXmbZ#sjx#@O;EduHn*C*PK`QworS+J$`<= zo34;y$}qg27*TK}xrUL8+A}lskHsHB^mr=_VK-TMV*2?QcO`{2NQT2L-zF|~5j#Mi z{uLuSc?e$*^OdZiiI}z}Td+xko_)#n%!`a@TAkR0@x=V-_gpKGng-Z)#=UFZfgUWr z%UR4lfxSivy!b$#7x)B6-*2Nmf-5Q%*Wup%j^X<^x{E9s!XHg8J*Z6S57DA@Bb6>< zrAqrLTRI(G&+7ip=ZBc@_vKAMs49JcfHk@zWyalof?axQmQzLHM{47lZP)yICu zk8#NrRT|BId9om{mXwiXBF6|Wn<#_ARn%rdqa`I%R#=kRq?vb$wNL2PG4GHI7zDf(innT@e=^bvjb=zj| zf~!q%mB&VR{VL@W14OI=ZLaGuF+%hr8&g^1u6d$P$86SWund`?_gH1{eSV71>-+p% zGO9N-KCh7`g0{MA#)-Uh_7A&yFg6SQ{HB(m=DpK&Vf#kwjiMud(H#X^NkzT*s!P(Z za*s|)iN0#i+9N$T{ZK+N==m0M`k9yDSmaTiSk}e$5SiQBjRN!DiL~khYm~%VP2z*0 z2U9Jk_fuFi=z`aY)N_ulftG*hwE-B8o>9N zFbNIevnK$SAgm-1r->})l)7XvGeU)CPwnD`s9 z#EH1ppNq7zFAvhZKyxY#)_@bNanZhN+@aYaBYo$_pPOmlc*3UtENV;GK1R@5(0Wf2 zydNoEy|od{4A@4rqUJzYhG0Gwv1-kG2~QubP5q4G2Z$b$Yh&Y0T34eD zog_#5y0OG|it_gxWRAx#_x8DagFclM_^qfKMDwlQwQi9`H_jkxx6xv)>nYifWg)l! zX-9}YYuy(xxpd6xq2fL{>Ik&{NRiri+b9(q^uE?>T0daE#rR-M&>L&q<0=kF&3;X= ztm#;=0z|L{gFe-iN@x5L8RLnO6Vn=}n3a*Go%qAfQz9}(feCtEJ3Khmxv23N%|Ol! z>%q`uav+tm$5&+82&uy8ihl6GG1ek`eCx0?RjJ0{`G@=FcC*Ab*M$^6I{$W@PuV6( zMcdsOYTaSJ5*+X>UM}vq!w!xLBlrbAa9w~S4e{+UStUx7GOj1T{+HfgmAl%VLgIm~hr zU5P4jClJ*TOgA-hd4IV!CX_WKFYn8hB#nc!1DY!`-L`{4IJ~W7D=&Wcg}(8AW6By2 z;B}{6vBm8LF`iQj3RmD$=^Ia;qA{Suy*)%-Fm8Vc0O5D1-C%WG2s9W&Gh3a1@AViN zpSqUwItpeJ|3e>FjlkSQ8JCzcrk9x%-@?uG&7bfV;;t@{pDfZ{lRfInR?M$2?_Rco zHGL-&sOtnSU0qgJfvOqW@J$$S@mLFC{6dIM^kS1!_e6i)Bjoe1%FwcztTI1Z>|n82GGr{^`4g()#Z=_T9wV|PKb z1z=alf`Q*exD9)9mJs5f;TFcE0 ztSMxp?0gEj=g2LVUA$C#ts?U($c?4IBbu#s<=rC^ogKr21CR5lK8Sfl+wWyHtDS~+ z&=&0&(QXsXNh@{1_Mnc`l<@vJU(dBFqdq0I-yTmT-dw+>%9APf6n1Tf^R~CA@~+f^h6lw+jAdIkknYFFonNO%u|48O^<6=ai>k>Be%f)JD(`CN9c4Hl5l7QK#<{JAyuvYbH##$1K zLD7|xvLRdDgJd+eT4rRQH-*N5`$iZ&HH3HGoV2b3Yz#T4b&P-sy@c;IWz>#(dVGnC0$I6E!xXS6DQaF0uJL zmCMrt+D-eb!q+e@JloD}g>cvTLQxM(g+4R`tz|*B&`x(xrqDxRg$pL{~)=y!{%Ac|a{AEvhMberZIE#$aT@EsqNs8jGoAG{|FKIMb=6O1MQZcX4} zcFZRCufrio^6$z>@4bOv$Sty{Y4qOE?_-X-hkX{+MAUSZ`lXLD!5R#`N>R7?D64{( zXB9QwqO5uD?ju!?HOSrOzr$v4u!-Z2$2WAKzN-G-CHY z3cFDbV9W`4aE+Vy1Uw)QFIXO=G}(XQg27$VpGjLSA+^}2dOLLvN$f}7ERH^jG3$EL zGQK~-N|Y!~F9V#DlkY?2`$#e^h`zg5zT?POpZuL?whs5qDsuU~%%AUIPT(61y_CUt z_iC*H2E88;9Gb&K*P65NaiURcxG1B4v^v7Jyo9EzPySs*(lEOyUBM1_hgBf2&2#wD zRJg=F!&jI)-O8(l{V`zAU`TI{cILD*cBH=U%no3;1G13}uHy{}Ki(emDINzO^#_Zh zJ6wHOd6^r=SDFd?=Gwg(XR7Qg?(%~Fo)H7N5-a<}J^C*6-(mx|Yq%OTbBfz)A5VyS z?gJk=-o5Q3H3Hm9|1H$q694_Ez8CUsxNvQ1PW9M>W8Ifa!?g4MWB+Z;F1euY(8c?o zSGX`fbcM@>SPGIZ*T6ot|43iOa;?qkce?S!&f|8>pGce+gjt7MWMe;~J~b)5(=CY6 zPFYObz?m&I_``YllAhYZO?^a#7s9aq!*Jy&F-6zPL>aGgTtL#xkIuM)jMCZ>ew6b0 zdQXyUF(r;M#(bx4{v}-1uH}^8c6Fxq^wtNLl=o`D6VoqsGVhsSfwRZ>0|dlccS#S~ z4cNZ&(6qdO`~Cv?d2nyqK*MRe$@QQP7E}6z7EV*GQJ1(a*g-hsOY)me#A=BE!%n}| zG@U|h-*BH^mFwtUoR?;m+^sO;;xhL>shvtUa*xT7k7@DyvRuA1%39wGN~qN-R2<6l zXhzkKuy(Yz0;U+!d)&l-+B!J(vVoXKJW|J!>6d$D8l1`0=rc{#N_&MColB^4D18b= zy!bd(TGFF(j!=1dq@i+lh{_@#ybOz;g_J7gXM$&ZDrxI3@ zAhTfmnd2;Qa2p52QHwaoBqH_)9mpx`5Y*#Pq zURJKz-K40WG`_0?^~`A_07WgsZ(tXrguSAW6ZigBHFO6 zn2p#P!c8V680DY3mnHP@sQ4JyOi)r~*D0!Y<_vc&(CDo+v=kPPJKv!3T%NyRW~!A% zw7>1%W;N7_KVcS8i6sm46itapj+4c%-Yu6<$BB40d{o0nZ z6O45gf57MXj@DqwaW{G@eAV>;IZA`?VySX$t_%TOD*#{4%x%JM1cf`dGl0iTZ5jr%J%Iasj604XtEg)GvnqJF zPySP>P;PS(f^0CBrK4S{oRpHcug1TDX1iAHJaXt#`u<>z+&LE{mhOCK&}J53Ze=j$ zKF%ilmbV%cZ|1wklj?#Y{VkIL4cKKL$<$E?7#)cwoqPx8d zjm2`*FaUa)8$bkOjYnJtO2kyA1|ZNrAnm5(!!}43(|! zyTS}>;0XN7@~GUT_@L)P1{E^RFG2Ri*@%&MDPl|~^O;{s{=0MjY>nD*kh0?c6C@h< z>-RMmucO=1YS`FzJ>%V|0JnXJ6}aCDw7CrmTH}J~35L$vj2J!EtKB<|r`Bd>p$AA$ zCnrpibh~ef)u*xht}Cz`j=*fEi<~U5n!^=^UnTCVld{vO$r z%F_AP$xheI#*#f&+f}pm0nPJGJenrB{naLj@N=qmKbfHb+i0NccMp_E-041n-!(mH zwP!P69h`5=-JyyVE6M{uoh6+rvd4l4%kL3mE>IiCV{xe5Ks(5zjjftTMEc?@jr7&{ z>V?CW`{-fvts%VD@7pYK@3OQQCYMXw}@Jsx|_A14br-JfE zw1uk`X2@*eL%WVwFtOAzPLu^xLpwVt<- zwV_(Qcd;s6gQhDHkp7sQsmBSeM3|%#-Rml!46#jmY^Am)8x&3e1+qNKq=1#=)oCUU4@z9>)!zc8O5cakr~BxcK032G zICK>kP9U&@ADq_$eOluypj>zQM;3tr7Fg)0D#IVc}(l`}9Ms9$4tu6PP`H zOpTsZhZNB3cY5$9;Hd3pA8bYPzyh9STFwHNP95#PN2v5(FWWAMJ}vhfedx{S>XiU{;6kf_s$)wcnkpUslvlCFd#>h&$G!{!qv^hbo8`X@aJ| z#rU)RjX)C54ZJU;Y4lE&+=eIyN>fr+q_Dpv-SA z=RS8Bu;6E2!=6SJipCI`?0fQU5)3#){u+ZCeRvOqfFKim@Q-_ex<9AH5TB)|$HNWq z!A*#w+{&->mA{P?BwCK-85!aBog8ReShfTASB>M^+*%(T?2BcZ($_=#O&Fc@Pc!+} z^vHpBk1swfg!Ur^J-giGQ#O*4i{{Iyurw(q`7A#OEt0c+uy!w0ewkBZkk7I#bmD*0 z2anvV#FaTEI^aE;`@OKlHXqF2t3-89iI;qq$HNj&``|{9%xy>4umlY9fHi)N`>}Fr zuzT)ut&fGo*y0}J&JML&ro`1A;GYCP==}@N2cEKjL&>GHjr7@W@!1Z?j)ky3Tas+j zlD`{}rRBj^xt8NUViKEHUM|m~+2b;FvTVQ~T_cp%%IJCh4TdxK8OhXy|0T9$yS(hB zS)UHip4$eZE;a2}3S|t3k$o;Hy zHCL#b@@zGSWUD!yYSM7r++#h^`>Dq@D!>Ic$LHXCqyW7GPeRC%YH853+K))+>E~a8 z*3;;n$?gOI?By}s>l8b4%JhZdTHSEH`dL}Nc2@YZZ1&N-EI0#=$n{;&G2V~Ek~}gH zTfAW(w)BJIE3ru3r*U54u8LKxBq~2PcTXNC>ZV5QApVa(L-)0?_^`|K?k@nXuPS%D zeTCv@UKn^&ZJ$A4hgYoOsRF4@7YCGIwV3;?W?ngyv+Vpfo_LQ}kt3~p{*5fyF~a3H z^^6A>uHti5e&hNS=dNb&avh(7R3`RC;?}toam@c2l2z?Td}cI0(}=s(O+JpGCRBL< zg;z9@-G>ReUTRKQiNCLexpAje|>PT0ZJW}ZN2T+(Ef}^1PDxpbyr}S zS-ZxqEZOVEhV7qFF&6p5z}4)JN65n2pC){lAthC#6^i9^??RHt(-NafA|)fZ(7spK z)L`}Hc=s0rGoplEQ~vziJOU#0^YZ+eNmb=$Qy@(_9z}$5pxShJJC1>z-D0{gz{nYC zEhiyO(nD2%b6ty?`n31xRDkw}`9H^MNA1WlQ|bOmKeewXW(R$eADOoc6!@&l^oWoY^dJScrh|PhI!UZg$S8?Ai9CS5YyI`Z_ID%8pqe;Qblt0 z?`)tI8@({J>QBy8KY;30qJuM6>m#ifK@F9Nw4covUMg-LP`mt0w!QufkIi_udu!K_ z0xa0#XJ$y>%9!9d_cKtxd0@~e0Cp4c0Z4Q4SI*WWvnP;n?Ikq4D`Hh z{ow(&|K*&|jq#BzZW!W6s_*eKOZhXiPSZw9TwhDs=$a`G@n19{zgA`Tvy={ZnNN8v zoANp0Ptf`w%`aCxV1g?+)MuPzR*->sAhxAy|!lNuGh@{c!l~d(fOv3 zwDSk{@>fNjh)|h6UNWP~U1VZTvJ%b4Sc4tqS(zw?X7erwi*b`gTEBw#6jkZpC?Xzl z#)hYUDvS#f18#B>IT6B2M z>B>y>nE;7(GTz5z((PZ=^4$K|z4vQsfOXN!9LB@PZ&PA3{ z{fs06$6oj=rr*wQf4n7kP=@)({kQxsNp>r@Db*GKq1BzUK>7a~w(;-pcb8KX zU-}sQ(2FCjKcX>Ol`dnKk)GdT*uh|k zFWy*CUod19s=aCd)ahB7vw)b!0oufT);C4r!EW%8{IZ#uksI$fA}=;H51rTaCeK}P zPI6gsYNd>#Vi`6isUoW{-nI|8<>{6B#b5A@=obZ32W9+=xT)N#O_&RrQY?EH#~G5v z*#cdrvw`~y*($te+|=vQJlvY8qDSQ!P|mVUCoavEAKWiuM=)4o+7nBj+K{{kq_@W^ zcE=X)E{Hw)rw9ChvB*P?vz#UI>enJITS3&GP5r4v1pA>842;6?MxORq#anFIcJW}G z(~;ZiP1B-Gdicy~&kx|XIcV^1kzV^ndUc7l4TC@cYgxkD?ebCzO?^9_xQ-p(oD12Z z6j3Ge&3lL5V3O`b_V!@Cax6x7U6*~&@8`;Gz%OohQ@$E~_T3q6m zkgOnawUCmR=}Ph=y$UXCqet2=RF@}5S$u7zq$>$@fJ~)$c--4G%A!&ZUKF-i77(qS>eNEk@fSJ42klQ|)hnBx*V*A%_1lg0 zYG^5dbNFXCxe$RR-6OsBrFlHK7xK?i$R(^>78~ZgYyB_100`K4@}goE(v`~HC-KBS zVpE6@>PVWo2N&M64JUQp1^x_gv zWAg^@<)x8%x?(Y&Y~b%gFnTjqu_AJlxG1)GS3&HtoZ-467S!gW{7;SLudq!rt9QkA zzDc*%*ki+kffGygD7Uu{W#~rcGc8#I_4;l6)QNqVFUK@b3)c?8u)zyYb;h@;!Jq596a+_Wxlt96%pmbub*%;{e_xJ{W;;00-_5$V#E=*CnsVL8JrAMeK&;r6s98 z{EIfBjX~iHaXsQ36u!uBajGJo;AF}OL~TQH0|^a@*&K&|x1O`LP2=@u1tX@zb*Dkx zRSz$U$6_Un&V6`4+mFtD;%y_X{&>rX5;*w39vG#Pk9A+f{c)xRPL?;^m6AVXm;2*~ z^u${C4QP{X^jNo!=-lwCPT|aZc|{M5M5Wtp1QC8F#}c76=o}w zT_G^4bjPUi`HlO+*^}LIz?6Ag%r6J-$5^iAaOqmt{sB=fsb;=?yDn<~lBl%(n63ZV z|4aS5M|^Gle*vQEpRdZ2(U&ckum5|B3jFS@x%$rHF@vD&g|q5|8@AE7`&G;+FlHO= z#pDth#!T@v=o$+qzyL)*$f8iZV^ji@DXLxQk=>w-U7B^_=aztsPts zVea~_r90}niaCrjy?nJU^}b!yf~3L5tX{@Ek=8X-}AFm*YyZ1b^uY` zO%3rLi$Q8E^YUY48NzxbGNl(@v1dzjv=c?9V=#!=XZRv75j8>5m8$j=diX2%A<6dp zvOi5tx2?lGB#gLevrTyWa|z3-we$CB2(IA{mX4-lQryDM{VdBed+-LWL%!)o0CXu^ z@ZyQ%8WMAmd|Ft;n0D`xK72Xm6}%Pw0T!+5|KXv&{+miY5kTe8u>NT`FpJX7BH<=L zEq3V=m`m6~$|~2fsgw3v<$8Fn5U@SVV4ywA+AW11#|?wYqP4B_z=5?bwk!*$o$l1v zaLL%!FUvzGM2VXOnD&1XbiMc|$6ogO7#m+wK$D6WruC%_@^)=rLvw%8$3Pue2kWqAgZ1D$$ z@u2@9~W}g`^$$t`QmFe9{ zrOLiLV_hsUZe64#zADnIfxp^Sv9{WEb4 zSM3;%r`4qnVaS@k$MCw1?3tvO5CZGmETU3Na;nqKLU(qqW~sx!#QDZu_yp7Xit(?y zGvnXnr@uJPvqj>0ZAktP4>fGlH&!sAELOdy2_E787eHf|mSKD{8$7)vUT{%gCaT=f zns`emak3NBSixZ{Qe6hU;}+qav~}D9_lR~dvEjocJ41MhYhei0GylBXr!3rNgI+1$ zBPEtR)XnuNzb6I0RmvC*yOxoC^GyJA9AdBgC*f}nYm6#m5{q@J>0U|X#v9eMMR^)9 ziQ#3jF~ySIH9L@{`nU{9S*k${+q6B`Hf0%b z=X+-SQC-E-hKhejTCXZng^aE}IB?t_-UVkYbgH?&xP2UH^~q_}I}>ATcSFT?P0M&? z8~M8;){lcjJh1&`0Tb3~$3CO!cYXC2k=FY_z$M>NDvYGfiH_BivJv}Jbbkqr4u~p*+kP@%n+*IT3RHj0a zo7f0IyD?LP)5CUuf>z@5{VuVV_jkoBFd_@f;{o%5hU%S7-)KL+P`EG!&c;SsxrZ78 zFlo`=lH$~H8GdZgV=QY>dAs7tu2`YFn3?Y4UZIA>$Mu6}7e`t@qyBjHt4*)Rsz007 zpaWnPysrJ9{m`;*56Zr!z5+Y{bDGJ+F7b-@%x`ZOaZFjhuE)3|D)GhTDM1F## zf@nKJ`@U{P>``35`tJz&U2bj>X@l<-n1RoPl9}cZ$q`=jehU^2`nv`^1*)|XvY#HD z*bm7`3%C&K{aDLarI8zT-uC}v@6E%bEP{XEL>NI92b3r-C`wRJqC_19Wi-*CL4)Fs ziYtn^pePCAhQTE2FpfstcieYH#RWwOYd~BP#Fe0+^e{pcl|_-<&$s%`Btdh2=bY!> z|1Qr%=6&n!s;;iCuCDH`?&jF?0ZgdOaLBQpJ1)^_HuD9H&^{lvJ9}0(9Ghsj0I#3T z26JIes6~B$4&NFUCc6ZR7?YI!u&FR{?WRI{f*ETN{oKsh+Oi*+ZmDZGYC8@SErTUW zMX{5wqT9zNc4h1|3*YbOO@-^1=GF!C3ApVoH}R)v6A^3$e^(OA_V+~I3pUXO1MMy7 zBtaQ<1I;t&AVEJ9beTcVGw4V`e`O4!>(J@5=C&-E$bwe!(E}0(ZQ`}VfEhouz&39z z%%m44#f%?Ax!*R}9<^8U*zH$_GP^-*chN!~v#>JXl>9WH@4Vt}jG;{0MVXw#)$Swg zb#7to025x>46ORv5>7w1TIn@U>lFmdo&S~E2ddKc z)KyXJ>*V`bBWMvNc;zLXnW+tzKY^U-<{ItLOOCW`u&x6# zzblHJuaPZ5X!)%*THaU3COR$FK(#P)l^Wl!oWQpMz51>&lNKg@ z+Bll*zE1v0ngL}qGY7^#8&I}v(}2VvS{_bKl9o3kGe7oGe%T7z-e2uTwai_pz~X*P zt5nn4Xr=4F&Rv+cZ|L{p)-5l{BFx69wxbSRcVA305T-Q`$v~2MhL@VE7~j zi-!xw0e1yU)Hs%)_%yT`ElZx$fmBh7w79bshuyEsDPgBC{BdqHy%nL{x?z>j=&SbC z7ZQhx#G&xnbwJ-uB|i=9JF~bO(_^zvNc5|&_YdUX#X3qB*klaUZ)#rzGZ)5M6vfU$ zq@$?B#alDnPRP z|4iTgRR$py2meQa$j_yy)3Sz87@|H{i3U2y#<>jn40Ssd4dfR>@&fZ33i@fBL(|a zFf3JldsRzOd;Nm8rPfKu*lAJFSef(-<*qh=A0j=~UVB1gA854O2R7*sYa6v!`u6mF z@rCj2gZ4_l>DwzO*bHRgHXwEl4e|t<>Ys$ob4-<5YX8q$v5Ishvv^zElwa8~)>vCN z8gaV^e`z#cXqX>pJbpZE_hRUOm&`Sl6FCm@>^o=F>4iP!S9g;d%Og^8@%Szw=quZV% zl}TLGLK>Iux6l2Ivc{H^@iO0a|5zxcvn7T^r(VbvH;omIrG=ayr1YQzR#WCwEd%h3(%nj9jO0LD$$`&CZZAxx(e1?ut|bd36>|=Ai+Kp zY?)x^2{ux&U(p@niI_hso71x7c~$@6xR?vPU&eBwTuy5~_+?T*Ki-7Me$v1Fpn)QG zY}fN&`Zt>*G}6Dr3uArNUqDz6ZOLlWzl+h2(@p=h0?|$*mHD4Y_xK>)E6AqBAJcln zmLt|(S21bP=wB?l_V~6L4fp%SLq9fo*ZeEP*Xioi-3W5P1FX(#Z55RW?ROY+Xfd6{ zps9jE=Tm!ez4=_vsXMQAgMPCgQ5 z(`F)Ihue`#BsMc+Sw@Ai-{wD+ z?4sE>4vP)IR|Od59Swu?S6WI$;c_P7$c^9z)+P~y*7qXtX^%g>;vItik~9+)A;_bf@>ncbBD$C`LUn+)$!i>2B9(}y%;0&Z z`;9bBD7(i!CF``;xV!Ww8U1c@K`98mDzj%UYCuLWQNwP5ECv=g5gABk$mq~?p(xSW zyVvKL$eCx%tZ{vPE@}RI+B-VxWi<3-sAd^VR5L|YA`fKL7K*70)fDbJ!qaB1Ea!4h zTgBR0sP(e>nC8+*HmyW^ieQQ86q{!ZWMliw8p&ocX;c$^(v1aGI$|NFe8DD>=UC#k z|7_Mx#o3IEXv_*W=&T;0u;l0zZMnuRXps;NPYDiO9zdsj)a2?mG{D!RBBrwSnjOmNM-y z(!57QtaDFMPeJ!NZ<8cZ0RPw3))lc+VG@q{bhdNRPUcPrX(obFRU0f?4z7)TY-GH$jZ0h;@Po3UP65YoArm~ z*`*Lum#9v%NtZa-?c9VxCdOJBe?E%Edi!<7=hKedZ&WzuZ=95G5TbkNLzJxuYz(S< z`dT~2SjV{%Z7=`D-Q`=3n__t3a&`bnOnx7BB5Nbynf5mrK_b0oPV9c$$h!Lt?yyep^+1UPYFIz zl(VpgGX0y4Wd-G-#80f_o9x4Cn+xZ73p^h8es`5Z@yCg&*%M(v{aT@H;W!k#Fn+rS z5~!#mC@64}etRm0vr)KU9#gjA@~7!kbyQ>dt=RiQTHARUT%4wPEmT3oaj*`YFSFDA zNz7id3Q$AeY3+^5D6HTAVTSJ;w?T|h?m@UQzOuYQTxM`>+=G#NcWGqcR269}iVtn9 z_o!|oHx<=9s^NI%x~U*=r|7cWGD3&9EO22WD6o%iq|83L(U*6!_3HHztCKww#48VW zEoFA(R;Yj9UTd?7tnK*ms&q8{vTMZsB9;eS`8OoS?wZ0ni$geQ*NPRWDTy52`3-%&81x^Bc zCHdkh`_0g_cP(>{5q;$IS>HhZ2A}E911`Jp|AzckzvsyUZ=rDiYxy6fGR6K&{^fs3 z{&Rw{sY!Wv=~sS(fX^qpdI2LTlGjjISF@Dt52*ZLW?I4ri!&rV!wfMI#@~1ekEQQQ zy-X*X3l_TF+kT!l8T;{@jrLIp=04r88;vJ)0s+#Icp8TW{U2?P&TW-zqrBumF+gx< z_X$Mqy#lw|O!JWJ;qpxbRo~K3{;$=1rQ0Z@6sYx<;tqm%o2q#Q`+w?^^Q5i`zip^N zUv*Z$6kg@)5R}iFuz4{qYWxO;sf13@e$|b;t__9J{wo^{{ht+vc=-S0!W>IsN~8Pd zwav(s6JY(=AR8c-WEIAvyYRs;?{jFp8{v1(WcrW?RnKLXVPvz#O`!hV0^=b^D2|d= z(nhc7N+0VwBRvdtz5D$yNj(~|RDl=sxN0{M*|whgOxNDi8W_-;CZq;h2M4sC^R$j? zOzUJ%YnKLEGe{L&v=$F#@8Nrs!+dX2lBK)M#?4lb)2Lf=zp*meP`S)+5^w!GEUv(4 ztBK|)XF8T=F0rA*A$(dyz@9#B7x3CGcVTJtv%?W@Nm%eRIqN@nAy(`jma&(fm288S z*y7$Bz6ep?AKmOQsUUBAcUaGyKA&h18uhs}jv=RX3=!0neBIYhkig5Qp3N7{@%~u{evrrli^leZRfzhWLDiS7h1S81JgwGF(hMt=UP_<#D?=T zttm$15?Uf>u(#ynEnzCvrAhs%2F7eqrP=xY`}3~x_(cW^&bQY+6B;;Yy+5~=Kem2{ zPU>%dPR+ok6<97^*7A*R`vHE)vme0J_SB#H&CU=D2B92LV+W*!jQ&#T?)P@Nfx4w1 z?I_*%wwD!LlVbOI)38L7S0njY@Dqz#(I1E|f*UOuf3TAYWub>~z3Iyyu%IEyLmpDq z0J+UWCf7rDC60&t+<;o-^c{5KMTwk_R>0`9HVj^#+BwiS7vEWe1EGj-ZGm#gp6}F7&~E3AnO;mlRT_e zK3zvfePwkm zvnckbVqS(?j}p<8pSuKF-qWX%xwAwW_V7Bb=8n@>E?=6fFqj$m>kJx}x_d2uOEA9v zagE#E9_JMG{k3FC>R!~M6c-wXF6-NtiLRBY&ciBUo^!=DYq9oEWm~PhN_a<3J>f?YWnIsXpgPa+Ds~b2;-x6IuoTaRDo?Sr$xk#;JXLB<&{o+pGQ9H-j#us^% zbZ#j-(I_0}A3c4m^n@FQV0$NU>3sYg!%Hves+2WQ9tj4x?gfw(m?pj)?A z4x?wy4s~Q6MmcS*FU9u76!m>7ztNX7^##eE4kM)gU>>OtW*Z)$0x^9iy|kY`a(D7r z&;R#$M{YNxD*jj8(!l?G3((YsBWqr?QIwlIJjCn|{HAbZjhGnQ8^+`ZbcPCLcZ1eY zQyrw!TUds4bkwj$^Mkfgh^gSeb#_+d00z&Pry}`miRh;^J(~14{G@Uk*Ra~I>|cMf z%tStn?zsQsch!Q~M;2T8zRvX*h+0Mye@<~a7lAuXd8%KZQoL6FDVpxivUvv9^bg$l|UL;Zk10cx7q=96(CF)fZkt4PMR~a~KPL)z?%whI< z=WS*CSGt+MY_5A>=qV;_vL=#1%V45_`(B73t^)$U#N0^}MrQ(s2B!!KeON_{T?wnhC` zyB@Y#nDK3mdsIb~37hM#w#ORxp$7q(=%3t%x7EZL-=Lkjl>KMd#%EFTIt6x90F(WV zHnYO{JD$_xvs8zP=s(n%+iR96Xf9_nv((DCrBd~sQyd}5H%iiiBq|S#hXZNrJo1;> z@C#bCN0S|CBTUYh3kbdctCs_KZQUI|OEF5iq)sG7$AF;+eF}G#eJnnhPg9906c=Op zB)*VZ3)Bx9s>?+y!y9XG*q3l~?yh0MP3YUK&ORiIa$@5jS%*yit!!UEn%rT&p*VOxi77S72-lQiseW`JdN0}*!@nFj8u2IfrW}`Q6l`(x0dC|yY z-_UhTwkTgs<}M_XMbxG89=8tH%^e1=@3z9_ZN+3F+5$QGAp)26?9vgBM2+=o441qh z0!S_Aslxt8s_QFYLaCy<9*3Tev4`M0OMB%ym26V;F5EGH-agQh4ww5ZN^~y zdAG{Hck}N|#P#GUy}sJup9brboTo{eIotc;Rj^Ijy%pThh|!BaOue{!ph~mKFFhh7 zTwX*Ru*Ua;=(uh{0I5MJvy8pkKn>-K&ahhfRMXCCsItuqi&z5U>RaL#xxLr5Xeo8z zyt|bWL5oG?r5++2c0^O^|KhE^aLxwjE#XY{IA;rI+h%dL z70x-}j1$gn9_Jk4=xqJ}&L=FKbHN!XoKrl`xxyi`q!}DK)q?Evz}ZPST|Evl!*3r$ zWMMNn*z$tx^TGLvrK998tal-U^M%7f>CNCUA}Ywf0G!u_^RCCaKsemI)eH`skP5PK zMhn#I{gIG2I*J<|)x6-?eCgUf`& zcAjSHbXVbA4$ce0ndEUU7fzREak>a+1UMzaxxwR%5YBGR;&4S#LG~5kvp9PS=W1}S63!TpbG2}~HH*_tIHSOc3a7y1j1mr=Tr)DDU*{+taJCUn2ai)M zobJuybQewuIE$HENq)E9WKbd;qVbx^XD{K52ImRkJnwNv3uo_UarPF@HQvcD4BS$N6+(MdXdWcY+-5Ozg*nb+4iV;1k13Ea*?EEt|0~Y}gn6^a+*6o6J*Ggy zJg`~J1BF@UF&&{9$=W}RTY-dmP_vi}P0F+7$5YN%h544p6iAqnW-*y2D9^6&n8m`p z-eU?R%!8Z7WVm0ReT&CDRG9f5Qy^g;(kv#6H|5#4ddv)Aw(^()3A0bLn0e@Zka9%=_@vIa57&FJ~^4W~dG-?iGu~nTI#{cxW4dZ`gieATtFrH<9 zmAmp@4dhoBx2`*t5&NuE*7QO8Hu^~o8EsVFzON{DS+gfxaZ@Dd%oV@;kS*d&_HQrp z=0b010!=7)|o4fLjL18pX{%)*zt*BDaOI~q^{8Nl|qWkL8 z51nmd;7~}ow=_c*3mvTI7yR>fJm;7Fvy~zsdW3KPuv12cO_wtLyooM_$;plUq)wn9 z>$%T!`WOi}5$S;jz9$jF$^&%2j5!D2$;?w|2lx`aVJxiitpY@P5NTG>Hx*6{BagzN zsR3pE)?^f~g77p5Gfu7<7(Zyudn{vV+^^~FUX)66Qp2_(yo-{1_|L9W06()49G*^w zQMcglis@Ct#C2*4Mm!Ak`05rB)@)Mxpjz#Ri{x9#h}GX(x?qAz8yG?DiNULJsV zOM_n%_@e;4eHuJj;I{(s=rs6QfgcONSERuY34Ch+ZYX7?z#{|j_;l)0fzJrQa~P?5 z3BDrmkpZ|Qo%#uZ_YJ^LrooR0+$jLxkOto^@IR0H!Z%1TCh*Sz_`!7Qu>yY@fNxHN zUljP=f2Dp`;3op`)9KW61s)%OUrU3nc18u@7U@d+K&giW;J?$UTT4&+2jD%@sW&P0 ze*a4Sr@%V~;1y{iYXr^+z#pf2E|?sX_%;LVTvqW+Nv?O5ke(aAg{N zj=<*y;OEld;{+ZMfFDnTHOO%X1mOGA;JpOiB>>-^2Ja|v%K-d(8f@)q^~1jK^U~l9 zrT#JiH&jEd)OLCRUYJg8E#>(DT%876lejAYPX*jaKdqT3f^YAoQC?66=LF!nY4GC$ z9}|G5rNQ?L+&cijnFik}@J<2v`84=8fwv04FQmca1WrBVC2&g`JX+vI0r<)^_)>vC z2*4xL;By3iHUK}62A?YModNihGCyX>dP*&kw*ar@;pZd~5)IA`RY8-~$8j zeQEIC0`D4t8+3nXfkOefG@ZJwz-u1#g?~B?&JcJ>0G^lzZ(#i7sseB<4XzdVg#bJ@ z4PGhmgaCYT8oX5C>jUtRG9~^-9PlG25yn6uNI}JYL zCBUscxZ(|lw}tVXegA5M%UB|JbeyoxcmM~`zmNZ#_W=#>J1^zEZ^L_k1yc0n9nUNK z(M&?caysL)B?m(p@ARt2GCBDJXNzNR@Cw(vkpNO->)$4@uI`rtG1Dt7P$p}44E2-_ zptys+(ehPEC)TZ|F(uE^W!6m6xLucMd51kN?&dq?71z3bKHglH>M=L;^^WA7+PymT zd6st^Q`^rCO%|}hgB(@~tJgjPUy~XAR)-!6l2Z5zEe)=7y`bt{>Iucr{meh#r{~%J z`O>j1GE(nSz8SBv?E0DqKGTior`#vC;z^<4iRfe;F82yi0b1ltM6VO~kMU~j;?c{V z<@HW`)e)2|YV~FbHg}=lC!z(d1Cl;gI!;{Z;^PU{8(i8Fc*E+rK z%q!geu4hDC=aREEmSBHM=!gxfYeuV)$Dh}bM5|cW6IUQHE?>YRag7`DFwu#1E~_;w zq?L?+J>k(e)=TBPoeSZEE;?s1BKS<%Kw7!p^6Vb%eyuNO)&D8EGD}C)={-GEDh5A+P zCilhBtqyf!0ac@)t+f0M-~zFFWE(@Z9w|P-2@M9YqVzb z)o9hR(&4{mQ50Lqp{}>l^NRGRzfRmLBe|GY6lU9XUSZ-{1ymz4z8JNoYL8}dIk_0( z)W|*$qF!-rJdNMreAS(?bw-A&?lpxg#6mrU%aZh@r%72BE#)pOgY^`y7;c$G zGkJ60p@yWL#>keD!acG@QK!XZ4c`bEfzTZH4v8#upw_)?=~3?JOj5Z=dF@FY(|YaK zK>o>lL4nDN2mZz6Wc)ZWY5Rv_p_DR#$+j?={F3Dmuuk|l*4O~6<&z|Pjbwz$xSKY97QB-o}iuMOkza-5-gF`mU?5TJIq&KP5Sc?0PpQfsX>~bh7PsV zS@-+YuLDn>gS5zWRFLWWglYIpZ%tl*xs5iXg&hC7gI=FV zzwW5l3F+6)dM)FX#@0^H*YG?yRB4%C#xt3(Kv9EMRG?Obwr@}7C@2l+&UO^%ND{j5 zcL%+Xo|fxrKac!e19E*6{1Tfh&U-0jBGJBmSlXSLJcJIRI`moxZxH5&rs^rVk`<5Y z(1Se7QqK)NYtYYu!r8I^CVp)|{8NGhU~eSJliy=yt3#&>6B@~TjO5V)$z%nub3^AC z-D^GFwfCe;e2PlEFkHTer%R>fkWxniTtve;AH7B&7XC!FUE_P6w;OQl3;Yw=s=$YN zo^GJP$pJp~ZKR$XngJv;Id!!assxamR6!el2|!_NiEH8UCJV14cymJ{k(pe;O32*M zFZMj0XC%@`xhJAOy$4_G+(YVPF7jk|<4e$u^;^RU3|slh!E2P{7?OBxd3OpHc9hXQ z&*)xk&x7sxEPEbg&nMV(p*F%@y>!nbG>|Gyr@2GiU%~tP(`3t4C zZJSY6RadqleDx9TA$UyXfqvD$(I*Ohqc-4p^j8giQW|~KjKuYsu8$CL879r5MlSn> z?IZ1PBT4Jz<2Zh$?MvV599q@rX_)#S0L=}xG0Is+`LFiMWgC0m%i#au_L2Uy zv5@$UXI~-5==I0+>jti)@gJ5xgDTJGLs|6dwiqCKtwi*!DOT@WRp1T8qut1ZDc1r8 zXsxZQ?2HNP0sgQO z@$S6}`djZ_W%n#isVE*=(FQe1M80@OGU$@Ww}3q1ZV?-h>rc!lw- zkH7={8IS(7(1oY{`!fQhoj^h@@8p|nuV>Z)NbWLuE{o1>t&X$2m+CX#CHjlhkz0MT zPWBWp1PfXvq6It=xxxc31mGSw%G!WRbnwlysVzLzLPa<>oEu{M)P`$UE^2_yW>3ib zJZOXK^8ygo$1x(2y&$W@WeXbyV^&}2_X{a&BH9KL`vzW;HBt+Id8MxCm?$!FPoG19 zY!@`a2EjJycl8y;XA`Tx-9y`;m2;!5tSepC7R>jz9lP+}ze8iz?feF76{XROXo9vQ zE>8#e^$1rSM(@Occ@=P-klPPA@1o|e!jtLj_*xNnf}YD%>|rSgq- ziZ+JDvwoyvkayYJs?u85jmDrAA1G|6_vO6%^f9H!KF*LgiX?HPc!gxuQa&W2r;&ww zT78mdU>_J5m}cM@F;M01QCf&>`khx@XB%H*%AEqrH+afzMEO_iM@(qq`N1^h4NN@1&9d)3&xL8q zW1);PO}^iFHjNS6?^wcGx4VePqm`|KS~)MM72Ct$BZO}clKwH(N;rv}-0-G+bWHQ{ znCD}#;nZ;dXua&#X**XU(#!MVWp_Y8`5{q8(i8Z_&@WI@DbRqSj8gi|a1Z^XGIT$S zg-IPVs9ySh77t6K8@5)baUGZ4ph8`K=Z)4>7%r$Oi)NBIqnL}dLN~a2@qhcK3F-as zFrGTkVLNr7@*Cf>7D4yV`O|8^f-N#hRJ-GDL2~iXerYO8phB}t-V0J$^ud%tYUVw#d~ntcl0yV8n>g;uQXw!Vm8eY=?*s^?2Q+|Rx(srAQlfAo%^ zfQg{06A>#>qWxlUr{75SHUL6Nwi=bm{EkV5McoY}D zL;B-Jrn;;!y)^)d&2pV@*Kf7!s`o_XAGjd{>nya1Xg=xD^7kO-q9_@Ma~xTi$XO?* zzvaUdd>}slYI;>s`3C>p&~Fy8(i)0~~ikcKdm z%ev03_AHl|_Hgpb$)l#-nd+MXiPI%TU`X z??xe!!4;b!mx#7}Lo!%HsZRY{d~&8v^b3;1nilkX7a!)@y=U734&ciaeTiqCsh>pT z@7HLOj}fx1Z9Hn0)_cdJck?+pUhGHj8DE!9CH>#RlfOi%nvOe4>%xl|cET?|hWbgML5+Id*( zs(JUMM?hLmPIF=j~s{v@p?ajnPd0CC~5T^_h-t>2V#Fw)0Fp) zS1F5bHrlhXheAXH0rRAiKIHeU4kr{1R2CgcZd;Y?#}{2k->S;&VNpD%3vju#&yXB7 zVnZDpIeJhTG@Hpm>aV9O?`ros23y=EBEyiFXL9wIQoDnpl37w7q<_KE2j{9lZYOd} zUMM3(0P}b&AvOM{VQxZAGE0t=4ED5gjXi?+i)~dS{`^M1Fg12sz{2sK1>3wM+i(R$ zI1obU%bDcuJLiT^sovHVGl*EDt{L!a=okM|r74x@ zbN@g&T+UoQE0~Oy%A!vQV*TE(mY1f;ZzeB9a@JziWUV{!Wzm@kovp$Ze;CpG{Y$5o zB6?1m#MjHLH9+D2E|h7h_b2tBbn1hB>N`mdTXP?j($u<_ntBX+&*LQIkz#g#c}4zuDzF$Smi> z8qJP!-87-|ubN0(LoR@P=OOF95MwsbSn75{aqavG9i}u$C+l$9AMyI(p7mo4&N_Pv zB`8Wv&7Nn!7uwdL5AQ@B5*+vAwF??&uBrw=o+(; z)$Zq)#ON+Qw<*f)BTt|rO`ysX_=w4CFZZiixWmsTKSa7G1_|qWpDpGx9@SaP>q2XJ z<%)vs>|-duf!50=;!yvp(_3Bu2#JZDym^9Tafh3*6G^ z6mYQ!)4@%qL;$MWO|ni=^{}4fugn|C>LLd5fQf34TojP%DN^yQOM_46^64c1DK(}n z`qz3Y%p9L7h{v@{c*jRZ7o?Iup_hoZeL)@QQq*RM_J7m!djfQ-?!(DOzO5%;@&w7h zdtQbjYx#nDti3$ew>Ye(!!zAI!r}&W4{`nVYOY>4xR9&2otr@c>DIZSE4nQ}&Oe~k zMOIX1XhMIn*y=t&#reKQ&v#k+u}Aa1RPVp>E}97FmTSdOKO*|8mFpgHI>qyVL4HS) zzovEDM5GO1b5d{p6jx@#3%31}PPx|I$Fm;~iKZIyyVL?FAnUFG=)X;y_VaM=`XEToidA06hRG zcQw-*p$};4)>T~did2KkFP6u0y0OHVUv^XH%#wo!>TqzjZBRZt4C z=*SvIZz_3uJIYl*qU(K;3HJ#!gh?2Dt-3)yNGq{xcpW_Q#zs&vP#;qbj2i zavMW3>~GuKF78{-DnsQ)!@S$$8VZ6Wc20gELW$^kg0}V0aJhNhCkn5~aMKFV#eBPUuYVq!TB>iMKo(RsxAf`-;rVpt?gYv#IdT z02;|G_uJCwWI$YY?M}TsGlP-s@t0<1WPVjYfSd#!uE!iV8!fw|Pda%NU%n22Xj7ENLS8yNOg|qrQUH z5GJm8Vju5)%E?R&-0=czxCL@!;?V*b7KI_)BjA@*u*L|sJ0RY@_DkwN5qX~_$lTSb z-5bO|tkO$(Yp~rDAoZPd<7rS^M`@^%nl~j%3k3gzk7|4ul(fny+fY|hJy6p=6!2U7 zFw31$+$w{+X@~Kh{qt6fOcrbW{}NwP_v@4@PMJ8n$pK3$&uJ&K6T1|ynG8??KH_m& zFaEs8kl`k`;3G1Yg_sP;7SXZKRHBOa1R%L#3Po`fP!NkqFe)19>0puK?7@w%NU3!D z1_h}ZMM0|StZl|-eDP!1h7RGQ7H{)~7BvU?30gd^-r*kHteSSD)LO5zeAus~M8Ui= z&J?F;DkUCO?|LpuCg_?bJ3g`$cDPjO>{+qs1<1DH{Owru(%Po)M{n`{&?fKk(4Jeo z@6!Z79@@IeciplP<1|-p^o^GOrq+VbSUM7`q$9ZUcn@6yc#Hk z6}r;>ZbquwrC!`zXNJ)#C7;y`X-Fb6I!L!b>8PBFz4VD~U~@eFo4{3l*oO9qahhza z+xB7`_kN}B1YPPvov5m-)FpGi5F`cOIsog$MZgP!)U{Xp)QV07yp6nRQhybI-|^rK z@)vkU0G{l@b7aH-zZigD_u!?oJ^1bb{Hg~pzrllV2*5ZI%JQoKd{F>?-h&k+C)&pc z;AcGeemWL`4++3edhjg)xN87@+=B-P;B5l%BOZKgz~I`eeBmGT;6nrOw*mM*4;~mW zI6DAq7X^HG2vWZifX91q9cxNr@V)?C?!jvU@J#`DtOqX(z{3OZ7!O_;fKLp-S9|cu zbdREaXaK(4gI@|#cMHI}^%e#f;W;REy8wKq2bTw_{~YNHPvnnM7YE>_0l3hEb$Et| zR0rTAJ^0iBJShP8^Wb9x@Ph$Z_xnKmhyZ+Z0PZbtJUWnd%6Q}`t#oos6=`x;`$ev) z=QBpwl|)>>Wp?oAy2?qYdUETgF!i0uwKRf8=`?ee)L^3#tV*yCo5JP^#+f&b(`mey zB%Y@+>?^^TaBd7+CfIdNVd~D3ob%B*-LHb3)D*TsFb%02@u%pClgpX{dM7_^3h0xZ))bJJe5EO1Q1X$cfWgUlQ^0wt8yn?0 zJauKGw~?vy8@-K5o!szNSqhodk&OVi36R?e@PGha8v!Z>z)4K2!bAYEIXcO#4Mvb5 za=Qy~G+erKY;rzU{pF#_DzC^RpZ9(6@MmO7wM3m47>U#LMV9jy=wpvcqPcV+V zE06=;Pu-vnN!@1v!-a5~UQchFKzWh%CB~4gJpS-58b!EO(}M`p$Bj`wOVG&Yu>LQv z>lWuv{{Qby&*S{xmxs>Z?3Q-a9NbL6I!BuN(+6q|L?C4fNo;l zALz#cG=4o~TWZD?yvPrvz&>Y!PMUW7Fi;EIPx~(X;GF)VY2APketVcc#k!m-deuku zHbSOe=lJu{{#D+imeiN`Eb()>`0?c(YVBY>x6B%-p}ejCr}FM1N_+Z}{jFs`D{mV? z+j;2s0kmm(f17IM?P$erzbikKcX#_~pTiI3-K3fHf0y?n(fhCRa=z=|)au!cAXKaI zoBFs*9)koKyYu`*2Y0$2szbX%ME}le)ZPO8E{*Ve*5h}r$KTQ8fA@2<_}?#X$UpgL zkpD9O(7`RyLv`qp03SPXR`R8bwMo|Qv-aovtwSMpD3fVg@Ai5M1V%H{mYPi~ibp$X z5j_!kPQE3f`^+)&-G}|0fyXNkc--SQjO9>~=(_hs=VuP+L!=KoE{x&FYI1x^dkv{{3!-KD_@~c~U&1QXr;>1F?X=xGse!MaHb0e?b5WBw! zR?m;^p9(dytu}D8_!sHF-B_qoh4+RDHylC30OtwG3ZJ7wcM6yr=s#TzXxjjEs0W=3 zs8s;k+k-TpQ}>=PRVNS9d`|BmRi+1B3Fxu_v}Ty~LAOx#I|ZuOz(i;(R)MN5xU&Hm zx%3_~NVI=~d@KyVero34lQj?teZp!=wdrs@jgpz$dwT?l$@s>{6=sHyh+4%+72MxEw| z@131LW5relT$I|pdy<#o`;*|7`0vMhN!}`ZXo{7Hd}gp}H!6T}W=`a_cRlat2Cz2O zp$_Cpb*Mh}mX6c3^Yt|r+Kw-HQH7kc4Xe0Xfol8lf4#kl{Y?*j6zbnUet3TM)*=M)=1p3L#{Y>(Jb*l*wj%A&_=6^d>-ajKQdcyP z)P3SPKd`(P4=v#@6D}f&ayW1;>*05#F-flO#V7Tr z@OD2%32MlF)n(YMy{wtqiLqAzmIu7O@i$xK3!&!e9?lc@saK4~Gv$k1*Ik~KS6lK1 zj1|ICK|C7eM`-7hc={Z*iP)Ng*k72L6JW&WA31?x;q_2yB)%c}XKy(pHmuU_5BGPb z4ZR#rZ+OJ3LevBlsRV|l?@l3t^E3TI#!^~?nncfoBWOC>M!+f5U#i9 z!TGmAUsD!cg$`sCx6iH0FB{vMWvByvBcJrPug2R^DvGa&p!@wGok`zTYFCNK#30SQ zhds}G0J}YaO%^N>8R~J=9sUR;x2i1q=Tb5ZS1d5)jb1@|3i!!|WS3}vwPACM=3o7D ztFVu|F|QF6Zz$**j&SPkrJl7DgKUrUW230gSy^3UnMV&2?U?%KpT80^1DR^~(*0H- zc+J|~zSm7-TDHy&rA#SqE9bt2dwt?W%04}KseHhyy~e%r&{mBPn71j< zM&8h{%HX{Gci!?mKZ=D{OYcw?UCsJlMsX`&Rm{28xRK{%dSWo-N-pxf<~5chGmh!94Y|OVt*t>cxL$+Dq0()9K;<{fu*Ot@)3@2r!lT+G3i1_? z7yy}8lI4lE^fKWPDX}%$hAPU?uO+I zAQyX%fE*D(PPH`D$ZG6jxO}`6gCnb;silxxmzb8ZDw&Af6~IP$Sn&nQ^k6&$s#uSg z$yrEbU2W`OVmEU(aFzS%ctw1EDV-@{w!PN1Y{2O2F-A1ScoU4dwoIN$u4mk)vaENH z60n2$*iR&8(87XD*O>un|2VZWeKfo?_*2eW2Ksw|JhRB76`sHlBM`3WL@g^~gXP5R zY~9^V+)&O$@ae`{;g=P~v$O5|6$@Cp={#Yta?|cI<2{;M(~`mNw0$2wR>)=5@S@y;n2k!sqHr_`xN^CQi zsIj!rp=?Znrb>$2ibI81v`!rd^>Ln#yBr#28wgbjK8`g}-Dh1n%2w+Z=rNHs9ck+h zDZ-;vKm7;NzkDnsL}Z+=2$#E9vJRI&D`n7qd&il~YF(jGvqQDJ@F=P!9u%AFj`L4$ zR00RlR<0~Y{wm=na$d$RH<%Yce?*oW;og02jRT`v1LQ$Lru&BB&st_NXkcuad-(pq zgs*WE`RvU|$-Bum0dp^TKS4~{_%6}@0LnA{8m|?m67Cpz$#w46N)yG+HmD2C_RBP1 z_uPA?S+H@-IaX=6zM+Ot?XFOcj8Ck0$(n$HlTr@$(9ee2tE%j1581^kg-TrO4g$it zvecYJS@9NqL|QtD9PuNdRIkc>QMH)KL=dF8GRK+;Uhj@-RGZ<^!uFUHj zl>7fIjdj@bJ#F3bvc;*#P3?y_X0H*^1PwRH2o%^!?H8+v!1@96{h<{a$UZ(B3Gm!+ zWVhJ?@io%L<6*Sr*`I?kOdagkhoa{*!x4|1u6d3`mV4a>DvOUbe@c$iH+R?9Vz~S+ zshamlW&!rog>C~eGkxcjOxC&>?RB#xyyyY7#B1MY{VCICP-q(Q&|0Pmypvbwwu8BP z7mn^^rOOnzkmwM&dE;S4k?O4n#x{6w5Cv@u=L2ln@c>v%4sPUfH9kH1KkPB%sXx(; zW!4YWx)wpP@QRfW>iF9P6_f~gF5uQoB|v;o!p*v`I~`aUU3t z^^|!A+U#C5P`xTVqBpwEYW1+-e$+*BDX!uf3&sBWc)M)3BLq{gH0e|V*Rj!jG5rZq zzKkTK;dh+nt3PU)6=bWQ&w@j#M9+W$j>D9p1F|C!gFt`hEU)Ub}@u3pTWyY zxlLL0{m<0}62Bh#^jt55Z_Els`eQ3(V*bW%La!@%%+sWo3adR{qCedj3YY(?U?75F zapnbnz$ip}(u^r^A=Bje5g7HnPo!{)*FH^@FwR#fr6|r*h!pDb{di&no)9_cl+N(6 zMz2|1LFBbSpqCg&;qsN%ID2K2M_KfyFDOU2Vi>6EM!Pa3?+-|O_zGZcN>I3e?({X> z+Z!*}-uw*fI(}4dN3Mr@5Zra}Pp%Jv4f^uyWjf-V28%rN$Sh8cO3hS&n|Q`tK5O1z}gm@lffbffi&N_K>pls~+K z-LO3*e{NS0-}E3`-|lsGA3{F>M*`3B1ht}gPS=GRCq}aPkyxhCPcydJOq?23F};=M zxMORQ|4^O*eZMar4#pa^42n%Wl3r+go{R-Nm~}*6r^NB(UDfvou|v z)|4mtkx}5%s9HDXHnE|hUKd|GZZ0a#Ci}xpiOaL73}xPRC-d&YBzz3glHA8M7=60; zPva41s?I&QQC+UZu^monD6udu4=^596C=|ylvpyjp3E^iuX=-uoHY8|OZlrSlK7+? zDlhrj=T)wiK6B|g4G^HZyFXD7<((5y?QXy8liylBL`R!ytZ};qnQyHY6z`Rtj1c%G zygzRd{z~$44{b6j`VZET@1F81Cgp)m2$C!ajLRud!@$Xq;+7QiRT%WS^rjG= zEUZ{9fK&M7?gfkQm^x4NUjJDx#C0NQR<-;w+=J^kU`HJ-QxQxvoPvBY&mIgDIj#A@6dFe2jT!C1PsMi^yz9v?pM zC1kaAUqE1U83gtR;lKPf2G0X<$GO(qgj?$d!IBiIEZY53nnLj)zHK_$$hr$rM4RTF z&F8J{^FeCfHyBsNJ<6ivKC;us*2~yKhugRdNiXo7L#hqWSpnK!z6D<)l;WN8 z%2yY2u#i^9Q2&wy?t9(r3dT~WMOJ&cGL!9XlBW>yk!ZPv|&Z{FN=>Ll=T^WMr# zLR-z}jMF^-7n*U3d}{5u+Et)w$h|_fG5{)c7x)w1d}0m24pMsDvtE4kRkqjZp3=_# zixP!B(I=k`EZ$7Je`Y=l9w;mcSekJA`ZTW_>6NaZe_dcASZVehE=NE?c6T@b^}^uw z2yZ?vuveQK_#U-PeoE2m=c}5G@8r*GeyGu!cC@8Dvqa7-Cy)bP_o@2n-obv_?`({( z;_f*{+O)%3D#`as?jSN!6YgLg(mI#TyLIg~a<6uD)UG8ha~GysFvBAwq}jBc zgJRsMbcx9R0iXNnwW6vp+}~lJq}GqH)Iotfo%&I&zWA#tp_}=Wv3RGol-i)TSmnOO#M5eF?l``vh0O=T>y z!&X41S}}_jiigG#UzIkM56G~-q5tr`bWhLqkZla z3u0TMy$}{m9A-c5|9R5tB0~~Pw112@77MA1Yj12+(3S2zvpACe#^WTnmF{_iXj5(? zQhK6?-4nn#i7#?w04oh(8oZw$z%B>oYwnQ1{t-XiO^8WkV8F0YIL)Qlph;lt#u=Th-;#u zq3h>Ac@(I`gD?cg=?TUez+<3Lv*A*ycr-N^7UPj$_z?$-u9aIAshVhlka^fn`B{kz zuQ&QG&wguizjX)mq~h*pzjbae|7-Gc^U+l~M!6aY#-lg;jLPii6gH+_LRJWn{_Lq) z+GKDw>#iIA1v2W#~ghw#5_mX*{|riyi}S8R7D-xECsFzR56LaX9bEw&rte(f<_M z{2@07kw_*SLFBPx4>zb{?rxGvLBP9o?TN zZR%6JA9ayOlW=WE`L3J&KD-9~`Cg-~mzO5KbPY?A=aB!O0p*>Q8|)k{28jm=*eQ#) zwidRl%CR-Ii&it-kNl24V5;VUEf+pI-N-O2Ad7WJu<(FhC|Nx6fwV^+oN9VviMXgX z){CzTrrjdP2XdHzo%C`T6>wJSEvM=`a1aVLL=@-4`RnwFV)8^0U@w}K zwfGP`CUvXf0>bwqui@*uT+3i)YJVnXEK$<#p|Hsw;Ur6Kh!8q;x^IuH7H0kNh%|To zG_-~LeK8x5Ejdlz&r_@jSw|GwhV%vT*6FxQ&3Lfg1U=U5e4iqkeGgaA)>^`|4;!zN z#*f|x8YeD`LfKfh-hunLAV|2@O(7v=IL!<>w10HZdB~=EVn4cjJ!E}7X;?X^4Sj}|P4`#bgRWjkCcA4B|a}08nV=2Q0O;-@xCttxL|J(0%VU zCR`R;i9uG_Mb}FWMA${8*W8{#niFM>(Ncw7WCgIOV2Q{tekot2yG)R>XbajbH_hZV2zjNnYOwABU%u|v>T2BT6K$U7wfyP(LNJYSWL>8X z%J2AV19|#b7SK(Id+-N6HUz;Ad@basKygnSE$@<*5n5h zcc4k3#+$fFqs+v8QfNFfS}+rL>1Z=?y^d7NsCD0BiM@aF7Di8y`9QqUyEcHlqcmmF zYo^H_SBz)Q-5ly6I)gUy5K!G(yw;V{q(mwn9ScnJ{cC9UvI+6%mrkZ&x&=F@f zuI6f~VJobH%@Yj9fr!mw&-nY~BNLIQBbcH)2^9lJ(Oix=Q8#`*bEaDPJHsZjLjypG z_mIipNZ;ZxQ5V?S-YhUDwdtcQdZ9=b7pi#2Qh5xaI8?1i@p;gFg(?($A%>OLPWh4+ z_dnZfbfQ%-OItd-=1P`LDNgDVgz=(O#Z%c|=uf@q=NHh(T5w!9_8z8o%T+X=tChg$ zGolOllG@&YU!;L^8fVeYXCXs5<0@;6D4dr5@1Ej?n}|MApPmzDGgUvhlotZh;-{@YZEVmt9%%MQ%g*Jbm&BGLXtwa6&PBVUt% zuehK`bTQlV2xE0Lt%te)wJs?Go(O$8#ZSRij7P#Y*;z^bS=rXFQT@%zt(%5kXE(9cO-{X!yf&MM(6hPb72P*$Ncd`3R4Ou($S*r|Q$Jb$`er z5`A*KrEwuka08dVA>6NumBr=RV{{~5DW%dbN_JM3XIBO<=V{U1?>A07VyER5B_>-^ zyyA`bL6f8U#-xT3FUWBj6NSa*%|Y6{d0x2VaUH@PTj->WDn3ZD?d&~E#Yq{OUTCzz zbESK*o*fR!*qZ;x+c_B=>;W_0$FG0e9~UKAyVVkXDXS*lxOUvlWz zcTl99z23#53MW3P^4#{+ftG8P^3yzJ}J`CyO|=Ld{kP(Pm9S!my_f& zC9*!oL>UK5U7Qb%Y(n5T(g@sLLP2X^xI*IQ@DlepPoTN=7&^bYJZ`pZWTT!+j^p6( zw2}}mU!p1Hc$X6?5@C-=^TSu#=kx4s!-Ni`&zb&-v?In^&R>3Qs^4C4PG-H`0m_#B zq<4D_I1u}goUEzcM%#57`=f&bXS87|WCwL>M2kUz?8b^vA~eo^+85qo)9U}|WDzFt zG0sx*!$-*!&n}BT{kCM?6>Hd*W=D#LKy$m>=W4=-N(z%5#d%qDJHBTW_Y`&qB4@C4 ziBKKYM~=(%6Yf8+DBf2nS;?iyioFB#fCJzNFW#X&{vMxu73SHD?b{x{@h}g6UT{wE z7w4K()cV9JlfKv*ThqAFjxTxo0FGy3HK5?D}4pG9pO`!mClMN*r`Npn=d^;%g*4MQUz zE(sQ-r z{Q~6V&U!g0d1$_p5}JXT6p<$}wr0ua+8G%`wFJQJoPGV*a+zW(^#&_-=w5Kkq948q z>m}{dZV`c>pd1=-^&52zR~$_l9Y%6D<5Eaehfd>J{{SB&@QZ+pVmXKLTomixi63kF z={DcQgYxl{lAmn|-%JCUkA60m-~MVhiRi4mV4N7*O8vC|;ZAFuZ;V&na<{lfjOSl! zx_tlPg0Vh%rAnxYogeymNTndGl7tXXigVGb-EJ>=;W7W^v7}-zC>e*4S$DJ2otdVS zD;B_V)E$C2nsv85K!chr?*Tp?S?evEH)*VeY_>w*Va0z^7Drp!8aMV5vMP&yIax)< z`3{Yn)Fxv}4${=#1x=51_qCrl~<&_*C6(LR%Mg; z|9d1nRAX;nfM8-1ChIESg|0WzruEv5RthLM529iInAXmKFFI2`Ya;6|tRl5>GC!Eg zE>TTUsw%!5ZdLK^Z4&%?_YTSyj4o!LZ6HP$2UrUjVvBxrgM@2FsD}Iy?SRJotFP$!%{KCzt5QbCSZiMb6N>&pw);=4*S; zS8_PcM?;rduU~L_eZ(u*KA3(#Joz-R?48vaP(d`Ek3UgYZ`*p^6QA01H}Ul6uym5Y zK33mStZ~Sbqul>C+;HepFHe?ataUe;2)?D+?I-R4?c{3MydBPiz+SK$;w~t3egf?-?Id@ zoVIuf0Q91@B0Z1x*iQx6zsRV<66++@#83K++0~R$c0=|^VyE)s$M-@D|9l0vFQa09 zxLl_t$a!MaNUWNcR?kO6t=Qr6Appyw7r%sgF?T*(egY72Ir(9s74HRKGY|BPUlnBC zwPH16yH1SlNH>-Asjfk;H(9R9wxW@Uj=bHvBfo!JqX*ou&hCAxi%B9V^d5U!Y!0g% zoO!N8!`ERh2Y}MJ`tndTkP7JOzmRro4u6evvWmcaXo$Mtd6QLEKBt`*^!>BslT^5# zW-3&`1YJwb=(qNhJBete?-3Z0(U#8j3kq)i9aaIK#Z^!*TQ%`26yR-H>W&Yqgs^)VIR#zVz=;^NwsUBFh0W zPMXD||IwWwvc!KMAd^(*GVC?_eN6eX7ABToe%36KyXO{ZzqBZ3J-~XmP+Fv8@3ai5 zSm$3|?G@&>w^g|q-=H&Ov(`DUZ{HybAR1=%aEpK;r_cD>Q!M`nMgeoP*4+cXEZ#>K@XP1k$#L`!rc@R4i^m|2Vy}J6(Ggvv(VaZft3qmD7X9FPaKaTAYaqZ4(n0(C3d_dpQ5bEBdLz{( zjn5|)vxTkmtNUkQ3vsSzH=dyO`#FO7FHKTD1UYxRr#05vaJ75IXcb?~=l6Sye2u%5 z6yAP?gN8m>IAr|m2GyPfVwQ6^$`E@okQ|;!+URG4m%KC-NSz@L=-jF?9 z?Im@Qub|=52sv;nmqgsT5%gc`=jF%4*uqj8iQKvfAFRV>mf2ssTLNrNoG8ZVsjh zyTHsF_t8OAu16wLc#t_wsl6*>2W1b4Eh>zCSr~uWrb{pp17csh$y{0^Cp4qkC~#`fjhk?a%AhSP`ux6lCX-IX4Fs`R;?QKR*`VuBfZ{RLgBZ zYzZW${6CbP34GK=()R-r2$utB5Jepm>0yq9U@MsEME;ph=V= z4ubc!inr^%-imTV1aDmdL5Ua8!wA6(kSp)^SN)&K1by~>p8c$3{?*;p)zwwi)zud$ z?DD>a?j!7~ia@WGDvml-&Z<6*cHzvWcTj!?^plloFjkYi1ESx%KY1-i!3_4wiS!%) z79)4@$uY!Nc|X2|)d}@l*P>pipV*aOx|erJ{&H8F`1tk(YTblywU?{Yo#(BK z65N>cyvehgt|E`tw;z|Khs*3lKZjDk(Sxc@fVmX_egL5A=F;tV&&yd7dUHwh`Gui= zf0D;|HIY-_L*j?pc@XVXnjYm@h&Amrj4I*N5GpdJgl=D} zRmI!*r@nOkeRcKo6Mx>#Ws=j2@hl!aCzw~b1s-y`ac6DdJ()#2a3|hH#oh}y>X$=^?0h0w!8aXn?fWff}+b9_EY;oX}sc4XNm&4RVHq}*=WEU z-0=oR8#lO%5q7Kv^9WLQx&??EpL6)6AqmKEZOI(?495_7#$_UulD5ZtIrW>ST!5w| z>489-a+O5cuEyRo=`p&WNnQ|iOAlzNyxOW}7@pSPp?ngRZ~a(EiMJ<(2}M>$>9K_^ zN94AWIbg>e_(PRZHIMlF&9D>la@^4Kjr*n76|o}eRUu)S*|I=CP*rK$WXOp4{dd%# z=&x?eN2?|L{4C?Av?6@w!M;nI2q}I3-Uhj_tuv`@b|&)*m>pf=L%SEYsXwdxKW%Wc z_|ag0ghx+y(0war_)RRKiVEwfZFYdCjIr5) zY^WVzYfW{2LF(*mn`nV)&7tI3Zh7QORLjKvImDV!akCf}i*%Z(PFaI(T{?~lslrcZ zpQS@2qGa_=6u6)A{<8>lisdX4#wr+PR!lRbEH<^)O>;DwJ!)kk-?C+D$2y3nv^(-# z4Foj`5}_?^$_|QuW`02uOWm|Bo@L1#>~kjr>lc$bOdNlL-zEUNoVZLM&hRHKOIrLQ zn7?onOQcxTeA7+i7Qz_mtIv<^Q>;1hATLhOn}yDP0WFa5X|X<+oEUQ$^N3c-s#@Qn z#8|j1@I+^R9Gl8;lh1IK&v2B%*$ugbvKNt*Cc!~`a94U8*!!Ng#G)=5^K?;AtR~~0=2dM{QyI9pAH$~G>mC)Avc$pz00f%?Yux#wK{me~ zU5g4}Ud}*}8CW997Ry^>UtRvdswK|Fz3B8P&V=KoVw?R*J4PHp1?`0gW2y>{r2$5X z?yhaknpwI8&~n_lHEuOB?)}eD1y7rJ@J{y$U>O-7kJxyoY1m#~SpS_%MFS9Q=&igl z5Jd*2B|g{FKG#-xB?nusvb&h2m&>@7MoDxxbC03gdIR>yXMT&3(w(C^1@9zyFBhuR zq1Skbe;7iVFi0?VXgRWthJ!4PBHcq3&zo|FZ$KsKW%(ed8=m#7WMDPOnIktOA|NFQ z9wo9#L7u}(GMspVah&TO1#;%=5JC9 z(}M-d)94KGZo+5QDz>rFK)S1C4{L!Ne6}!$Uw@FmTlRDO%cwOG3T8Kk8b4sY(i}bK zeNh$rj~pxZm$NZzt=o&T-V2<4m4v(2WeOYWd72M6d9yd10Z;3nAlLdQf0T6{?-fzk z2RBkzYqdPN`Z*x_3oY(VrEnB8vp>ZXM}eS?Xv}LGlz+~bpPW`+Q=vJ&_;$P=$gLeK zy4JcK2x@&_#^++R(#11<{gnMKeg?}C0=D#pFS*(?>d>=%)B2(%chFqxep@6Qq?G!8 zWpT+nS3?BnIw?F8S%e#)p~uR&u9}>Z`N2aiGA0-1a_f8M_xvp4T|F(@^EuBxd9;Gx zp9D!Z&#ub6FGwPgkoiQAG{cvw2tFtC$8bt2t*+GkY0+Bab2hWd7ablh7uz#4% zW1t~8@829Gv(OS0@>e$u1HkI&9}lQ+&9z-O*v4DSAuE5JOoX50eo9g>B)o;OokJlv z^Hd}BBYsaBpWDZjZWJ5OWNqCeBqqk9wma^X+WyAB^hjfby~oPgjo=gtv=v`E&hUb0 z<}D=ys`nv(qnsx=hwA z%o(^}23nQb9I6?_hL=Yg^DCqD$U+Dj=4blBveC}EX@h8WH1peg#Bc2KPIoAiBMuhC z?_}5vO3;zoN6iXAEVGK7iqtaW18lpeGpLRu>TtNo9H;;*QgF|FFul?UD*90LyE}c+ zbD_BL7*FvFW@PQS+ev^+Pxjz@0GsnXveW}Aly7C}gN*+7GNkuG{xkg10j_b6WmbCB zWl!~3U$HV&d9+_d>2-=P+}|qE*|;3nhcMw1nax;u+VwtpGD52nt@2e5pB%tPC*fSO zr2K;eT80Ghid%rY=d`uRXf4i>gl8YLKY#G|uTi#G_}hpW5OkwX0w9Fo{^^`Xm}K?4u(HtW~IW9%GRJkYT@Srtjfbe z75&k7;D-jq_pstgohcKVr9qJ)e}kqliDqxc88f_k^Kh8$8&z-p^c;3En%U)U>`cA! zk?ZAi)x*3&DxpPb87EstEGI^1cr^2HQVXNkWz{cYWX`;+MFs=cUb&4XXFkDiB~7Ad zsdTb^M*htow{MX+n~Xku-JA>Lv37tgpmHwI)>2x%|?chYbng zi)~qJEZaiRBD;x+Yc+1<5>v=X5!&l^5=ND0lOybbO$iFm<;Fbs z(ioK&z58kagwTDfyjd|HJ{E37Gel0dYGp4txv=IP;2gPivDAA}Pfk~G^b(2q%sHB@ zb1o}iR->b}QFHk>Obyq$=7uYLjpxt|vpl>Xaf)gPzhV`x)r8}F4|yaQdG6FF6duaB zuPG?1)K!7I8__E*SpQho-e9m`%&AWA7^WVp|nn;Qkn8%d?oE=XZ() zcrJ@%AM<5@vRE#2gV|}Wmd|9iQrzpCP^H{f6s1E(sIt$bhi`&f$yWdd7%cHp*EXET0yET(ii#*B+GqZkXko~zwrz^;2)lbFD$Ix zR3EIXc+8%e2~Uyx2mEz9O=3O;u)FkXp;WA_sc-j>`a`=9_ta{omUiE=ei4~wzJz-z0p{$f@9rX`(z5Q zbxD43h+Bau!PH%n{U-YCe#IP#LTvbDfYre@vQQAeOkIV@;>uIXowd8&OU&#*g?FQ| z?hVVy(C%SVgzzzgvE5&NHll~xYrKo%vr2S6R*eHqPpw+n!?jxNC zAl!i~l(HJSe@D%HT}GNC^Gc(Vv63OJ;JMqTc;;%{8PQfH!LMBir-~%P;q48knjmPBAJ zz)#bhiQU4C#hlzxK#>n7*QhkytA^mt>ubWMOrC7Dh+p9u3Ajf()OSA}lPZ_Rj%SXC6YOIOXEb z%|V{$JQBMLK8J2}MzVrogZKNBbpr zNc2N~Dstxt8^*?#{Aci?=QUr^-{kX}nu?Ctl}48Po8$)T{dVm_KwagH%&fVunP%#L zbj-)MX;LdjA_4gr_MS=p>CnUXu)3b;X<2YHxDu_})H`zu#hCzxD&FGTUshHJ*RgVZ zmq%JuQcPcf#=vqo;+UeF5tit3wsrX*@DjNHBG*S9q%Z{u1;d zN?jH$kwLAL^&Dfh>$CkHd=9xq^_9I2-vNCf9r^iFh zpNntuGu&=!g$WxAk(`=QUn3{oz!6`CFNyUoDTwyZvYzi3J;+BrZ{GF%#ea?8voCV9 zzXIoxmVVe9aH5(ghworBT+H8qFzGk7y^kX+#FU#!_Cgg=zRDxln|xG`SCWSO%;N!= zJlP##>@Elp{c4t}+C6w1FO6<#RC)mXX2~(~F7iix^ARBTiSi%{m3g2`oJs1#K6Mq` zaL}Mr8+mg6IK`V)ltQ& zB1d|R{}9HL0*rm^5^Fh2JS*A(@g!dh^0_x^d=#z{goM*Hn4kWm-lq&z{z6a1uQa&! zrq}{-uI4 zU3FItvB`ZcUr#VyJA|;^Dr7|igU+i%8V-8)hXQeJfT5{#+fNW9cz^XcZkLE;mP_&~ z*J3&BYR~QJ$Hg6eKe82(JK)22Q4$smkwnKLOZlpgaO-?mjTm-`p|yqmlRY`vma@~G zVkvfu>X(U@1?4y8BkB)Z*LUh1kb4`J3UZG?8d?Ezn{`MDz<#DWk)JPs0zY41McTbH z-guv|ZJAka%8mA^8(wPNdA%f~TD)>!^brpRMAwEYeI%0mB>!dmgDclky?X7@;Cq?K z;SGeF15MKuTj@u9=BGYzG?$-7P3ChxSJ@!AI%9}B2ZkP<`))Jj)ZKKGF`htR`1Z6k z4d?DcOH*(mdwFYLj-G#~jnXQymxgGA+sEkU1yiQSfrU>T$Z?a?)s7((V+F1U|%qZ(P~4((|ya|iGj zZpD{C59EJ)u|yuXdaav`jZ}B&@aixmhSWzcLV`zoIAfwO@*G7(#E>9=J2F1q%EJl; zL!NqVQ>;1fpOZAkhVSH$XgJ0KZmn+w!R$?Hw{GkYZd07X!BSy802bNqh#Ge`KYe?5 zjI&nGJ~t?+?GRe5K}=4kT%t{|;R6k-n>N}w8hPLrYr?A+O0KgHz`D6L@Z3jBMa|eg zjTwjCE(_1;n8tcc13jkc9@BD+k9!zQi3f${i(|Z|E#WVWWS!~RiCSlRgnyNOq9=V% z+RS(`dy6%jyC6OFcXP%xel-JKy|RTmGhV0pliXJxtQXfG$qO;{rBNH`9y&h(Ti7+V zhA(c!xt%Zga@jFRGOq=+@E!AfZ^&d^Ffm)?K04O#^Wu_>Aj1@8h=oU^|8mElM@-;7 zQ3(kyuF&-zimT4bDT=XBtZv#SARFt}V|`-bYmAWW_pzT!oZxY_kX7aLQ-nf`#ChjT zXdwg8q@e0b(e`swpB_?n%(919g*PKEn6xZtEv`D1BVL)ED5$#*sxlKwlX^sTduENU zw*HQ5l)?65bHgTwe&b;ZG9bybaBmL>hx0$57DvC*MaI!>?(^jub4qU%-Z$nMmq0zzqjm?1v}iM3 ztTjYKDy<8zKzXHr&mdIA+%pqh$O70R2F1Gzb3;Ni^>Q1=x)mN!nj0$XLfJ@h)d_Cd z(S{2QSzs52E?`e|Wk(bLkm1c#hPA_eh9=6;s<>KKjGz+rm;6No{<43Nc#vI`P%nRv zgAVz-%Ko&ze5eF3bEN9vy)V9yzja5M{Oy(H`}i;{HuASGS|QKky<=q9w88Cvl&}Xh zK9Yq{ciw9HpJmBS{25R+QWDW}yd*;5v8S8(8Wtn5Jr+xjnv-5T4keVpyh|A`Fs&po zm>eXeB>KJ0t%v~teE7?V0b!(3`JqcCZLUMWJ zD4NKqUdD%Fh^jZ1-KvrPbee%`;Q;fxgMY!JTiEX4)qq)`o(M(|JuTNp6Hs#@#E+w9{t=vmO{IdlQp(D{wh#=dFy$#hd)|K!O* zCJd9rO~yaSA*U=WI9FpM-M`3f*UX74eXy>7Q5?i>>>D$ENoHADzPSh4=nJk@ zZst*jWDFY6f!a(1SPSJRDz&F<#XrPs^DQp;K!d?I8n+?yv=qEQaE6zS!x(k#aFc4n zx!99Hu6HiJS}WaQ|LYOPXSa~Q@s~_-+5gLj`sWq>t?D#=toZ`B@<$vz)GmN&y%ppP zi`-WQqWZgt$AdV27l;CTtNmVjPtIE+9Ml|hSF?Y%4r(1gLp{obOCG`KBV>89uiH(1 z*ZMZh14$tFsRta1Cd48WmFib|ry&^{@+KokJvN~gEW<7;YDC~Va^;OkWp`qtHrENC z&nH5Cwf@91Cyy}`6U!{;M`4xFx&L7NJzB-$u9y9_Tk@zrIS#FLj~?zBvl$bav=1EN z3tp|U@!y|M-RNhTSD15E?bgz#rWxVecQ&P(YL^Mg2yh;va*cs%+^^jYr1z?>3_vvo zD%QSxgZm3+shB%`b5l+C=1m$`cR}fUoUJQl<7c_OkJs=CbbIfqAay>y zPB-Fn0XuDc?P8muR%)YG5b&A7PrCbovOu+`Dam%v?v5;nDkkw=9@+akta0fW;W!~r z)=8UV_QKMrpYk+n&`~gexmK5NWm{u;9Z5~_TnhePGBBd}n90u?_ovJnc93FwBXmm; zvZBf_N^vuoiZOoxW#R)(5(afk?Le$Q-(0URkZ~vViLj?Z=?Ob4fZS~mg?PpUkXsDG z9##zJCReyXMuK2@=AlC*`-E-6*D=7e1jQJNvR$lICs2QQSp8U6FUzSuN*nKdd^CBB zaOOFN4TlaEpJczA*yWGrb}|SYAXqH>_|x>Kbq0TMHFmQ*?IGgBjz- z@k1ag2(Vk~l^%`b6Ue&EKO)u+)+Tzhtd>XHDt${Sn@Bu!fw53M2yTA%9BmCLUvBeEz|hO(;OD$ z0@phCl;Pt2gF{H6*T2$Vc0$O>i)GKkrm9I3$(7c4x!*bsuFzx!&(I*yA2J@?e66NQ zWBAvSnBy*+Yvav$dNp~WNphZa#rI-H`1n(O4OdE^SoYcBTWKB9T(rf)I@!QY6pj)fKE=vHed z@8!|3xV@i;WNsr_1rG=;3eh zEd2Q73P8qfN2dVxA#R_j9jesN7yCkir98tJz)|AJ)|=u}qcOL~1*dXnaj+y%&c z4qesd6Hdkk9DOy)6h4%H>7{|zFfOBZQ2h80XkWjykT??;m;`o)5zgiQ;69@Q+nbRn z2GhE$gy}o}1=Cp`6KKu_4eWE}jQ3bf{d`+Pe=NI*CnZyfYK4(B!6Q@y3TEs;i`(9W`y$YSh zrn(12xop`Y_lb-ggGhHAtWd>p!f|Rew=&Lg9?nA8wRcUFL2SYRp6| z+)uU9%27b1bJTYs3RW2Hmg_H?h~?c&A=VHwH#JSYkIHDf!G#S;jd*-cuD|EHe3_7` z13Fluon-l}puDbeLFle(?X+!DSVe4)U9S80tEem67aiz<4PVh?v9?wXKHUbZeifU_ zIwnrVKl*czW<+r}kTiLOQA|>47_v_)me$v}?+>&I(Ehv;4Wae#N50Z1jeWXb1!d1j1Mv)Ix`Z?CW%jtDMFyQ$LB?I{nuDEd3&3qSLZ$q@}BAk4tL4{Ha48lV?F)yFbLDh z%NJwlp6k68P-h$l1yp|z$BMMy%5MBtV zfCD0WGHf8fB{!L)Mgt(RMn7%hpw zf>6bu!~)o4Fm*G3du&P&wXJn$ceX?Ct+)aO=Ji^|gLo(x2xb#iR z+2u?lO(N1lo&ns@@8kK+sdjp{(|UPqw0V`cp`v)7!w{$KW3i+_T;~J=jyBtQ=bS(2% zA*y!2BZquWrJ4Ht>Ozy!E`Xl1slZzIg>q0(cl34+=sNWv(WSZZ(VfiebKUqGb*TY; z8b+WuRm6`zeC~4C_u}Ei4Phwrp;43~6)-s={bEEd-A7J%AH-&Z8v{(e(-}l$qn@`cSh~}# zH@lek6+s;#-4Bt}Lb05+SFm)#$<_vpyt|m3^r+Rc!JVmcQqPYV_aq>W0ggA>n|ZfHgrYpNA!dITa65B-1+42bza&}6m50g0*HSHY`;|c za*UJvG)L^Mc9$;odrND+G~PgR&ss=+Maf7=4osv%?pT|}MykM0-gS zd?O+4>kW{WEu7K$E+!{Xd#LurfMKMjL6R8p2NurG7H&rufl=;Z%84WUSkc;96d+}V zJJf8BmFjFs%DnptuqWS?vBqtYjv9{hRQChm789^c)8h|=zkYqxVX z+37A(8TI#453>lKyCW;v`5Nfkwzg{AJ9~R6gLP9W7JoujB<+dyZl?H{I4N1s!i+e#VWWj$RZO%GnNqXix-k}mr;Dz^_HSyJDK;G zir+hrl=d+TYEFvEP!}0(_#AORv&1ZfcQ#8mhCPxBi)rlHIF>_!xDd+EH$StX+k6Z zO7km6qSNsneoWqoGo^|~U`Ij040M3YN~^EOVpVs&ug>fSia-gDpSt0`TBv?5z%l_W zR)uZ)SuDBaSjEr2EsaRza}+#Qj~uX1;9|&>aQ{NW=URykgK!|T0?1;6h@pMt-o>)} z@<%jpR08g#d4NYDm2{DK*i8;%EIW%aOWCZv0&gc#lf`+?GwW6BuHH*^`T6)7H}@&A z?Ath7%PF^$22MocVG1oOI}p5QvrStFdm2I2t~LxW zQ}F~nDO;th$+53LsQ)%Ml&AOw?M(yRGW8foDKMnAawK;B<9mg`*?J?Usx|ELf!tbm z9GR713pp$(nv=EJ?IE)Pyz)1Co5(__;$Qp_caHL{xK@Ty1*Z#cT<}`Im^+Qs%xf?& z-m1B$Wocrq|AEqoeqIu18w%F_rH@s#hC%9X3dOGllLqI#OycOnAMOFL@CQdPro5*zUk)En=kP4|9yS&sdo}yy|ifXVB0Y!U?qVk0Vms@{HKR2MN zLyD@MUqaOsnO{mYg80(>wC@JssY=~zMH9^9`TKanCVxtxwAh4U2mad zzd}A^zJ<*f;TfWtu;U2!A;jP3fPmI7d2btm!g^`NrnLRLQtsNt^uIo%ulm|ti9}Ee!t-TE)o81_4(+?7~pKA~_4zX9r z`SW@eHhSq_G)Ao63k1c^xS|uP4+4(sQ9<|JnW~?20B$M26w~;`{%SN=c#_`EaNAf! zBTr7{9EO$yjgIg)4DJe50O?_nP8&RAxy3y+UvI(+nl=M=x3QbMh6Jp&uugdYAAA>m zh8RgnqKn)g*`_^*LF#Tn>Z>MX)$TIn8t`g!DAxLD-qRk@`*;bOWzKQ;ctABuq@KCH z9`i$n*|wsW3jLEomcaq~mLC1BY5-%b1q=IoY)foxsR8{l0FdMowr}^eIcoJ0zJpr} z3q0Q6RuEDGJ@RwAx@KP($il$*+?+%^zqZiTzU)LP^JCtp@ngAu9>Czw8RmDeEExsw z*>UGk;rIA@UqVKq0>(&1aE_rTG__kI-K=%b1?~VpYxucKPCYN>Fw~sX*_W%371r&F zIxqap+kh*rFx@K(X7C}ctaWGc3q{n=Dt-nBAx7k8X;v2tUsVXRs;)M`<(6*pPGO^iRM}Cc!+-U*-5=WBsZJ<6w z%na9AS+cliWs_oguOHVeV1@M0inV_M@|d9Ii!)cdZ^%3vX<919h1NvzPQi3MU9r#tyQrjRBZ0r##Ux$;v>OY zlrCJ9k)v0`GZHf=Z9BBI&~lc&JhD2!E+r(MP6!gdux;%%vw917s0VT~U-s^^ek)h7kVyP^;deX`k(0O{CD)U_&?F};PN#7^!N0XUV@U0)aZ>r@(UTn z3~uzmHOm_)er4N!Voe3VR4NH%VDU8Qp~*p!mGvDyt*F=hF&{44Ek~OI_RGlm z`#hdLu(}f&fHW;FWCKMzeKlXO^vFZg#7@AQFZ}?1ow7ApEmt1X#p* zq!ssCSVka_C@QmVVTnaPCOM6tw%rHLY;bo5xcZ2dex^IoqbOaGXl_WTM9#^x!k5R}XqRZo?cR@-mrdC#y~kr)Y86?|Sm2PXtu7 z7pno|bY;>4sBqsVCBHveAe;t9RavadoAxJf8NPqwaCJU!HZYTLz44gpE71Jf-H+ud ziYClUt}~5RpSzod8%yGi%XPk{vZeOD!R@w(c^I=j>P3B+UvH$lWEH%i7Mnp{42HpiuEIv8m3Zc?RCcd@GSYQvB)S*Vq#r(ehc%Ds^>QIZ{yxhS80{8 ze;pbOw8phFkePsk47ABTiZH;054oRl*EWwmm zjb3fJvyMGo1);kYSKOTrlPQ0AccZ^7%!jQmuyo1tLK^CLTo+7mK-^sNI(Hc*xHV9X zK0!uiYq1;&ZSr|H$nmUl@GSI!aMJbm)oP-dJ^Lpq@@D*{N<>B1@iP4jHYWK^UtZpI zwvLTgyog%F@*5jtiL1zO&)j(;lL&k!Ksg>1J_IMkEp08)&=y%z{Dv8R^Y&f zegn)@ztzn>8|22nTBFX!1IfI^WWfzMTHb?OGY!eL*hTtYFvUl;AIz_HR`<^le%k%C z#WdJ|WO(~RMBjjhzWK^xB=pr5-Bz|SWV1WS=j@rh(O{Ea(m)eGIm)WPl#yY}1f-P4^5(uhBUW->s zP4oKmr#?P~j;wKI%2+in-+VBc<^`y$jTRf+P}1Z{BB`H)yIX+!!~pjMgaeg0OW;_S z1iH$OuNwX&+M^HfU-+{Phn+7v)j&I4A{oD3sDlwhkXP9-c_QhNLAKDizR9r1*1_66fW$AF1jjG+W zeS?2u8~)G{;dj`79*hxLVBg!w1c8_S$&^jrUY(md!N zh0?5l@@|w970bJdKZ(8VK4HnvQ)Kl05vuqnd1VG-;a9=rrdSdiI|Mmhkg*2QGfkyO z;D^XrxI`7D_s{ESG-<+J>=Bs!adTnm?e*fI`jO2IuFJ0FORYR8Hn`@#Ix8P9VSxBM z5l-r71Nqgli@(+P`^~+qbuVQlZFO}3c^HTU;v{bY`Y$tX_2Z8p@1WQ8U)j>zy8!J> z>c1iN`cLSu^d=2}phqiqEH!Qag+GZ7Hhu>B&?O**nv?p_E}-OZ_2G|ZyVPGO>);nj zzE;}*UElqC=YC3@`Sr;b<0oRxjRZ7a?&kNx%VQsE1E1IGQ@USj@lKPsS)I(BHVsM) z^jS(7mrS0ii3L@+W2@BO96aunB`s5K|cabzz4sR!Q< za^WL*{FR5?7*xlqVnEXRZYS_wHP?q=04!|uPUX|pWOe?C-D zw)AqP|H@cotJ?hDv|cKxqpl3%a@E}L_iL5Z>bN08h$2f5lE<>4#9V7d4yN=YN%rglU`^9L7~QOl}Tlwo%%b?4Od|-ArC6J->@6)qD(M^B|Vkk0vEY5XB(t zlgfIQ&st)Zc#*wJoNvFibLh{4pn;J+3>E7x>b@Tgtc8mUJ#lLH07DeMp{q@g+)l|5 zTsuhppPNRi z#%4FwAfo9sQIblC1=<%=xn5hdGPum&m4y1OE_hR0Wk9|=O>id* zDO?p^4zGyu(vG7HEQKcH-MC3^Eas)=pZ;QGHkof57 z`LU6{M9g`VbGh(NRh0eH1J4pL1n?EwrmZ*Y%O?Aj*Oox&C6p$>?vWvoM2!9$m?@K0ihQzf(MB_dIM3@`Parbqqqmy+KI>E5 z_t-|SzWwBFP|?+hj}#!ud)p!E_qBGis0 z{*l>lJKlvX`Dgc{3%TwhxD+fFehOnLx_*=`qoc+#SCl6k3*UH%RdWSIlHdokP7KvF z8AoBh&J@t-UVe0c(a==8hlK|40U$Wju3h5%7n>{q$rrjMM=YyznQ&IDTfb!o+lPE~ zfUv`P^Base9OSk0v6vZd^bwU2&`TbfB%6fRxWkNYZ2*mhj|t92?-jsgpq2;i+bw|Q z11pv50=8N#A>R0ikxfEd}Wk(alC`S)(yJD zdsdMun3SyV z8(N{RbK7px0n<9y*UGS&PNzNI+^k_7|C_&Y&A|g2*j)B4Unoo=%cHvWr1CX=W81U% z{fwnWzC&R!p#%#NwdaqM38;>1@q&72!Xckq&xR_rqM$ch&V*$j<7tsiROh(2=ulvl z9~jKtkIu6E2xU3!-r=rU4$-^2l!pd)0PwC()x+?hFl411Z~{vc4WiyxzyEr~Bfry(&WG4i3D-bsa^P9Ip2i+h-F< zeLaVg7ylA|;T477U?f!|OHmCF?7`gx(ySK)@D7<|U#e@szBK=`##JLaHuf!Y-Cm(Su13SBQsZ8%PkDS?UAG zOYP&*F`1NpqIybzXo6+eJzSa3pPQzvv1X|qepuUX#WoBd(W}7xw(EldXU8@ zdAvU5KBd5}BMz&dW#Kyzcb#Umr3DPr#ykHWU-JBB`1tv9LTcT~vVN#ygt}(iOrzEv z<6)tS7yWGeGV5B-XC>kHm;+wz{)wK(C;Ln*P&*;~bCV$qRjfl;y~DG8kxyEsB+ZgB z^sC%=jQJYfrK8$72LX!=N1c1aGRg@$gQDbjcZJO<^hnwFXPmEb;{z}ga+N=Icds{> z1YovB3;cnXY*ZHb7rA{~!hIBWND#SS=UR9Z=nf!r;u*Lt z(Ru1E6CLrs1#ql;sPcU+pFX}6bJ)AoS0{sAAn^Ly;CYIzZ9htDMdn3>uIfRtMB*MKx(kAogU8vPzCk`|H_;l)zIi4&K8AG#@-KbE z*SRaKNUeJ^;W>i=Sxmlcfh7Ynnc^50LpAI`G;odw3E?9)gIdNIK3Tum&eV^Cj-f&} z>1Ymm=i%}y?G2Gwr`_Leno(M0KF})nwpr87fd$}wbhAOKAr=fiMP|B-Kg4C1NCif8}!sYz6$p-d*qGddHY$9ZE(GXU9*j0x!qX=hL1zT znkm5$^Rdq*y&Tg)RB5G|j?yxZ`gUS++G25>kyit?FQeXg(5|ahre5f0WBCf#K9%Pn zTBJNpl6g9{vplQhD8i6+Zk>#z$)vu%;VZtJjxULRrx;mL{6qVwb@C6igoM;DxIr|z z?-@{Ys><5P{BTgJk3qNx&y|fJV`TuY6qq1YG*KKX{6 zt){!+uY@7b(DAj?{jlEGh1sYP?>JG)d>o{qidCjW!bFb_vg6St`FFMtDz$A*&J*U@4L_|xrbRmgtA}SteW{BnF};b z{|F6bcZwRU%zB$)PkT@JYc)6Qsim2bsyr6Hm1?Cebj=xpP=xr?dQBI@ml;X4^jFu@ z=RO4_A~(7&afsI0+L7y650k{VBbOK{aGoJvtHRqbgg`nPq}H|axau%YlI$Hmbwl90 zZt$NOG)bv7`eXpvD<^Ow-1;@Bi`%s8c{m;D*R}}1*f9MKBh=+nT;o1lW%l%ux5EwL z`~fsH-#x|_v|{EJ`3kvRLasCR@wu{;OXKfzjK9EtdduV6h|R?N!EPT)PE3hhqLpSy zfiH5OU1?!{K^GcSOYa(OHuDuf4`g^Ur32u&hVEBi!dJxRX`;JgZ^P%Nss>;!WT(Er zsxi;sk=t$lhs~Z#xoejWaHEuq4Ea|RPht{>OWP#3*!nxxX`s)f!74w<*P&YDC;6=R zR=KVLeA=TPuE4AEw+Z0S&VaJ${NgGda-oo0`@ngUrT`iES0LMp-)HTFAJxEJ1(}QxK8K?|bbF(XDHZP7)_=d|&3|s-k zrO|Z0%^!E2&!yB_w)W{@D1Ak!k&mW+s$nJ;e%$XPN`W=L0={z>@MC^Z za)*rf5n38COZ-YL(Xu}fZB+01Z9efke%$f5@nE|!1IxfE#Ql(BKjlOXK0+}PUDG4T zbf3ocN)p^$Cq`>r_X{yT=@KP9O%irmRiigsEOfwq(-wa*9%c@)$r=(+>!K%ne*VIl z9dJm!Myfn|GF`^r)}co{@3rYH^}xZpEQ#b|X+Pi9G@H-kgl!w%rgc=Udxhpoy_S!a zyo>H%v((u-kcEkD%PN?xoYp2_ZxwZbg1#&Qx zJie$OOe?yp<2oxDuYghSi_(jVxNl;3Qo7uMvIdGU1@i+U?ti_n;c!FXX9UW}eGP@& zK*7xtTq;qLc2k3DD0_k)T1F2^-$o=U6Az8DiRqM8VuMnYjWWuT^BuoI!Iewt|9|vN zH8lSh`t}J%nguE;$^U!$R-54pIQO^o{TTmW(6_gw^jXI_`e_gWgNxQw|!ckIx0 zh!!VpA_uX&(A!OQU$5=Xh|htpdSVoh z!vMIqAGF|s=wJVUsj>?{h zYqPBz4RVjL*GSJG;9+1A*1DcA1!$>myXnh?m z;82x1rK`WVbKkp_L$tTE&Zu=Q>~D>0%-?tnnN;2MUOOYWbV9O6-OaKP5SJqkzRm}~ zX?P7{cgJ(`V|f2PAZF7wMr(knYXJQYXo|!fNMyR!I@^=zshe=uU-S)mA6-5+2dSG5 zZE^>>Aid5N4u`w6qlga(SZp_CZgB5^CmJ=Jh@6-8)oZ@uB0WQu1suyz(Ra)lAWxm! zz)!gaa%VpL7u>wb%2&IvNact$tsgEvreS5~oPU zV&TbZX)OB`JV*C3UaobgS%P^s`e|kaPCWL zzwEJ>@{4eTB(N9~?x93B8(kClb=8RwgIfjNAqttNvfg&B+M5i__kTPos_uoaci5H^ z#3pg1od@84*wFzZ^4Geppsg?3s=nwo6t$67hSKCLyjDi_YqJ=dW{p;tz1vBOStCw9 zs*HGpv;-D)mU{I0+OOgD^X7)sVzu)g;lM>}qfYBU|H*!Jm-a}W!`)TSHGyR^NJNke z3}QB*u-H3iy2J%vCRA~t_3dUili*6cJs*Dj@3B&;l{XSEjo-vSAU~BJbbERNLKPpU zDm{8LRcx1KQd{gfLaX}hH-T3mEuyiTaM;uf*41KoQ`-p5essc3DUcJ&{moY)!qe4k z83bnWNO5DT_ENm(G;6DS0Tkx7a$gcZ5kA8cP8QZWJR;QwZS4@RgTG!_Ml0&O5n&Oj zTT=bg9}5iUbH%KATvVde6{%DMcQg|$X@?bkxmLk7Pd3@c4{P!vn?Uf343jYQQJW23 zB1?LMueNf3I2VLG*SeoYfbQ*Au#frlFQ3L8}?LK`@I>^&u{tZ5g!F&UoyHOx`JkJNbzksqXZZKi6JH% zCgJzf&2e4umy*uYz|~MX(Lz@PS&F;Xj%$jI4%MVrl%nB_>nsYq0p^Alkd&!Q!O1H^BkhZ-9xZdrV z!56$%-!?;TKbNPWT$4TA4F}+#>QIGu@&&;NB z^Q=Db&pqJJ-E(6@fHzAONhUYDNE*`Ve~a`F=4ZZpdw?`v{im&Gm1VgD{5E?AyC5*W z!qw7D>%5h?lJ-iH##gD3Y{n2p?qt7HgKo{2!Du$;cQ{eLU~HPt{@3>r{CnukG2Lz2 zj0`V|xczl-XTmR<+1Xynn7<~lB*scnN$knoNiZPMqkc?dzpoxBtQyzGT}0(2RpT&E zHSYL-Dnhmm!UCgT)!SV(l}f6{Wx2hFX+W`J*O@tR%XXyhvnr{2&nnT=W}0<`+Vo>B zh$#TqLNXWx(YdH%2Slho*&wlCHBtD6Yxduv}O$8ZiK9MGpLo|^bmAW8M zD*irIC#s~?MQ&~k0&iaMEVZWbZCb}q>+mdO z9A6|4uzX67Ktw^;i7zKUYabuV^ z%g>heITs@_8v~Nz_Sexlf;nCE@w?{j44|Ds)a_}HDBlp(;4)M0H_ly(kXU$|A_fp1 zUE$7G4tDo=h_X8ip#0WTj%^i;3Zhs^6A+?W*W*@E`)vNl>`S{G6`Owxqmc zR3z4=9axKE59dyTzQl#8^F04GBv9iz8pev;8I)2_+7*sMp_M`g$p%+ACM&i}R&by; zFxbQ52aO~JioW##F2Hdl;IQQP&)ikwQ-FLscsyQ>XDjIE>iMv!8glR z0e=~|B0jM$#}J0#4qutu;q=j47M1wL>-jtAx$mKgY|f9j!1r)r+fT1iR$-NAGSxQr zdwd~sZ6Bz|V4bp<+7d**YFyo?JCF};EQb-J>5S=CPn{cS#uI6)OYe+n2$(49X?j>g zQc{KS$oo7gSD@2Z{2{XV(-TDQ&XfO##^9gg4w@1*4ADqqsz9ox-x;v}|I;7!bziKy zd&8U3MzenYkH6``WNRrErFN6?r_d((&g9p!$dtCIBA8ypL;ZE|H4O~w+7&9k#j zlIIJf+^bct{B!I2Ph}~%GEh^`@90jX;XMy}q$ygO=Se7g*25n1{?P-<{rD%g5o4-P z`5Xq(v8SMuZnCAY&&gNphJ5VJ=O|UpA|Qxmn%jcg7k-$+ZXWhgLbI-egozj0#IzaMZBZ4JDOq6wg=+UK7_2y{D*7xL;_s6fh+p{GOuZe& z2F*J6Gm=4Xj`uM-Mvc+#2Bb{Iy^dz!yb)NOMiIo}pvO&BXY(hneT>tf@CuULli-ml z_$^fNGJah#4$Xg)l%kk7<8GK$_P-LBBu!A$*i&==V@6F6s0me^O|`5nj_2p4Fdo7> z19z9J0@%9S2u)fv!*R>G0ZRO8BW19L#=^0O$a{k2EmVj~^Zs@!f0$s({eubg!d>Fm z-k(^gZf|6zef;_j%WUg@>ku>{sC>-BBz#K+^Xoy|=ud?1Esv-vWGD_f%Jt=DK4kw< z4?lyJx*5Kd>v^#TNN*f?@0pXNEcT-RFeXk+-);GDhpt0GME0T>y*3*1LY1cl;`lYm z)@=7Fzv!~~smMlPZxKlMw!q?x*Tu&r?G@BbR%1-w@CPN68(avWw~+d3WM3>mi}z26 zBekC?od}g6i!hq*TOfSuT$F{Kv4F1EcFBv)JvpAUom|gwcvLKZQ>(}}arl?OGbpV7 z>#1E+@^U?Y?`11yc!NzsISQR9S0dUDAqs3O41OQmz=Q{1WVqW}sSGu;tB)>flo3D8 zma5ILN1khJQl2mS9_#Wof8wtP$)nw4OQ`-Yc8f<^){U9 zBmE(IO0UIt#nNx3jGFe)2d1YSEp_F}Qew{3hV&dUvag{tVmu;Xb-UuO= zA=P$+@I`K5XT5T17j_+H+a7CN38{dZ^jMkDe%3v0bHrvBHgM=}`DeR=2Lfxd=;DB?m-YH^EqFpZXvG0W={EFu`f>^Y5cjFK5GqNxY zG3Nz|YsJDLz^;*1tyw*g zi{!xEfsD}`+RhB9LYcln#3bgWz@#c4>Dy-P+UP%vFL9m?2D_U;$xJ#2RP*57X&`0f zh<^nrz_2d)bA#!N>H^b$R3`en%?^jqL2;X|nJqmW?zuuv&dbD>kw#6Bm%ymIJOh{Z z))MLua6o{XASnx z2mU}Xm#uS^>&G@@3|+vNx{>w&$m&N_nU0n|!nx^0D?nL0AV}vQX>uWAdyleLWlq@G zoZ(+Pz|&@f=k{&L=@(8VLe1EYe6_yD0y_NG5q2d=2yJu--H z;l=}Ixcadu^N|oUQb|;SYxNB@aGV;Gh;+$YywUriTzfo;Y#NR*@|)dJ3`2gF@^zhP zja)=3Cl;$R7uR~Cqmh9sK=hTtn#NkZ3lb8kvJ{IFflIG^(f7ALq-?ap>Qu8&5el#;|RLm*kF=Fmr`TlEnAIm zixn<{Z%4wkEADOBK;KEL+#7OTy%RH~T9tVI*$AoNgq?M(=SQ&LX=wqX8jHL{J?_V! z8WXZyADUVMDh|#jx|_Y``asu{m6`&sK4;I&sx0>|83jEcfN}wPD7Kf37+h~Hj)IeOAUzIs^y+o%wG@YQ#?^iWtgHjUZ-U1!x zGv6u-W-y&!l=*!tgx7APQ~Ubi0X6E^t2Pv~*B>sf3Cg=YC|DHh)3vC)S_jJC_!DI7 z!7ob@rauemh=Cw1uIjVOt+A7<3*FA;(nz)EBbJfXg;y|o(tl-CDod8tFS{{kUj59yci{6Cw~9MP;n3G}zb?fAyBe$bV8kZSxt=mkr98z^`|3gC*ARQFZE14y*xjbAZrVabxN6{#qVlA(TjN@IM5e#ORz7FD5LM2ZctKndIv%>orG>fE)I$8v$RWaS?W-Y_ zmDavU$k+Vm9ai&PQpvuxg*7_l$$0^wY60uvVEsf{*QePB3M^Iu!#}Yh{!TA@R2PCu zEEt4}!;$}NN%D*bI0D^?7gDsL{@~JUApDt z+%}?+ms3D!WWH)UHW*;IFJ_Lpw3Qlf7>S|PZJI3*=V=ft4?bG1aZLa|I|Y7BxjzWN z`6+Ne)W`ih0LvfsNdBw^{9piX=fUnAz9;p}4OKKs<-11{{cD4Kr!qA8;;$jH?%V+U zZ&Z6yWJDG_GRlti>1T+>-a+~=6q^(&wDi4v`qNqk>lmcxD2`$+{zJqz3BX(%5`ga$ zc>OHThznBSPXt~XfQwS#%l{2{b^zvWwg5?yNPac|bH4{*BCovaK1gos3~b_rgLl=J z2b$T{`H0{^7Qaj%uS8xI0q7nG&_Q!$EI6-3N2{O8e1+~M?4GUtazH4^x{cmd*1O)* zU)y0IdwQIv5V7nB7y$g1j-zbYSJJsS1|)6ek5B5LB-TjToS^h$eR@qQeT$8FO3Lv` zvr|dmrjlCvq?c1k^HNDaF{n~uhd+`PK9frN*HlZ&NG08_q^d|+Q$14FZ%8p$u?~p# zlji=w`k<)nsZ~Wb^sqr=F+6Ok%>=NntGni1!fr2Ob*&Eq_IyLX8(XYT(A8FqNfWrd zB3N&xuIAK*o`7pMYXk-5)s6b~zG=|-)jaF8A(Nzf&McoyZ%+YZan*oe6d1s&kBr&^ zQJ1{edJK51JE?C3EsQtyTPZXwoI-JL8(_)y-$3{$k{bVMo0N$Eb6z_=M^EgWyALB0 zpI4uwS$dA+*OQ}6IcC)7SdB=k*$C8Tw|u6r64QpuKhI58h1b<*ew)lGk}ecU2MOJ2 z^*Qbh&~+8ML$(Tc5I_2Y;f;p$U^?i9=|c@qybsajFC91p%nkc)pmr=Uu)p;-J@*+3 zUr^N#JI{DF07IWSz8m}-7Bxek+&=;8p`iBt6{38)y+1)IoN}Nddh-_o)-v$hiGye) zNn1p!x5y3Fk7U!mUvG{=H&pmrx;$NhssHQUlKOiGHK4z}FCR3X6~M?G5{jw@+i+79 zQ>1Rb1%*wm3ERfXA;H2L0a5i`zAY2nAc1D*<`7l|20=_b z0-&CLWX9dUC9OklxXU_Ze|#3-A;)RdHO0QjCpAhXbxtJ>@JYY$$Cql7N;=3Vo%2gF zDbDET5hkWsT_>iJK2cItN!;%r;^s&%soIBJLCXld+N zh05}aVz=i`q8o~$1%BBu)V7g^MvaDIN{%0!85fl+wRWg6yvR+IpeL8v2Qe-NYn8=S z!CIwOW)CYLHz*@Cbw1+e{iEhkONU7RS&&HfXZ&$8RP~iOMo%$m%%cZBxwWA<$p2W} zC|Q1DT6q#)A%UhJO4C7p5s65mWGqb*>*bI05j=Ouh`r5(?+9uezDsT1UmcpNPwQbx zdZ{m8^)+PsKt|+}XfEdje(JV%;BpAU;rzXloJ4$3w?wac`2uY` z!P2n2zlnuNh+N(VYar1c5hL|tsqp!~lmPuP;O7f{yktU_Z}gLU5b4N0KZ;ZM>zFeq`4K;n%=Mk8Lqlz8V#DJ3)E;SW<*onI z%9F5BGx}IKcLSnZwP$WJ=9b(#9@lzaeg6d^Xm*OH_2MCL_Q48On_6FuJOEnHkAV&A zo22?0_TL>CcS2IW?{df<@Z>8t6eO()Hh!l&`fbwenv76Idovl41E^P)V|b#pL4WM+ zn>CAOftqglKoN-l7N=%#a0jXa6mb&0EJghLt>6I#Y?{namrXc~nQndMzP}#WsrK)r z;(=7GiEm-=i@iKdASs;#+P&M8F8JNEfg<}Ft=hp%H0jgdl9JKIB*WwHmBL@k#6Kku zjmfgBK1X)m(oiI%&wuVn()V&&c@n-O0b=(2Imx&?6mR&;ZtMmd6rzz=DOG=8Wiq~f z3Rms>LpaZllVv2ZoY_XvsOWCheY0R6@gsjrY<1rb_G$5MH-2{}f>pcGdOzJgzixO| z@XOAxqy@_?z7X#V`uZN2HmJIPfW3bkp$)F()MY}!omA-o|B)8|ArBHo$0$!gj*ooI zhhNPa-2b`jcfEdK-~OP{Ze3di0l54_n_3QLngUCw|0EvNxWnIsp-lVf-Gzl!kulrF zkQzm5e_Crn>=xCT=L6LLa7FAImUV6m3@VI9ib;^97BdqAM>e;Cv;p^vOVwT64*>3j zP7IxdM<&4BH>ix|VLs(R|M05!wOi6wz&}s$xgJuk=)!`k^9f6bUrzYUWxtboW$9UR z&L!+5&9tOicaD+>dX(U00iFz4wf**%z-4x z-6G z)k1M#4C!{CoibAGzvNtBsVZ0<7KpOD|K@p_;R(5k`IJyT14^+tPFHcmOsL{J>$AKC z5Lz$mCjVsD9Qdo(zzh2~>YGJ=)ZWb%jOGmOrd_a;HpX+Vqdc{D=mGK&KHm0xLp9n5Nu%U7BY?0eq77#NN8L-vj zweGC{$K9KUM_DX=|A`O`3Jxw&M3$&wQxH&c1YwY9&>%rkJZ>PMAc~^6%!msJm_!}o zDDKPAbM&|#SKLq#S%rwpQ4lu}f+*0#2vJl(1@eBr)%Q#$Jo-H6`Caez{_*3w!aaB2 z-PP6ARn^ti)!i?8tWV{cNYFp-yJo&Uy@M~yX=l)vpMGjy#rEzo0PB#Vd0NT}J`VZP zI%@}(iJQmw?xi#g+7ql#v&_O>h?IT$?hHs*ROg<{frUSabK4zM)+Vvob z*JqYlrz_KFQsn#n`wJfL`+1tisqf?C{FOh~H#q5;(4um7x?_pd@(XNBp`#dU(JQ|1 z&%c;0la&*j^{c!nx2W>`=Abc&eo~fyDvMl@MOFR029D><`MI%9;fgXbDU2>BUp#LM zMuoD!rtIvg_`+WK@D(52qds-G^O;WdFhdoUOt4t+YFUi+t4jMQLp<-P0N7|>>{cYv z_P3~l{d`$%gcgIjyXiU1tz$DS8t7s7l`b}+9w=dfC2H^b1Xf@ml!_ffF)l3qLMC^< z=C+)Mb-8+@i&e(`Hq)&k#nw4huCfLuSORn3JD+J8Cs+0JP&eyjChlJF?R62Ak_gD0 zBt7z(Z}HF|y~3{7iWlA*#)Ju2a*wsE;W730_ggf91 zD!t=b6DJN^=qHc} z?AK7*J?_)q0w70O7XOfZ%`1~`%eav2^+W9Bk@9`9DkxB}!sB+iFB2+n>NQq}ApI9Q z4@4{0dfhl|z0ck!mHmCGQmGTp2SQg{7uUE+{A8jXFC2ay`L)XCny3W5|L*ZfdAw;y z0L{IJMj>>ujXu6@%mvad8(g*rq@RB=K>GFdCUsBKBkPq5*kB$K+lj&=K+t`UqVCkK z6&PmjQ;B%txS-!Vrs_OQ?PA+^fXlu<-B{*=An*CU=o!K5W|-U1^}(`*J-_xfd`^16 zGDDv8Ec3GXL3`4S8&eJhob3cc!fyrA0&56A+HmR6=CmO z0HFphr}@Q9ft!aaUZ;h8EL`dHF5_cBgR}qTX)xix(BKpxL4)S${VJ*UQ-by%7qnlJ zS=WAFYpVSRSo?iiM*Hh=fnjK@@RetU7bbfoFIPESlxzKKYY!$eiL^_Cw7q;lakh2pDo@4P!)Q(Yj?(?EL2aVi)BO zj7?0Rw$>qImQMAXzw*^osv56>o5A7IKEu%g8LXt6q}x994b~0!_XJvZ-7{YQ5OWQ( zx>EXZn80_3c&N}LANd3VQ`uH*R(B|A+AdTvk2^UQC*L4_On^iqJ_UVQ31lI$1p(b1 zi9#Wf|401%*8rbx;N$!B9!XNVPoIL{sW=ko!zd!??jo%|KH+s3bFzQf`600@pX$}y zWjBacRc^ST0Fz~x>wU^VrErpHkm0C=kdN9)6_&*LpXoA3Sea^furKpk#Dn!|p=mZ)mWvs0KjP zO4n1}VU)E#wnn_pM5*jXu0rUl;C{00|8GO?8ftRKS_>`tZ_Vmg@j?JA!tTaknV!aeVeF3Y{ld8pXmxL>votZ^X8%AUJeoPj5&Q5Ob}p`&!r0 z3RJoI_J!@FHLlVAnsG#WGlIcxms|w9;eu$U0qw?rnkbWeI?1Im&V9C>A0w5HA|%u1 z{;^HT2Dtb%4CPWtTcC5@DC+`1;2!A~X^Wp#4M8PWRASq@iU2O@lrc7Dav2k1}Xg?yS}pUTLT< zcDZ$%)ZzeEt1EbVgWyI>sd3j>m9^2aoV#q6!iB+y^OThf(5)Xk%N<}g`bL+n%6w~o zR{zH~y3J3^J6MlL+F^CsG;MPokL*HL-2(EaZ1Ri%o_Y=l;zM-22iJj2V!mG+DXF|n zM&pM9#rQ8UHv)zuZ8SC1nY78gl93!N0*8)21Un^fjT}PV=X*T!DpaC>M#Z^9GOrK8 z|6~4@*bl))h9=_6e3FiPIX_7H*pi|LyoG#b zB^!5}m&~yi7sXD>O*P%019?uz`? zd-=JO4q|GDkES@*c6_oi^Oo<)Foz5_pY=AzqHCZ-cF-!?aTUoLMm9gGh7th7jdAS% zLgb0J*M!VPsB$1PF?qn>_JfS9_l-Ceg-Y1Hnu$BThbNEa?X(rDsQBqtZ@5#C^RcIha_ev z@e%W|jQ550&re{Dbx~35Bb|}p!<#tdBG)zkG$pndP_^O~sj}K#?d#{hNmR8dZuYIy zbvv(C7q{AvN0JR)+L*)n*JGi5UrJcR?C9ntip`z~r6EAwkR9|y9$5ub+;g!l?bAV< z-7XlEwCGp9N6$yN-Bj3uq{RdqMceuGHPXY&lot@3(E%#%wQrP-Lm$}6S^mrqbQqhPkmI={` z^g6_7mr8s^iugTgL~`LCSnQIplIZXlGA`EY<=^jk5P|8oHJQiRbGb|bh{xiC#*dzh zCtl0D4I#r!1R05Zg9i)xrJ2y<0dx*LwJJ4ocUG=qHyXn~Bt7VTh#{2v4Hg!wQYai#h0pa87M za*wR4cwR4blB<2pMiU?Ut_W1uR1FFU`1?4rJVF*Wwh7fI6XQUFrf1||B`FT_f1vzh zm0$Eck-Vac^%C)5^HRu6RgR!YBah5WXg7CtM*3$0b*KjwiQ8CjbaL?!1EVOWDz1Vs z?vNwoC*yENQAsJKF%cv>o~N(ec>WPtRq?!H)sze1`pq~nqZtiV_fs&Z+Wby%d30u* z6B6{G0bhv4uk)Eh<)>*vXAQPGJNP<3K})!Ml_w~)O@&VMg(6R6wC-h23Jh8osdPmh z%>#II@@}FP5SFhDGfobai{XeGZXdIGb|{TQ!pe!0OdQjSFviG1CFTHDj) zy~>^Tu|zt$(x(<#CB)lW-U-A>uR(S9$e5-9FLV4=xYm5cf`tcG|87U+vYF{Y{ zh~Dc(HfC5@srW|4n=+p$(E&frH7r&vBe33P6`v}gfe3Fkn;GwikAQ=OXP$kPb7_y! z{?jY^1ow6zZ8)k}*&hwk^5ur?tG+z)D3QQa9{bIS1qaw2G!VA|_RMKiqY+WdbCl># zXC6l@{9ILSD)sei9@ZD7OF0aW#W%KrSH==V*!{$(^+^*>{5z5&4FRR8lxmrOAD z`L)E83|sV6cX=`Jlc-l+3%I!FBKmqHc!X}}npe|H&D@Xoini76*ZW1XqS?UBx@oA` zBK*pGEX<_rS9qeGsS>mMdQqSBi+Whr-jR$O)ZIF8oV)-q+|}LZm*%O43lm)94v`uTjeEUdHmm`pl}tW zdyMT3nP>Ode|@2Smd~>}hvU=tdFl(y6T{x^4`Y+KUopc@*}L_eN3`w|_i3)_g*Bp3 zmH)k58heDqtlgJ1iMQPT*}ck9JVM~U zcOfeR*d*D!==JPW#mP1qFG9J&Jt7?E_1%qG1OmF6y!aJt8 z=M3~J_(+I&E4DWsrsb~ZI95LoAIC39kE6cg4cH3CnTrf+z{1is9j`Ao_QLVeleySEVc;4sM;D&PYs?#oUt!s7sGO()M{`%RoN=scr zs(@x`xN6ChmiH~+6zNx_d0Un>l->MrZA%(f?K-|s;F_%;y4Lm+n&Xdp&&*NSy2jmV zzx#&nTa?^OV>vymg*6D{zUC9W4d=AffhGshq3oYhp#@e*{ZW+vwdI}cL5B1-V!z3n z+=D?lUN|2mj(xNI0?))z4zdB}P`*6lzs%x`LD@^A5K#! zI@6%#){liJcM0>?t_v~olZkQcnHAGum&dpcZI2@Hm$j2(P#GcTjICoufXvWUOQCM{4D?=4) z=)4f8^=rQB(=997{G? z0&I31=~LQTN|k%(6Md1vA)y(^>7L4eG3Fky5AA0sQswa2@>b4gNMaIe_1H^1AHQB~%&CiOHatVITVS z;m`WVbj4@Il4z6Cp6jA}cAJ-&Cd)_$;5-@yp37&cPq_a{8V`;uH)Gp6#Wkf$uC?j8 zE_B~~OclP~q5X`qmf%y)k-F`DMxKVjzDB&~3U|z}>{O84-;akyWs5m{@E1;Nvtk@G zw$t*WIM1NUJrG2dROhR+Z1S;P9hmZQdfc)LE<1nY+z-6LodpYs$HlIu)1 zth8oPNP4%K7Q|t5X5N}^Uv|%-QG^L^40fEu;CJ-=sK22Ofddkz5 zX;RdQM25V=WEy(E1#eug%y<&RX?VQz%_H<^d%@exc)E!YC6!jY>&sKeQpDT#;~UCB z2Kw`Gv>KvD-EW{s-shYb%)2M+0nYY`V zC>3;9M-Sw?M=6I}qijVMVwR|r^Lx3|NZi%cHXO%q$-zwY*)-AuLV&_P&x>lY-Ek?S0E@uREfye`DK= zDvQf|7a!`T4ur1J{LI@nnQzQd{qE+$jk4@}q)qvf$T3s*N>>o>F z?&6!rXA-i~GyuZ+#>KXO~i$R#CcRl8Jp z8l(TG+e=~-e%Y>8mh@b3&47~lO^{~+FaIuy?V7ME*)!J7I=<5)g+_{N??;?<`nhdv z*PexXeul(+nqxJJl2yfvC`CC?=^A678CxLhc_r$|QO`d?yl@XfFtG$;JK37~?Q2@; z;I+Jia##)ADLu}=_UrZ+Q^2<$MhI;B_ls6nZLGyn?pI-*=O-A+YVc3XtbL!=qyG%lpoH3 zeExDVx(^4R;@d`b>ZONb5Djm7bg4-GUb5Du)W@=i+v-=u`a`S^xF7{<{$2BS9O#zdV_{412fx@M+ z<@G~x?oLl#~)H?t~f0~a|+`+IQ~)(#~FMD zyzYppw)bTQuTx5BB(c0OGq4Ege5&_)YA=j@frH(VS|V>__(Sfk8OgS9Do z#~#LXq1!QFZMrXooQl{9k7u+9Oe+gnDQ1l;wyrD4^N7f#GqZf41wT`O|KyZI&bCp`46 zkIjpBKAU2RHh?gHBIZF~CR?uNREwiLhzS)*kK>JZUt3bB;w&54lsr|*i!3=B8cnES z!z;7+KdbX47mY2c?7Zq_X@!a4R(LTv@#h|5uIjw+mZ%lWXs+()ZS@PUChsMc`-2@Q zFN@$481O?$#ga&}>_!&+*>5osc2eB^7kIFfpLu_b2R_IHpJT4=yjwkRLW;#m@m3EA zdR~w}1)pPY^fjns19fCap>L{=YgETl%}qP^5I9LiY^Ba#=zj*Zp8su5*@PpTtG_}O zrx>8pBbhwreEX7G+(TL(S!30B3GOWVxSN9mbv1^xxrrCRyHA(FGHJ{xNtEQ@|o+*-8Gr zXo@SBwSfkvZQ-HlM7IzD)hTl|?%;WYWOZo|8qm9{F$)<7^0kPVB;gp<0OV{+umMeQV*Uo@AKk>{IZN{FA^7tcs z&!a2caV2Z~#?^eK0BYshhT*uIZskRE^s{$z~(Pa$?oGjl6l0Z*wMe8B*aV zbJ8-8V%)@|*o50KHj9C<%d{|7wR~BcCS6W$Uw9Q==vwm{%qo65j1%Rz=SLp#pXcav zZMoT`Oi=n}`K1p3ak)OOUU2XxDKI;>3o$-tHQPqAf@sm zx_$?$Y3v`BnSR?r{)Oek@Fbf|Nr{{Q?q(kgT$DzegQ3cuXPt#27o4zF(*_z(z5s7= zMK6@3WJ9wl*Njsw5gGmj|S&T-tD6qId0JlX-I zBiG5hT-fF+>&4d8VC$V){irwwRgl<|QG}B6_;)A7`k;kKVtJr zW{TY#QJ^IB#Qb;k5-OX+CluKGcq$C&Y6huPy<`$We{q3Ks91q!Y9m@77(Eh zw)rqBN$n`TDcz%YtrxS)x`pEpu=a^iXM;(6*12$kzLaByehSyIG-7{emoLVQ7* zO~u3C+2oCR6$`jj_uM?|3RO0IB0r63Rm2?Zo^#v%1*`?j^$xOhbw>xka$N_0sd&Cp zXk&A|bLq{v6nz=TQOpqe--=ZIXC`8~?g$X`MiTsk>JAsz;im=3y}-|=fw=PAI}-v7 z)hGzG#RTit!W4Rs2H(57dxBrhT`c&O>n8C_h>q7YUU*On!3=&fG~3&{Y;_>j9ffaf zQKB=c+TK7rv_Ct!3S-rw1xxCNgoV>Aenrb`>D`&`U`84>fLFlp_ItH!_)dlHkXGuaMMR_oUU6Fh%pp~R9WT5OflBBAIm_{>;YPvrZW(vX z*vwfAhM%=GC;`kW-hAnYO&l3W7O*rnFt!Hz{>I9XX89N1$N(~k8pilMET8f9YrZB& z25=^MsJa!bJ4w`Yc^dK|sZtx6-TM89j~V0|mkVUFCw1!CCS!9vDH{PkDaf$l2BGjn znvNP?M2nDzPM7%*0uKr*mZTDNMT<{ZdP?|{Bh~h+a1DE^R*{S2-;5$d z(y4c)%leak@6yT@WKi%G#g8VV?=N>T?GMy;>9+ul7d|=w*@0m`(kss>+Q%0=(%{SY z8&1RL7)2k-f0R|heDr#&%H6?JeS3>NJr(5-JF86THEy%@j4dBrqn{5>EpAZTyH})n z?}<9aHm~U^)_kMBJJbqc`D@(I@RMd~mi{#K{*kBt_RRR5O6&Sx`a|)owt0T1+cqm` zKl(8gP^HEdF{tZ;1m;1J615_Kv=5ZRj2Nboa~@>l_Zj;3Gv73zuqN@Qk&Z6&WN(3c zURvqq>)@Q@$Z&WngYIbGA5v z#17q=1+j4p0|HvKI8Uuy;Mz)M3suhhYHmHiWr|YUutDH`g&j7@PG})>EuM4o95c;A z1qlAy_%&B2#8!Qr6e1?puzx1nfL`R0p8oB2C6@}#pxZHO=fBS zafoRB^;-NpKVcIycR92QmmGb;u)ET3;QJKLmEbgy@{cV{HcuN&zrz zl2%$9%-X4OwNc;m+jx4%AjU$0$5ivh;a(iAo3+eN1GJ1&Lb44Y+z)zi(9N>wb#9@r zBc68#7O|UT^;FZAyI<$EnZO|+odky+3H?dify@Yg#fjESN*%5AdU`dT7V8!j`wwT#0aeq|9}?w zpSQTno{~r4Zad?Zy3kB6M`U9%bC>3=gJc%}(RtnA=2rf1Dv3Up=m6vld&bW{718t9 zs}PYbgFM_Vl0VwgOH_@$ZWJTScx91l2<|8BB5CAs@r#rUnS$izBzrMRO$qDvs|WGh z@xn(=rk*>5e7vy3iN60{h8?I?{dYJFqvkb%N3H)ZF7XLNR3zPhrw6J1d@2PW_y_so zd9z>f*=J*6t0iMJequX z!Aav0jx^1=e}?y^5Uv+~3|7U-Dr=biPWV-91k4%lvqU>4p4R9S4}X9XCJXS(t$hrW zIcNAxq4Jx_BRn6%PBS^Ha;x`Mbj>JSu3GVDKmIt|*CKCjb2(5s|Cf|tESvJV_TOmw z-X08W$RsWayVlz8TQ{HE)fB$RNx$y&JJoeHZYHao0`&^dWE%<;WEA+y=rl0)4F&Qk zAZzV5GRm0A7eC)k$$a8Qh>FnB|UQb3v&OuJKTq5Yk^ zcm9|c>HMQ!RwbIYjpWr->u+A~EN4J+wS0#1G76t$e?5KOlyQp_w!>$j_mbNBvKiH& z?>}=$3wvESL0()GFZ`Tznz(7YDv;TG4HeK>j5&D1A1;}Hhdx%j+b;J_oy=2)=XLhf zsGMoY`}hLiUQJ)?hT?n%QMV99=Ix|CdaEhb?iEs~xS>@{MZv9sziFIgEHNEZ?J9k) z3(#lOozAt~=c)m_n&w%HPZZx8g<9;d7*%cIBXxj>SZ_ns=_fB;|I zQ}}9M!z7>P21^d1@DW125zZ@5wh_D4*juHb_nBjP#tU`fmPnSDS^7OItzPZ0Tj^ak zOmY7qrRCl|ojmvS6^L!_=Bo^1OQT+uy9V@QixdviKh%%gr3%+S@2j%?^dLGIR%lE5 zQIr?XCs00lFbVGj8K%Qa;WX_McMr zf+mYHrV?uyo>DLPwkM-MGU96n4V2FKz>Z+RW%@-wJo$UM7v8ivU$VJdHp9>U==v(i ztEtcy(?Gu=756_Vtfi<{z9>GGu9u0nY7eiQ;^8;wDnA;`B!>xQ-jF^@LnE&@H_~+C z8$f?#FvcAkw5&ffyCuh4C(6$<%lJ-(+{^r=YXK|g{d^65IMw>%BCOF6DyVi#`C{P^En$G)NRY5bCW7D&xLewnr8#D6u)n&lV9tK2c&{d(C|?36;LZF8re5J z@7rNM(Z?=9LJsn1!V~Mr?Oym-Dg!5~AbP5CJNl35aoM_ERH=9~D(!r%|MoTCM3^3= zJr!1(UDUPBEwm4cb76ki-R78=28!@m`&8v7?`@N_s3I((@%&ePK&{&53c$m=^&)%Q zM0>qkx>Yo(AwC8kjkl_~Q?(K7x>{S(&(SR5WkMM>F2>u=_7Px|6~+tqp@FcF zQZDi-_uVcSwQdGI4K)uW(?S@F-o4QP)VSV0Fgv3I%%*6KkZ=;zSzGW_Kbfm)GM`avb#y%RdB4X zJFVb)*s*LBs5p!Dn#4znOyMvv5haE74l${X$WKE8;k1zyKd==U^*H~M6!k%xBRd2i z=2}*QVK5GvN2<;q?%`3?0>?0uta9gHpcjqD1JR=bUr8B6M0i~pDpwqAioKTD(7w%$ zA%}=^F)A3o=^rY_z9{@q_WG&%#27c6gf0QV+1=>|9v7r($LF*y5NgTeC+L?Vof03yle7U@<4B zG_I@-k#-r5f=^6PDfd&w*0^KXzLPvdIwMkw@XdKbS*4IqVSBb2Ion+I3ATlxys_ts zE@&~)vbh_5sgWR5ex&wSa_Y6M(I#%D7eP%fB3wPI-P|M^)~H+4!&A4j3RV`L^t@J# zHH&b2Z`6)Rf+7m1KtaQFfjddrVDOtpsb@#&qP(#MgAxZ)Tk&mLoWRoyGU~6Dup_U{ zZ9u7VANtqlo>X&)uhlEh=x=^7V&u^mxT^;Rn7Y(g1CU(}T6|z`TX(;b}Ju z2ofx3@-gI1Z_-P#lqx3KFp;X+_O(AfpDOd?o8CsS*CN{3xG0mh0pLXU^kWq0CTqoqxw!B zsd`iXtQGDcDG|uog><#Ey?w87ZS)>5JX?}&{dxz?32TSS2TK&w{d&J~VfdaYBDt2l z+EEugQaqKuP=%jgNV)nFUG7y-cN(N_>MqE1#DotmeDGr0+D>hq{RAq^y3`^zT_>3_ z-WJH_r;48IldulD_+ReU&elJh{|SH_0iZsNRU0;LfKZ8Xf-rgor^hnlWYo4ESXqQ& zu}r3cwgVn`O*}4fooJ|MztX>WOsAq$VbLd^H5Qdxzl5{tOk=PRJ1UE-bBc1=!SE0b zlbrFjMCVl1sJ6EcIML8n5&U<+PWW(rG77tN=E$eOA4D60dogeW zo@MFWs_W2gi6@B8aq{Z5SD`1!^+*K-x%-)bAZy*(>qQU@>YVoSi~mV4VuGH7phBeH{OZ%VQj1p1}MeKuT}*SL>(Qa*?J)u29B*n(~C zx-iuDcpEPRbZ_$7YUwea(jjH9EbQ=fn$nxTOKHcEMV3b>bs$@vRy1l!2v1kt#!V*& zzpiv)k58rgLW95xmqeuswZnrv9o)hC1@8OulwH`EXUdMfuHMQ~ai;yR^`L>V#r@@i z(L$XLVq5)~K(RfaP(gWIBz#f47a(B%GIvx zFr)(`PWAj_135O=TSU+iqY+{&;=YD)7$QaDaFAT=O8_rh^ z$UjdZzTzVzm@Mz7wqoSjl$+!-V~a7dKA_I1l)t1&{{-XNJcNgv{QNfJsbGnjI-37~de zHw5=TSlFub2aoLvuwkBIw;w68R=G(q810gO_9vr%wfh=YFqLvF)KfPesUm6r?4dzw zo=>IV#pOO<15&uKn(kod$$Q>mEPr&S|Ffi+KzD3@i{rtrQ!G3afc*Zk9YA^?F>NP%z*F|N#j;z9l_)X_H>x`#TBkxCWrD|*AE-s)kJITa}7|1-H??G};A>w5{=n|fpQX01*~xj=Iy3;;7D zTMeN&b+S#uj~C+K?f>+cNriA7&jKqi)lhS;ahgDm0wkPPYUoCn3`Eq#U{|9lQ1D=(N#i=JgS-J#f!7!u91LgnmUB;J%!jo zT4*DC;XqB~@G@vRn({JyY~nH7E{Zk+B6DojYra;4l$pRjc**ZZ%_bRw%Nvm&Dt}U@ zb7f)aKQy*6oNjdct~M(IYNZ!muRxR&iqQ(7YhiKSO`bcpz`A~Pex$QcSz{?Sz022{ zVAgqlc*qx>%7`zPQejQe?3fMi6|#$KjuaQPBTNu&%H&O=5<(E%T_ziK$b17$$rU|H z`3W}3X$bCqV)fG`QAHE04Hk8^qD0X-+uiE#739oNSS=oz=Nm|?&-%NyTD)|~DiLdw zjUzipHdxiqAIj2+O7^=Jp|0@D_BS75vSuR|;ck zYw`~4xigZhfpuR4Q0p4=OxZt~v0{FGE>r&!%U)b?06G}U7VCz|h1MEkU%2)63%;3~ z0~ke7Q}ZXPzsy^N1Lu}UO~Wv@-h+~cU11lwg--RDu4CqazEMhVpYozHilrP8;C|s> z)v9odwy^HC)Q3Ca0GvRqOh=oeQ<|YuUP9%FB+q)GAFdR~vF;S^ zZ5%46-}VPQHJBRsIhGi1BsGZYe>+nj*-y<=+t=`~e3JsP1GVM-hHs=n45A=x(GH>>F{rkJw9)-4oyN(uC{U6$q1#|uj`=SIq}LDPndZFCL)^Kj_C>s}$x@XIu7kEr4kSh)+gyq8bk2A`T~e%O#a1&lbFyXD&*hKJF` zkY<%Jip5bDo_Cn>r)zB3`JwgA_CD>Gb4*!l=;|RFRTy;Zyp3pE7;MCibqu!Fwf&oQ zE2U?WhBd}u&O6UQ}S6_J*m+Bim(s;1t*)JH?TflGKmN6#Zi=zQ| zW2B%!n^+eT(I=jfJKlB2%FFq_zQk=9D;5b+mCX%Vz6PlQM`^}B zKtKP_%&t(NTe_9^$>tdv?8Z)C==9HkG#2$VmA^1^!m0Q&)Fm?$(y6owWI ziuP9v{YCLintv;f{pe;If60)4NGOUy9H|cjMhDbf2dCb-*+FMxL{ig|kPu30R3x#i#qu?5(Fn z-W|;^DOAW%BH*1b-Odg%K>9^N3gR=)tX zf~RU+#xo^E=VVM9>t+k}<2$u~GbK-f_^eFcs5&k=$`&1TujnV&8Yj44OxYD4+eQdg zx%FQ6ZMjRYQZe`4gZ9`DFny!@LaB$RA%Pd%B?K2H+pD3G^}Y|dOptHB&eF)zd^9 zZ9Fweaedxo2|eEV_3;5+5uCN|`Ukws#0zinHXaPcwi$_JAK&cH?o@smtYT*T|5it} z#HOn|?=+BL6-;tOcU%Soq{VdujtzJ4zs(3>e8|m?mInHNz2<<7U%$Hd%|^hADx7|w zc8fE_FL2T20n-&GO$}%=?WUheO^8M_wp=AFk~!WgK?hNLV{3hl8>lQ23Ujr&mrf<< z!hS;m>KBw21AR}>jn(~WdBrBc*&rW*woU&55*lsr6~GHdH>~W9T(Ts&n8-+`X&G!U zEwkAT{Y;I+_AK0TZyNhIbttfnXTj7&^=^?`6OYpX*Y;F(OpR;BQ%szvC)|%AQ0sDo z#4J7Ig~xckEW*De81cg1=zc?Pg?q$9b;}0|Am=afOi4kH3@J#>PwLIzI@s~`MX{fY z%D!s|+;dvOwtE>w4aTz$^lp=Nba=r3n@<)7w1h!pmwSwE^0q=V z!8T|g-YICB?_FI7?O33xm&TQf$Q#_nJPj2|0A04t{Z%Q@XP}<1_W*d_ViuWE> zP!Q=<*2|O0a5FK85XBr`6(>SOW4D)#1K5L`)MdttNVgavB*VNz?OWxkB`0+dNJO^+2Z&tH5;Pz7{C*@Z=P7nTGOBD<3Ry4 zZY?TXFJ}DUV3=_tdeM(Dol(7}Un~U!ukc5+O^A=CcZ~lU2K!JYX_Hm3m{Qh{q}mmrc_Isak}2fOF?OlQs2PQ;Ev}FIL*?6rhe1bM#$f zFvW3id~bc+ta$H8K|?v%!XwalNk#Ok_C`O^o9e6IO{C;ZZUAz=;&baNZk?|9UYm?q zH=S!0*Sfp<8)e>Y6?EVVcf7T@@S}hLgY=3RTtY@6H9`gG-*b4Tm^L#)NZT9-E7GKv zfSj1-(szQM`xhifdVL9kHue}IWpf7A3RtCmt+L}SRFY`$!gEyYYF|w7mW1w`H-w0g zdj8-++NrT>s^?(ojmIP(@o@7P?TNSDgl=Q#OY%szs^dYblo~hvixR=(G}e-Kxjj@L zEU?Pn*SjrfRyc+}eT#lE^T-cbF_(AQJG*NTIA+e(@9^(dbg>0Wm$YpCOy1tUTohw5V4CkrOi_E5(c3KVb= z>iBxWWA>a~Fr6n`PCvf}Ui60nNV}GW%h4r@RVhp+HozEiX*)0DF{>{bx@{$pY@n?MUbrva84t%Tf2;L%IefI4&lL8V-XarS zQ}M@{n)^(jTBe-acFUxd$F0q*u51QiCL-_R2M@4GN472ZIogn;?h}hc#{mrhZ}53> zPWj!9vsjR^mHG05AFRRU1%0894oz@+e=DE=yXqGyYk0b`w~65xFYdK>GYmGnlbAwD zSwwTig4{NZa0>wLM^)dw~y=dp7`R%LdV9$)=OT*HbNSL!DG0rBr!KppnC6 zE#T-0yn?)fMq44N=L<)P)NicwH}t41!E0x+iIeMngzhiPpT`z8HA0$EtI>ZmA74)I zs{q6{ZQb=lYCpW@WjQwq6>_@u#eVo)ZO|4ssvw zlX-`e-+y=J;6Y`zbbU_qTaB*|*Ml2bNZECZ2;6FKQc6O_U&7KiNS(%;HnObY&-os( z6rraB?dIpvR6)kO$cW<^wwkx?5OJ-+W1*>ns~{@#jnF zbU^8Jvui|k6?9)Iok3DMXdV`XrEw-xMjFR!p4kPD@lMx_8t1zPx%q^YvhaS?jK+D5 z?qS&g8x-|DIh^HF18o!H4O0KDLcJ2c)gGNk@dz4&%hM~8pPLvZ+F1V1*VX0leo>$4 zW1s01GNEk_`r}N``AipCrkobLWsDzU)UKb&K zH)*YJ957KU_(+Q_p!qc1+3YhUwlnviedS>?q2v5nn_1;lU9L_-=}(6o z=~Y&nANiScg`${E+guyvC3XihUAEwIuth0`$~p3x1nmhL2j7hyD(33E1$CD^P*aM{ z?m6X@xj<%?{IWtb8ieM&S2q8XvS0VQx(T{8xA&1z&Xnm3Im6vRm=n-qD_jWEE;Oe> zFburTw>Ct(DYAva=SFrYgMCVlR1qzkn<(2Ak&Esb_ z0}=N^Fp)Tw&)zk(OBoH<$Y1N>c>s7e1J5t(pxgOj?pc+HU$=*=xly!SlM)LiYZC09Z(P%@=K&i8@4Cm)|aFJW;`PcY0*pKno_GmH1S{;%tA_H>DTSj;by zk8|h$CB>7xR6Gq>uXrYhADwE7Cr~jj@P>-%F~w9&fj!!0^O)5aWMt5wVzfEnu3Ql% zJlpcO%B#y^Mn;fntk1N8OmyMvlha@_Go9=+?ExK73UBU~Np-dLIl8KE}Gs{JqaTI>wQ%U-UB(m43md&n@rctPjzl3>K<_rg5Fh2jO%IE^>88+}Biao0; zFjn?BccJ^xqL*^+BkA1qc_%6VI6-tj=sXVAWeeNxC$_J0y-uKN$!R_lX5@f=>4w3D zXzfFegl)*htm%$unoVEp#_)6QQKkYm6WkVWdl)m(AYe-e42)!*rbSd*M8U^Z z@GWw9uZ!#4TWgwIBhUKJMbzdV5&$Mz_lgL&vvoE=>>GUTB|X0km0yRF!3p59CJKS# zg1&C+1pQj%HrrDU(3t$tw@p;*<&XI55M{6h7?I_%^aoqdGSrrzP2H`0-J$aB>p==VvBgbl!_0nAk_ft%)yA-{Scqak3$&*0io)#OD=Xv?VY7 z!(?)ADoT7s?dfK_xoxzMXX~#|q`VYoK7E z#qNtf0j3rb2aCiy6|mtMu9|?A30KYK!LE~J`)R1qw}jpD9%@0Au?6R?c2_V|5?^en z{B9crjI|~St~DG+V>$U{d*{<;H_Cph(FY`9ugB@@#s2I5T1an0 zS0*bVb~*KEHv)~)`H(Q3UGD&b2MNJrQV3Qh&f_!r6sZ&0+iKYAz5`={JJ{ZL?KS`& zsP+U_wI37z>;9Es4>O*j_bQ~{z+;SvtKGtG5pwb$Z58gyj4)K*m4cWKpWh&A7yfpp z9-|6IBr0iPw_100KhcpHra~;H@&Zl8DsJ^hSy^+tSeJ6WBiDQQV5ik8W8;zw} zuKwSl7zdR(z4_1em(U{bj~YIPzfRzg9eRgg(vRl~+mtBkes+)golNu0*{*gh;3d_L z15@pw^E28pcQYmJ@QkN`k?2S*1}L#ny#9w5YuDK$@+ZMwO{FHbN^OGIfk3O@uZbJ2 z&kE<8l~wINR8Dl&yMOUIk6`TJ%c}v5p2pEt?gZlK@RAK@DM{4)sQur@1~Eix;c0ECbB6^~X;FY^9Q?XdU54s8Crt`DBp-qGMU6-R7FLGz%fwM;{Ld zJwEE^Il?{O^y%^3g~|b9qHJsdt3kLT%Q6otNSsFaja^yd7J*!9^~1ddAtBq;Tn>?`Itv?paWbbKnWUuC#IAC=xX zNH3S`%Q#fr@st$l>hXSn-)>aU-05Wv@MqiHOADE#tk(e5&r;Ab;om1)mC=yfcbIU5 z;d3^SMop}c9KgWfzLcsZ(CG$S?s-H41*hDNb4=)!bEFLk!r>t*gY6hUqgte@4Bwvy z)JW*vDL|Fs+kC2fjMv0KO4reRnnq1xx*C!DP}A@_R9e?;DEXXhlJ~M?Rk!OjUVn!P z$$@=Ce6XwqKkQ0AmDJlO!O#2oU+z-I^5lc5{wXQzU62(jSFpZfLe)q8m!t$=g7G(l zAH4=(RC$9CyX{z2!~QTyhEyD9&PNUw5m1Ug+*PCYeB@LpT<=wdfSnp(^|VhSWrF|Z zmTR*iRDGeFHNic}Q!@65J!@Qd%ZF&!xH0@RKF2zU>AIg6BZ^V{0kU5~piTey*n(`B zQy0f+Ei*E{j=ZC%6-{kepu>kpL51F(BKiF}@3Sa0Ly6Iv1TOX6)_;t_6L6ei^OB9* zW+s1YKWh-rc%I#2m)fO#-X>J}ct2vhRb6QgLm4;v)sw_UO0So+&`&A`#llzJ1V_dS zuhwH^?VN@hlkU4*WXTy#T9sUfS?6eqTC7gXIo&dTT-ES4eaJYC#Lw?@y7}*w4R1@w z$DYX<{JSc1_T&qW#j;O0QErb3*TojSEeOo4h7Cmk;%#5KMzgi#0d)kNCO<_<&sChk zQrYy&i4^bsP*!xKrd5?W^LXb>q}{^h`E-bYYWw0RtRFX3A{Vso}hYqeW`l&Z{mk#9p5y2T@{JO5!&Rz~M0lPP%|ToxWgg;|k4 z-nmpp7CD#h^(CSzL2XZsOVu`#6nSqJxYK=ALlT!z*N}ie%EH+OZhsK#Vb#?}_UyJb z@iQ{4`6)PcBsuN>;C2ow)aDRxe`eSlu#9U88k*|l1+9%2o_Lh}4taBIaIT`?Z$OBU z+<*cr+$_@;)oxj5Q6T)BB9B#W25S%v}zKa~p`}PR5%&aTa zRE2UGNDaUj^Qo>1_QzOO*1xF&{w(UbD*7gX`U1#ZX0?RwuuZ$}@V!76vk?)7bP+xSF%3U=P;Hd?+Kw@0e7ucNb)0{Aw=y5KFj!SFvJfcKk; zZU+8a+%q0tK%$NAfdJ&oodW#7j=rhu+jh6m;pc8!EqFN5kWQ)}FEmJwDS4@}CHjGa zxW?k|V>!q2Dz5n$#t0_5qri%eoE$!mZ`sj9;Df8qA(u(oHCLv_u@`aINe$meNyKH) zrQT_A_0}BI_8OgK!^;3DJOpGJSNV|hq5HbW3C75R||};%L{TzbSuUN zov>j}ZAdoLZ?2W9K${#}68pAJ*P4FMG?K0~qpdn!Z2iwxO!vcWb7c?}5FPwB!F9Zq zjQn8ogzVbAY*%dGT{%?c4KCMSfGTsYJj-Lo`M|;~ibeJVvkswd2jMPsCs0EsLVe-C z`uaiVG5K)ztLb+&0u8CTk<*3T#%$HDEnukJ$oYZQ9e#a0-E;gA>R#PMA>*K1peX*; zQJuEU`#FY^sGCkXWhz*S9+sivIbUBRR^nQQTR$Gwr$2MzoT-1UNB=;8+(H=~pnIuV zkn6#CR+hTwGAvbiwgX)u`7+#Aqg`Jk9p=R&<@23r`6gA1q5J)m!#K%^*xKr9T+-`y zPtkVu$oUpnLieWI&lE=KT#*%S#TMvn{hd1BN~28pfosWFQHyPA_9TK3%PCWuqM^5V z^)M{a6Cp|KYfkj1;4oh>l9Tuv5$rav&Yvy#=m__&k-ln97s%(vfxl?c*xy4?m24nw zQ8Xs4E$$C;6L^^Aih|rZ(9F&SYOyni^N-2x`_j4g`WZ+}W_Ka~8b961nU!y$?W(+K zQ2CI=dzYwu^^n9|eq^#A`cL-<2}E~D8E{t&ezD1^o5Zh<@xR`3tnAE0n(P~aKCS;$C2@2Bp|9hR6Pi1Bcz9pG!4d03+LZV2}E_b)TN0qS>G z`y*N7*JZntY}iy>mpqzZle{}mr^Z|BpH%s|sq&5Lm4BqJd|`P6cJSCRhWCZ9nqH-( ziY2(f-juoy^_!m|F&X1IvT>4Soky!~_gS~Q0p`F~%x#tXM+ddI@aR3f)<09|Al&ir zC~~_)$tmGM;hxX>(|5H9IsS;>^=RAZT!xT%=WWbbGJBBn)z1AOy$f--uw?xi0))Yc zK1T2NISFp%b+hGBUHD->voPXRHr*h2 zgX)O4I(v6|Qr0iI`CTUinJz)HgzjrQ1hcF?`N@KT=+V%zH61mmre8C7BW+I%9^{@Z zNDF_*OgwMr<-fyonc5w1^>P-6IBR~g8-6c#t;3JinY>%cXZX2$P*im~UT3mfdE-~` zIiL=ohuUV)Z3i#^9X=;`eA@g8KCO1cXPcPV&hTmgKJdjVDLW!1FEKnlksT&weN^jM zydF7e|6pLW-Hv`7ELlR$6`BMUR%q--#5y5Fq#jPTN2vprnYE{sY%%Gv`Q7FbOLi}@ zWZn3)$rN^d`mk{Im*6kj2K=93pbYru7%%L3%h7(z#%IZU%}O@nM`-yvwb!X^a-R*xiqShCjMka@u(zk7Ns45A>J# zogU8++m7al+vd8_Be6x8eVl_nKCl1ChUKN%YwVn93QZD#Wo0{uMrF8>@Z1m*=9lf9 zG@gYhwBmq)sasBHziv5+^o!N7LTH)$sPw&a^TA09x;-@|Z|4)DWlPBRb8})GgU%e? zhJ+U)l+0mYcJ%G|eVUJB0QYBylPcad+Vs#hc$gBpCM-P?rjHoL>sx!-fADuIc@ECV zcYDU~|D^nXm*>F%)-!(q^HtJP<59+Vq5f-iAzWsQltKSBrM2{510JdV+k8>|{u_hi z37K+NVT}K2|IMXPz5d(C0Fv2%l>`2p{<}$~>-z6vYWko0@3h39^xp}F-7T6S!ejQ@wp z)oo?j_TdrYPdMMkBD%k%!hKcY$8{BIOiRb}u}RK-g2S0U(MqJ2TA6FUgpz$FyROF3 z(_$ZJV*3}>u_Rqb*P^Xe*^vXbF3gS|NJY=Cr=q5Q{=n-!ym~Z;Q>^IC?Bok+B+O&> zr~0|pg*{4jG-wG%YUS%Z?UJhIXuHzN&O1)#N}O(^r_CJ>6Npzd{?OqErYm0?l)NET zlFMzm>gsFF_iEiJWnUyTcex&*89&iNPxHC*XwvxOxPggl-zvD0irS>Cqdk(xn>|qW z`=o0N=VVPr2NR3E&SbcI@|N^?F-Iljh8SnxB8|&1yX?N9*q5V=$|h9w&I-lOM8R1_ zZR#qTqKd*Q9V&0ncRM^f4ed~a<_`zA+EqmppID)T>k>aP-OV6#u&SD}Pu+JzQ~c}t zxAG%3=b$bO&FO)$f4E!sU8>KX$H0=46^)s8p^eA*NyE;ZP~p!G=5ytB@DnZnEBr}m z_yhg`{y~2Zf3Q1lh(uW-@TJW2u!VN8U!2k3+d^Lp9M`C(^?}4m()1I>VD98Gb=++8 z6I<>)kfY=@jHKJRz}<7W09Cu^5B3aqqFH$(B3Hx~8sBlY3|%fxi|Nbn?L*}X`7QhX zut=-qztjCM-pVC|7l2{>Qp#2uXmBD=dKmo-#?Z(ol#i}T-jOcvdimz6)I3UA-6z|C z2+vX9_7R+t&%2+>?KH~aAM;tGYZ8a>O@+%+g}W&8!sL-&KK1DmK6(7+1jWx%if?C@ zvRgYJ7lhx3Mn0sm(XSF4JcD`9Od8+1@mc51aCp4C;XDyi6Sx|;y1DN=w8BDG2QYg2 zLSv#j+OAA3o$<2$SM`QGlAa|^*PF32sO z+M{1Ni~NIFro+jH?$EBI3#_Z(KjNaV`X8&v; zngW6w?P{35Tvupj+r20HVgFxQIe4hL6-}-k9yzjYR$ua&>xU+tTNGQBd@C4_<|rR6 zzw#TYhDiIOvYlMr-jXX@uZFOo;)RL>V8F+wWzisbBN->l*#inS?V(^IvIC$QLSqnx94ZB5SV|NAX|sTIJ6^F3Kqrb$Rbs-a?=EZMi;+?5yWR8T38-Q0VYsq9Z; zA2GuQi%7mWAYS;Z%<xy~m&KR@pnFOsedkJ@*Up4&ZqPe`1yq zLE4{{`M;g6@E^gvg1_khoN`G|xvTPods*Wull2`zR2#>Yh!C&dF#K~mHDqkl0 z%+H>>@8sV^pWj5E)1lA&Y(6DS$JSvpdRn(yvOtuo>|OdP`c!q?6`GMQGJ{KJGU;=@ zr_bqoK%A1;(&YUh7irq@%K)oRU?t~9ik>NZrofm%$J5N%4vD;_BGc$8-H z5x?Ef>?HNyy#35qGg`mjCAZu;iZts_JQLw^xn@754-%{*@`it8#)j6a=oD5o6nU!+ zzgjQZ=#FQI7T2BKOkH2?PScaY5SMLq261=C^X~1+X6aoK8IuFm$9)U#LGbb%c<&nD z7sV@C@USDMa@3vI&`qK5Jrj21lO(%Y@_dz_d}H=;kyB;RPHoWpxX2H^dqH^j_s(PuWT%@(Ay{NW zkSF*k->g{jGSA+~4q1 zrU0^G{H3;jLNJiJ0@&qKc!G={u6uKV|dYF5BL9JbNXZt|KXZn_sF&5;3J3dB3rlT0q{= zoXah_gS&Jeu~hi6hJQfY56?gvbtDqZb~GE{lYIo2`qksU?>Z?3jCC-&Pic|Llg!Qh zraU5By0N1%?YKV!F1ht{x`j)_b={Z+iTR#bLkX|$GEbfuJ*|NHyZyae= zK86hVqK-*8iZy{UMh(UT)J1W}^)gqlCc);v*me}JbyrcRxb6U5Rc|{!sut5Toc++R z+Y;C5#Rk$4)XP=p(KC@C^05KL=1W@f+;?O{xO1DEim~i>;^YHRm&I^=PWW^d@=#76 z6Y{Ch=0JuvzndD=UN4re(}s-^59d(PqLP5ZBuejBEihD;aA{rt*nGEiY{M*7QsbT= zJN*{n6T%;0Vw=l;bR{}n8y7}Tp_i07%BjFCsDaO#rPy(B*u7jPFh&Q`DW& zi)FP=c~||NW`^?@;@XQ838%BgQ9`2Dec#y7JItf^!Ksa)#aG?9cYAA!X0sNiXg2vo zjB#CVpcW?-wW5>R=kxXm4>)a zeCmE4=wSqpyLWt2u1~7{k)-E*(vE@Fm&zG|2mzA`FBv-)@KeC2fq#lFOY zU*7vr2dXWSU#7+j@1Lu7pL}Gl`*}r^cMgxtDqC1x_WSwc51f7h*gXoAl95dwF3Db6 z`_1%Ilcm##CrhReOcqZsO7@+8WwQ75LCGG|FHd%#J~G*L`ZdW;(?=&eOdpjjm_9a{ zKmDR)%jp*4rgkBqOc+;mM(C4` zincD!j&d1Q-pW$Qmhzpstfo-LyPfJC8#9(dS7!W0_&#*q zy4wCtPKeW7tuj3EG?PG+mi_USs-ZboK$o~1_*AkUn9^1AgONYKps&~_PuDZQ;pGA+nsmCS^(Jd37CCv+kMW$*t? z<4hpZC;PHDpA?i0F6is(lN-}`vJw;JYdV-@5uqC(OM_{3U7%~7Zc5LWF}@%^d*G3d z@ZP6-iuVDRS4$x4r8!`T(03LE&j%(}4?7W~-N-PBszEk^jfDx|tADr&Ex8cNT&L0> z_DvOtd`w#7_QF-?MSV(dd1^f&4+9bB=Jg7w^;duZzl}8wgC|gXeUuEf&Z^yEpQ(X* z(=Bhq=hE03@1gNaqc%OwY~PW@jVNAS?OS^?7*0jyrrS3Wz!~lP2Ni%?lC_q4&~`Zmfk^ZhTus%VuVSl_>w7OV+Mmte^jT<+5)Sm$S^&$jd^CjbS4 z6(<4NmFcZrt`e-(9AM>Hq{f}MG^sxexT z0hhIh(5{JR=+cu01DpwyZ5il^MvWQ zySlo%s=B&*Z^gq6|tw~iwejeuRD{3_J_+zHB!Lz_+&HwBDQM;?_ zBYU;2!7VP<*?Oij{^dtjIQ@2eR3zS)2=RUzyw|u)a~KrT!Y-DS?c;U>Oh7&h+t4eA zHCHrIyFR9sx~+<7=gr7-Q;D>I`{gk_vb>rd(TYeBr+XJOob4G>GEtD8v+mpWjGst|yll9yMOfqVlHRrkL()S;VybMH})DlitWmT4oG_;-&66MN6gD zM%g>ecYRhqjg~>#F-$W18!z5(bhNJM&O!anv(pl^A$|<2_iT`VNS+i5vSO zZLTetPNX;v+Yx{il`9>7F~*jk7u3)bWqXJa|F_pN@E+YiFDw#2o?=AwR?a>Mh??J<39-h3mpn~*BJjMS~ z_wmEEgD4W8!#5_Q8W&6zzuas%@lPsVO}KE-8|J#YQ)yU8ORr=0x2QT-W>JxNg@7@L zUHP@ZU<+Uw8Ep;Hi=6fDnL1fU-VSwpo@WpB`j5mPkG2YSPBF9rLM%u?#~^~ExYnd;}-Siw^ZDu8p9`mlyf z6UvMz-nPz>#qB%8CVZzsGXq$b@VA`y=h`@4XPhVIvER~6EC%WcuTt?T7zuU1TwK*t z7Jr`G(StOlLYTgflK!p{ONqDJ$kNLvQ<3IWM4UfHnWR86!D@w8kulhzjjBkwRm9W3 z>ALhE5Ym6{4;w-M@f%qv^jCYy@X$>p{+}%o{Ei3sPE1BcT6*L;x*NzFOsgKx8A-M> z*AFixJgj(nGXPmw5RmVCEWQHbs+ zCH=j8>)k;cNrCwDLP3S72>tIo>-<+a*`7*~He9pV=u&#_!FE1f`nuh^ z_35JmsLz=Cji}FvjV!lO-Uv`#<6X)q+3D5~-!2c(qiD$Ps&vw0*)@E^Y{W*?@KRG} z_^0|Eq)IexkHdr>^}1ul2J2VnuHMK}*Ok{92m8kPf-tC}P2{yOGzJ^AGRO-nlabd5 z5#6*tH=4bycW*7xhZOQVSR8%$(~XQN=J>hdW2%zH*X{X>&m;F&D%1@vxQ+Dd9MhK!-guR_L(j3OGR|k`aGZlsLz7bM$~8SMwXi; z??!pL2`ZfvUk6HNbxQ3@z%EmPeYrvA@cvSy&o?o zHRWHWnaFzgU$+tbdw3%WSXUpax_N#0NEp`9hc%(G*-*vS)`zP_bkq7gZziqYrIu|( zeLmU9abbS}x-(u-MBZjx}bmNq>o2`?3X)%KxGlh-4i>bBoXCvgO&(W0*m zt<(k?aitl)#zB?0=a;I|P5JSF%8~tB%J1L%TXk;kMi#%Wd>`7+%lBttSVz7)ZzSHe z<@>ORZd#uYg^K#L-kAFQ5*oP;u`^q~Q?0SO$G>6VzHqIEZS*7y-%&@Nw(#4qvL`ni zaj#Nws{F$laVHIQp8F!5WP8KYgN{u%lD@`KKfX-`3WK?kzjif5uEn3{g%bXxzUFsB z^8O?=nj6EPrvCMdUA(+or0dnhU)y&h@vbfJmqc_^c`q@ORquA%nEGtGk>xg(w?iVuycwi{%Jm5K?o?`AYx*)v0J*NV2rq{0p+d$w85FRk`775x*7TnF6@ zN(XvIi1l8Hj0KQfH!zIRAm7JC6*GReCP6l8zJ&MKv|qI)6D7L)yA8`N%$8^m_b3dK z1_zL}vwIWAQXh0c{`T72NR`X={#RnMy&%V1L(E6%66O3Dw>jzx2e-c=(TYX+aO&oE z6M5Vre7WIctwCEEHG|hr<_{)~2VY97s`u^Vb>e$Cqn%%1*v<9v*+{<1CoAh#MoPUq zoUANJmnDYlHQxG2{Cb!WK7MC=$-j|7V*;UNP9*+=IF{^ku@ALcEAglhxsH; zyCn;!J;TP7iU(9GObO#Y+wo+Vr ze6f*M{%~q+njkkyn2nm)nQVpn-`>2| zH3|WmK-pb5Maxq6N@(rSn=X{DDeqT=n2FBiTx|lYuRg}~@fgDBqkAB&k4VIwLlv2S z+C`S39hK3HU_MvXY6Ed6ZQpC@UbYnv9ZAUAcpA)Dq*`T1HQC=dK=0e6pVRDc^3$49 z<2`g}wM`3X!$P+vv_r`bpS@tSaf%Fx)QqtdW}#bPAbN5>76}KnucKK|+?E;R*lu1= z-3u01&b_U0hxZ!oGZJ5FOJ^PKX~bUbiwv=k^Vs2wczR)&OM6I>!sZeX+?#;5$vXQ9 ztit`C_0ej7ioTt>d!QSvj8$%Lp-dKDZ&1AF973JsDLL+`Og)=5q2wnsVMd0dJZ9{` zUDcUf!LF9I@MV-j8uK#lx@E87I4(nJ#68yT*XhT)505!0hns6*|R(?5ujxbk1fmXgdmmWEr?)fRlMr zqg&(p@D(=2v%-QdQ$fHcyL^N2HT|-)FUYd2aBbF8P_A0*-JW6bHzHL%!NL8WRR?&Y zpG&LD3ikn$r57>QtZ=jSh5m0Yvg5ge&d@()M*fVF$V)-6LRK+Ze1>P1s7{j2H$Qz{ zXZBm|{eZ&DM#a*bLncao%Gi2YW6mQy>DMkH4Pp#Uk zXJN@Y`+umFsyZ9cv|5&b4*uds{G*%TKc^A@b%wwEKY&LY!TU7<@7V}G)RR-C%TuYW zE#K(AFKzKo7VZQFx1~XAjo~FW5HjWe+~ca|Di`NKvn2VxXXPY-)l$ARl(F;N@cq}I z%(0!^xjwLsyM%z9BqCeYoj%*iM&&B^FcQ#UVdnv6_i_3QhlWYjN&-`ixDgaCuu+sE zd($g&)11^G5(b9FpF%=dMtKqOM}+Z*8(HPN9$mOAvJ|BUcuMsePFoZ2DwiJ?#SKsi z$3dWzXBn>4kBuE()_&s3?|N~F#x}+A!1^ETqMp1ddv&xao(CKvCrsA@UOu;i-MG8F zXin26b5FBgrG!QPWNxKJbLfI_MHpryPVN<9IKNb@kMFpNVpVmAeL86)&;s^FRTp-& z@Gr6c6uMJbXio|)KS|9w@fE$He|U}Vu2;s_3Z`Rv-5uIa#Z+}7_w$Y-w{X6Gm`#4( z-K&!%@}zR-T2k(`TwfvKjy>oed>}V_Jq!QL-q&CqweZ0w#Z}c8@q7krt(o_rKrM?^C-kDXkQm(7+ip3eJ49PCPJi_UQu~C0tGV)_p_ES9|~SGyN`e zxu42Xbm`);JOdVcP_iEnqv@%?>%HBVNjpl!$PB^E6|UHm7W+hWc3t3A>kT}n*O>F5 z2C^;vcVpk!Yt*&Zi=5vO!R`EF+iNX>kv+rV5zNiNs13-)wWr&BT6?8k9;Q_*jb)55 zUu&hE5~kU7DP9Y!yzS)wbV_Z`{PfA(FE@u>AXH;l8m8ILg>D1Rt}k#(k!26G?4nKRU((30zuYpWT)}(+qKJ;jUvt64uo{!oEE3 z!PFK2=I*&4eyV1zt%sNu#S!Mvpaf#+SNinWaag%V*_nUJIb4Y0Jf(KSi|y%)X=l1! z&6d=;9-m4gsU{e^2%~qUYm~iETgRJb|H^Dco%{V0Rr@5`jU8f0*_J$$Z?el#W*}C$ ziB#!c%;0R38r)B_9n*R}3+i$S_ol3!!D(_6CEuZg;B4xb z2HUBQO5Jn6aVXv&L&o}Yh2G@#+M?#(!^V~unYyI>?NEJyCuuFED84= z5_Yu5PnWrU)dCW8Y_YAC_29(~x=&C8A8m$s$BRME#ZEW{C>oKkS|ol&ox9*;Qs@u>(TdzYc@9QYm7R6G*D z+r(8^{wSD}c?bO<9&q0ML+h5SDtzh*KDEn3KK0!&m3dt<75?c{ZwXVM4O2^e>i65K zt<<|#kSt?RWv922g->u7vEqNk6kB{-5C1VnSn>1I@qdU5$-)vgmMZ>qbWLc!@zEpZ zc<{$PINO(#g-3ffxm!$f$b=EMGc6~!kH~C+9k78ncbX7nYgk9U{IK>l#`N#Kcc6@Fu;otQmMc7X zW4!SDdp+8Fgf^Ks)12s4YJ}WK=q}^DW9o(Vwf|DvL&84PkGc4v6ocOq9cs0vCG3IB z5*9hU7ox)2?j$e7yBk}FVYwTTFq}_#%PK>EB&76M+> z5Q0`9puxK4@7qKLPcs{$W$u_=ybC%u{JyV!PEPV7>jIbVXpV=9JBn=TS?KS-@1ymM zdG3|>6os3;)OD~Z^#JG61G&2o0iwFY(>q%gF&))~k6V~d;dB~*Y8N+TwKB_pN+^Z; zrvah>xRbOS-+ZV`h!1q$rO`OBUMpKK2AO~Jd054ccHpnx?E+!O8ZB|FE5Bf8Uqw9^ z!O3bx{dcEKEpr-cd4^TVYS}8RcWo*YnxToxvEyD zj6HH=ewQMvF+3)a>can|A+3I6&3%-QcmwfPKXmTq)n4at6nmBT#+;Tmn$uaX6DU2) zj`t`}NTYn4PSx#|L3x-^zN)w$98xrYqR~FGzqz}0c5iWTy0ct0W$K+Wa|lmPIJdpT*bwWT zy3j2qRfnnEU=@-!dDt?)5C48TJ~fEf0PCOl#^w~kFl#5nP`)46*w+%yDc^(8R157y z=rs#%ZI<_HbE_MI@z&C{VcG0&>8~nJDsw5oW`DoceeXlxH~U+bV85^&&#rPJq@y}m z$mv^JKl1^ICD6VdXgQ4R9%UY$sYkhwp;T{er*J=WJ92oz1owq937^Tecstp*d2R@j zQst9{yID-V3y?G=u`&Pa*xpdboav4~NeQ%W{T&w+gm(MB|A{dxwOOqt2Wi!TLvJ1Z z0dTW{1FaZ%8F2j)Us6K%JESo6ZkgE_mHAYjsHk`4l<7TpU9ry-z0Q3FZ`Eh)lIFn* z_cTpZ*D`TkR=7#OKDC7gNyO;FYPpR46KncMN>)lCU?N@Hk7Df{dPQRb;~--K2a~Mm zdG6mLMv6Vvl0?;H&K!%X!;DUiL<@66LjU)nIxATPus687-XgP#!o#tx^`e~7CK}9f zuc88^6N$H^b-7B^NVKB`93W6p$--;@^lj^ew9Bx>$3Ojt;v3x4Fj180$|}CqA>SEB zJw+6PdA6;bg*A4am*JM)RXqe6O-^^UugftIs?FBvQA@pB`li^e%c`>`e6i8o2c$-! zGIc=}B=$yRuTdZPG0%N`lMUdi;<$hkiON229+tFgge@LmBTjRU~A z$--Oi_Kv~TvgOIbN5~+$M;Y%URo{B{?zqfD4HcBAyvNti2IO|5kb9AHk#by4mTgg+ z;XNgDHnw~l+1MktRuiFh84?T+zZqh73-y zl`H70WyAkP9@)iZudClgQN|*X-~))u^k+@_50(pP+u*r_ch6imWcpv!&RdiJ5W*0M zy^kU>Jf#+}a?*{`%Wz?4JHpx+43ai!e+4qQcE!!1WvLgUl_U!f6!s61k=O#h!QkVG zgObd9KM;}5pB!m5s3O1Fi@EN0%V<~Lyb*#8vA*wRp|fO%M9{Yp5)O|w-ucT zx5i+Vh z4s=@p1E%OHcOE*IQeFeEqMSW0>B$Va%w(I$wSU0z)Wv?LlBwJ6?J3ngcHqaaS4ETM zs+fDw92B|X(6p^6eU5e_?i_+bnVDVV4ug18PFkYdpAWq2t?c2Ep63;`;8K~f&p_1j z$W61%vCbN^W$v?TB5&3Y>72EAh&|)@hgq+~>3I72b;N1tjf8vvQLs^R?u25USCC)I ztWQ@mw~fR*(AgpNR3Vxsi}gG7CT5k;4eNNEJ9n;{H(5AcMf2_IUu_J&V(LrhXQ`R= z;~_Q8w0@k44RX)R($XE|i6!u|le-VZYQ1|&<>a37UM{MvC}|#1ur9@38#l`5#i$_> zDH(*f<0SY^sIP#!3FugWOeGbwonjWD1#$}%v5z9&Rm2QLd(-ri{O`?6uLYyt>srJw zE&PWR4G!v9XNegb2aCWeDIWFf7* zEvHcDX*7hey5Mpb2~pK_V`c21u<`9PFVwu7=xkTHEx?%OY*i9bG%Bn4htkKsJ(fkT zy-`hHcmE{b;&Q7fv=^>LyUX!}GHrBlupi)RHq;GL5^uRB3<9YIi8}_{C=r>`CDyx% zMgi}7%jU@(S}**qdye<$f}e<#a&&@LDead~ua>vW4V(=tq$DBrv5vtzCPmYSo8Wv# zA5Os8bq}Z+pbuMxH5&VI;9tHoMJS{o zWL8KqTPtP(YLQlgJr(gL5mJE}CHVm^l3Gk8{s1^x-tm)0$>MLhygOSB+>1KqZ58!8 z@DSftPM!Prtgt~?Yl>9Ok|KPWQG^yZP}!Ggcv*^Yrav@}V?fst>cQ@?-7JvTgBD;- z>p}c;$-2Tww5At35^*2CHjP_*nv9I{UctXj;>$vbyPp`SL9ylcARU5(P40O265tJ# z=&KOl#j+v@n>2crY2aXcqB!?u%Qx9RN2C22V5e9#d*44Xw_oC2ZUy3CCijTx1btt$ z19@JERBpf*wf-1#i8@H(n@N^3{0j(X#IC{K6%b!+|hxp5OCSV z%|cY~PDBU6d$~Q*$@^N;Us|-BsP#=rs1|kZ1=W_vF}UAlS?wNxy4$Y>9W?9*u0Oyf zo?J^DQSG_8D0TroZtQIG;;+%4(4OyQAeX|@*11n+NWPjj!L;YDDTk<(`_uiW?k~*T2eN9b z^!VY$lvl7s?h?h>eIV|c*VTfH7iXZZ%Rs%|2sIHXH-|?irJzkN61hnEhih%Iy9h*#4@g8`UUVK;PMdam{|r0?(hD!=;oM~LP2WiL z;Y{;z27F$34rx4jo9{Xxd3D1m(xfdg?(9aXyfK&l_-i}LoGL^@`0VauZhmrYSULAX zQ`AhNsFQoM79WXMCrf%_j3e>6GQu+BC7A22utVN$Ljk+t-$-NQAHhnw{>d&+PilHS zQ7>8n-Nr9&C2DL%t#I?99A=Ing_iOd)VWWUO5CvmNfsV7nYiZ-to$$!cA>1`GlqoT zLK(*@=5C8IIXrN+CxVHH>Qvv1KO2@`-dO&>4Y8jd4^vMFQyBwa2iESM!r|)8zE~r| z5xW)waYOhZik@={zI21^-2t4=`gf&)Zt zVqS2d>;z4t9hM^dXl?qwe_hV4EC0I~DH;P`Tdgs}GS^cD<92THxF6r)7Ppt0EIHPC zQAl(xnMZ={?Sgwz1ar6>+|SH@OE;2gW?TV_NQG^=EEAHxOg!Zb+4ZW)JogE00}R^| zHQS=<+$@XY<^<-8+JM9k;b}n;ba>L5II7privHL#Jb=A zYm9V1@@v;97Pq1Zw~0-Hv+wAaSiX9TB`}Xcht{`;{3)t1pEA-%*9yL*!w%lw{ly6b7&6(8j7tm8z=sp@HwYDqEm;>vxiBaSDJm# z-t3b%F_KXC=Ev!AH-SsH{cE*H+o7}bbZ{Sw4O8L4_ebg~l6n0#7q-luCk1W1nirO2U%l5q z@tZrogRb6_Kvo>B8}PV<3=EarWp{G8!Djhoyjlx>cO_#vE_YS)X)Ckl_I`_)2!)bBP&+maPw7UlQ`jl6m(v^RqzDq9dBq+(UdA{z|&tv=x;4@|o^BAe1=o zWzk=lxY|0zlji73NxsOWBbptGvS;A7|H~Y#4Azen~24pC!w?>(_ zSxDLTMp=U>YjAH;xNjJj3(8Zr617rd7f)GzRY=*7ZUHG+oKSHy_I&(z6EGCGS#JK~ zu%@BA^&bgmgANd$eAk>v{6>(Jv7j|HHOS9TY{0*2aCdAx`dD|VQFm8L^=ah~`mZ-% zQiYnF4P9l*Rp<62$=3V!TRACvZOZ z(%|-JblPosqXCc)@Thg7TyxDNlimtgmdMRfC&>E#N-dEO4#}JRqA2IOUi^F3--yLm zidKHtEONtiEqu1>F9ZA~!|lg1S1zV~c6`AKc%9`BG9GG(od8vOU$1Z^Wp-PTVpq9_ zRqi3|E6BN9mSrxP$ZjgKfzdUpqk$#eGESgG$zp;=z>g0g*=dexr2&s;1OJ_fVa z{beeDIHnqN1_8?_$losB0Xo>*{54-@&wUv#j{^KWsT}6b^o4=jOD1go3C*}6I6u~& z8&tI=M#KK4W_2~*DX-PU{qlA9^@aSf`_>_(b7|sN?&)OIM#+uhnQYr^YzpoM;RNAw zU749)NX~wY#^}u+Z_*1b$6%UV@$7CeUGK8FRdkPw=}vWCl=jDh^EG%3-Hd44zTVQk zV3t;9lH{QnB)5$v+rGt5k1}5rEwv>nnU+E5xK)0I3otzrSqHQ{4Wi8z-OR=`xPH&G zZ~hv!_QMFRt0|4OZ!&)1z}{+J>TRsgY+s)q(B7EE6FgA$IW07SR)wt;^Dj|`?T3pk z-3K=Q2y1x7c#^wXvej_qk?Yj(5)6^dE3HfIN zqRkvrnQv*Fo6}*9VD-{ojO|08K+}QvKa2}Dwf5|@$`hJ*J?x$tzYR>=60XHzcVCyE zG0zk}&0A@$hpd!QgRObSh&Aq;(8v+>CHFhpqC-jM1!0f70{Qv-T?Y_w_b)e+OXv0K zs)R_V+yUGu7TLO2K2hxyz-LN_?p1Sv{t^`}S!9A!GRME(XBNZP`W&lk)vk$|-4k zoIPK1WlLj;76Yn0HZADJwyqx8$+z$7F>PEm=*to#+fcTFoXZH1&AQ%x0~3rQHq2jrM5inPkCT~m}mXF?iUY~p^S8DfpeG0^XT7}z< z-^85iku1~qWP9x<;_4du&~V3h_Is;#fw=ZJXm+srFxOEcP4>mtW~^AX zVn(iMzzt1&#=D-^lr{UcW*Bii?ui4_(mm3dhFV)jOjHYza3r9Uf1zkMmSVLb$|eu0 z$K|*cB2>N&;Y$?0wPI|$hF0ZloMCKU**&M69ZA%oG6#u`YZDF}>=78ZzpO7A{icVH zFd)%d2a(aK;+)&PUZ`gTJ>hGz5>_)kx$~$q8Tuvmf`nl$#+NpGy$RJn?30sIvkiH* zelZ9nC6U@iiJ28&t%=qi3u0ZE?RqnuUS!9B>o9eMaMj1&{)gsF{6REn1JvU{E1JJw#@mZ zWa6RRd>%xq_6)0Vps!ZZ0Oll#3KBb~v3WpDkKtzMyi(KR|QY+psEQ& zq-q*rPsI~qz7_dlKISFfi`E|R>sR@EtH@Q4kz0uNVH08)?1E=4oO_VV;~5^}`5*i$ zY88oJ+}`7(h7&erGct91C8w95^LC|byO&HXvYD2ENtUW3gllz1({Q@-Kv%SHAF5QXGP$ z9C0aNR+YH6e7(vayNbB(0)s_aY9Lpmg3+nk_9I5HUUCyj65bObyGJm~Lo1xX|C-s^ z6K~d+)!xc#?sEpGkWK52o&3r_R--eRi^fFaCsR?hsAe>fLL5gcFnU_T6f8wnY@L(i zXX?L?(d#IZ9yt;}i}=2g+HZ8<@`Qc(Fji|gU!C{T$DY;E+Rebr2v!;P1}6B31twp& z|4^-H?f#@krykia_Hh0g!35_aId%t6Jx=Axz&$ygM*OhezT^ zA@Jt~{wVgrb17~`pva9nQ?z&azQMKH%4a%q`uZRu@pAzv+Ak81LX8A_94LKZQb6&n z9}uBZNY{1*j{uL!^MJb4v6EL#+w#45GpODxQnd})x-EC9z`9!va`Y^qhX0?TiHTXl zu?(J6tlljWUr0bYN^dpcqyjbs4Js(WL-#s5nr>RpLomKcP4ktx2^2zb9*&u)rL7k2 z5#_C}XyrSseFnjl-&F6A|7QYSG%gZf5<*975q_GH=KvY}MvBMW6WD0&_r}N~55Y+X->O85HQBr~?RF5uYzG!dx8F+!c z0f$m+BTL!JO7FyHWYT=X!M3IcV)x^i@^$*YNc;t$5_44b$b>;i3fph(Dp$nho$^7t zT^$Y~+#xF~HeQJP0h_79zrdZCQ?zH~y5q^WRw=x}7>V~M4~u1N)PR+ds+E?zr@Q)5 z)qxrHp02fmbhDlQs+%3tw3~e^%gu5Z&_`$YvXb0s zE7WGy_M-Q*YYPt5_D0YINn?jR5}MO#pu=T|cSb=Iv(y6n5~_))0EVZ}(KCR4No2wj zYMF(8>kN9pB_p9fQ0PC)W@dBHM{AD;M2-Bu7QV2bLzN>N`dalT4<7`d&~h>|cx!iM z`&XFl8fAmBkD6wit8AZUbo3VT)S!#TnBUXZ!CN9(Gzv3IbRF4byVBhZ$JOidk?R&{f=wJtdCYtz2nAXt8_9a_lR>hLKiq*Z@dSI4S7SV%LtOoOL zfK;p=9I5(Vsg^ZbdmJ!9OHzDs3-N+7#YO+RxKCE9w_C?JPa`^Qi+u@26#N*ma++!> zS5DJI{06UWm9FAB*=4>B52@nlgA?z2;uw~7dsnW^q(hr|l#!~zR=OOW=+vyPA!?ZcyPX9qgJVt+G(CQ7^4*KW6dIh~|b&!+%cM_%b2q zh1pd55fFx4M95RhvUjGcS1Jqk+p>HWcKyn7QDc@d%5o=rtvqpMWRW3#0d-R23hBz$ zqJHFv)}A40XR~8}A(})X9?>Qsiq?K;P@(n1I>xsU)b4VyguGVfsB-m@bkit$=|GY-wook{C^`Vt&|D! z8&zn|mK!9?=W42z^Nf=8Q1fi{pwjl~_xM0{c_%j<#VxBYN1lwa57vj~w&%Jn2>Koq z;)AEYZ(x7hqRK^e8BSOJiV?b*_)HITc89Q+pR}jfLiF)WcA$w=?Dq~QO6c+X5_G$QB#A5uu6kE#7~Cb z>UUq{*LLIgV?Vd+e6OmySX1oPJ={~2r@cMLlnryKu9`pB&gGWY#o}@5NqG3Vr*x$<$syMKNpbu!GG!%&i5~o;p*xRxl3Hfhh?VX15`UWQFq9g z>xi=42?gP7(XJBDu+PxJo`0o->l5~T$Z4Ec82d2nsTjMz32g*q5FKV&KEKL?+i+BhA(E zs%#Z=>d3@n-Mi4UOe+Vk9ifiaexV|499?65SmY(1qu6qQoGCwPL*Wf{O|%H$=*8qO z2ZO+wF=e|$u1&7UnuW9;Alec?(1JKDv1jH3s&~*wrVAT_dZn#J-JP)KZ;jac6zDei z*r-4~=@PAFX-FG9`JKw@=~fD}cgQcdLN?wZKg7_7LjRIZHa%tz+i=h?EaQ3*ht_yI zf@Q-N(ZCM;EA?2bBmPJ|dD;?>q7?G(x&FL(3g3k7Z!IL(Wh2?&NR>ojNAO@uj4-7R ztFn#!1$1qq924vIy1fyM15Do8O=Qc6w`7=lsx0UJ1fW1#u^Q1Hl@24>!w3gM(JxS# z3^a`w>?NG*I;-1Q^a&K?p(|G7u>HvkV->5h&^u;f87xUIAtjAgnSu|9u=b+<=)Tj# zDV6M*k}ADd#-xdFEcXjR#h>FMRUc?rlFU83POJUh2`&4aNj?rv=9RLuiA9%}2cfj{m_HoG3(1XIpJ77$qKc566P>pRH5u=`O!LqZSRf!ScV+@4uGpi{^oa zk{e8?YV4J8gEx7aBU*cek=R`kuj;K1-K$g`?UaZz6WxP-tgiA_)kG6nzJpRtuCuI1 zSzH1Ct6`5JF4^b3%3oVWYlji{il%N#BE7%&h9?+edGLF{vuBv+i1n7ZwUx+F07$hJ zmDs^@zix5+gt<4jxDPC@OBlD(sZzr&PD2b)wwSoAdig~w?@TIL?@2^!2U?b{VV0*X z4i6dE$twg8yG8Lv|0$&4ngGN)N^5x*ksN+T^&bu`*& z1O~S$l+68fLAphLOvqYfNnLJEun!q)GIhm(KTxYil_oF;!I zZE{;cbnq_9T7!#Y!{nKKG$O2h7&-Bn-?A?|Yd4f~(r!B`+`h&LK(WjRGdm~+sghC0CD?QGZqf`zpP z`@CRJj#OPO*gXV$Up8!kV9yC**~?_s8$YMdA8(K~{z6l_3Dh9Bn%_OcN6 z-4OPE!Nvt!lMUNTu$PCh4}`Fn3bsnH*9$h8yUi!*_SuGznX|3u(>_P|MDXlg{AJ(Z{~;inKo6QLo#9D5%qHdKP2vp!7g%M3!MFXKN$U$!@jy?qV3vkX&n zH5I|Z$EIy&X=xt*HVH%_563C|4|rH?6s37sN3UWlyn*h`?zUXr;2nfgSG-n1;YG#e z<%y4j1TmRfJfSQsC*%Zr-pcFXS=j*90@zgm+@ac-FQ(|-6wMVUYF7Vc$;!8zR|y#( zT7L>3B9<#%*DbT^dVTVr)%6%LJkw-;QinH61ZWO3ZL8fAAPse+oACc5-KeKh8P425 z0slZZp3lyEyn5SY?jx)`d7eB($avEG6C1&;JRF747N2zv{5ASYi?0Pqs267_{15bE z52I#WPVj)3lg#aqp=75tB{zPIbS{PjYV69vAF}QDYKrwP&py$r$3uK3H2TVMEPVA?EhX!!5vjepPaeJcefa+>Zo6+98eXN0CHzHLNB=9h|3Ci!8{YKXNEw`p z+%DV**gG}?MzWo^k#Ik4B-}1|NmZXTGyB~jj_&c3H!EfmAQsBM?&qRLj z=I=TFbQ!~8{B0=j|Ecu3l-ZB+=JUIPKjCf8qR0O!{2RhEkg_{d-q+ZV)A`Nb?_FBG z**g2FZG-e-?lgw=Wz`4Bqj%rnM}{k^ugRsX?y2q2^#oISjp+P&2G@zcMDrK<{1%-Q z`;L)#i=tNL-(@yq@0;F@Jz{cZKeo26N8*#o(gdG77f-43*9NXe79BMe6rSEJ&ldb{ z%W*pf)BTd#(mf5uoaSJ9lN3%Gs*6kXX``-uIHYRJyO4|?Z}4p#*WUI3j!{zW>ccb4~x)Xp*DPo9-^UPtc@M77GiT08OR{!1o|Eog50 zzpVhj1L1Lb#X6cb*HtL!IrpLuYTsUSKN~bl{k41xPBRSz85;muP)}_ityPDg*}u*{ z)=4{%EdEYk<2S7~=Q~=trpu_WBDKGkB!1{OY>R8lnk{ZvT+%~#DuI-pfI>D?8y7Vk z(ZqtTVT{&l7B%%BzT<}~p7i_p4T|)^-mfY8J&C<={6=eS+U@cNU77Mr(cXUh;M^^X z2EMWvSV|%#-`o8UO%qReW$$!iuXS?vdu5+=;_m6h$dnmHM?|VVAwg%z-ns&&C5!Jp zmQi-yGbg%H|DOjM`y<;PbdX-=9H+lrGD~d&Yc{!@gV|+(z zZTSBr!7O^;>8x9Oq)&nFqbb_2Jb&7LH%p+Gu|q zNO$CSefe|;&veq)mzEu;JEr6?XUDBCd?avZ@~7+E?&EKJaChUc(I8+i!UMKkn95<& z%HsMr@qHt4jrGG7$p+?YZobA3ME0Ga2Hq=Dbqnbn=zR%jb9%ok)J)3#8;?I1NS^v4d#R8)f4%dCO6&I^4}O0`1e8KyZaqOavqt);+b7%+R9ALv_YspTf9)J= zPnBcab7Y6QTpMztz=M?6$#ASfJ7g5EWL>jgg8KxC8#$JdP+#pgFxr2<+N12+$b37W zvo`+DA^zDO-s8U|#D7%Z+?+&TvsGS*OpASDw zLRTS61+^#UAi^f0M4b*|>+oA}|K)!)ydv_O%}8wd@#`&FMn1YEoyy^&I7!*(SvjxM z2@~EnsIcKE9IqthQ2So;3Ruq1DVv}^k`104b{TH z?=os}r1tfa#E<=kwVhJd?5l>aFawQtI5n$BP=1D8KZUJ-3F~nVTiP!UZT!P&Q`wi> zC{wp$BF~n!*K~8VR>mq7FWN0Ors$;d^Fl+fxr(BWv9n|{PbD0h%zqQ?Sys@t{6LB_ zLsV*sX2^;OcAMTKz>Y8{@>EP+vhL^9M#ICy_897seJ#-PP;vm7MV%fGudfZWYSj7AZ6wJCnS|5(k zSP%Y())V*tR{8&5;hnLbI(kJ4dVyi(e1M#Ex!_#b=c<_rmTd;wV}i;thCk1hSjarTkpKmKE2KRs_?+gQp{ zK86JE`SkNG{X?JrO|8((^&gj7%B%iknWa48Kbjkwd;CX(rQF~@j<7sc{$o4)80|lD zN`(4c{}Jz_k5l}|>Zm@B@gG0gM~VOV!aff6A0P4I_EDHsg=FCyppe(~+XC2vogV+W zem@&RTJci?%?Uw)IU}9+1~Ss=)+PLX&!0NTR`6MUO$Yw==I>zsO87g5Kc)TE-zlV> zo0UE~3|D2vNrv}?-%s%SY8d`2oJ?gl@z2#=4dmv;*hy?M)2({+FYQL!u>45%HCy;F z*JsqZiwJ86F7?eV%FSW-ZTE(KV_RcwzAv+5+>GI$z!@VSSED56`y=MJ6O%q--plSI z;8sNTx*p*24WC^B{36FBDt~P;cIV3Jf0W+ZubD2e+Ns8$4Znu8@NV4n5J|`Dv;0HO zh-)%J=9UxP?)6KgiiL}&a`iObn+fsXAdy$E6$v>S4+4|gmi~@QHy=`5<@9D1zwH|v zII(5LZ$;&qVOj&Wu_SM8}*;j zH}Xa<))PK#wh$idwWj=Iu%#Y+t|)b{dHF*SSqc99zya=c{AD#U>Ra=v7Cg$i zD7wy__L+sZQ22~56y_}#!aK0FP_P$Ypq5$ZHqTV{RARbKXNqNt=kUq1CR=^yT?8b& z*##{aem7dc8or?z)Pn&IZ+tMMo5HIw_A*R{7oNV1{}$df$ymdU`o^f)tlNTMfovp1 zw6HqNao;`d%>{>w2TMF-IUy9bk@pb=H^QCFRb0#;XsE=sTdwseW#C$rc`o0`TprWw zJ2iJ@k@;kIyY^F8igbo{yHX^NfSdG`4Y}<4u9KOfH7Z-$$V+uXu&>NspSAL{Z3AZqJ z($$w+^J;8l>lU1Bt#==ya~n-htXvv@(R^cbd&0W&q#5j?$yTYm;#h4Ex80#Q_WexLe*b)tEk_>DiYb`)_itoZU}SW)_f*=Q(9?JQB9WercSVib3Q1lK8@PH!+X zH5Ao&nruMo>ZKtlJS~%ZBn$8Mv98od?b+>vR2RzO)lclJHSE~6o}xg52k^XeyYMV? za~~H2c&Wk2Z3nrb9{=KwqSb6rZ*)60_p5%OHzd*FMgdJu>w(){NdHbrrP=%blfufm zzqQV-K3DZGZ>4bE*}5~CTDXr1tyg!l=AShl>|#15@1pu8Z}C4rkYDvodQ3%1ksRHe z3m6&fSEVV5+XW(1g7-p(Lnjp$dxO#~O3fcb6?xuTVSHj7NU7G%>jzbh)< z5z}GJ+_S=~{!{H6W#jLQf$NWw8tw6A>?9~)%Ih~-3ZtM7G_attpqcI@3gV8gk{+pX zvopnm+@}1pyR)rrwxRQCrdg_zp4>Fa zMGD~O4!CHKg^}dlAc!U}WoDIvTvv(-&CWw~gH_XYt3u0IJ7p{yw>5yQwg_-D4=78Z z{t|O?fo@aJXX=&=<&%`~{97u9Q*tMX3G7zE&Fp$Gjp9hF3=z8Xte6j=MXNhzguDT( zc%UgR<2RFbKF)4t*vd*Pzd;3@{*IM=hM$wt3w4w*m0`1USOvR)M9#a|vdTK9a->gt zG8ExGzG1E#u+{E4*^=~FBIkAjp1mAyi-5QR0j$CIMrm%)X zJTWo774I(agqVfx?KvmCHPW{f5nX&%-%gWxtwh8Q#JQ43Og7Qv;mvq7s_VD|qR9(d zFbTwa7+xkL>4+#I)5$O4yGLqdYo5gDska$sjpayCz5CAklSup>#`*g0Yy%&3EtqOC z%iOnUCKBDPQKIc4Ra&=!IY#Kqy_g!gC1lEZCIyoL*HoDjM5?aLf{vU3^w}Zw(YS)( z9+buB{#+934l?4GxhviXn{{J7c2WnMu2(WIU*MZrT%BpnPQwvV+mQCH!rJM@ovcjH zVTauZbm!8W%MqKDte0Be@-xhMoQ^r|n>>TgAhlh#!Ry8RSTmWrsF>UfW48rZd=vkX zRo+Y)cvY8>Qqp6|xVJNr$-K_6%AH6;>gBB10~Omxh^Rrn9NnlXfx8EkYBP=1U2_1S z?W|1C5;dBZe5)q;!$eD+Yo}k)=e8mgHX$)5_ydH3yp(D}HT}|8PlIq}7xPc|QqoSp zsT%TqOt?uE_=xp#ib%{4G;^9xeVp9EQnp5ToxA6BUk7vlzcSU;8dz!8Wvz|Foqc#js>~9oVfq9ilBp%Ai%gdNgeKj`g=NYx{lXVvjU zDAxBa;dcTB)b};v_g+{^eUIW>zDU2*#1rN#z}t`O#PL=h$~+p1teCMO?m}l8b^$X# z7FqTdT1lku;=c5AyzmpNmDRW!8$rhdW%T0p?$g%=stYaCO8TuE1}2qE!2(U;N!Ghs zvn`SMG$ONs4+7YocE6P^gGF7&^)5+{#KQgAs0^CF=Xo5X)m74Gf-+<8e&V~N$4U%d z-)6ji)0W3?K2(vb8LOx1h}Mc4DDA40Zlp-}_~!mKc8G_#zIBgSe_ZdTor47c{^*r5)Iec$5)bc$*O4NypS^#Xx=8MX=PVaBelDYZ^VaCd?G1`jIO zPDM(v?w3%yVUiuE9;QM$s=) zQYXMq*hK>$dZZ#;&#Q6_JZv-u8rWD3ohy5ar>k8lia%tgRnu34HTBMTr{11aYR6qeoO|vr>j9$4k^&j5?&Eqz8Ovg^QjHdC#N^OF>*_wFucDb{>{TCd zH2P=Vy??gKl^IPj9v)xiCREm}hWHxo!*3(gkXvJE(l0YmQJ(M6ZOhW0?vbhq zH0EGSb~KA4t-aii_i9t#F(bD{@;{%1N~~5p?p!QrYqmd9GDBU9nD&4e^?2Bu9p&wr z8)G&wQq`01)OeL}qAy`PUqWn{^q}f$R3vza{{(S_&lA6oZ%S+LsgA@;5hdSkb0Ss6 zCe@;XwEPPnfw~CPrR&bGwYVUnp;lV??kfY#(H;I}CDa<+QuA8NP4cgqnTTx>HkjZN zxRnk+Wd^#zy=3ql)?16J6S2?kGKy2JcAYL&*8tGnjF9NkCuyj_)KN5fgzQH<+{>M^ z#Z^LeD9hRhzy7A_!C9`f?Em>oU@Dpw-^bi`Q?^%^ zTIXnrz1-TK=Hu&4A2GS6dZZK_mF9=}_7Jj_V3>jm7YrLrI4cCYY_DEIcQ zVGqswm%dqRsN(kI)+|FIH4R|Djaus5B=F&=T>F5g38@Ni(Eb2-HXEgSEpr!=oH||z zs_+0kZFO!hPg{TD!FER|%w*wbrG^Ew4T{-J_bOv&Q0UDT#_|mz|9*6<=+6Cfrd&Sk zUmFqZB6>nO)<(<e~>8GTfliSv8%%sGfVYla$huXxkwWkjpAD^V8gjOxvKdF)X?rou|AyVPCT(i08= zDWV%~^5o=z`4zt(JZhU~2Sr}`pmbQ<8%vwbZ}{rjV^hb&4mQ^mCVs6hsVds_djwOY z@l@ocO@%c+y?l16_p>8X`#yVkYVT(+O6~bJFs;_EQgWv zo;}t3*AtFrk4y$f1>y?T`dgQOvTB!CPRC3%DiBcw=HBf&&{uG0`)zRB@oPgEw?!Cg zelrk$GM8)$qZXS|)8aieeQ48d7Bt8>S^ z9QLB~+{5r1D{`Rv`~@vE;Qd;!-twL*voe}RElmyf_9x>4B3D*6T@jvwkPSLU68%Zf zE0(GU>SarP;j5|M(&?#@EdiHzC(rJ{Nc=*|0;ATXM*drfu3I|Ii6i8$j|Y7onG_r>DTQ%?ON;o+2x5n zx7Mi1^3V!{H%^&*`cWXQVzqm6YK*}cI;6YEwwY)(bd zCPn4!!Q?$MoLl*%XcXU&HuF`DSKS;_yL$KK(GtNj_c6cn^K3vp_{FdzsdN3w??>p~ zQ%vUFs1?Sm=^T~qsR2@lE6z&HO7>9$=!!11ZDb$z5q;>9iX8zks_?G$L%i0qLarUu z3kmTr6Az<(5hy}O&@+eAb=-_l6V|u`(T&t|^2;Ex-mSFhFKK&-tcCXl={mN9K$;3Z z!(=~A?0)SpKGnONf7x$nUw?PgeX;H{(p8)H3@(+`^3)Imc2Y}W-Sx#buNP->6!1Uw zFkL>p%zBuPHpf6cU%QW6x*K|s4Fq~W`v!VB+sfj$xIr8%@8PZWLQ%wmp(~%{ZHwUD zU=s!*_62nNfQnp0MWl%PL7<+ngO~$D7`$r}T)S9nlka?|ODPO{_^s1ewx^esDmIC2 zxf|@^=!l)aMW?|_AM*qLvVR!P=G!47-_0nKPKcnF38DMJC7SX^OU(Q|XWXjGaPty6 zTM;=CV5#0!%HG75YLDSS_pK<$Q1OH#g=RMRT(*5v$7)zI4L0C5c?x-DKxZ7QTp5*Q zVGp15L3<_Dc@N@SIc~h<=#%yso0asg`E=|6YgAF+UkuU{UGDp@(#r128KGJ$B8g(_k;s1VFqV^GDfFT&nHU+-u2hf&j0P z7oGNGQ$gzN@O*-{4op_rSQFcta#5tywFMQ#H11BZ>}Xn7E5P=#_)L1rwX2?T?G@Q8 z%(Pbt%3JN@}*(oUM$79yIa8qSxn5zQ8|lRFl9+aCTkkoRN*Tc2oYCWgk@aeP8SX8 z)>iT~U?kp$8er+ms(1IOTyMk5`)bzDfmJArGbpd~C_58j8CJNh$)LUhhP)d5tX^{b zY-vcA_c?<7UDX{PjivSX&zp^|Wz1Hif1PeI{TnOzJ8L0PpU+XA3gMJV%;dinfr<$ z61ng5GZ`YVVtt`G}3OwhQm)V5?+3sn6eb;pKj+XV)DJp!PyObh8 zc)%!q*2#GpPK0#9l?^4#e2JS+l8|3lfTi^uuceZi#IrNovc3P%y^e!ox{az}cIuWvL8G}k@D zXZ^Q;R+b2;!$AVd-h^xWd0{kt(vFr^ysgJmdMPv?CJc$(Ha;rhQM7Jf4N zT;1Wl8;lvbRt45)kQ`WE^Re~iR(H3=$G)Ig^xr4$NfGW1pK`yVB&kO2#(&^Y;q@dS zzPOr?zE8{kw*Aoly-m;_PLd1czrlI-7)mSlN*V$FCD`+sQBL7GHMpPRqEanw2P=4? zi;5168Hw`Y?C+zGHx#nGOj99D=^(UHuw~n!YmGvlm zf+X#lY;flwd3@;n#GGymMocCKWq+7T?NQHPmWnE2LjKla{;%6*V#)=0*B&rg*mxYS1bx(gYlYV+Kp=WHBRT~H9~t%52l zJut>OH6U)Z@d{hb^_sRiq+D5%a|1;sAnE$L#Lb7yCy})))^JKMt>Ilz@|6dh?_9 zB6GFWl^fvn*jApQ(vABK6R9iQ2_C7Xt#JK9q%A$t@~O;{<)kTC==LVL3>g{;JSIQW z4OWKg;vcxm5NT*a`*326+lMq)^*S`P6-|45EDd9pzOhB4@67!zbRWx%n&4uT zsLqZ`O%_%W1?zT!b*?j*X_E(s`R?-hRK*)C52wx%h9=3#crN9+%LM|ftDYhu%r>Gi z+YrkJ@L5($ZZ4#1d<3LB%!9dudx<)xQbo<@0JuFY#cmn6{2kLxrswkMwoDBNQWE`% zhwrl$@Up-1t`h8wUg(yYHI|xQEo7ge&D3^Rr6vn+5dq1(Zle8A6@#<7txc~MhS?wW z*;VPgeAcsl)-i3!Gf}C@!rO!fP905>yHs%$5ml#NWNmDXJI&|qg6MWmnxPsfYK{zH zd8*RtcjRVPnY4cnTOK_W>GoI=8>)%;A-?E#7m+nW*8YqKq}aP#H!Qo-drK(MtmXHx zTHZl*@l)4gmyhAv6cNR6L3a6iZf!Km^y>P@%(|tRs?I**MtiJJjRJBwWof*AFZfhe z)%9`~lZAy?cEwNd@v&1V=_E=DmGW7lgJw2(U*%d{NnSJedjlb%9P4wLx!=ym>168| zMKk7ZLQ3#ZF|ofIYF{c2pY@YdFzgdj9j3Z) z3Py7+ABE-VbOJk}s*6`E1KM_u4D>HiavbtPD!7x5gn~=jK}4T%X=S?JmsEbUs~R* zZ#WW}NSmw)@MC`mHEOc`;wGW8kyuKxQSpnSC~4?-2;ahefsDj=o$6j>xrG#aqFs@> zZk8mTad(M&fex~9_c(0{xjZ@OE@J4afvI~BER=bPW%h+MdbLq2qt{B(HF~`~)U%MN zK!Db%X25;02r+24H%%>|+Sm|2q|AZ&KW^3wo-{9;!ftT0h(`*qd^PN$H%%RhgsP&tAfmY|P;_oL(Z}dZ%GXNSg20(I2$r5l z+n;a?$wx`C&_e{%2#0dP&<1y84%MjUHHPqfv){5gmkZ8oz!9P$DduSIol1K|Y2Ib} zobysWZ;A1<5B3;Crc0g|IpzM==*!2p$kbxYH3P-6acGg`=9eVf2EVD`=lME|N7AI^ z@_pGKb;aWp2dI01-`L6O;iO>b(s9|B*za<_k!lc*!WOnS(aMO|TNoD_3J10<4%Q`K%`zp|Dco4~Cl#SIHpw65~aJ`n~`F)|0J(mRyHwjfCrrw2X~ zws z@)iU};%zBB(G+*By8}gOVN31ds&_TreZ*SJE%iQekkFH{ZHh;c4887XYRiF-RF+=Z zW|TQcn=*8|jnC_GH3&p6bjP;}xT?-Qbr`TT!?cQwvHc|=rB${@?fGkxO71TpK)|P_ zOxjrO!T(%okTQT2-`Bl-nX!_1ejRdUU)|=OR*Tpq&({*3EIgvUU#Fe%qI7-X22-2K z8_pF-y7zox^+uDRZ~+9BuwRZ`i#n=JX9b&wdVz^^z3Xb2)Pv(o9?+EmAl&N@sd}I0 z>Yv`3t-zpj3Ih|W)vj9*bfEZ2K0*(XTas6NJ1Nj7TdW)8H~hgD_x%yp8#Gg{{1?1= zWhQ52K4Jl^Cq@p=&JI6BiSZ|S7vm)r;>&pTW2D*^r@H1u+eEEb5D?Qe4elo%ZB%!c zA<^Kjvf8TM!Jp72(bjAJs(^pPhl8#8n}PwJTeOy8ooUK9e%;X!XA3dwxg>Ue;lUjV zsDlHjodc*#KQ^e-(xB3e1k`JQnzlY8*p}x?w9QGX5`zd=xF%A6YF3>a#(Gohe}0Y2 zu7kjKj%bSXX8%(1#Cp??I6soAXzr)Gm?z_I6vsoZeLcC{_FSVY$p0oV=4SHN@L~CxQglX{jluKK988}GSj;9Gxavk-fHAqoQkMOEdK84Fd#!M zt8qguxp)FlqCmkO1v5sJK9JI)0~TownE#FMM%6X0NN_9KFJy%YAHLYtlVN~Tqq&Ry ztH_Y$Q}RPWo0rE9l@W>NF0nif?n9~5Xl}Hbr}L}6^R6W6fgr~trf@~Mhl6S=NRf~; z0|XDK5!d=+gAKdY?o$8SiyVgnSUq%_pui>C$U8lNe6&yFW^5b3_de;S0L%3*$5$Fq zabL^0B6RPZQ2CeAVbHPs6Fo#bzwCiYqJNb#VhyzQ?n?KQy%yT+;P;sxjU|?*#yn)G zSG(D;KX^&SKNDnnF`4NFOKETqlHyx@K~U`0RI!Ocrs8C#(E(Y`BacV4)w4d$Mj?wz!V1?n|Rcvp~ejg7`SFZMO7 z?e&lxK@XZ9vo|$!l%Z1Rn#1DazC0_Ldsu+sF9UpXcc1(&OsU>_K3TpP!zBT{KPdmZ zQ9bv1ac{KuL7rk7#BHJo4rCjeC&s^s{Jd(v#Jw5WcCFwtisGxbX%Z@X3|ppMp_}bO z;F#$E<*Y2DhyNjOpq#I9txbmo_}NZVzNbzX5@u>hv2r030e90z z-rF~tOe><>PDLx)-%APwA2W`xaXZu{u!Da^W@2qs5(R+`A<;cT2I7NO>2S5)t5ZVN z!sqXN#r8?SpYAVOhFLeDvJ+MIT)v8LkYVCwtV?ny7@q89woH-^Jdz)k_brde*E}03 zVC487)fw5S3*q}A>GE3kFaSokP`P}5NXly7dn-9&Eo)B6mZscMMQW_pchn#&28wH3 zJ5@mYZ}9Dh1JuMbLbR@njx7CBrK~WOt89hX9eVuePm!6(Z+bO5U+Iaw5S>bodv^xr3Vt z_!z6tbwhoz6DelZtZ}`3%1E=H==n8nUs9L_J(v{BgNonkGL`nZmw)O3eN8O(J z{1kh}_w${#9#(UAk}tsx1Eoq6+|UgK+!cHcxZ%FO>D+Lx%AU;EBsc80BZKi-KV>Q& z?kngnUXHe3s=UvVS2KsT(g)DKQi*NJUU*=3c0tJ>tS`KP>zK>V1qZDgxKN8#2}zMn zT;ix*$;Xr2$bNGn`=;XaM?^jy5&6} z3v_4Rk?=$kmG0dlpz9AdWi^D!wfH6M7t>ZCE#YXxZ`u+L)^D(2b**ezTnlgC=BmVriOaOQ^6ACHx*JD431=%N4_Bs40>5f?ijm^=BWjPu*ETAX%oD(=H!J<#86&yY-A zVY7NQZnQ~dG21d5T=qUT*gG=TAoi^2d;@DXl)k%9?-8q2dNemI5L7(P7~dj@v5tP! zH=i6Ta;+E!T19hr!y+a}eJy^=P*{M$QG+|I19X?r+(j8W)Owjhc;!W?ZZ`(2gL2RS z@x>f^T^riIC2Opcjr-;^?qh%4CB7aE@_0~Sgj#zw+T6BuB2Em>3|1>(#XGq-v~*YB zLS-=%gw;hA?Xuk;`&mp!@CtlQ;j8W7#@v~-G(OZFm#hW!tjNMtkv)PUM?(_DIwqqq zO^B%F3dxpS8D0OOM)$W>!s_f75}+n~P_(c31MUSa`a}KGdH*dLTBp*Aw^5Ow;~i5& zknvNsSyFA7XT(NfbLPf!cMJ6@b-Pc6^sT_&)gem8(o*d1dwa7O`)Xb3icr306H4J1 z)UkzLkl#}-aQv%hIX~d*uv!Bu_EVY(*F=N+l}GF3$3asGHye1?FMR;)XzML!YrwZ| z=Kx*Xnzi* zt;$b~`lehY?Ju1HPgn=Gu*j8h*QoBQmGK|H#${JaLbu@n{wdy_h@a&9_{qatO_sWa zy^YBLMF=X-`6Rx`He7)m1Wdf3y-8Q67<*h5O4*+kDPry!md;h})^GK0DEuV4GbF)w zB}He^FD5z)78+j@897uYPU@P7h&;ylhC z7*+AX?jf8+xRZ~>`7|nC(^0CfDxT#=D}+rSOWW$p68}Z?YTwODxz_xGLl_-W??xLa zLK>m6&DJ2rM;;0aNfH!$hRx44{_b}8Cb4<%aYo4Aok(Q7rwz!Gr5%d3y@Dziv;$3o zX#0BCN!nd(Vn_b$VQ)2ZI8QdMYNqBr==V&4`la5jHPs7@X<#IRC1MyybK;sZ#PQ!C zmmaflGmNDd2|*HGG40BE8Sfh3b;p#jwK!nu9SOc``E7!w>wbWxC%KLnCg^6p%{c@IRB^O5| zj=j|S$CST=Jy<#-@`ua;EUcNoZ|aSO&%08jYH$VA6tM7}d{NR2_|b?{>zeHqu(0&- z$cnr(uMkt!x_H}k?O*Gz7e^Qiw{FNtv2d&P#=^`w5*piqYL3L*N?9lGFQ3Y(=(rVO(eOwXvQ6PGI5b-?s#TnvAePz@I53O-sxP}Sv@hqM+*-b7>dZo_^xj_=P~ysclKZ|#RYrO#80KeLBtd`)tYN?#p8kGKO! zHdTgzu>OrVDuelj;9lZ?x^ISjl;}izP+Y`kpGgmjq`HG5ah7qu00ULsgyS?kA|wve)lO)Sf2Ts z(mt5vwG@?~IUGSz2h7!H4!n>J*GOusdzF;BprV6<7A)oC%pUu6*D`S(m_C>Iz z9zUDaLCWjy<_i&1KsF7KEb&E4%qrHqEBxyP!PoQr>y#6`;yc;DUTFS#y({#u?I-%L zx&F0#0IEB$Hby8F!$o^{COxr#WSg}Q|2W&T3Ou$3?__rYj^@34nSQ#}z}fxR+58c_ z$$3O%rd(t_Bh{WbxhBc_qDbQd_OZ?_*`ML#eC_0kZ2xAFXQTKC#{eUM~- z>cf+L_HQ`%5emZJdx&^h06Q~w(bwYG+=UxGBReTw(=*{!XT~nY4NG}cWb3jmqe*NY zd9)uf#Xp?aHVbM5M+zKDsX$O3%(9N|gWXD6=!3arQI_hROcPi)9YPjG5=)D#-R}p$ z^M%}J6^DvRGJD_8nA3YY`jdn z;WIP~YnJyDzRJ;wwm+BrZtbt87Pzk!ofR1KXzl@P5sJ^G@ywLEG4urGt!DX?9jIBN zx<_kM?&bGosIVeA(>EC5`%HlFZJ-(45JUvdd#LO(0L(?Nxr z8^74)NV_v7eH)OJlhxFP*%xaa_@uOT)P$nA-?8j^8@>nUhD6&>Q6t|*++wyHZmOCz zkTcQL#D26`??w13LC4%^kAAIoASY+woCXfd0XGMInw)Z$AdUFlx?Cr;N_|z;QRC0> zY)AT9Y4^{8_@V*U*T5crs_9Y z>@;%{SGyxDVkyT##JGL;fR>3S&UJ%?OnUQX^E+N|!?{IsXHbNhIF zSLrv2uR=<~aEjuI=9p@c%2;=uy@P*^d<3OIEviyZxyhS4ge>=XP9&sQqW^2kjV@ z-j051$6!*@db#;{dbu7cPo`Booc*{7!g5z5=|@A^%=X5PywHd>`X%uJGP&<~5sUv! z%lHjc-Bvf9lJTzYQ~WMzS)`$SDRjX8r9|1{8&vBa5D*~BI})%K@MuC4!|?ZF5Zyn1 zG=*IL646WY;GeWLr1jK-r`SEVP04FhHynsMtS`YN#K$f7X0{Z_2&B)fCsm8#GnxwT zLYtz$E?Y;ve{?2#<@akxK03WBZT|{NXXYYxz4>Ry{YtxK7Eg%ZpojL$NJ=>gSu`~c2K)^Z;vdG zml*?VJbT|^jAvQdXUK2=UY&#Ch~`cv9op3zjM{e;9d!?gu~|*2BD-3V8uxLk$jQFQ zo9RU^^hJ(LFLHmXNDp7+rt~5Me39z{?5m{kpq_WX7P!5pi*XpNz%TaL;IcY+=IzKY z_+7fj(>S7%er7AO!0nbWEA%kyed%~4;T&1Au7r6P>(ZnO8)+%8#*B)&VppFfu6{BA^ zcBi{%>a(K`%#(9TM)$v=bI7h-mvj-PM7P~kE z#M>_!d;|x-U)7XL)wpV|io?%0g~}&lTjPH#oxg-qrQ2Jo;5E#-tQV-tf;XFTS&%kW zF-63#C){tI+PE|1(W5w&oZt(Ms?L)d(riP-$V~2D+3s(9;=aAv6fMSWR5~kx$!ATI zv3LgN;0xcTVw z?7)L`2PPj#io89x5=bWsl102p=`Ywvdf4F*=A5)O_%QBZ%VluexWBM|C}C;{WX*l2 z1*~o38%oeBx81antcu?1><#Nv=Pn3IH?1pfspUuISDRB;Ypms32FE_3*k`aF2c@;2 zury|C{kbZXrEv!Wf#@ucxKQ_==A8+s$s{VHs;5nN5Vc+7-l10cBOCUhedwyJ*sanU z>f-M~cT{9;JTJLFSR6|Ss}Bl1wz6I`RTL02_+>>RC%AA{g)N+V5(w}F)M=0wZcQ2M zjYlnAC(%Hvv&4ieT_ql*DF;mPN_QZKKtVe)xa!HinMo1o{+TsXRSveQzvGc+&KP6q z5Dvy1M}=&!G15V7LK(~5B6PP@TBb)d*4w`7E~pj z7Sz!fd=?kPcZcyJ+v7(k;+^8`24Qd_vIeuA>$|g`l7{Ysdx|bJ71gD`U3=8 z6Y5vRFPj2Hfz`QP(21a?OC9#I?y2*k)aBlT&>-#a%FU)x)SaeW{j~cE-yzIT7c_ib zx|t;@3rQ)jWGY)K`q~p?oQ5I| z-8ylv$uN~O*SFQ_+)z*JFh@fU=XCYoxuhceg@t<&U?k;BbBA`mky3iZPt@yvG;uVF zuCGm zPM71e#dasUUp}@VI_z?B4a|F!U_$AKjlfp)G9^Xxs;v|@M<}t|!}wioP`J-S7P9@Og9;q16r~?Mg$y z);Ht{=8NKcliDSjIx_M-Exe5n-b@S~s`lHBBgL|jo7}^2ouUyX;E;@+jZ^H54IFlm zf{q`s_3m0^aVjA(X2kmn6$0V(X6$iFj;J{NLxiP?%cK>0$t#roWOd`uSPqs!kGiy>p=Yv&NQgILH|3HpTsW+Zmz3s>7(*ZVJ0STY8V$6Jp>o~7C2BL9c?5dAOOQMwnYAz9!+Mvl8m|np>S~SRm!?L$*g1flFW7-FXGhq zFiQBf796bKc1;pFz@3D6QNzk~xz% z524*ROzu>=*C@-}(CNIT6si>GB>XHHaV*u19u{ga{BvpMm4Mh9KS8_Ap{3cERQneP z^gNzSH@GB`4k106sk^LBR*-?aGqB7}?`-^$>zD@XB zAl++_F@{{47R#FjCZ4UbQ76@r-`>`{r+JhMMy;ZM zd#gh|o1*_5vLxSVtEitm-_#Bl$vsbPJw3qU1i_2uetD=wxyBu3HK*8Op4Qg-eUvoWrX~1KfQB#TWwDspHiOa2Y>caAaMJd0HRMzYT)X{&o_{=}_!wTL8 z$#h)PxcDi-c;Vj#yVR!-{rBLD*?O++y+yPPE_hl4MSKk<&2OTf#^2Sb+SLOyUQW-u zMObi4U*Mj!$9lKbC*iv-v8PpOT1cc%S2y`OZ|4hlk#MBO-8Ei|tUNO|rWtNIN674S zzSS~X&wR5MF8CPANS&9+2zn%Ol^o7U?XOL){Q^hn6eb>fo|Qc=)bj#4PcLPcP(0Mr z?-UL7^t%r^ujIjlQR@}(SYi|HDm_+`xhPtet-Gi7u4#^6{i3e{xh&1p$C{;cl_N3J{*10g7^^IT`HPGB9w~_h{z>irCQBlg=#z z{J$@;4<$k~hc)3Y>zpA+h6{B?m378?*BE3J;HAHN56#;BT zKujndy49KM^U?oAYd_uvsi*N=glLPPq5XY$Lqhj6HPG}y3_cD4QXH6K0qG!IPdzj+r)Z05N=J>LxWe8bwto8~QpTuB{wc9rX2y_0=Sji(upD0i?$ z?*Ab_FU!q2<@2Yy~n<1mIN4EwM7`Atd~KOb3~!OiU%o}U>TtarnjdZmeZX$8-$ zK1w`;*uy3P&-_R?`7xt3`l;lne-ELX=JpUd&=c~4cg3r8n^9)48?Q%>RNrr8@G~Of z;DGhSFdDI%=6j1G|Ay7HzaKz@%yX%8j|emsr?J{~MniTf-0v8jYL~_jqen(E*zd5|@8yxd1=LZ5nAEgr-gP6y3Nr6-!+kKK zI7B*`c~|Dwwv4P$={fFTk%^Lr2oGecQ5+`LnbZ{V{P-YL_7$okP4O`iGAgo&@GjH+ znh{}P0rwNgq-T}nT{&DqIQBGV?wKv79|-pzeXMYkWf-NU4bE|R>X zDMzF|9CFvPG{GE+%)Uy4g`02RMsu{$Jluz-uE4~4uAhN9(uaz?44+jpw-341Q76_5 zHpkwA!QVfTDXDiKARB%(^T&Lj@}i|!RBV;4L9tCcIw@cXM zEm#i__P+{cg;#rZSkDS#C$rLgWVq87f9YJ8UvbU)qdB zlsk^(DaUok0>|dV3Bk6jukw9t90}>@7TOD(#K#HQS?Z=|%$B0j7P#wqRMHndiInG+ z!a2c4V)CqU_X|h%Xc)?bd^WmrpE8o3lOjj#bKDh5)g!WgmsShv#)pSUjrrHoGCNW16Xit|$AHRlDuYQC%*s#T&hA(wP;3wM8k zkM|>2u7c+xG#fQ6(H0$cI?{NB2Yg8LlfyhSM|0l-wz_-^I!aJo@sp`6|pa`cA;1Lw*RC*pW>&{ zL>^r0L%pKa83DCg^a!|mJ)p#q5qX!#IKpd zJV31R6f8nNasL_QS?@9on&y7Eal(9`*A_tPbz)M|IIs>**3|1WN2{CYBZb3O+9X&F z$&;1)Lvl-9nptqK8H1y7YTas zG=Gg7<6n0RNPP^iYJDTDV!otXmD0*k^!%yPIP{Mt%S1Vn2(AE!SgfR`uE zISQ41M-p`xU@%nobqElHDbcFzpL|Le(0p?EGr}ma8wK1*a*MK&8cyq>m&-pC6R&rN zN~@O2=h&p2r1~R#Lf2ARp@t-LJtydBWkinqRf-P)EK$W!Ef3=V zOowSTtAsn+`A$l!Q$8{sNkh0D#sePR2!zraA*Tb__d7V2>1?W)OE3M2JXAHf- z9TEVdYydZ>QYJ#DW2G_ zosgs2zEo=~{~xxFZE(lI73#X%)vJC{!E*-4bT|j9)wr=N|MIc0;*$cRy=A3}k5(=3 zXwC-Ehk4MtiMGN0_KS%t;|6+Zhdb4SRQ8Y8iva7w`!lgRI#>ZclQdong4btxbvN4# zV-xX0Tsv#sSX!gweV|0tc)w5YVQX=rAflC1|9Zz%gb{7d1WShz&2 z+fPo=^#c$bCDaad35kM-_%Zi`hPFf5eP`^Q}5!={Kf;`1o8227{$>3PZ zl@xH#3sZTX$}>xO?k7cr4Uj@>m~K)uXcU{$91E)CHvJM;6N7W?ezX_OTzq3s|7H|r zRC06Sl>eSUq4JHQuZZp@QNeqV$()7DWxvJ;m5+62@ni>v&Ek7nBqza-isuru+~%G- z(-tG3A8K4JjuqU-H2?OOMPR8nUY7hbSeC&07r>%46-Hy!gFbrH=c~xOYLG170(U;m zF}iZz-5L?J#x3EORb`38xJ$sO(fokW=mZ+%g_X~D<3PivQ&ss@U}CmfFT=saqvdv^ zX6d+!ye$KL%`tT2h{&$$k-r2rkFlC--SPa6sOTUEyB(M1?e7*nVx@grc&%$~tFPu# zT;MD6rUO&@Ybh|L)>?ajNkYc{h@}q@cZyet=4w|4Bn6b?w}B%vZ#S0i^5Sl)sPv_#C}4O6r&3$5(#i9C40)_CgN*{KMnwE)GGN1dt|f zG_s<8DT1?hyerPCbwkufIIE9jIGVea5v}|hED7gTkYB5-CU9vYf5sK(_+3aG4#FCz zip*Er`iclxtD;cZ^9)sEqZFY)R6if54yp=@01v&fl6`Zkt&Q1I*86dohjEIk>%SUQ zqPf4m=`nj!Iut3uv%8-!5=6Pg%YFLwxt8r`EhP0D~@4e=@34U^SocbP2gi=sm{Iew5p>1jZT?~33y*Ww;w5QVI! z|Itr=NH;3-z5Dh^W6P4fjfW6-QrkL)^PttVJw>aICPeqES2!t6bK38Vor(7jvVnxR zl(TG#jnIcxRFe0iK-nN5d<_7Kuf%gYyTmF-U>0i$XTwHi!B4rh;$91Xu^x^@|(HGt|K{7D3?b9eD8rj6)bkgPEe zz*#ilxpz>8bz(3{l4g0l2HVKQt-3J7llX6jsMhI@Q=iN>(1myuoWQ_PSzwFYGP+w( zG#0fe#C9H7BAnO*r}2i@SrwBy25YF-xX%$d4I9=O)-g>Nh<;fRzj>R+j9UJ@q7i16 zB|=GSa<+8t2O<>QTIu>}$pa03;72tWP_YwLE}Gkw#(G+AN4Hvwy*^Q>bWflSEgcq3?sbJ;Ak-j zZ#d&kTDZ`UB8nm(2dvm;6o)ZAvJc0$ZQdpHNM%9R{DPA0hyk4+hK*|76SCYkVd%c% z(TnyCI*~Nmx(jUg;R?x_&MPr8`KiNyK8VJF{jj8U?i>$6kJI!RZM{!=IeD!QE5EtK zf#-`dOxmHPM*^PyKXle^p&bLTpty|=E zXk`}62O0y-Yi4_ZA1Aybn-tCM^_JJL`N}M{iWhN1b`~)>R)>JB3I&%XdjCKcK#UTS zAfQbu^1Ag!qAWUoCKI^E$(eg94VNNj3fG3Ogu3%S=r7)62m&?l=;{?}Mcz++EVH66 zTP%N_>%S@>jt*vWKPoj?rSQC1CE9wfAVvMap#9;}z*=n~e+5g2r0_g3z%x>lz*F?ci(2juvrjed zGCo1XCvZrZvu@KXA(dnJE{S{GH)LJEf7g&>p7#xTLhNAFe!F*~A?vhiNO~jlDWyT} z>rI6kwbhUl40N&~os$i@%I6osZ?htGu5zWYZT~8MtT83$hw2NVRZ}P2=LjiQ_<00z zVH*%K3D4`EMChy}LTyP?sCJDpi6Nv2^z6R0mE%Jy-CYJrM6K;*S%u3Vmb=a!3N8T> z&j$eL%l(BRGaa%Q#?PTLZR3@6l-eg~dY>g!B{YggN<|gZEF>Y7lP@uA!*r~lX&9+P zL)Z|~SyMnf`f}HDXE{VAi7w9qCx(D8eb~>$(FlJds zBPZNzYn0su-`V#~|F);ke%AN&+hQB*=|x&QVl3NCOR21<-%%PpeU~wIvZpWXBPL4r z^dVUZ(Te!|qVA(sq|SZyZIZgjDG7a?uO1yLEWHXnSrqW2i=3djB|a&#z-jy@*_!dJ zZ{01x(@47n+PiCm7rF0lg1r#zap&=5k*yT%sugpA+4|o7L>io^o8iCBVNVvxY{_=Z?5=()rP?1(Ua!WWTrsD1Q75&1jO-eI(e;-T3=u})$$Oeh|()VAB*(!~PGwF8yqeM+j^y*K{c zT2dfyQK)c!z>%Pav(tE)_f;!8kT#)wcVh#-{KG!ksh2fakC~C?Mq{{lo|9 zN**t(66CYc#Kl26Cat+<#FWsn@2UJr|aBM-oyyp|H)HNwuvyb;8Yh^&O#Ev zdGBi+3#ho(&%ca~?N0mPM|YR`3!qTz7VzlBdO~Lrr}Z85&4;$(FS04J+`B?^*ncW^ z#1-OxGGADa5xE7?*3tALXg3GZ?x2Vw4NYQK{-)y=@(Gtz#x7<UTITt{|6%6FxA_(C`bFK~yeH--rOb-RO-;mnIb zTd5C%b}G=s4$-_BISCHD$tD>Hh+?0N_ZGMr0U%hR>(?sEG~OR-Ni=UVD!@j_vvj){TqY;q6NgBSQMk7wLJ`N_oYz`a@ut60(--h zttf6Mj6;G7o6q=0*s@xqWxRNQfoKzNMmt60dsHOa`yHH>*e<4UdcVxG)kB+d)TW8b zLl++_V`|#;Dynz4EfZ9bX^C=YQ7WVwW-Z~$kwp2;-O1QDDBn)D@uV!~qINeVVmbud zi(8f?rVXrj3JXm-l`jn4@d90o9_>`WOuTflc?_0`6Qp&XIuwIC?T>v01oxlYZxE?}4D$sk-lf+0yagazeU z><`l4;lctMbZOOdGLbq#sIO!}^_N$&nj}=#g;7w_*vK6K2{Sf-bOQ}wkArOBbB9S3a@?#ryQjS}e?PaN- z+p$#GsSWLX8zA}fICbc*UQcE;Ve!zA9f=lg?BZMWG2G}|6xQ(QQS7kD-;btDv@M=8 zne%;SHD$TwuXAl_iZDTC*&>>JSE(=7lu+4=5aVBxJ{s70k$&C7p7h5g(LP)C80qiX zo7av!{KmaU=NnFHv1f4GAte zDnRw&FNKyU{CZXbRrf~%)kl>Ems~AnY2HX!s213N{O)JzsGfr3 zdI?|Lo3@Epu~Kn8veuVwb$eJLa~k&Q4-?ondfeNT{9m4aeTm;sL4RqRc3aA#%iOV4 zXzt?<_hBFcrko~BH@^ApF$sOSd}ic1ntL0`?mo*{?d}k=Xc(DM=|AtD$N@dv-dKkrvvC@OSJ%x_7-uTwkOL9(y;KWw z9x7ZAVcR!U8E9@TTcXgcui&DMimVzH+2Yn{DT$SPj6}D>cnv;5vou|XdW(F6f{T2j zow?dne_wN6SGvD3*Xor& zS;+hh%7(c@#ImiBxkG@2I!xo;>KxZfV(x8BU#n++LFv4PQ2CYMCfiJWN|!F93=eUa zZ5931|5AW-YMzx)KdnL+tD6rdMcsV=iqHkB(eUB zK#;VHM)G^w;u}fqMZSQ<;07yG=idAjMR@{+Qp{reqmnp3MSDC){vqiSqQGn&VEH>O z@?yH1#}Wh!k_gs!@?yGJD$I+iRG%&)Pas!pYfOaP$3C-=tFiobZf}q?IaDjBr0YR4 zy&Jq2xnCCj4~pdzWVa9o>g&2cdtQG^Wys@V;@a|<_!dIHBXw| zy%>OiO|q1(Rd|~Cf<@h(mVi51WeI3STt_c!eV%~5CsNiXEN#;9Tzk_Hgr?pk_u~Xh z38eaLkaKye&7?XpT=gb9GIykgt6b@|1=;!PaSFH1NT{TdYF2cb8DLMlF@d?=0~&g< zbw~54yPr2P@{P7`z-RCQlHE zlhQ=)XO#x6{%-2f{BDu^WP&n^6Yqn&nj-Z%W~Jag`WT?K{<@aAf+cFBE5u` zB%Jfftx+|aZ|xAY?=qi6N}+#p58vmTQw&gzOegS*n0IRC#~A9?e0Lg&k#A51+ZbX< z6HbCie%w-Cq|;z3GB2oa&KDc`YHVbiKQw$wo11Wl-kZ^Q*)zkRrA34p;09Qd$;Ymg zuz5gTS+XCNM1#T81J>nModSFFe+$}{ zX0Gq3xiJ<2ns%;rZwI?&b~D*N0Dss{3yeRW-ZxJG=o3XA{VZA6Za6OeE7>e@u7#@>`Nu zATXiwR=k(yjTDqn`F1h^=Ih@DhNVkn1hiCm*+Tj`vpd;J@|vq;_(FVZdcH*%gONGi zm(W(i!>Roz$b#SRJ{4O>bB_ZViKVTJ`It$wip+2K7Nj}+ZCczjR<3%ZxdX_jB@3L5 zQt6%~UwoofQIhw7GKSA(taP^O7z;|$KSQ~Z1F=!hl$r&%XuvEUVd-e@*#R2I7#i(Q zwbyz@W@7TYh>~jZFA@<;Gym|BSbFCRr*^UrjmG=W;kAs4EFLNOA*jTpv_F;zf|UK{ z`J1u-;}#Fh-GhaB3X=0v@IFNM$33~-%zoCpqtAf^xH>E(<2D{?sHwI_?BhASHXc86Y*k}d=6@-R;YoFJ*=;scyw@{f*P?W}4&N~F7PAq?&`-Im)RWuehV;PE)W?2r`#X{|c*;x=_ zAfD$P8(6Ma`o7@+zk=G`o7B?tFFqxb2@LKdnP4vVaU zA~#P}H)xXBykBo7`eN|p3AIQu5v(c){w?Wb>2|rwKJzZh?9ZRNpRXG9LPWNktQFig zu=8lD#1AQ?x($iy80;n?RLZy+DZ1$E{X>0cB6UsOXEg+-^&kYj>U7P(&NF5^>UZx z)t(zTe;bR1=5c}nYwJQ~`>OM3Voo7}ry+-mkzfzs{HOu zJc*dU3>1ySZ2T|vZ1hd$eNuTXcH<7`tIW3OtKwPW%h%xonF8I1W9^lKiNYeWfuyhi zF~NG~B8JLBpdITXrjBa1Ci-;turUX`v!nMJ2&sG6$0}Qv~N0Yp^CwRs0l>5+TL4HP)>LyoR za@~argow_jv!IbW19lDgVYWETIJ5XPTGJBWH_;kG6b<*Oda24r@}Yk2hVF-7z$*#s zO5;}ZESuZcKt3>r*US~$(PxcVBCPr3*E`7aA#(vny#yuIgv-wTTdE0Z*)qu{RrCm~ zA*vCb6|#7SBclA`6JQc@aD*|_unb z9Qcvi@xPR*g9Jnnv~Cke%gzuJrUf8&>r6 zdw8RyrPj5)-RQ@yJQ}B~)7-$nh;$m&LdR`mZINk$is6Zna69Xc13nEJf1xV(Bs`u5 zygJQDxK!(tqrIQy&G^djhhtd32{U{8B{|_h!=JC~-P`sxp>N^u@zwbm7sBBaAYp>T z8zb4{~h=R)rcZ5#ga_g=>O!pr`Wj{$W0XY5=qi~X_l8kpPb4oJW3Li;E zb$+vpCaCp)JNL4S60J{{At&<`&HF_oSsPs*t_|cIDi-(x#LuI-=O@4i=JX8;;WV@R zsNQ`&fv%r*!G%|yf8`~Y7b~dAD6(mFLG$8?S0V#}Mv*uMg|AL4{0|jIG;f~miFBQQ z;iG=;)$Zo!^zm;;^|H4t|5n^1-3RKBqc_$=$XtL>2cOq&wYk(ov75Sw`ciu;&ksBs zELy>&K)t)k5YV(K=jR)AT2bfTwdYXTuB|+tYqInktoRvqraD4pVD&b3+F+W>Fnw`M z+kn{>;|Mgy)iR%++mP38b8z?Ivd+pG?L13w@IZ^?{M2gqGt6TAju#iuZ~!nsTi!>t zv68p9bk%oz!ZuJ4yU@VOg}|rW|2Bce6Q%26;WTU>n>UM}>liOcDs0JV@ZJy8{ ztKF#ye9-3sK2HjYA2u9rUlaOE`eXY0`dH^4(J!bCbWdR;84)IVOf1}2hzq;G{GK3? zoKHrwFrhnY3M<~U1{Fp$?SJg8v`Ku$dc&a1epV*0t5hHt)l|AmZ4RKSpmaymFe@^1 zYuZ>PNxiWK;{yw{@@VaTDZLxbttOLHjyNDi!WFj!)oE9R*V->xX=NSguiN|N60t{( zd*eNIPlJ1rU$y)xy-TuaXq*-Fnkr@%V5 z;I_d!J(Mrn`$lu()Mp8Q&3a_Dn~whW{F5ZqMl(S*()YL8*Py>RADPwIe{THBa`8jL z0}rrySwK8C!@*{=T%&03P3DIPjj2KX-F*G#j|UxfrLSN5x_MgtBF{DN0+p(A+&a!F z_44I5b}{)w&Yn9-iRp579i+-Ntk2R2p~k|aNe`$6HJL!!l<*TcgrGXgquQ{C2-mrg zH;YeFz2;}brm?Y)DS4ZVQ4HkmG`=SMTWYQXh9nDlOJkN9WdXeeBqjRS%eETDLS?$X z5me^lg5XV6$`ffUa7p_8Y`UotJ_F21<4tUG)%Ml*U#t!rVPI@F;gC%6bMJF}6=(C4 zF3$O4RdGP7f80RfjWR9&jkOZieVg3)R0W^L8niw_cv=NRxX29TcgPKh_P%9}nv(ZB zZ)yGx>r*{FRn@Z60RCdZk;2&Fc1?%BW;5wrhTB?HWl9~QzYC!>Emg>6Vqvi-xRWz4Jo`DWUr zVI|{&pu|iokvE%BBJ>Bb%x$WBe(5$H4Zw-2topVhfo{Bo{N7kLxEC%|kL12bmV{DE zX_#vhb!kDT*D%MXmAy=5Y2ui-jThbV_S@iw^DAHs?`zyX-IS?@`u24%>w~#sZh$3M zyM0NDw{WGJZ_*cLRNa^p)D?c^f*Zu4BI%m>MzHOy2GJQ959A||;8$@5)(HEpPNeisu6PYH#*H{G5b#9?(p_*1LLiWkSBRWpmbf=U#Q8dB1^c zv7mr}ZPfb}UMC@7Ii6no8djb?i}A<1oo^WVAv7qR&T9%Evx zUH6M^4|rg>au^ll!x=mlr8JjYmmq_YF37&O0jzU<-|~{sgI}*tJL?G^X&Z|9d`Uw|KQXkNt+)5txV_56Xln?NzGQyuT-{d#idRO4Q+r)e_hE(jf zlPlr}+pkZSzGxk5DK=qz|8Bn2md51%``vus33!2kM_a#D!M#mMpg#8nsoaot>^mg@ zb9<5>21hsabKQhcMdtCVeAH0u!9XQcuJZ`|x_w^LV&f9fpH1vt&ff!lbpVm|*eKR1 zsfBNLF?12K=586c(Zw^}75fD(aLqY&Cr$GdMdIN}Ks`ZFpCe!J}os}=j}n@i5zG~)J7+7+t*+CwLp|WJNh!AP zq^AubqU;=M8SU21aLVgy$jGE8$M$|cPuh638x|K|b0R3?SPp-miNJYIF%QU!cuR#IL!*{cal z4>`kPNrCaTOzT`LSo2-N z4j`rVV5@dz8tq}oVqtgq>jVn$&(v}3UrTlzRanQJ4QOjio!dAg*>So*MAgx8x?kRR-0K*{*xCA0nttc? zPUk14$@5KXKQb=AJ=ilItf`Oql~=lLqCveE&CSR_Pck%`aV@+i*W!id<|pSikrYhG z9vgcKKnee{+RgffV(QR3cXnMuO2z-t_FEc)Yd>5w(3QBo=WV$jf3e3JEu(C|4|V#} zcrU%wUo5-vWh;O@^Et$4?_RtosiE)}{l_=NcQ z@lzw~3wsg+taVp;h;Vr@pD@=gF$GZL+)I+b3!9eQ*o276&mN8-hRQ}EW*%JeK4mMy z2ginxkd7~v?-H7McGHq=XBGb{Ov+XiXR7u!<3p2|j1OHt_f#I{w44)eTe7WJsB8jM zDB0FCRCYcOq1oHYR!r)}oMA=lGnX|Fu6oJWRWFe_b7FgNze+*q-uVSti*%S<32lZe z{(ee!{_G}Xazn0$*Jt0T$k4r&$-MK+8zyxykS!X6jJNW|GATAbG!ZbNnV*agT{dTY zXj~-;AB_(cx9-LI0^S#n51q^Z6~X(C&-j+v&wnHDx%|I!Rmbt69ZL#AGZ&3$`p@#p z!cZY|pYxk~a)rtlNd~{?Pl{aFKWUlUU@a|Yy5nh_5)yFG=gWV=LC;tJKw{R9TMGN+ z-!yS@KX%*2;@Hu=)fz{Vm&uPC$tgBDY@OJI`%L_9IeqOHFY@sv^BBtEVsDR7?uSdq zW5zDGL@7$fXbiaAW5(+>`gV#v%A^x)DQ9ae%C>A9 z40xv&Tx*?L=16_bE8uUF@aRpMSv)i?K1TKBxTn_y*kDJbxbi6)jQ=Es6`4;hmFudd z2X#Bt)a4lT8Xt0V$2_mXb+eBUCC*sSi?rrfy!i&YXI}JFqbl~_^3qe3vX&7()Oiz@ zv072XfeM>_?n;-)#MQX?bEtXgTgx3Zw|q~?;CuNKzN>Gm^c%GM_N`#Zb587HHqZD5 zR>f2a%oH^69P;=EUV^QaI_{G2HyGb~&10Imzcp8spSckSIFimXDa$hXg zDi6m34NOSh16z!RDfCxs97`CeeSv!f(Gt%d>Fu|W3gRoV#ucOhkJ^aOEO8s>(> zvVlEg5kRGNTv>JrzrThiGFI^q{)|~P97h@O*UmC1W={+2>;A!4QAKW~2Jv3I$f=wP2CUY-t3y z`upu9D93}AxNh6{8--mAWZ*0Rl~ zkTN6uNHK-nuTP_^^QMudNoZQtft|0iDp@=@Aj1UE{XnPdrcAEzTBPMUIiZV)i~P}vo573(D!TXzCdiXC-d zGxs;nqH1Z(JE1ZaYb>aPTw%X83@qKnre1Aurq>8@47Z0-NLqajNner;fV;@5YFi007rKSPu*H(; zrVSeJW%*60jLnVD_wx!?RZRlMtEgnPtGorxS3@7`jIh*YP`+f$z= zXGP|-4$ZI6t|_!7Hg3RP_yinrQ#fdQIHtP#|999;v2nU#ccjP87&w9AIilt>k{nTD zM}X3)S?X!8%{RGQky!Ctz1#i-WM3EF!_IbG5i0+V70mI&WXsfIw?8}bjmv7>7vxmZ zC;Y19(W*P(x={IaEtjUlirhno1k6=U)pD^oLMtCetj5dKnRIEZKfFIy>u$@Xi0L5r zH=uKqo(*YlG2Cn2J~J6CM}{=&uwbuEzz^5Z-(ttt69#v^dm0u~(qjq}_Y;K}yVkna zY6ZR$x2D#+5^GX3J^uc<*KO58M9Z~)*2UP}}piC=-%2$&T>%)DZDG5c(g~}eq=BEuLxk!>*lJGV= zPL%ELynrpP!Qwjq(?%yEaRp?d_>TZ=@Nrb+H=6;<0UYSTzoUv_jtIR^rz!=<_IlIe zDAbj1+)pNhBSoziQVOrDQOiAPC>^4-+~V6z;S1hJpDSgnyV_D3+>FO?p01V4n6OvA z-e#(IPpe6bD=9hqDpDFuiE*{Xy5cZOjpY3Z1QEuuvH5G2A}|yBVl%^sxIu&a_!enG zzyueAqs{l0j)6D(QoRR%4&ZU>R!TKSd$0PN(d~}+waLP0QofdfNWAR`?OI)BG^4%Y z$Kz}jrtNe>5ywua9T-}?huUvIV-bKR?QyD`Mq|uI;Q^sq%$EID5ZMk5`zoGt5Dx9< zAIl41C6`?w=)O2ix+wP&mX$~i+EUgAriJ>i&_x-is?=!OqUo+>(kJlpP&0h%-ADdC zRQ47UBB=%ps7c?v9DFKoFSilm-Y{j~ zl5IJ~Z5iAbmTc=2j>QKB<8kvxQzfQ`W}ZQTxe5c!W1L^yigMvKL`C916Z#0Ria(~W zJ=rdxVee$LmhP7|1pkt_e}-#(cDOGd-PSOrMcG0Qf{9ecyI@XY+Q9x=BlPl{lx(58 z6%A8%E7>Ca7J}cFbo^{)u@Qd9QJ|_RIp>vZ5q?{Q-(2B0SNJ`uuRUcs&=5mcnlEL@ zGF)72VqfnL2e*=eeZsALE5=%Ka86#TF4IpO5YbS)o6A&d+7JgitbgU{X(2SmmmDzJ zb4$_rbBdzvnio#VXwD2t$>u)!p=pGzG6qa(*P-ll9gmB~niFp|wPY*kf738!Pl8Ug z_w(YpC0o_rw}bw$-PS1_=#LXAFsCUw=P4G|O2Mi%3|DDyCGCB^XZ)p9jZHrt8#|V* z%P9b(-La3PzZX$7G_$Ay`iXSKEk$n5zB;`sEf}^>s(cU+^HH+m4MJge$PkZr^5dcM zg~e@QjP!`uiulJgcWi791|)f3lB;^yy21@!Y}&kFO7r+JTCYNHjqIsAndq)NDPd8L zRE%pa0*TbPjDNu2=U0u0?%urr=LIE0n)eA!n>#W(WX~xXt+=@53~n=u?*_afo}HQv z$ti9}`qM-DgxALZk!sJM`Tc0mPnE^p@0DcFL3~+GpzsqM8p!ZJVLlX98NU!i^k(E9DerF%0 zP7Z8-K_AG1w0IEc(d(N|X_ji;-xq|3?9>+HSL#l*=krGGd9|mP-}i^~49|*ZlvRdb z@42mf#pHdV``#<8Z;*y$-NixOw?Dw>Q>RWs27i!bik9++be1Ipfbx&9U+hPa28%4? z;+;hMj6Tu_Rdk>NL!5Z=6BC3QMoQtHbiOR|Hda!$qp7p;-$P5r2`|T4s}@M&(6ze;%|oO`Xw>@p4&>Rc1cM4_vZNpSSRs8U+Th6EQ9N3C?Te~ z!_rau5SZYzkH}&8OeI0~>_9qigaW+W4^|x@MJ9I#-}|q?eVta7P}b6gCA1|$pNq*4 zefBpGE}cGh7U;9q!MR5#fQm4K3=3=N`1Q23_S{5E2Yn$Tvn;@<;tf(0`whQTjXqE7^aBUvm%bnRI9mf)6y2r||e( zc?xWt$a{KiMw8jc(`-}QE#3>V2h_yGdm0X-1{V`Pmj>3x{Z75YtuZj?&f+n zxb}eY^xR2bb~Syewf*C1Z!_A9CyLYY^fIAP71JKBG))@%zt*4bW{(oWweUj8h!1$U z6<8uEg{$sYg>xHUXpcSJ+1?NL_I~jHrM-Ux`;xHue#Ihea;xFs5mLnEnBZNMeHS0; z@2;E8uqsUBj-6&*`-Tyy##Jm7-e+mbxW)~=kDU-&?wwb)3LZbwg3(pXx=qI8!?C5V zzhb`pFv*pW+w0FjO|9WPS#72GqiOh9==2*f)WNvQ4ekw<6AZWT9w^2W3zb;qps?}% z2D8S!qAyG}l+H_YovS{e3!B6TdHa@t2l%5d0L8O>QLBSVIX9AbR-Q9&P%vn1sO)O0 zwp#J>UNeiwz_;2hxYv}QoMh|?D|B|ag1?xSc`QCJU7^C0CJ*;g03Lq1CdtFqt_LOl zBoBfA2L&f{X*7(u-&dj+l=r6)xfj7gq^`PKZB294%4j7z*w@$1*H-|Hq-uWq?0;3C z&M!_})0o$e{4QepNFG-}m96eDRT^!7KIkV1=nf<;z-qZ`A7ItnW0g3fI6r~Uy`E{_ zbZPkX_@D66eT=%6_ZJX>Kjdj&B+eV{flN#X^21q1_G4JTaT@8wmug+n@4P`tT zpsyBC{a>wmzFYkP3x0K`(c%!ifW9Po9G)U^Wc2c;rB!MH`x_de(6b7oOp6qfz>H#c z%qgO@`+=_1e9OP|FIU7*OVf(~FZ@e)o|zQbuEt$N)kw=n--_K>9ZnO#JydpeoT21v8pJUMn-;Y%wOx>CNk571IpJ;?vv!PDiXzG+(`bf`j;c9n&Qi> zE6yN9GpumR!3&zn_PD2U+oguN;F8LqGI}3vvzgQz6i-lH@rqB!8sWc$of9M3r2o^X|LPU)kG8*kxj9QG$^u98uIJ5_ zpx_DPGwirbAG zw7q!IhisOBs4HC)+_3oUqz?TIbExLTZa21VOv{A-Y4a_nABmUH2_j=O_nY_A_-^rO z*8I+-&r7A(xVL?JrktG)lJKlwBr2?wA^sTj2$w87WR=8pQi3-?};#A!7EE z-6W$$H2dzS@Mx_YU})F77m}d*r-K^gLCL?&pOuh?pYiEt4@pWx#h8RNX#bk(yOH{W zen=c;^uoTXkN9VWTAvK2q}`W`j^w_HBpUC(muykBdz~ui2@&VnRCfY*L|G?g_a76utGK7Rr!|KC1fzorsBQmNU`E}Hp8nO?LD$PkGMGR zp5Y63zYuiQWQhA)vZ`HE*j2kfPBpBxM`^>mX(;?;>ETu-*YDD#_(TR+QjJCFNY3>+ z_7QWMO}d8!@nTnTjvtXl(hJXiv;*k|L+0bt3&(-B^Ed<10qEW{*-2XP3}$e=aCtWF#(BR!NHP-5X2nbYHwA z4v#x6@OK4vw7}Zo^nW^%z1F?=-_=d0$yGXB1L3W13=6c((_jT!p;LhVeh5ZrPu}o8 zrt9k6i4lU!H(-La^dfP1<`5D`LZ?67tgU$mtw}foF9-b3{O|B*J)}6`zo1=&+Xx`l zRp5hHol65y=R~p-4YA-?@zjTu*_N`kFc#hPiAh8t=z{`su~cv^kNF zPDkB%e=^nIP+d12p)dQ9-#g{|OSkESle?|Q@@_|I)8=VsnYuiOA0oW*K56xd59QBG zNv<+yOdEh*m{w~j0An7DyvUn6PlUkSeK%szdQO>3l#8~%Mt=L#iL$HRpdjPZ6r?pj zoyq5Jq{Z(6*IU1o0Sm?u6DgFYGJ?AjQ`iyjIoYkDN4-`pva;3gzLUJjwC=eKP>}^^ z#%9`}r{>Jq+32Z8)J4|sp8zdE!A6HDDkxw;_C<+;5=e3s3@{SA}+XZxWt`mT8S&Gkl*`r>f4>b_{_|6?|tt5=f~?6y1u8XPMtb+ z>eQ)I+gYHZjheB-BOkF{xZd81sc{p6V!jI4_!{Ia-#@dTu|X-}ineKdtq2TH{$o``SrLBk@7#Eu?|ukN zd?<@li2=LO^`^8bO&kZ8r`GjEt85m>vWli1-7{SA3UwXQe^dCnPY4vv8d`^_mX8^d zIBv&~{y$uCLTR*myOBI3wz(lU;dfcAx+whI@a#Str)?XEaQAt8+BU>}MJe9zvi_T{ z*rRY}RrZfF*LHcU{9Rz#MYD2-#Hv{tD6dSlqXHv53p>F2d>^BQ%{@CT^^0$)R`7WAuPIgfh*RE-#j<3W6G4q^k zKUCZQ$@5`bpuf%jI+YnJ!{0P2FAFkW@a28|1IC>4u!z#DY^ z#E87%sgnc$$G;js)&H;lj|++PaEmJ%THfqZ9AfI>4%^g#QRqjB%@{wa>trGAd963= zuH#n|SO*U=FsRm;8MFrGVls=O-C1nMQdBI|#h34rbOsGPYeYfwb!H=z!ktUg=`DlV zx?+fHkXGzqBL4B~Y{1;NUdR)J>MB2GuG)b_7<5N~J?qXaASHi^$-h18m|My6v#1%0DYJ52I zh3z7$bE~!CCSLFuNvYRBSwF{8fKnkjP0Qj1Qw>YOOrN4=fo7?7u04t1$5kG>?>rCP z!$U6;v^sPtKl(@T;`-o)=^*bXD4mXb|K#>k&g#&>bYyktsQO^PAQ(&;RVQ$@NY4{3d!e9Jua!6xg)Hiu+CDl;i;{8l959)Vi7v6Z-jeZnIr#oCLp zu{<|9R<8M_X@I|@8M9v3ma%!L23|E;46pX5$H6Fj9q6YA)zAo~UI$vX6t&c#>souN zw3&-NcjE;;UsLU?-20}l>;j`h{f@eB;_w^2Wyo?nn$%aLAnjv8TFoC)uFW+P>pItp zUuMnW%Adt;qwahp)J-O}sGAu0#DAM2)=U{+BpDcy*RIdU#k2Ac0(E-+z^=T{Tqjgi zRj4UoolcMeeG^7CV+C%+yzH5w4X-xk`roh1M=-%F>R(g7x@conww;;OCZcwcy;I!+ zeB4<^+N^T6vWa7#A?Jlj?Z-9xuPqcd%rfaaQ@t! zF?H@LpzdZ%ucf~)o;5jFcOGSbGq#ug>EICku;2VXNyWyovnxnQ_xp zQWc#n=Q=m?YGUY$r}0}BD>#HaWwHFu%32-j$WPFBy4DAkCV=LpgSMT*dz1rx;g!V) z>^Gs{b8(Hh%S~U}gS>l6V19;6l}o4gO`YsMd@?PMkN6C|$)E~OC6CfRf0h4TVtJ;t zkFDzSall`qk(Z71fwKNTMA{<{{XZ>V57b5ly0v#RskD>LGQ(0lfSMkp5Mb4 zyzCsYXp^flr7a05Z^{Pax|hYvwmCl0IrBwbjl16xg|;d(k$)=}dD3!9sOM8|%kgHx)yUAm-sFY%H@tv&F zd7sa$n}TsZyPEna!%*WczmhD~p;7fzoLwJ0GYHz8DRUY@_VZ5jVzZ^$nK0+^6 zaRZ@4)7nJ-4BQy1{%pn2-!FkY%!evcGhx1fSgf@@@V%tk)f*G&Px8pgcB&yXkLlqC z+To5dkS#}5)BfOmho+G~W4)7oWgnXUU&%-6`3x^d6b18M(|2b7`(;;j*s;}&UOaqc z%!B@mJ>phyaDok_!9==~v{o>yRu9@o-|>RFDr*%D7GI<9VCP;S4BB_k`rsZxa94L& zdc5#kpx$C*B1oSWQeIf2A>D~!_2XW|I>{Ou%{s}6?iuVjMa2uI`wTg1c{<6Nfd;-| zqVFVkSe_|u)Je1-S^eXEbtL*nzklu@?nr5e>d$^?E=3{my_*7gJaB=UPcNPA|AMv4$oYXh z)$#n6h7>E+ZA4D$O;rElqTGIID>eNlqGl)~jbr~Yt?o@jm(U_*1CvjZBEhYpFe*7vRJYqjMG z0_|hfVJhvM>}AFO3x}yR(k#kO%}nc8+F`+KrsQ?fO%-(edE&hO4W6=7~SMHO@gGGeKQ;mHDn#5tkYLYA~Ta|{L(w0 z=jf+lmE#-jNJVGCQuKk)wd`oIV7wrz%`Gr)fF_4KC`j7)1V310Q)t8xk<#Ozej`t{qW{roDNT{CisLG#}?A`LcRH*6Zj~nCBp|z(|K7HxyW#Ejr z{YF2Sn%9(rhkl9EB|R&2;ej?K>_O^Blq`|o;_qsaIyY2h$dKU(ox9BXutMW4RHL1! zJvLrkn-7C7)&+fEi0Ig1&so{{LD7q0lojBh=ok|>BSK{yl7NQF+y?_9kd>St1VM4o+2+ykbV`#3$Fu|xmNPHeYW#|D&m59U}JsIg(&IY)VZc)n_g z34~uH=tC)pgFb$8dH%z_gfygEPClBG25|b^cAN<9*QmE4v2SffiRSTZzFpc|(`Xez z_a0mt(x>j!aubZpkuKUNZTo3HyF^9Sy7%>Kw7nLDa*{=6)pob5{M)(tX}EigP*Uz6 zW&HkAFMSuQiTGahp6p-bw%RS%@G2q?HAEOo1$$Jhx_VvdVdOxfA6wzh1fQ=FZI!x@ zmd6@6W055Ct8_!STvI2uG!CwQ?)SGYSMB-+MD!-kHV4&~e^wmZo@~dr zrm=em#CE4P>06ZCz3Z*Mn)g+tPm>&AwToP(noKqFWv1@NLaiF5+mZZYRbz4GSF94O z#_j82k>ix5IY&0sSB|85`hMwRlMvr$;%(Rvx7N)xn%VzAoV3vb<`1+aC()C4L9Vh@ zDx0`JIY@JpPlKMAPZH}Tu3Zxejm-lq- zpAd4NJb<_~Coi+uYBviE=KJHk#5>{-^}sn&<$nA?Yo)a=`DdZwtP8mO3f$>rbzedu ziK7GZ8fg;Sx|kzv-6!|y^L@QG@%A#Uwi_8hmC+I&mrCja5-{It5*cdU`fem8!Dz7fwu-~DV&FYdK=9f%`sfMc!u37naZ z9kR$xuI)dpX-q<<*;KpWOYIer$A$CXm#LLJhd-jfp@ z44wNxo=-5+A8=#J{$Z+_X|wxG@o?UA#15^K(vK?-0x!=CX`c9^5PTfDg4&FK!b|tn z>I3TT(@erN-oy*uC!yynd+|`KzO)~7;g6F3iKG(jqp62YuX5jF9tGJ9hH*wzE;l9` zMa9{=*6vCm$s;Yxw&V>Qke22}&VKwjJrG8E={x&t(P_Hz5nYu=FAJ;objvDB8tEy1 z9e<&CUF)7USh!+YplX8=*OQ$bM>(cWlyu!!Cg%$NW`%69F_!l+pAatD2_`0L^H&)I zNEm#tcMJJetH1Ln6KVGk7nTP^Ko)MiQr6XpR_=u3zPSHpb1ag!WU%fY)cLXn6?+|=fB#&tEI#j zzYHqN`Ckh%{mtEuF`w>`&M{_64CmUBcVts6ZcJO!wsSs$ol*&u&K`SK&U1I_-~B)J zs?;|P*x|F}w{AR)Kw0Ft zUkPa&!OlBZ)AQjXEjZ~|5MATd=Y1!%#f^cqv}$6D8#V<^&+d~4Q;eH(qc|-y^(L~( zOl|IS_{EKT|EA~_i*&nJ#=ltO9@U*&>Sx!|7J;OmVg!E0F0=AaMEcisDmsgT`=QuO ziPQV8$+E^5_&mG0OI>n2K#CF2U*}cr24^BqP$UkTrDozv-zPb7>|Zh%nzw`9k(|d= ztDFP{L5b@gHM-%(qUYd-_u^e<>afN=cD`6y=N_HBfEf#(|GL54cX z40BSCa5Z17o4(88`s6F%bscR}ml!+9DEQ1h<1>}N>iQd3xer8}TOJMc;mX&<1KSc) z?e?W@2uCFE`OHkp5>Mn!BO$ZiI|k{PYW?{|iN_?FG>2hV1t!hRP1@{Hs}{NjyVZ4O z;N-p&EStVOB&I<-o|n0!CN!= zw-P5^azszaR-S?6q004TFyGJ~kuWBe%Qi(`?Y7XMp0mU}SVl~FZ(GL1*Qhh0*DCRO z1`1bxXY~a~k0<+U$l2gtH0?`aZ&_5W>oQi{!KB&X?ok{B-2w;_Q)jAtH~!dw`_--m zWsA@m#X;eg!%jl|}-1`pW^CZI+Btcs}VA0%{JVvI|Y<)`hNU})Kz+SA)hzG-n34g+HftE<+H182q_$_z!lgAz-K<$*G!^}9mr zweD~rvNA@g>1|eD81Ah0u6M|A-v|x)pNfbbc;*SojF0h4_q6(VT68Mk^;TzEEbn7= z%gyx~z{9wD$NP!ayGaIT|I=s~ihTW&Qyuof7(kp^NmUh zSKLYA4a&osvMyOK3Aai0K<&Kqg#F*N!kzyO5;Coj9>>0P-BlJk$w;&J-;kGdD-4oz zZ1*5Vzks#t-R8hzY6*R?JlT$JpSB+)ZIAw}8M~~)f_-iPL(YSy=@oUh1S>Hq(L=|%NaIm8Z>pBheGcdmYGleduD ztPDJ>Bj=%5_{V5)G{MYt{VJ|dpciR+**Q{1Y=6ZvRuqEzf%~C%0Sd^}&7MXKHv@VZ zvzhV{1*F(W-=*dN=w?Yil3%GL=>BAw_g2jG-}uSot|)ZBl*w1|QruVf5x)6c6VXYfE(i8LC395$eVJ`*C zL55|6I|wWyBp=EyxXns;kDKb$tV!;$yY+=X;}6;ty(jeos8(JDyn$P!&i(R*=1c3` zCz3Smx+kb}BL9zAL+*?KW3bqGgQ8+>@AN5tx>d#U-nJzQB|Nn2^&WblhfWo=I#j`r z{t=vBADj{dMIn{mS-K{K`(RbEgwZZ)`{#*g6u6e0Y2E6x(t>45QY1XtjIq zBdX!&j%&X+?RJK!JTd7RW;32_u$re3tLE#+A+7ufr8)9_YZ`e6mqs|Wx=wr?e7{ZU zIN-j{#Sk8iDC^vk5e(Q|StF{SA*}3=^BZ&WSKA_Py}j$@Gc7Io56*7ja=z;j89d>N zU&S5PTrl!joQ#r$L4Kt?L)Szu5`C z!L?5NKS8c@#!i<6E^1F{(amim2MMweNObdo3%USY)Peul zAf5^>8cpb*L}F1M(3D$ruztQ+)LB1k7j@FlJCxd64umMrJ6^9w1+SLsAeR^L-cx}=huf5Em8n>LtV@Nh_&+TWbwmx)X3c*OG@T@e$S~ zpCfKjJ0X2SA*!C0d_bXn6}nBKJrtUwP;-SU6xv^*s}wp!p-U9v`njy+I70P0!1gzk zBtnng6UfD1NyA9Zy^xR4&B7JBG)wHfQEpJr;MhqDx3;lsZ@Ncedl-mLKB7MADfM?N*F?C-JZ%o#S< z26qNBt0ugQzAZBLGhXOyP^3uJ``gV}4P00<4azM+Nl=vwgADGJOjTZ|DoJ)ZX8gVG ztPFE5rF;wl+0+})P$gd=~N0`BSN^-5q<`6Y2n(nmu^Ab_~nd-!G`dbkpuKs>?gLcdt>o zGWWOMZ*^29?zI%P?t_zzD6^fvbTL8W1#2zc4tHcjG>HtFg+5wnh6iZorqRIut?n40 z$V9lJr*wI|;En*_dc?<6)Q>1q@4C>uWd-dnsmdaCS-j)qDcTd%2A{ih;dSfPLN#>U z`H!pPYOeh>9`90?7y+&YNQ?7KE$};lCtnoqojtSOp6;_Td4?2t+P>S#er=vt8v7tP zh88Wzg5a#k2$Q$v>Wq=`3cteXiJ)D>e*IO@oBk-#`btf^Wtk;DUg5hfu@+$5m)Pc- z;{ZM15`UlS>Ix={^PyX?DuiXRWi7vr6O z1t{mYL2q5Jc;$9&KY}d?rZ+JKFF)^Wr^;7bkadzx zZs{x5Cp7bTmZ0x*SCdQfA^k@MBKw;b+TkAL+vYHZ+!&tPjfJHSexkB_KvyICt#ez4 ziryOc6Tb~6E`fe((EdfS57?-vS@vK32-B3+>QB*O&xUcZ=x(31 z6zX;(xBLy4ZA{x0$eA*j>onKmIBSv>=>p>G`+CGT1&FzGRJr_uCWEw^I<*(vX~vq;$xGU)<{dd=LwmTymHKV$o}H`TK`q@AKG51d=mX3= zbzM52Jtp6c$)A}78X~T^QTpq9ays=Y5%xD$PY8MMqx-arAY&x&V*WxG! zNt>)G9oah2rk<5M=Ra8aS6Kc{t`jWu%c|+R!jCPJ5JH_lt4G0m1KY0-R}5kxj&8rE z{9@glcv7Y^Zz6P*+%jv*0dn)UjIsYML+>++^yP`(_8EG+La!?Ozz}PND5YBN=+fWh zt#7&H8hDjlNRgBlu9#Wadf~7S%rE6z*j(~qu!@T&LDnChk(!dl%DEA z|5!32fE)}&jkS>BB(}=Czr&(&dxvnv;UG}tJw(#D(aj?wRc!6pTvz^na)08M91>vp zlmw~#dIrtS;9o(EP@L5O|C5BH+YjL?b`4TQ4g|0({uhZ`qN%y$;~M2a#F~&Qd7ol< zp2=cH6C)JcP^X3hPyAF8P#1MzH^|EB8m{;YswcX=SGe+AVr@U$%VeQ0;fkR^qMLUQ zS8OGX&(=IZ`;bpl{&}*iO4UvB!uma6m0HQK7_xh~QhpS*Oy&2M2K!nKiJ$LizTL`P z^h@PZ^GV_nZXGUunQNb0CzlerY(cKERj1h>w?nx&|o)Dnu(k3QIh;*kbnr3m6U;})MB|D5p?ONFkvAZhwD9Sj^Qa_)KZk{^v zy`6*&b^5M^W`{cyLXshDf;6i4{?K5HU1f^(5HDR%d9=xofT)-vzO5NvR+3e|&et$> zH+%qLR&idqXePs3o!g7_CWPUNdtn^6Rz;erVQm?lY|-sq!#9!Kmo|vh0so@gcP~%h z_ZalYjqYHTF8-zNGS-_F&31-f_1w|;+vj6LyTT*gV0LqzyN+KYCDNMhG9>9${(eR> zR}-l#{JytW7vcK62#Vw@ZEQhZXy;fS^J~#^{u%-yRU|;-BsbcX=uA zKF~4K`2I3!b4-^C+aT^1&6I9fQL>;V@x7IX7+VKTROFe@A=tKF!U-*cOG)yA(w0QG zbe?#EWh-gy;n8I|G5-WYNxY?O&JwHuTjg<`hM`c}DI2D1f2I}ee791BB~%i7IrXBJ zIkkPfBvFFRG24d?Px*q<_(1jSX=o71n;B0XJy1&^j{+}^PZ6INvEHHGT6%rsTrIO< zqpcpSo)`M*QeSo6mV1+O%3IO~(^rbkcC6&=6>ep?Nfz(7AMN%9VV~8g$?(l~xkY^g zHP}CnfBZdfzmzaqR$S*9iR!wNAl8hwqf^^gk0$~PaS%J@|9*$4tH-AK9R&6})(B-T z&W0|V^E|?u6Z;PX6f-@Fa-G+~)Sz}R$XDy$#Mtyn5G?lqsY>Hh#f9hZNh{y8gT<@C z$EgTR*&6p^v4#xJJMinT4sU2IdjHq-@5G|un9u(~@w@nvjQG8*8Vn4$_PgTu11ThP zCKdl%;`diNVn+O4#EARvi66?Iu~w3{0}WtK8_s_Xf_?GOT@x}=r5csD^h<+cpFgeS zE^fg!bD4i+iQRxfoVHI-##7beZrlxnD%2dI2$6s;IS5d154ymEzPk%hTMruPLCf(c zxZOSIWDi=SRGXrPtHgsIRjRK&sKA5%u2gS%(4ihQQ>hkv&>2L2W#!QlQ&B zXfF>sY%f5S9<-YWjZ>=2JZRfrtU_lCbdCr8;6Wz|ROUh7cu;&FK>a;vtq1ko7f>e; zdc%W$YzycQ9<B%YzC%Xq-T8JSg9TMhMi*gSvXq5P>#oT|X8&2#|a1LJJ?D@I4lm>#Mm^$MeU| z+xNi&+9gkMtlbRS-z z@CiOVU*V&Dc%H(C`S248AL7H0Dtv$sKcsNjhwoFku@B#+@TQ}!tlJb$`S48&*ZA;U zh2Qbv*$P+t@Jxjl`f!E9Px|mQg&*|c$qL`Ir@5Bwyi#uw`G_lc0>py}JDG16TAQS8H_c=2@u+B@b! zpJ>;_26s{^Lhz}P!gQt9okx-KO+e}q7OZvGdk~PZgo3*f7V?T?R*{ukxP%$!TLekmaEEC;6b)s&Ei?`@I-aixA{zE8T zo*4WIKADNTm4+XzzHGiy?PIC-3{n-h|AA)MJ5`XL%QdrN%X>t(k0{?)wVG`u?jD)$ z*D}r)YanTZJDE^WBb&*ED??1GZNHMM#_MhVrdn49m#~J!mG&0Ie)Aw8Lj%YmzFLt3 z@waU55;?<9%`XKi5}Ntg@~>r8{YJ5Yy!9bB68po=NbG8}-w_TwE%nz;+u0Bancpx? z44hlZp}T2H&mjvVx11a8d5;#gtacuvP1l8p#6f9!$O;+%yDHU8Qh9mkST7Io`sHx} zuO$`ld#M;;MB_Je%O{HoCK|_C^Oco0lDK7e!xXld{oAo3|z(Eh}Uk{y`Z z(98QkxVm!efQPosxnn1YD>|zoKP7!4pM9?eiSj_^>|`5AMH~6*VcoZ2>MQHMw=~zN{;Fk-+YC4OMGRaI z*ln$jAmrSHAS`u{{fffcThzA>w!m$5yA2Zm>fC`~u=6@BB_$7FrX%2fN6G!Mky6gG zq7e~yGt*hh)t|KC$Qljadl?>?fkMXp;)(=mjdAo&bF<)N1j+T2Jtp2NyZs!1% z(%g|ra{yX-{*7qmMDDRDWt7JYjo`8yF7E5}91xc}(!cW&uK10(K9YDg`I0A}OLDS` z7HA_t(FM@P3`cp!m>?VG-b{w_?6YZGT1;%U zP#)UwbE`{6H=k3I{bSu1Rax9qn_9Y1TMkk$Oxw~m(sA0BUgcvKh6Q-E&&Pnc(kr@R zkJO!tJzbDqk?R*~b3kh5v@N?^%5ZT_auST5w&f5*#rL!=BZ|VsA12Q=a0eqf1O6y^ zye6RBKE`VM(F7OT7K403;>M>EfkggvwxvoUW;gOfTrqc*{8_L>j|=#zX8`^`x*hur zgGafyn;@)nH=8I`YXVu~ag@I&{MUH=odW#b8{psD<8Ssa@!uWb&#%Yt=y-@y`Fqg) z)?Y+p?(6(enqA4}{zMj{7W$~?8%7QFQ4jm5`x{2}CCc?;r>E^^%>TYpb|(88Ia=#B zBhYpvPiMRGu|lU3E74|#^@-x>L#+-+=vhQ%89YDdI!z&RH#0q#fWBba^I!CtbO!3L zK!{-*XLom})e!u8xA8 zQW|r^l^all$u;~Z_!+|Bi{IqFD-v2e%hTS|+wb~J{Y*2W5^w#%Xf~!KkE1J%o125r z&VlgX{q-VUA%8;}q#xBFoX)TPKAnFDo{mrd&LGVPl#AQFjy;rm@hkK9XoGM=cse|u zc)z|S^Ve1$zlT?55Iuv|(IV}}$Z*c-_dJKCt(P>S%jP*C=CIyo3@C2@IsLG0axQ7p z{(-dN({g)bS;dn~xZFn2syi0^PoqziFX<)m&wH0w4MQo;s z{ZqZu@oD_?elz?Upk2QV)@7M}p|W~EOMfL*e#8B&!3Bp4(D-)hEK~_0fuE5bOY}Ow zb0?8I5XUanr<*Pq%8%Ro2$kV43{e3c zm_E>y>cH*76+h-NtjT)fK|Nbck$J<_0X?>L)DeO2S-0y8<8@kq;3x(89TWWa4t{mB zx8O|G7?h4Mm%SaSb*(5Zvjj7PkD^6~l7{hu`yL1I8Cz*`bqRY%i>7bCg}CsH-&l|@ z#(*AOT$xpp?dm?~X^exzm0`Sv$~THu^BTZU1A6Nl_)Pm<2OCEEkeO&VpuOncIa%R~ z)r@f(ea>N}RbE7FmzHL`$aQc$27ol#dA(V8Sxd^IMXDx6cjWzXI&(3lp$=NRLeU*v zxzVC#Od}DDVz1pxtlk|zy7_%2*~{v_5J8)$uj!1%9Z2L)%7)fb>wYvq zvWZ$D`WrbLnM8cSq40&|T%cSB7tb1?jXA%Ot!PnK7;02h%)z&ryqo_#QSHc?A*!9L zpp{wpJSDqmQ8%(ABk6<{+8|06-oq0$6<-9*4Of0?b=Uf6^4Lu3&V&M1k9WO5TC_;l zj3@JyVv+g3a3@ zg!RRS^{-lepVF{Dg5y)v<#SXE=(tFs&b>$~*~B zW7S&Z)5xy;iDcvE#!|}CY08eeM9FW_Eset0-nS=Q*&OCocLIgaW;0%_-N;K^o<}nP zijm`$ZE8>TQ!2hE3{jOn6K6jTSM)2h)On_yuFgXjQ|FOv6{^*@QFOAiB?>g$ zNR_{6k}tJmxbj3wWs0xbx7G&5LQW<8)^y@1uGWy2dIKYuTeGnyH@JhzTAH{hFZ-C8 zcjY|<2Kcw%EScjk`OnyT*Kwl_(hG^o*(GXsiz?p@{5hB1C*+q2d9eB5*oJiFgexbt zG|MAAqYrF|F$IKJ0|VKi%-O<~-AIs}!EWM!$L-uz;4NCD0S7Ko$3GDn)UjQv z8Ra+0)UOtPrt3F|Y`fNPh&Em|sNdjUGxeK*qo-k1SBtXxg?#;P5b~gY;~LTw3Rm7n z2g0%n&-jieviiMr>aO)WiK!@0+Nurz%3(1ob1;HSYZAKJS}a_7KA+;{IQYl-&U>z# z-2Q}-b@k+0iWTTM4+7HGhpeytv2SJoy%8>|e;mko_D=(7v%{nZ@DFxD`fev>Mx4V` z(GN5o{Xnzog5)-?n#d&BKoLcYB<0DkbOl8`)QWogt)!die8qNg>2MrTUY+b1LlG~K zQUWeHZXMP|gMpOac1i;tQHGS>aAKt`DkzDnD!3olAwX5~(g06*#<3X`r#3`UWG7nG zQ;sER@+eZ7xe01l_>-DC7&B}y7Rss@9FTD_-gPA8EgmSP`?kOlNj6Q$uJV*PwSQX8 zt1-^wTaEFe;HFmR5=y?hG1v*BQeXK|rG_h;AhSh@;=GN~%^kxtguG}`59@O+ZbdBW z_l0@;gMm#IpGHGbf*B>rRgE$fIpD#tc(#>>qEKlgC@rHbxRy?m#U)xRedwHU1?NoD zwR%WGz&JJ0^trpat44xyUO&m-KLB0pLHh#QHvmmAP`F}N3spe2QDCsWiB!8Un2+G# zb06_5>$If0!ZZoVG+4dO-W#J%!$e2J6gg20><@zxQUxzoFwx?uO5Rx+t8CgH-J|sZ zbSiDxo$#5TlukTE$#MsgEUi=BVVHxU(EN9}T!df!PQr|;eoqFQON3VLK=c*dViv^4JQ_DA(d zSP&R(m6sEh9Lax59-eW1Cgmr?8uVRn)=ALc!4^uc;6K|T7j&1;+;hHh7Gror+FJKM z`ziwozVqjderf0Ckj^V0Tw=0xS9MEXMS{R+n?TUdS>TH7|A0ZK6AaLmktEaUPuS2{ z@-D(OmsW3n!jf7ew{MuV9ZBo;$8JQCQ5mi#gX+;wV!I>H_xbB+5x%7c&LSu|dd7o* z#H_ixs6`i>5Uz8FcT##xIgE=`+j@5#``P4YR3qQ024W9J__@JZ19p$BS&ox1dVTP*2KJm1bISll$C* zfT;a^ho|ru2cME(^Tw6=%3+iH>N}~q@|My!k=^eV2o?{vF!j@VSj9{8K&Rc&L08g=7}2mN%pu2|&2$)@ z;+`9jGY$o08+NqAE+<^)n7VLfj)HzB-qRFediovI?MqjM`c588T-u%U#rlA> zi?FhJiI_Ref-z&qU63Z~`Pp^?e)^9Wqt->$0Z=8P#{5%?vEwX7<+b2|pivMsQBxxN zPCMGfZ}7^6fXqiu!;ftm)6>Z|H2nCY;m5lTKdSk#3PB8UV?H!0J2{mQ{kQeSzW@F}wbXxOLH{iTYw74WVimJ@>Av5PKg|yjjUyQw+d;|o+Vs3KlcOrrbyCkqAm{``juiA>oHSS}6 zlUI}8bd?%uHPVExQgAUr&ynOapwY~0qw4}wnZP8krA#jH5;qSgo!?J8QV!Q|U8N*) zdzVN_bbIH>TK1$znx@{@&s$2~G?ToSPkx#uA5s3PVw0U^@zh2BpyIxDM-rD>t*yQ{ z>w+)r11P3^T6Br`URlMYTA$SM|HOQ=+JtFByR0m3*?kB?<(a(AeydqCp5*3t@UUru zsZpMSh01fGIwPEtXIF#CQG5%2qu^#HU*JR5&F+>Z2N%mVf#20;8D*npt((-wCz=M~ zuG&H8Pk<6Fg7BUbVes@y{C3*9|3oT+~qza^Ug;|N5K3NP};?xP1uEFy=* zL(c(W;9^g5!6DbMOt8_7_^hrj9=ZoOkNdw=!Dg67kvv_Usv?^log&xXCly|AS6Ip6ibC9- zEC>?4faq|=(fWq6{fSRpq9D%Z7B-02xWV#^!K`T%>LzjIEZw^9YGUk6h-z}Ni8E?( zoqJHhMD7FS>D4E88T;KB`*HeXSDlmWkK-CvwqP@ka)%Ig^{SK7tZa*h8Jw6nxJkc7~?m&10f>qM|c~Cn42MRCOn{TXx?hS>~C^!`j8+0 zsCZxlylKd4-CMe7XxBdak_~6I?%mdi%X>bX{o)FfZU z(F>#JpYIuc7gUPTw^}9Fx$i*pyJN~<$X6A*h>b!#X;R}>s=MpZ9h<+stMl!E6Kko6 z2A#`jBHiyC(X?w7vwheZLC$^v?jGhq4RdA7?hTF`EqjgYX7#Y`U!xREwAgkzo#7Sg z%4|5coXZE%Xk*`C1yk4d{#~U&&oAEERIrQB_TA5oWq8!*^uEw;})McwzuT#TrJ~z zpr-Obj0{YphAfFeoNa`<2Q?C`8`rw~5m}H6Maz^IP>q+nt08s~P%}(K&~}xX+4i#5 zEkcod2P}Hz5^TZbt6ZQeUc9rfc;OY?>CnZ#1c~`2B#XfV1GP}`E&-vVS#SKpt zY!MSinoyfCn|vo)^i;)n5$4-o3xs*HiVN_#4)u9YS1{3HfBaj0-Y(&MKu$dhFV&}l zB3WQ!u*o?Mm;MH#ww5#ZlS@p{O$P3Gll@Rv!qhFJJyUP@m901gUIy~_5JE3Oy$4LT zvy%I5g*4IPb1*G=4IX3Or90z?=#=Cn>nG_=R$4Z2tjHECfX742_&@eav*nm)BoAnMm|z26B+u|11;t0G zfz^K@&?EdoABh&1h_qMJq(Rl@)eP97^FXbCX#q7s|C9kYZ81yW3$)0@)sEg|=3QY% zhhioIl}wGyCu+9xZ1iKaprsIoE3Skg?$ocmiFvk6%|w1TNDxgJeDZrXWqmLC5b4r$ zl6Oo7Hn|;GTp9BF82PyeU0g5g|3IsxIOd%@EDe-tEKW<`Bxi#L)(&P|G>uagntd)b zr6)qki-@NsJ{*;1`NfC~th*W#tA$aj#BLaJkyCvu^|vh2Fvt8seP`vY!cYYot3B}2 z=*s5d#hVK&>L#^{ZNc4m>wpGM#MJKQOmMfXHJ^D!6PUznnZj>zS5lptm5PHkZT71XuB)*PgZPnvpFuoIh~~=X$E~ELsKzK$eAO3 z&b8Xhb5^^f%+TOYSj)MsrJ2Vd!93P@By^oV->&_MhsYXDk#Uq1NZh)!RTbg z^>f|9JBuf4!xdW5vv+kDzZG5nW^`+_iF@#vtsuNW%=>rIt-FVBSel9yO`Dvzg?>`Q z5H^Gb%Po{J>>_TqqWbLZMW3b8Hxno?P#|LnO1!R5=MLP#OZ1(nM^F;`D0v?U#FDR0H1XF|^)`7A zQ8Ju~Mou};g!IXPxsTnvN_rc=$t=o1(03DH#RrYEVxjG4b8I%rV8C2zN^vn~Kk*je zq@>6mk3zHgpG4MX%r1mGKHvNx6vOsTg#0Pg7Fk$(BTIB!_SAQRjXRNji=x{nm7k`( zFOiojTnE0?B<<8|$Cf%%ZH=sLH@Q2MLarX(6C~(QN38PM;>J2&LD1z%u8;y#MMa6h zw?;Q-PuxrB&-UpOLcbsG{4XiF*+kw<+~kh&Q3u;wan-nq`+{Qo%i3nZ9w!Zj>?hph z4p1^|g0w#&MK=(9kl^M|*w2TI=pl^dK)Fh&ziW@j&6GidiL*8kHDkmQ``b4Mlibr9 zJ;&P~Mm9;Nj(0QnR02P9`JDv6@4uJ5x9gCrN zUz9Rm;O}Gpe)|{Y_xz-;ZYX~-{vP|Pu5Jat-|@FUnr{GqXYePwX9U0hH|y{}QPvAs zN4w%JrhYwZ>gvk*8ymD!72#de{oePl|6#h{%lp3r`-pq5e)yoS?gFMW|5JaL!K+CHRzahVadm7%Oe^uTZ;_J_MX+Q3}MRs7{or#T7w78Cca>|x# zQ|{MXYI~~R&nly_A1S=|_jK>hodKY@|MtjW9XsOrR_@;eqU>*apYAw5Q!7=TA~!S2 z`uzJUS6I0)=WARI5vfl(b-}Z%>AkcK?$)WN*Y?u}?_=y=>IbfP!SK_~o_LC_Ixd0+ zla1KYZ7oqeV@!>kYBLDnRqhno8-SkhARyOzh^gi081)rbSit&!Vr2zTTW*uLX>nx)X=>GhxXg4VewmJB+Q-?JdGHJ|RiW zm5y$5U0L=IeZJRTRBg!7R83n{<1M-#>bEk!p!MzcFKdWjN@TJLpQL5qs?LMh(ns<$ zLO%a|LO%ccKI#07D?Yy>lMni|Y!*!V5c>pwA>{9ZTuUgZ+EXyWu8IURTTBi`BC0|M zz+CE|%;PIa7bD$HEJ!vbk~CTTEEe@7bQ9i?)e|X|y>R|+v~yRWn)|&%_EhI!ZMN1O zXX(nt$8#dP@qb?Vg;vnFuAK;COyQIoGbF}swx^sLp3#yLG~0%-`i&`C=2H87hxwNr z3?WvNfZ`7XJP#ZJ3CCFtl3X30hU5dm$Gs2Rb>w5|lq0(^a@Dkg1K2;59j?^DKQ(O+ zFww3>cKVFxBOoQVs(t}=+}!&8v42a*wxHXX} zUzF5DA7ai3h`GI~H+A2kip&RqW`*ZmLYjE)b$lc>W2IuryNO@YA>hN;GMjO?>pR7@ zh3njxO<=;J?cVx(kB?wM=v%jdwEiN~fkX#)2kmh82Ph6Plv~}hZPv>BD~&dLh~3vH zt9YMmEbxc`JkDozJFrx^gr~ffxmT5;j2J}az2CIjl$<~dP}7Mgd$vD`oM^hF3+|%@ z4*{j7llkDa1d`ncAbB;PUXZ4PO517VxOO*LNuA3F*wsXmv-3nlJa^DZC<(cJ+*{3T zzpAV$EI0hc@IV*%Rp!CK^QjeHQ&6Q!0N^qt1VW!VMjvZN3Hh3Cjm#$2(X{FAAe4zy}_ zG2a{nRqjKYwM1FxlD>$^a&iA}%HOxr4Uw%h+OCX>H`UQ?S6G!qgC)9Z?j&VsgO8kl zN6F(dPWJa=Q^IZ__0~x=Bo$^SSV2Jm8fzdwiK_~o1{Bv)onM<`P3jTI1J6+AG)uHl z6Uf94_jfadYu&?HmY^pIBzrXcVaB>@w+EbI)~s0!Hwe=H%uW__bG$#qF@)wx3&%I_ zHio<}k&kuwmed7@f|W;Ck{<-VI9UI!dodJn=Pc^U^!VDL64+|@fQRdCts3_$cp2R! z>cQc~FI_g>L;J6ZeqYh6x-lh5gy5*OymycS_@$o{ZIXE0{5Quju_<}z^}^DcBX$--pGFw|F81?zltkwK(p#v ze_tbaUfGehSpzfnW*D_X8_M4NnrdpKNO5#?hw>>H z2Ni-KMK$haQZOQfE0)r?hz?ggPe7LS4%Zy9P@0E)8t%WllQ{74zh#c6Ge?2weEz_2 z#iUI3*NIj3v6<{6GI37@ai#ngy(F!xVM)si@g9jo=wO|6zTFjVEUqjlENAsc^h^#i zwc^*?_^q*PulO)+=Zs%vX5iaJvF{ATK;%vVRvi0=ezv00jfen~?c#xy3_!-IbS*8bB_RD0k+b-5`-I|_%oI_9*IR68@M*L2F&wg#n zF$nd}`PW_VCbj!Q{9|>TjU3?aVl_y^4b0-j<#p}}h_IT3EG4&@f*ka!%cP~M$d0Z>mNwj$KOf5!!y+oO5+t~6U zu^-S~w?Bp3>}pEoz~+ zYB=`)G%ty5cVF}fM(SF31x*Bd#I6&p)i~elK|rnyAbU{{8&7N9u>>Xjr{GtN=g-Yc zpCZM+_ZN(`4lWq+=SL4r-i%dh{!TCVHSUt--T;*KD$m(3RMqaJC|{({Z}_xb-xG;1 zi{G*W{KPcE9!!rmxRHD$ z2NK6}!L}~po0b-JS()TgjW8A!vHwQ(9o|dD@H7bu zS8`nnX?eOD@SVmi-F4yRXL4TitVjWUY3r%@w2$)5rTQtw#o(|@Xkx-34ZeZPM;2H~ z>)gCwW#pv>lKE>g(=$13&w5--`eBo&Q383QXRUDg!ZWm6sH+z8rD!C+Lm}j8m5P0>8J5f1v#+$yW+4a z4G;cAn&fqei-jf#6<<@W+M)4$#zUv^zb%3dQEWW_cnVT|j!ffy0KD#{!%aIC4G z+?CjBw#4)Yh>?=LjTX^#rZL||v8v!Q+#T)`_^3y_=d1@)QDUT+c|d*TO+T>cUDSUA zM_ot)E(GR|?KVhcl;Z9b$20HmFX?VccDVgOo2q7)Nb+b|sO%RXA&KdOW4OG z4-9)KnJAx1g_A>Yhy_3Hwo%=pf5`aZt3slKRx%{3pui;OtWAR@KO zlb3vklDhHEr?$efUV_3%| ziWTcz-Oq^5ig0CjP>NgUP%sY;2j0+2t&@VN${kBk9poMl0umwQmK-KE!Bz+NY!GT~ zf`1>ROMTo6e#Q4g`sZ-GJd5S(CVhP?66}Zc5ZhPxk+EW>rYuZdUf&k-=c@9B(57=2 zqqJ^z3Fd^qzH={|6KU#{eG=M-9V#vTglaQAMAWwYacdnp)DlOr!f7nDCegffyfq4Y zyYSSppS3gmzzI}9=e9Au+C6RiD~nYiLyJ4uVz{uN&h@iu1&g20EM!Jkxm4KNsf5;L zu~g&))&72pmjQJ}Dc&DG}~N`tvRYtwQuf^Y=e^ zn!n-K)BKkVsz2_GYO+uzc0$!otkbYRa)a^A4G0RrXU;n@FZfy^n0N|YyL#*o*LptQ z&9CR<8JSX=St)A!pE3G;+y9EUXqP5AG${FaD|t-bD0)oiqv$S}1s&)|18_5ch7Zw~ z-Iwan%PL`jmjS_jaKh4$mNHm?)3W7+o!c|7{ya`FOt+* zlJK=xU>6mI7x$|Ce$q#_BGNijUZG#nD1WPP+V<|@$}**_YTC}@elzvb#9aKH<=Zy^*GRZzDL6^jxjh5Z!tX&mW|Kq;drD==OsjHF5)`PZ zOcL8W@Tre<55J&hl-JSCLVlz>Mw!%wU~3ae7L(wRorDW zO!@Q#vk)2lxR9wRwiJAy{}mf?Xeo7(^0ZA6DNH=xgCSS{56kt0(`& zLpQAzR2g)EhpqtXCx6$2FdDiGFtdib)F9d?Gq`@ms8?T(M!z4|3qlRtIzrLV80Ay( zA1Z<#^CrK3%H6;qS&_Ml*aE|*6_k)KE7FoF?Xe1lD=J~paP9;b$MwhT_8S&nszYD# ze=7kN=>N_>YJXOYsza^$Ux0Au&_`#p7p6<-Cld4ZvHzOyzdrR}RsO5Se?7`qRcP6f z+6>FQn%}H&<<-czThq@jo_!L~aR0t4%)6hjXcU~{WP|=0#)uBou;Ga#_UxRH$ z)dnEzIHKGIWF>qiVXd32*XQWa$@)w*DdYjm;RK7So2xiK-I#k==mr)dN!tFhcBA3bL zS%l!NA;RkmwcBk+?!X$lB0M9ddGWH6(Pas)^GVimBDmloQo0%Ei!Ie|Ldv?vw0^yr zBT@RSv&yo$K?th*i)wV&{#?zDZfRax6mRufbZg_tAZ>&))w4)zxwBt)hm%YZ-NVzRpmWVf>b<9!CpPu>$cNs>Tbj1sDDYdK|f=v<#v2w&59Ym=oifL4=C<0nt@t1n%NaV^Gq&fnZw4cg+s2Bo!3 z-44>`25C|lK7DCXc(3A>IU={d=-t4zU@V2DLJP+56I%+F54F80(MmMGtMsg+WMw6a zIPSEV7^r!-bv-pJnaRdO4-+BgwIyQ8;SJ=`ny6K2QFOq&jmz7)7Ram8>2^%^MOv<@ zc)-3<3AE7aBG_}gG#*)*QyPoBn^PJuUfEJ4wv4st1R~GN ze8{OUe%xGlC#*zR#=wg#QXx1~F2PQ=mNT($%=;9Zo0NCw;-|kc6r~O$aGC;Lqo41H zZf;r5D^{Tq0^lJFy{rIt+J~N2pecdR3CQ2Z0t_8njA42e-RZ?6Ul`0!eM^RimGgCc zxqn8bJjLH?8bQCi{^`yk{p||>Kk@xPh4=piZU3)v^bL5f-~aAkn)Y4urQ!eG-xbKk z1nBsh#s5kC{@&kY)=2dC2W-Y&H?DJ^23*`)9tK1F!XZ>wm(V z3rVNHqSH7oB)WC)iG3G0&e|=j zB>dp}mv@=cVzo*-+EuA%Z7DS5kiRY@`{z?IZRi zqBOc}#|eohrKRz*H94i>C(Ei(?);bBfXXM=TIJHV@%n_PROR&9SbEecYjW5DR>e?2 z>ZPRq{S-F`Del=Rg$m17F?s~7KBK^01is{-!0iP-qairas;VTqJcpL3(w&6;h=VTL zB`1p~1FMo<8YZ^tH4~0pz{RmO(W)IKqj~jyKw)X3$quZO95dC(zauBBe2+eFdraY* zmzTs^CiT{J5v(d5y-Z_?=T;w~tJ*cDA$#r$Du4gKN_20KX!5^GbWf1z^naD;?jX^j zB=W7i=}k#MN4^mVV-3P4(B75=ewS3T)xQ^C4R}HY69ZswwZ`}=glKt5vsX%%t#9Y; zi;~+*Hf<3S9S<^A7?O>A{bxwNkTv0v?3M! zJKT&d9D0mxO4caI?T7TQs?XiJPqBkXhvueZ0Jd~*1B~ZS21eU6>q>-ffD{WBF$*i{!%W$|__f3!|~hj7ER0r&$&w+4~T>R@wI;JK>uZuG0pww>SL=Z&LGp zVBgf^jN{P~|Y59K_$@{0-snD*o&kE597rs0(42bmea-e-ZvF z_`8+APxxz3pX|pU^Nknq=VxYd!`xO@3}p|oSUG&f+}P$=!F+P;qJ2a)X>d<&LB}Jy(8YFDmjLR1YZvL{3B9@ zK*|y?<;^S9?-O~w;UM$GjviNaXgVRNuUqmms8P7v%TNSV>95Qm((;R)9b>AXqs{@2JsL!_hi=rY6)n8{woO& z+RQ>|$%S<%AueVzTP%iKOCiSE-%mVMKtEc@5eWnVWT*F#LSOSp?cHE`{f zHNoM4Ld2*4s)%j3`{d!qSwj;|rs$Zua8jo!L7m{hFJ~}GzHalr*`(>dq!iqx*&JO? zvt$#zdh0~Sm(d>=g_m?6Ieq)72oU$FQd~ULi)GU2<{jmIhr~9(hO*d8d6S6HQ<@_x zHRs2(;Xy-UZbTyz^7H5ya@_)XUM(e>FckTffN%v&)J;fUGp)uE#)UJ_KA7(6W8 zGBlY_CRUYmm9%B(?BH{n{~YK)2VX)|haf!a=kSD3h>xF(!czwiOLnencmq9sdG$g_ zd%n$Z?F`VK(lk3uM!!nz0jtEG?%8VStdcGcRe>mc-egF8awuy^d_*W`Nc@ygOOQ_( z5o)cUF`>@-IVIF@NW3gm!s})wvDtYqlRr_kqo5o?hQHg5D|_yfO%n%?kPeAola+jp zi0RvApba9e#z9eK2Qe%2K;qoE?<&#FjU%n_gC%m$;ts{~{?X879dMtddPfWPA^^v8 zk0D}8^Xkx!_MU;MR^f``-0TL(*T)q_CzmzKF5f-;{D|WlLF3fUL;7#V=huo(7G6@aqm+(Y6n?(@iAejr z4C3-H^Iq1*pA@2KG;(2H<<9x;i*}HrofWnwkcSp zRl?gLd(+3s!AOZ%I3#{HO>%0>aYf;lXIq1ewe~ob<``0vypYtT@p8Jl@0K`g*0tm8 z;L;(w&H2?bgzr(Xj|)$|D{rX}JY)~X0l6vfb0B50yX^5gH;;o($t|zI?EqJ4{F-^C z@l)Y`{*7Eqw=>3Ymw$_}<`YzLpf1YdzLas{3BFhYX+k=COl5Q((OMe&h*Q_peO@xL zZ6|87QlqJ>r>VZaYkAD!f2F=lIqH>c)}X%dZuGoe>-qmN_ulbQ72o@K5Ec>1dqF`_ zj08ai6(#CY#6?h|i6mm7SO7r<6+}@JL6M?Kz;#`06bmQ_C@3h3(veUDNLK_CC8(6S zgeD?QAm8UXGqZOSAdtk*@AbhU1eHS#AQE(*)Q9PC#`O7XR4s!s3+u+(M$4$>&@tc_sFVWD^T@&Zq?im$9e6L zukGi!spy5GDsFnF z&cp}EnC|oBz)wZVO^$jQ17>LHT^G|OX@FlnFdK_&BSX;-AVzf_8Uj{VOM-~Ky)p?k zhCBZ6{ zW>+=%)@sJ#q(P!Ni0;hf0WTp>m2lcOZQ7cVY42d#5YlRdUDZ}%Oxs^nCdzsJeW^Wo z5h!bQN3gNzG+ab!+SCsRS;&0_z_Uw{Deptd!n!RnkZlwfMRXJynwE1I88JRMYF6}v zbKBq(aj|?(J&+viS_Bd#DUldpRBTsl3Dc3S>In2w-UGJNY%@z0gQ11#S8> z;V#k+&c2B}^j&AD7%r;5+~Ih>Q!X7O4|!s}P|Z;ZGAzO8{KQ(T6VJ(V>g_wJ-;y3x zkQuaSB?W#Aw;eyM2WMQ#y3%C~O`KEteiYe;3s2z42Vtn31~{M_ z{TJpMaO!V)_w&C4~c<=&ONNoIMx_IWuDkqBGgia>N9d3c`Gk8B@+!D@e2kpf4dKnms?y3D!wXfSw<1*HlG z@kru%2cMkxBSv*dHw7rI7|AH0V!GqMQGub_^+Yt_X{f86qT=!HyoDfOjMy;z@Wimv z%{%#?A*v+csYuXDfQnCi*QwxTB){AU3Se!eDjTeV|HBkZmM0TH{;_e?jVf*7aZVRZ zaW-rgtVoKFkw{>-mlh2}!@G`v*2`9a7MOmmq;+zZIuwoBOIFRAxoH{Npa^482uKEu1kUiqU*`Sb1@!He4dM$t?G=0Amn)=n!JdZ4^JEU z)fm6loegW+K$Z?->Gy`Jy;hGFQ@#Hx24^(@O2!$b>3@6@SuBP zc?`7|w@P~S-#snUu1>kGU?zk-oAJ@K=$9gR&jJe&abvJNOl1e)s@?45KTVe@B0vbPSv-W?~wV4!ZZM;r5-r134#_)xGKz97F zEfnL9B*P!&Eg4z~KDu`Fo)4-vrXZEEJ->ThUHX*>2>EKrw&5;hrbW-w`1N2I~AQ47>@0MPGIZxGjm>MQ-) zmwZGezd-$_A#G6r6AaO>W6^SxU=AQgm@d~)H4z}EHH5AZQQY~_lJ|nTq$@G@m(7O7 zZZOBv=s-Q8(Lp>wBZY@;ywGUTTbf3z=SR}0jG!(i8g%Sw(tHt-Mrf1`0BH0p^a@E3 z)UWMf5Df`tYDgRkV1n-Yb%2mei1?mBV%9==B?OytKiOgw8Eh)C^s2jlQP-n2+6nqq zN|LM{nH6$4Y&LUf)!~f&+SRq7#lekiU1@xP?XxT)C)X81eu)PN`7s_Kq@G)e>Hj9{ z*`xwclG1eX0cPXPO>?D5)3rdF5mc)o-y;wS*o(}eLOS&dpw8tHD?VrL&6&|{$ddu( z2X(IgkrrfdWeO_s;J@WDQPv`m5zARJ=m>qT=G{1_)1pe({>C|=BX$j4irDyXsp#m7 z)+7*~=WViGC`8t zBSWiZsqiS4Lp4}MS^SEv?m#`2kCcZu(7@Fz>Ud}LVw!(A<9)p84`_6{gwc7}qEk_$ z^Hs_*ZftQz{_0``ftt3Sq8wJcq$;Nsciz%>{3<#S??z=-|UH8ZJ|~geyKqzo|($GzWAZ`y=R_`JKgX5W;sr z=fQY@&VBH3vGW`3KB3AE#pK{#W3BaH5nsw^{S^J8Zbpl>*54)uhFae#TVRPrdjzK+ zxWiTq zM?kwmIi@tyw{~ts&>_UH8d{dtI4ZRkejkIzm1{mdeGeFs|Mw!{kyg**5ENZjeU{bA zlvPoeH4IMv6x`^cB;tW6!nAbtJ9Vq>wiVeKx19*gds@4 z^94$yPCI`iwZHE%=*YxiLn!?}_Ls+4^g`gCUH!DUW0|Pv0a-cVo)~P_BG?G(U^)uK zprJE1Dp)7wbfc$i=bo!wX$7+;tSPC|t@n);%RM!P!}sC=vHTqmh@~v7g?yL1qWksS z86-6LKIFR`C*KHi4lyl@c>3Y;9$H(B)`xhGCT!*9~ zf68Ah@;KymAa+f|_OwWoSw3h=f2T_j1DU>VJ=-rqWN-;^ctTR(cXj@6aNU;ROYw;y zw~H5SKLP|Omto16`~*C8)f(I9XbiDu_*--z+jBp{cjcIl*7$+B#-&_I!IpqM>JdMu zhWDtKYU}2mD=o))LL+U%cq(usTjuPaT&i}lD)sMV-LAeU3+*DzdA3yLy6qYS4Uao< zrCs9HXO*i%Mj`HZm#Pk}du}nf|2;`?XBCcv-^K51J503JgbW8YV0msXhN|j!*)6^h zvqV}JCQFmBjRCEh^&izLnoT`Ei7Iv{^+_vf+9=lOw7_pDB5CH9Rn%<7H+}Bp;JTk! z2^6=rcAxj5y2(=Sf5i@KJH@H`@qa-|tSC>vK&-0JD+7Cn^xTg(eKw6j$iD*41+>W+ zFp4up?1OeE&sc=nLx4EOpcKa?0M2cA#VckuYG@knfw`=-kI3-caQP zsrx4iWf+NaInZl#T-31KL2`^d5b_N`7BidH0~vX+?Hh?$oyR%2c~{{3`j=&jBPno1 zwZeCfQPL)`&|IYOrr-S?`4u(o22hWt>Z3&QzrfNQy39hw-yb7viBz1fD=sg|ayiwx z4=MBBO*F>PoBnC*()5V3EwWh#u&`fBWtuAB|cml17 z24|w!~%*h5;41{j#b6?>VyY;uhw|D&3!LR zH{eA|r@^Y9gPRj$`=7T2cQJ>%M@sSlk`u*|N30BI>+NZ^)eTJ72a6l3jhAZ(qLv~ zp}{OXK!Y#vfE3UlLnAX`!^qX^scrR;#H1Gk@;UsCFXF- z7N|8)>lEt>W28;Z^%wP`fO)dLH~lfnZOC_@`P7M@(B6rFRWh(UH7sQ=25D*j5s1f% zN;x0ufd|8X|C+8gkeeshgKet70bI&;Jkd}RBm*xF?n1t~(2fSL#wd}?BfUnW`+17L zN!-hpmZgSCL8+hSO~+^&XF#HWOMs7>3tJ$F?;ZOZV_YNQ6#n4uT?4T}d=fdWwmYb$#sC%1FUe^x!1;)|cmu zT$Z|4e@{)NirFj>&__oY!{01)nIQ{U$d<(41 zz*gO1ivrnca|9b~QyrG&%@~8Ef$V@oP8w!^Be++>Xu(tDh=kw_N}tNzaf}Cla!!xf zs?~UpTQ?KAqHqXk{|BJ`%R%RB?f>d#X#eWrv}2JLy1yJ+p;@j0NwN>9M9N2UiOvz;(g!!lb`$V!P0r%FSrxEwTM7*2@RIjwVA&tg4E zu;v`WAm>DdReBDRvYU~(9 zNe0HFTGQ(!005m+lczmF9x#dPTV9|Ky_g%`_7NH~C zY1h*0RF_I*@(}aI3=wXO@U@+|lu{$g@9H{EW|~IDcIZY^E?e% z3RN2c1xWd3-rOPePGt$ey-6e=z*4J zMsBpn33Hp&A?Q8KkwH3|Y)!%WDMIo=h-vtUISc_9BeI$a<)~V|&Bq(M2*WZfK~Nne zXlj)i_z#@_;OVm&+{ny5B~rMTUU-TJW9x7c>; zwNC*Ztp6Lu`HDfC-FF!>No#hf?f~b}e&&D+s538;bh_uV1cp{GP`45s@+l2b_vzPP z%3-h_I)!W7t-jICT57eg81(p#L~C{vN= z;#J^h;fHgCq%vxO#Eu0?oRPSWgWNzq&8uW7M9l$wd_cfZ$S(+l8NX5wq0mS0pV{(< z`4yvPQYcC{f()Jjuuy1bPo3@{^@ic?@d6VH#WFh%desmWC$IGbIukiyp6DCsAtc|e zzQ&t0Kc`Uh{kHj<19*PAG#^VGEdT0hn#WP*LPDf;c!kh0_i#K_k0@8QOD-EC?dxI<}f5z>)?>-O4VSFl|#OI zj{`A8>q1{pqoVs%w6u7SihmErbdD&=s1$nh4{R68*LhB|sI8+wV)9N4!r}Am2f+5S z?O2RaV<804dUVOcs=pC5E#WE(8*FLcfdWs@mTB~nU8GOyQ4|Q@pE--Y!%FxIih}8d?<|K;m(5MAo8L{aRbZ3=~NpuEvi%0puVC;2zb(W z0Eeork!hV=^*It-%A~LpfB(&P`@I2-VEZQ(IQceXQH^<$wTNuguL(H7 zfIXnLeaIH(s_$_&2U3rQ2IuRW1cR@-@ij~J0`cJVW_+y`-+iV9PfF%21m+1B4#S8O znW?f&{vV#y#Wk0Ni`9Gg(5cNr$=7G;FISi%zQ3CWe;3w!$iEnKKBm8y=l5W>uNYB= zj1bym0yhod zf4Mp~ueuHynQe*`q_gAni*zX&Ki;S_8ecHMp^Lx|T`2kX5c9yEw*lG@VTh*gWnskd zd8!R=1kj1p17hCg#)@nC)52fTa5SL3{-yFk4hMVMq?=zIDuz;hfa8fE2xA!u2HpCo zrqGu6smx%xccokccAv?kt9cOk5h$A1Hpn+nDX%Opzf_H>p7fnElaY;@^nM_yqEHXB;*kM{@H2Y;3f9R!-K}aMGjz4p4eDI?Q)f7iDyLnz@F~a*#mVD%4yuLkqNp_g z7f~4hU@yhc?^&{E6kgGopZUnZeP7zM<+Q2qp+__h6^R2537IJ^0$ZU)(|$$|V}c}C zbx0y+++}eu%K#$;F#jiL?@_H;r}1RjubrijG84Qlp{vbn(Ep-To{upsOwZFaliP<# zbCp-}d!CR4nF(+go?r>ycz6f;H!iP0_YE|CkC`an#UjYr>Ro7DBKX5Qe2$bfI7rj{ z;#0~(?pWqF{m{PG5%C=oq9> zlUugRqkpMsUVS$TCll{MP*xe|1^jjqJ=3x+Wo)~ac*dYKJK8{fUmZq$!`DlF={4cq znt=#D4d6 zGU#c^z_NfR9uG`9HN?Z6bb9t-x;6Q#GZZ(?|@UKwS5DcVC%P~p@5#D z5BGc5*HBo<*J-k@d)zRvDYaEH;Ss*fzhbUDl{VP6zrNNOwGR)W(QS02x86air!VsZ z(mNf3E~cQxUZ`=~0d9w!J}N#(`QNkzEQ|Oh5U?B`AmBfU#R37%oY@#CK@zYg8xiu2 zr_~5myQPbUo&%^$>~ftn^l$VlX80H)LMy}Un*qXW8MMoxS+U%P7ChLQNeYUFW#3Z= z4kZP0RNo=C1uYmE7x3JQ2U>7LffnR~TZlqOjl!SQ>Y-}=q*k0)A-LK(%3C|?v~g|= zh8Y4}suSW4FE->uQ)mTU=(kj;p=ytswEL*sLcW-Ty0jbM+&HgQa9dscxkNh~XbFW$ zJiT_~-$P+|HiQa;(Kj);ED+rk4;q_*ryhP`QIyN>bhFdfgYSEs zgHuTUVJvdUDiRk{al2CCfbUVAqzaREtx2n|^QnEw@%+4=*y5P-GtQ|u$GRU;mC$Sw zzK$f`qn51U=7|5^ivI*2)UAOnf@7ffY(RO(K4%k zdV}TeQ7iZ~W)18%5EPGFNs9l;0ngJg4lZkEOLuQq_iJb`_|!Z9>Xp#RR z7P4JkL-P{y4b_S0Utg@#)uq=F@{KXM%L!EG)ju`W{Png-0Eg_am{glI=skcg6E4Gj zJsLC`plSv*LxUy&^ppXOCn&Ao6pRg0Ftf9P7>Le9MM`{(Q3?(xp0dVC0 zYQHpsCi^iI;4~pPY>SGk;tR7Mn4~wFst&(SCSj2BJjC>Z;WF`n1b&SNW}q=?3e9(b z+k+)uT^+s%9UmO_mL`AN4_ZDJQk93-y00@Td$NWO)B<;nk=GF#%0UrY`OX8ngjY0_ zG4X)@VM^$sp*U!t(0vBlRznR7>^C~=77ZP()2=XS>uKl&4ec(Bf%Q%eouZ)+8t5_V z)8Mcf8v3PyZWm}rxL{Zxi+)pVAo)xU0qI2Ce9eG@cz_GkOkIX)b7NpZKW8kUXh02} zPPO4HJAIE@7QoMpoYc>q9Yfgdo*8S{4cg^E5N&by`>NM~m2+Ob((p=nxwgyx@?J@BoLri3d1@n#pnqwUOFzAvr{Z`LSiXbH`E5huP!f_8K}wLq&z*sve`b z`)H_<(0l`ZM4%#}mi; zK;QqDMllZ}iMF8cF;nS;L@wKPfCX%MElxu8H;1+792vUpoYe)o4UhrLWGou;+>63s zTAt&>+j30_VuP!;JeIE`q_Y=-UEmgvmVsR{1A-X|e2#>F5i*;_dCl-C>^Q4RS!l(?ppa7{PqnwsjGuF*9a zMfZ3c&6Mqe+A42aiMho|U_^_A?>pk3^J|?5@XZ7_BY1HnxGup^6vaMMK#i*p z9WxDK4TvP)(GKD;b)x)UxEsGe)4vz+_lNjxu`9mIWO)P=Nc3f4K0kY%^BFr~jEtp! z3biW_G!zWy(1p$$`2L^NN0OtyXt?USK4Y$qwncrz2D82vIB?wACkR0{iffM}+D2P} zy7E|8a4vZm8t7eCbd6ilnutNenb&3qk2<0+23OFg9m364@flJT$7iZ8w(W2<8K+@p z(C`#=w3;lMe+iH>(5?3XIs#A`43+sD#1479%OMP_QY4kbZVES(q56vXnDjO--EZ1XRy}0u)6iNm1i?S(GKuGXp1jotEk%G z?LGqd3oLd4D2?CEz)nzgoSxeYh#7A_#1x}-ip$*;tK1Y%H6HkgfiOe#JagUz8k`(h=Vl z_s}}$dipxSYLA*K4Ri&PBX$8m9Qlixm+QeF$aD!G-j;uX*I@T9khl1sS(7YfJ-<$r^-ZCewu zv_f@&j>G+_6L9Pyay~RQOxP=sIT4e&Mr91$!7q9k#KFzk@)_@RULKqe%mSW=P(4m> zuOm!SHz8&Y*O0*k)OL&4nGF{Et!i$ocCc} zP+QOYK(>eZE#y0V7n_`=nxny(I(iA9A;}sUzZ4A`_{&PQz6Mi}?@ECRosaT(K8!PC zv2eFgmQ69;y-9hHLgPZgZN&7!YMDI9AmlsOG_)3>A>Thw=&Bx}u%!9lL82%g0ZtZcafqP zKbKO&6tx>))iO89N0MZZn$}Nn`)CJotE2``z-z$s7G6YtZ+p~It4?UkV6W0*h(o$w*VlxMB@Z)dzsZih8!spGnlJ7zP z3z8PScp=}>hFyK&%T<#XJ0)6N^)5pT?fC_L{ZIjRJ_md$tSRI_vP+hs4$NbNxuJDs z68gXW%Y0p|HU7m+iSrNSQNI!%*w!{|A+=jW4ySJ7a5g;k_2h#hUaAg^Mx@G5W4Wte zLAfDcE35q$sAGT_mHz}&Ox7u`cT?oJDH<_FP^Y-eO)*na*r@Nu(0%NYu{z!J9~w@{ zR&Q&_lRp4M+`R{D&vbnWP4oY&tp1J1>JmSEqnY|od;rc34KxYKgPwN))cW_ERxHgo zl8>ORLIig8up}EdwmG6)HIPQ<53-cqq4v(v1nVgT^Dh_% z*d^g6{edViH0e(Udjd z1L`Eb=r#g^k;n>wPYO&=SN;z98vRj%6Z2j~+4hi{BDVY5vvu_8`sUoiU0cdyL1-WT zmvO2f3c<2PNocHfw5kZHV&oQg`s=GAXba_>yz(RPBjkG<>V+427#pejP+f<79nmM` z;|FH5TT;9TqBDt{(ZeOin)CNQj;OnCE=7S3f z|96&@{SU9$13$s(L8QE|qDh`0$>9$PuVSg*cX)Hzs9BX!8C$rzIc#E% zjBXR=|A{+Z{zi(nVD4GefqnY0h_~ zT^3f#;^tzd?9%7lj-+AcDnh{$&t#cN`zWerI~oXXLYkt+K0?RLL~F{5$!D-fYUlG- z1%C6p=!>a%KwpgG8-jtMgu$Pjkze@Qcqdagn1i;M znLB6qlO^=%ZTmGfRE?YI>7nyqdzqA?5S1~4w-@|`*VV#$S!(TcN=m99p!U>ez;qQ; zNS>8OoaX2}ADTR)Bu~l;nfY$T8W6uINpscPI_V20>2s14Oo&+o81R2*f?zTy@Zz_e z6M+7JTCJA42~6^D-~V!6z+DSNw@%`A7I28@C5J=065bbmde(%S%03@6GlK)#w1qb$|_w?RGk^1&+ND>)*AX4GAE2`vc zmv3~(oIijv=-B}^s1@Q9UqvXy6~90s22d7zNgSM^LtPVEe7{X|6R%Yl+`gc*0%W#4 z2i&0j9a+o5!H?!EZA^(%2cS^!^cRyvj@d6-&ZoCi=*yaj& znDKz>u!!^8;oX=1Cn&Wt?id5UcluNl^gB&0jQ&rP4f^RDIRjxi$jazx-IkQPc75(9 zOx8H@XuoZ9@%s=fzVu`V`oG&qqGybbLTPFKd3cM0N69zqxrFN9cassc-6|idNq74= zG?o&%3lKapMMgn<^LOS%d^Z5Q)mllN%h}6mUtyCHg9Q7b3e~s=7KX zO3@fepQV~$e=chY#I)vD6FTH~}EJ|EBFiqdAM1D49u{GEw*YV-lmcEm`5g*u*B z8rnomAE}Q86Gpr2BZ3XO3u0Q*|7Ji|z_VW-F9C+)GT-mG->}7s7$cY#ZUiLwA{`5E8|KQNP@Psn)jMKUuh7e!uL0NiG`2UAgq=6 zwi!@BgPH^6Z>m$h01zfPznVh&HdWKvA(@E!#P1rqkx0C_nd$fi>UO3_>HVK%KHo)V z)I9(~5ALswwQD)cWRXlc`xYBTR~fmSDTI~Sc3C-r$Z0D2`@qUz*7`=vBw6Z7U_Y>N z|CB0F4!gvLF%E7j6;j9_k4C88PZ+_D_W#UYi*6l+0B7lAXvb;U(wk4)4B2XbPhHV9 zL@n5sUHGyg+b{S85W6r2EJKE0qCxD!$_6x5gAxFG+<-=F5Ol2xF}PXhevR<7e$}H= z?uBYy07a^I&^4b(V(1}CurBMlb`rf?4q&Q-gq!p62AclJVhU`h{v|PxiB8C^O}{K( zP5%mNIIBdcJ?R)_M)>t!ULWCCLXR< zZEDzjCWH~tSiR=@?G3tr#%ibuy}Zm2IV4bX&X9hbCbi4K+&r3j_ThpvXE9ui(~3TA`{#;6{>rAOdCV zVcwW!bB>NEjjGg+8AwXpRr;frq<12M2qbNV2S|D|9xh3h;n8lu$R%l)>vc=-)=)#z z)s0R20aY2}HD}`P$P~`jl~}=tu}(tqYSkka>!A{(<{5?uupWemi}m#e>nWl;EhBsp zr}6thLk-p!8LZO*RjbEYtW~)c7`#0D-=O|B@KNW7QU68av^?2(0QDd6a7o*{p+@qb z$A#bq$-NCUG*?3h>iCRKrkTqCRaITo1Ir-cP*P)-qX}P%vt~zIC0Z+6tfr6EbU`Q+ z@KXt0Y%lyzH^r-)5~Z7BIDe8>o9Zf!v~hhdH%+Okp+-pGHO)RQdexZ4T=nsft|-cG zlH+>{ieX<<#}ciNDTdFF(X^UM-H3QcT{4yT7)dnDh+th)Wl*O(hLRwH-x|G;3MfVJ z*aWDsYdg3cJg?*-OMg`WMrQi0*z@ZQoLiIb;sH5sDQf{G8ORKN*mhv@N)i6M@BlB~ z!ncs`J2)Dk#pdfYC7*;{uy_}J0;pXQD0~cPmZ#?mxZYqzr&7T-43yQ$lC)uAC)SB%~GShdHwJT9P*8ceHI-jIz;& zC3v6>)A<(i)z@u!_*&f$ze8o0whddCmyasTHl%a)uf$qe7Qp0Cpvp_25Dt!^PvT9# z=Wz~x1%6~P;JF4~`x#Ug@;osP&61OOwtWPb0{e4hv(%4BYB%TjtH}w@iGhvI$FIQp zh5S3wdgo{Sw%D5av7Z1hc4TrVZY3?L2xerW4Yw>qXN3H9`0%zoIry zf7DBjfxAT)WA-xmWE@WG$XPG`w9^>J#s~*tE>z}BdIBHipwpbL(7U#d;*&&s5#$^m z+@z-CxC`?VrS2T7omvd=f*$`;X=F2b#9YTm$TMXO9y*>aM(E_ZVx-L0fKo{S0NKh8 zPP+LI5ERpg@;D1y3;l#)O7~Ih3ob~F{v-m^ce4c3q4J2y;3MQI?_&Bq3@jioe`qoN zL@chju-^3j-GOb$*VL$%K`;o;9c|qfp!x})QtgyPt-Z&cwSw{PF(9-McFPh$cPk!H za6j`c|pUcR+GM{ zoY|IfKNp1NWA)3*F?Pn5Xf-uQ4gXm4Rmf8nmc+2oE41+;&+G457McQpQ6%>Y!ue_x zF*61LzKpXM=Z5hv3=nz-LKrf+bO)CYXA@P9U+S%gqi@X1M!u{uFN!al@q#Rv=T4VP zqM4<+w@S-8&E>M^DE?38mC$Wt@vmb8ZVcug?4x#b0;x z*Iu_3Q=}ERvDn=2iO+4<*gY3`>A3mi&2p#PpItyLR?t$TIDOHtl?;{fp4%_Q_Km4w zyV8o2>e@5;U)2oA3>>xMDb-k!hQ|dG~B_aBE(;6j#@1^@-D#V}Tm5 zcwA%ADU8Lh!weR!frY7EH9~bP8j~2v#x9V%-&s$5Tn^L=eywvpVObV$h*i}0&^g*C z3LloQUOsx5La`Nk6^lRW*ie_wkqwch)Pht@Oj~}ou5lSEl^R?3L5&fIJ}&@j{k!78 zg*`YfdYN+zv~_{c1&gqFpMz4+JNj1Rb4A1BR^zjnIqZ7#PLb~6JwfTsPyyN56MJ(T10e1RSE~@>Sj|vhYIXHez zNoe7`3m)Jqc9<587Ddp4s|&+7mzWlbfjn>eXe_Z5rpK))lk|A-9(F|@l$$1$^E?uF z^S002=dHX^v$wM?l`LW}u(pCsLFihS|1r(Vt&oGzwU%dOSiof_JzpKRpr^fO`SVu(s$}k2j15T2s8MxVfL0rW4cC8)jf{^aKB0 z(c7_^*A#upOzHXxnCZS4r)f~sajQqTt0Jgj=tCP?FXGHm+ibTR7ONLg zn=5;^TVXnJ+J5gfpN;vS;K1jTvX&)aTQLK7y7^#R1hNxG#XRw<#IAC^(8>N1a;~HtTYro2>(vqDbPGZFUtwV6N?|d!>r~xMdMzo3Mztr&V-6Z6KDL8 zNaEO*l$fX6K?b|8a#`(}g-x;lHSm zJ6R~@1dv?4f6?Of=A9x=1Uv6nD3T89`8O=buuYaMCFYnqK#|&T&NrY(?;_}-js*YH ziobw(u;M>aG3kP%a<`Kvk8ad7>6^&vR5&cdm=QZQT!bxwljQu?)1@LU`U&F(ZG^)E zi15HfrGYP97rn6gw$+B-lP_03hsr=a&9DcpPiK^-2qj+?#) zGY1g+t~H4BZ-m9fRmNcohG}X8nr)L^b4txEdH^fy)yqc7AuY&e9NsQ;?6h$~IQ~AlbBj35TMhe;LI3qD0qhaV#JuLOMx!93Y^uif{Fvqr{?JJ=q)*L1Tmly4MOuc3-Af1 z_*jcIzTY?!YO+<(|H4a(1|FXmRBvGt8+B6 z=C)^&z^x1m0g=5=g_Hdi4Vr|_f4o-Pu<5rJC3%)z3pb6ti4~WvV9!Gpk^_G`KSWFk z*{*Z@08<(zbNs1U%}_?g0D0@35Kc?{3!(^irmHG?HM&)%bK~J-iI%iUeW&g*aeqaSoWY8kJ(q&cjr&c#8VWX4SRa6e< zjA{PcX38w%Qkk6CD3cS)xdKTnKc3k0+7M$hNB86?9zTT19M1J|VvAcBBL>46jm^8A z*h(<(GO=|D_7%%yju!Nu)+>YOPF`5KO7p_jTj-U!lP;pP*dH{k-i*DRNV%N)Fd=Pe z88o7Q{1j(Z#Oz8Dji5sSv(IU{lFmrAf5kK+tX{^`X<-l+1|a9K4fHfkn+~tkZK_gK zn^I#7wkM-As7480+RgjaeD-5ujbz0cg5l)hU>(b~Co<^iwB>8Exfg3Cx=((Asyr$8 z6<0m7Z`g!Pc2F|3+EYuzZ261x%_Aj}SUUxu5cpTE9zZTZplgqI)7RwYN4{k&VY8mDasm$a@y*<3bKxB0Q&*Y1W=x8Yp3o`DhdEcyYP`3_!R>f$H$ z50j`Cig(7L$bFF7j!{lr7wd3ot1agpm>F$xzHr>H5q(ZdhN)M`=dwgoRe-W}nohkY zVpSNNC(F^~5d_m~Eco&RSp_`*ixcWxBn3`^3Kj0uexlW_ROrTmRd%ZiMSg}NT{VBI z;JUD@X8T+piKM#d(x4^~R*C~zd^Z!peAR?(8`#K=U1PD0gKC7Xf}~klU|$E;6&6LD zg%+;pMCa8KM*T{>`(KTkLjL#8Mc_$al!)K6`1=|Bma0O&3gcyUd-ea^wK3o(!6KH6 zi&^un7|!I~Z(EZGZ(X7>A_y4aj3Wd%EFY)qY^Ac!L{P#5CMz+R3$UE%q;}LcT{-)p5;!!1X!#lt;7{`X*`NFQ0Vwu&R_LCJ>{5q!(0}v2Ed1UNKm%dNM z&uYrPqnxBDG>8I3=ZN52EY}hlrw!|NIc2H`=(mj+b)ZRe2y0Og_9bEU3&I8yc2PlC zAHqBZVZ90aE2==fw-EMQL0DVBaASpwTq^+1SYN3&vW-@=;K^uG_hd9l3@qfFz=Q`1 zVE0~mV1na^bzvaM>T&?YMF18P5E}uQLqH_*Qvo=0!g8%)8%3 zo?OTo;{6LGBU9`c_I>&nN~kk$&b}R6x3R?Lti?ANYkZr{7F5)~ZwKX}0Fnbg zt7F&-3ttrGg?20)G=a-N5^60^NLyaZUGYy0tiy|5_-_}16lD_P_;)wz4NN^1*8*J( z(X+%kwa;)eZ7p2iFUnck-X#&RL9CpwtH#DPO?L6}r?5&qnNiG9Z!{Jy!??gGH2`rV z7Bwj9BKQu2gu>no?U_?Q0yS%MQLzI=1)0Z5ktUpU%U8$7!HF6 zC#!7Hi*~Cxx_c*XR_fZ7y|G*MqpsvcACIV0UrADQ7jK%_ii@&qvm7G`r9)2-T}?FM zZ}41z-aPP`YO2xG-@(3u-jc^OdYhA{22RE~Eg`rEq9wuO{U;bHQ7@iWt;LC+L!A@`+!Gjv| zR9k_l55dmPcA(fo1U1HzSI|a;Fix1l|5D;#K8*i;7XtsR>n#4EQG)*vJb?cIJg}F9 ztb^{DbzC=Lq7OtzK%m=%5gIbloaVYwWB`4MTfg9I&>p5DgPXn6PO-)0ck7?nDH_NQgCL?nQACz4U_cXMm_Z?UQne0(sSq1# zjz>7RtahZ1+#uxsyqbQ^!9G*ETemcar*UFzg|qZt`VunnQONI$0f#xi!}{WLFPUVK zGu^npP(*~D%s{OPYdyYp+>D4r1Rvsmq3AcmPn?+kk)J92Zyn|Bm4rUJcrhCEoE3e2-Ni;ns;{KL+Jsv36VjH|N(?M_((&DD&ak(UI>U9Kekht5v2v_> z&EPOsJQb+Jb@QPPL;fKn;CO~()k<1)wE{)=)Zcl-g_-}i9&W{F;Jlua`Qd8AIbY`-L;N{i&j_rNi;vYE|1nmN z>!|ohtkw*pV{m{clVBjRA~~?32u-D?b$7{hqG}JTZ&~ogNMvE8ZaAVxBK1HXE@S7k zav3#TWm4cr3_N6ZfcxRioLuF4+SI;?IazdXZ9$pCqbq@q^9-TJ;GL|XKe#_ePkv|B z)djWH1??QlwzHs3Pokh!1q-sA=c?<|`SxH!99j=Yl+?^o0ThbShRl1U&fug7PO9)P zm+$H+`M40yWo87CaFjHyA!6MV&sk8|s|b@ftPR3lU}eV1xKpbK&T*XD?ZWU8o>wg# z)hqMzr=H+6aq=gbb!rg|(Q!zdj}!C7$w@n0&O3OrCTyGMNZ2FJG`tp#iAG~v#8d<{ ziymW0sjl9N82A~iPPC+?`qZgd5cpM0Ls2Bq756-`;^Nm>C4@!zo@dg|<3P)@s%dBO ztGgA|nas}3wa$#d83ilWOM4P&Sp53${YI<<%TO2adbBCAXM{vX14)N*{^mQha)ccN zlcp9YvL-&kx}NYiAx-CFd`zEnCwy zkXyjU7llYzpq)9lbL5#J&UrAoa$4q}aqH3!o#lOJ0nVgfPftE={-1G~X@>#IOboVJ z9A+#~Wny2rM+?E*B`#s>n<(Lx(v&cfCEQY)5_+MWD`qvg>&jSgyRwbPCb7Ekh)4q8r*t5~=#coz_?67twXq&JG{)2TQ3mP|i z76sU0=wjMCnTJKnWnu>BCkB&NM%uh@0>ws0bp$%AkI3R|WKmHa(cg6o4c{I@`FZCT z0#-^YcBRjw(qd~MbRp!Xa>6WhX%uLIwH|ci&k5&12k&#NB<|g?P=ZKAlZnxTADy6oqHn-2;16ula}J5z8s6!;a_$0W5sq6yOf{lnXeq zef&#;7xU-T>U7ESu(mSsVXo|QdfcDciZc+KFcSRfAw62e6pMQAA|wq@6LV^tgR_KM zixbjTp3SlzM_Cf=rKgqcao zG4j;wFd&k88}H$>uW|KI$oJ)TX2*7rY;_|`2>HfZ$PRUxhPNDoFi)!yo#GBtG6$awM?ELItV`z#Gv;X@SY{;4z)IxKseQQ z+*<5aisZm{=b@&gj#-ZD$TgBjww~qo7Rm>m4gnu`4etz=q%=xuRSlvTCMgPkrUE%E zSAB~wvf#8tO_W5Yae*C{d(>Ywk=ghtPR&X#3t1-*9B`(S6EZT=?NIMGCsGS3qM`cV zb|CX}f+|bJ);}xDT-6My%8D#kQ~$b5znCnl7SiK*n0>FJ zM4tBhWi(L6l?z}9_1yz{#^nPIdlEq;2%u;ON^>=8`^7>GH4h~MGlKTxC-*SpK5%13UBql)G0P#bwtl(@0kdNMrj~y>bgh21JSZ_#qPI2GXPw@IV9U znh-6&v{`7<^iPfaRX|?Tow=U(Y-S}zwht!arokElwc~oO4+DoGNKol4PmvvsvnN>$VZ&& zo6!;swu#ZCm$;64~_JP znXf{XRhJKc4U`;l`olzi$Zw>BC*!AZd1f<&$o3O-ZM|J*>5vPY!(g@;g;kpEMpeHJ zc}gz;x`J+2hj2iHoX+r!UY|k`q^^V^hih!qSmuInLv-CYMp-H$!axW zI=a@sz5UJd4JupeT!1dXLS_`eTX$o3=)f0J|a%S3s3(opVqn>41eZiDCv^cg9+0w-5Vi zuq4;9Iui&KwAu(L4V0ZaY5O?$$Fm?p}wdOHVj&cS+Xd(L;)7B@;L3)pG4qEfau)FaCwCA>q zNZLPw%%J$xwgt!nNWHsFANS1x1J`4#ms0UEUz;E=gRqM!=ap|Whq6a2-C67 z=`nRjYgEj`rnp>}rIw~6WEI}UXfF+4);#D^>=z(k;f~6Zdw156a{9y(b8SRmc&^)Y zR>9!ED*-5eoZG8gOVQ0}rt>?3`7Bzc>D3p%m0tbhUfrul;I=z=6xg+I9pp217p<_X zo(P5luChUtk+FYV=Q06&mqyvzFWd&D!Esf{w=7pfej+3z6HZ@!Q(||U~=wu5sXAlQnHx*fAAB>MD3GBUly2>?NUN+BvvTM1bo#=6W< zv4hlSJg<{p%^o%zMd-q4qIQD+b|$*eu6jDN>T{Jyy3>r)K#lJ=kQyh!&IWj$!5A$^ zJp%=3X!+-_nwA|3>O=?oFZ1Cse+p_K0FUu#PCXz5&>i4?fXWhdfd)0zpuMR8l?6y$ z`+}Ulmwsh6wgG#-lL3HlFTdmZ>5n5WH6QQpOFfvSs#oA<_PYA~f^OdP^&vXWi%4gw zVs)FHVz5TU$@o4WM~mSEDlz@tu7S9QJge`bYCy=kCpi(etuh72^^VKD4ui0vYKuT$vQ~05D8vDT-0!dj`$~{z#M62lGY}%>tl?f0%rZ=YB!!Jl zm?NyYwC2+eqOBo;+EwQa)pIo=|Ij)Jeq3Ij+-xpm4W-aJdxprP{s26{3LIJijalo- z1AElON}^FN$&pu1PK*G=j9i;&s7lu$EWhi!5e7TDfluko`)v=yS{IT>On*Gkj#xc% zp82D0-GqwLIu-=Bs45ybSG^-p8LHoCKm#-=%mjL_3irtXj-0!gEL5$f;r)9w^ifC# zJO3Ss0-wtfJcFP`C+S?wwx&st0))%|?z81FUT#&LLm7#oWJC$BMfqJNUXMtGN)Qts z69~+ix~rtV&P~l(N2ETiY9KX)&1r!_wH*}6D8d|!#sQJ@XTMS>dCi{Bs3*FNzr&7gPksHky&ITF&J>TxzuWB~HW8h~^1%wCi_sZIr%7#de+ zG(|q-Yl*8eXkQvL3!ZD{Q1N=^Kh2V27Vr`Bt-O?pa@F~^+`i~fm@H)YUL5o8necl< zp1uhPNe{;2*Wp{sN41pO{5lw?ZUgiqxC5nKuttmMVo~Z@s^17y374LjB?Mc+{jXF9 z*614qOU%1nu-(>@7ylj77ytcl=1~a4L3Gc4+NcgdMIBj)`cXLA{tWBkAcE~*dokOe zr9M9jam&RE`j#=FG8cIvi4*d@f%$LML}TZa7nr{>8m!tzX^exO8bS@vC3v8RqVX^u z!Zes0%KuGLX+K<`7q?FJ6vc{DadC~z9dbpux>%eFL}udrV}M|HRTix%R}xmOq=lC= z|E8YBiACHfo~53cAnO)UswS`??JpE;!e=ZwDRqdwe@F~4{URTU(fpw2*`Dk-&vSSH z(?|Ihiuv_+R@oF3d-WXhZc~{vSE>3%`K5-)3F%yz2sDe^Nji&J*`wY=6}*b3vLwc8 zNtW^eTRd9^4yak5$-vCYyXubA&hpxt_`fkLH)8lMSrsm~f|Q%9n)73tzrjvthkjD~8_mO+32|i!i)!z!}MkL!MpnY&Nb;^7LrV(Yv_~^gHks zc8o!z-8h?^l&>n?!MZm(wU7_}SHI4&e5F8tq_V!148;F%yi9QbOhlcX7z}COSfb{W zgCQC@M8Gdi2$ZW6w=S=~q}0|(10dnl|v5`p*Wnynh8Cq+F+}a zYON77&fE)^Aw>?3J<*ZQlVxC_kAb-2eoz6UEpPlrTb4fZ1Q&;ei!8$;kD~Xuhi(uK zK}ra0P%EHPAl)z~LnP;q;o zM5kut9y!0UE{Af57()|GK2mp;ryS5^N-Z| zm&-mFNU+JCf$YxCnncAj<~GYqHJh24pf8XdOtfbPl+Y@q!bU#JEw0wrtn3V$l@EsF z>RM+osQ&eYsJoE@VdKm9(Dc}iCkcG}bgD&vYapjCMhkHDYT57DAkWPJ@mgz^;5>$Q zarPhL)ov{`*)wG{sW3iSiPyLOwW^^VTN&`QXXb!E0T1-7a9YThwp{D6=a5+hALrf4 zP8W1!SrX37@n8pK$d^t19jf+H3vCpdvBHpV+G?%U_lSa!)4$UzMw58HiALf7#82>F zXX|N!;Xg1(mWpQQ0(?FStuKY{fvP$i3L@__X$m6GM&k zzhi{!i|U?3YmKTwokoR?5{z=y`Xf}S!?+W~GV=HF+)paWj7%)ZQq1W_7llE;I-w8(GYn{Q>gD1y41 z0WCUpPD3UR#a!D$x2qxgoMrgoQ?i}IkxsX*IY@2VHeYlr?hiZ+7Jum(Ua=?~q z8@Nn_=#r(8X0^AX(O+exD*j-n}b?+=pgC$S?g`guFdKU^~)R z^+0wt2*Jy!>|H(dplx0R&WDDm&&-DoN@gi9;JFwe=T6L=*%IoZ1g8lAnv9c{fsCoh zB1$#7DU#y`#GB>eVR>k413h%=hmHD_()Os#(rTyi2j3OR(pDEa%wX$hGX%RFIRKTL zt1{Lx>VQl1Ed$@mWzqCWM@Mlzv0Yiw68Vd@0@)3|M;Gb~ulzS%g)YoNC$_(ds%aN) z#-^#Nc79Y;mZ$e)kWKtK-{1)?{jZ;*LyP}n;|Pm?kJi-jQ;$ZPbm#r6XgldcNa(<{ z1E?4KRKqhGCB)`j&B(wMy3NHmIxo<3!wOF7at3!r)tThr8;jXGenD|I1z8z*-64|@N77F0(HamXnCh6s;BaF|E?WTMwvtu} z+2Je&{=s(^fNX=%gz)#BU=-&DVf|cZ37k@%6z_b2j8Pi7Kb5c}9M6fCgV!{RJ&fhvb*Pm|%}uizloQdd`@#-{+&hmd!aU z3VYUPup`sfL0V-a&g8XsasLH`(J zR8OH27_znuN5MQTK!`v@dC`xeyg-?RV9YF*kK^55#2ESPOws#r^wm`G4Qu%V1whe* z8}DlliCM9iV4QB{d58G|o_FO@KV2SskTVH)Aya=Rap<#KJ;ac{kgqm)k&W*l#bOo& z?PpO?aDz#zMR>{bT#r)NaC+1<1Q4{pJ4*BCK$D{RDc86waca%`#DzL-7D`7cG{jA% z0*qf+dLjFfOlljMeIFyb8JOz=h1*CKzKvdbQ`^-{=wr^E8H1nQk<9AbbcuXr6&sPj zay8H4N($A#23Y5rp%a#YHN$iBXoF8rubjC&A|&%^6eQ6tH; zWheVA-I%u-6;5(E8`WK5OmfMbQaaON9X!- zq5iymza|v)z;fp$d{c|b4?%x_M3Q=TCQ{lp9uo!V z9KkT0s-S^{O85rCbt6V8QYGTESW%Xz3QFal>?Ysp+yo6Z-_;^L;e-lQi8Y(bmMh0hKQKlpY{MJ_uoW9Gr4c3>wi~IU5tr?5KBNqK9-VY zsq9rUb zovUg~-QM&oVN21P6{Et@_oF{#K4tg?Y$4di^9Es|=vmmHByBSDA*mH8 zthvrl;zx;t9(MZuo2!YV`SrErxy8^j-i&fkreXCWHunX(Rj$H;$)M<6Jr^vaz%tY` z_Z3J|Hz_z;)KbWIyO@bR>P;~QoL|sGZLi6AF*1@vW2IK()34(_e<9zvnZi_HNp&}} zOAK_DiqE6W_`ZhBfWbI9Q*gOxA-m7;`gXVz#C;*PssOz&PXHn7xRWZ&EmA-oroUl)?Ruj zWfW58zVPZq~C`6YvV>y8_L2hd$Z|NO2D5 z<3b<3G#wT|Uh#vntZZ39g=_5W{Fu{=GMTCdZ{QR@b=raHVZ-_dwIS4mF`()^)L@+6 z+rc%|3-csNt~#jjDQzy#{cxubitn6x)9=Eh6_C=yR)j1!)00?TVF=YD=x*uP-JJKq zy>r*0Z-UkFtHM&~|;YaWljt4rh5(|M7^LZYIx-rMEB@Rthd32|p2kS1?&`YT*WP-V0 zpoU2axoYKhA>u|m36^!Yb`w$s4H+>&BUqZJyns@s!KkaQ*OprJ-zbKX*_p64SL>OuMHr6Y+l!IkzBS)?@d{1-jX(^Ge>jbgi9?=iq-7k=e_q#2 zy4C@%5WAPga;&_?nTv#m9~#akKWtZD?F8$OmlE^UAKOSn|D0)7`zcHrN zz`PWS5&YBxY(;4eq3aC1GvKr6Kd5E~%U7YBA4%`s@ZGd+f@H!TpZ= z1mR_$9L>*5Cw{Ggk~Fdma8xZOh8M1;Q5_MBiBy3h-{+XYqkr`g;dnM219d-&-@qKd z;G!{AE}WTmRPtwe&b?22J|4yyBvVy&XML^mRs zG|ZcC?B*Y|GOkg}B{`Da!tnyXm1zWJBRnVh9tUcsKp|G>yCvEW@w?8?dn$>A!AC!v z%&_ZG2w~=WOg}n2Adg7ihvF=J3Yfm3-(pew;oc3Jj2f|;Z`HqP#;W6Y6_ENd)1g(m_BSMg&JlYrM+4Oe6SZsousTKXhBn1| z&;c1RTzz0f6-E30jI08uAPUyF0+#)CUUCE7Pk3mF0 zAq;+z6x48UXgzcig0oYur65(2?86LY`c9ba)5W?zTddWgboECFvhIQ1YL*^_HEPOM zp)$T^YKt1SN=uB$eymZ^Uq7k8fJ*ozjzd{?{v@UJ`MB3Kcx-|UPG(iBLG zlT1fQivt=%jasmUt_xr@!N&yeHS#LcUxK$!5vy5;no{IdxsiCJ=mJR>Xf>1DEQXVh zHF6RO^0OV}w}QN}jLpc@1N;euQa5|QI*MpYUv~%6|CzSBXop$%c!#UJmt^f!Z>I=l z>g^X~HIR26hw5fVEX5}TOzT}D#h(Ab0+K3c9v$fc?~<@gNeANescA?rajy>mE&JA?2iL(kiB zjX6!yeumkXU&>To@AHr! zHn-J2l31GDQzU!%KQGGD<7;=k!$ONOG%*ii&&jM>1I24zVRyC|BKTEwHj&Ka-gSUh zy}Q-rhUg23f?S055uMW7e&0#it!^U))$8~%H)v&Lt0Gf!AqxT_>o6mZcKO=S)@N8{ zp*(Lz8A(re6iA+Loh^*5QH%O%jNM1MEWE`(U&(LEk?ohyEa|3v5 z-W7y<)MTeF*^JB8GsYhEn4~rO&81Z`_V^KaC;KK-glQ+VY|(kThxvU#w6JWjww}cn zOT4g}Vn!{COx0S(UFe^pN5r_}JGH&^8p~GaYGtVJSwzog72a?{jx9ntB6s!)*gIR;8)|e!t{32XDg9zY398d2YSnMe zDDji*CWZ4>6rl_Cx^|%)S_;X!_G3wlwAk89It`y;{G7ncwMO1P-eC05yF3|;@u3}8 zMbSjKfNIftZ=GD|&>FqZY`H10-I+wXX+7JpV!0h$j)nTH9&bBT3k_1E3MI?A{}Zq4 z|3i&frOORndi@~!Ko71+_D6`An$t-Seyel{Kp3a%&XhSqRxHR0>%QrzJkciUJUOOZVp2Fi1AohQ=V z@2T99;z`_9l&P+Wq-1&m6<75QjcLK3n_CR(8ye7pAE|D6bBlX9>p1?d7Nh0yY>Ows z&^I)x#dN{MZO4_6jPrd3?X%`KznWGw|HhSIE&BM1O{@jo)}r*p?@Q{w!A9ao%%8p? zIbl@C(19WDoK{{Lt}QMICj;F6kyzUy_4Gwr&;L?VU)Cr@Nsk6QzUpiGVKN0Ol5lYh zafjL#MN-B?bX{>yh4sXPb$svWcAMY*__v(;k2{5NPKj&kd#Kl+6yQVsj4rxi0C%UO zIlt=VM*11zGL_@olTVYQb}T%y_c`{$&>EQlWGOv+mQg}Ck|JvPq+v3x{L4|hK6&*= z?G6;kuu$fx-Rnh^R$tJF8aJ)7n`xV zMXjjQDq7|LXvSO*p7p41kR^Bhuztk>ZEZlKf7Q8;d`9xlVcJt~uagEk2gHZ=M#e*~ z2lb=ttvnjmD9soYqD7zFq}95!=57iONgYlqZ1cXQqjFZ^c2b7mW$%>W9id+5TCdci zf25{L{dR>MP|kiAlzRHusV>x52Qs{}KQpPSqej_vP)8Ye9QV8JC$XULGfQN#Asg_a zaU_e?u8q=`J*qRAsE%~j>2c2JlM0V95y+&o3^?+;PLg7vN%EP^mX*+A%Vmke^cl|CGA(+NfB#n z;Zq{Baf^Fiy_P$uotoL_(^u*-DIIQo7Nlx>eYtw_6iRWS>Kg;~8hC}LSDR{H;KsdE z@p!2QpPrcN5HOh>0E;X!J8cDTo-FNlol25an}x$psLqsoBC^cc zr2Zi|oX(8Pl?X~X2xK;J1R(kfegM4}uxfYw@S0d@MWGFX@JXO)N(%dPXxvAPy`(M_ z+$=JtnyuKsQl(>zHIaRWNb5C@X*^Z3p#CTLr)Y57u*DCiOG1ue|Fd`;i+DTkKCPJ>wwXsmnG8(`JWbOzW0AhUMGE+PB-*MxI= zUAtK7jbwj&scvOVYk`C6T~U+{%7W0gz_P@gjb1rQ_p&azM_s8ASAm2@?&%DDq5W)l zsyk%4I*o6az`*5#qzf$##jrtxjpoPf6^uIRh(wKPd0>g{i!%A?W%#=~Z;$$?=r1!g zq8^r%f{DKDjWsUEZr;@ivC{)f5+Q9Ag`{WZI2uuuN_(?-IKb>AS<@s7vc3X*?cWUe z7D;2$X)9E2QrDQl+1VfygMKCev6ms0#lXkYq<7?`HIcH9B_azOv2`=2NUTPEuvVC{ zC)$%e4jDgZd?Rt0N=sZa3TD!kkV$1nb|HjULz_D-OzofMgTGLu9k`)UI(G_;o@ zfxNpe!}aECuDTu*oUZGLLYMd%7BHA7&YX~!PpTx%G8)r&5^3j|G;w6Ck>p5rj%G1f zeo~7h#o>V3zs5v_)#{%Tfo~gmN?(1)Gm!VwrEGV5uNO~6 zRO6{qpSBi$c~2+F=b(Ozq^y;6`?Hmi6ugUxF&8T+*(%Qjp?XqI4@a`6X`c?wTCA1} z)=1afp1NOzXI@>8t2OWrX^SN#oOgm?_`X^z$VDOPY1g4Vc3ASh7HWr0d z8jux4q{FAD0MXNIu5STOZ?4ZgRbFIseYBxOy-MebunMtMRRJWkrB!+x90Dx*225UW zl%;Q`2yK=6td*9QTLk-{Kwh!N*&pBx2j`UD{l`{c_lStw11)`aIne2K7^d`bLBL za)Ww|psu$a^kjAR*LU01Wr+a&A_=eY&@(XXhs z%9X{t{DZAl@L`?bHB;k6<2v0j!t4a9qHigJ1a_vQZ!>8!TU{v0S}8~@!vOi#Gm3F+_cpmDG|xupJ3F{W}>navYdvCr}6enkK4!& zz6nnllpYYXYC38K-vlsDH+OZS({$V{3I45|wS&Cl?mnU&s=U>;f|8b=zE41$W@I=1) zgq#oKlSFNxMD|8qL8+jNQ3B}hG?$<(#qV`!dx|A#(ieBwf2izTeTRe-5dYPjQ{#1Tl7MzV`MlUo8R{0Y`b8; zroeH@Y>}isk`!^>a+36bELqn#$MulT;(GyyTv;|O>Y+!xxbC_Ij@s%acuH>$;3Sjk z2+6Q4wN&@Bo1{34fVe`U^!JG}q_XMnN6<~NB)+lze^`TuT;FiA3Tq&G?H*Zz>wUt9 zUqp{zj?`(xgo9L0`UNkOey&Lm{=Q8bn)lFIoGzWjy9{Mp=4Zzwl=ubcb~oyoejh-; zYb*4L8OECW2sJ6{Bi5S6Mp~D5$M8X9Wi~Ge)rEd^hbmyv*eBrWL^;dFUH~OUm1=ub z{K;=|H?0I|B>P4|hK2LK)WM=vqLJ3~UY99}^FxyAXfw`SINr{o(@pMa z4qYF~UD;3-wz||QHkTEYJKoZ+rrq>4HhDejmUVIKzWmm2yydjYTsrHf)z@bkQ$#;= zoOqCaZc>NzNH5KpqvL#qj_LGQ`G%1I^1``JUN~kvDI>PwXq#>pCjhv0raI4&V^>Iyn6E214rQGD zL>^C<2;L8xxZc~EmUlrc^{lm1&49DAXrsqOkf2TXgeG0%|vFU$Q+I8zvw3x0MbthR%tVOpxz6ek32*V;b}ngN4by~ zA8$V(dg>cQmp%)=vRRL-rkwMOcIO>^@MIHF5ii&8T&4=^8Z~VNiohI>Jo$jDS9c6n zUo&CxUcABl?3*L%p70#)<%r~U+9&g9`!w)#6jEvM1GCFnMA`lgZa=q`igGBZ9C zVp~_g)+SHym4>=rB&w&^r%gQ&Uq%u*MY9w;WlJe5OT<+Awcax*S8&e3Z|E3~7Psx@_sNJp|osS1Fs%GC@;q^#QD z(>bc;VH1gDpU?}k>qRewWq3(L|FNGKxu?y&ytDKyl$QdhR z=3%4m)1DRisZv+*-4HmpAol+MZBnFxGqq-O)pcvaM@f^Zx1rPjqVTkT2Ce8pbVEMV zV@{Qq!(q0HMueHJCpmoV2`6}ZmS*JlLex4JaO9+9sfYKQ+&8;#ao_5`?Up452WJ{$ zbCH|ahpLd$Q=X`;vmZZPXK&nHXK!|%d!1+Ukve-MVIpB4VaKa>eR$)3+YWOA?;$*xJ(Ocu4~f4)LCNvTe5@oYaa>K(w~)k%UQv8H7{Y*!ClYeT1S@Z2LWei_;d5 z6NE0|;bz`%KTv1?!t<(AP5M%vd)rapX|_GOy=`C80bbKC2~y_q({1~#j<)?Q;j~V+ zT}~+NhP_M>yb^k4K?7mtg|>agMYi3%yGc*Vw(XLOZTpTK=phV;XD9Zw?J7dNY~$x{ zCp|aUw%;b4oM+q56aGOETBN)@mpSp4m)dp*LMB1*NM1JYZxY&EX4~Tljq%6d1uiR} zwq0)9sl9Fc8;>bFy~wt&yu!BAue9y=2|vRF3F&)Hh?hSSt+OwP)!FitFr(PEKOrt@ z8U1XX7LR+0_w7%gTxHt@*U(Sb+V;nU2L{;ojRWC5;oR$N`(i>I?-J)-;^$s((&KeC zem17zKfQseM)%bcH8cLhvD()J4qjG+e-;g-u3V6 zZ%j-4eKK{-Bb>Fb&Tjl(z2ndE6yI&zy9rYMFwZZL&u532=S-gO66O(>5=y`+A>xE; z(q7OO}{0Q4_ z<+bg(gnmBT9!q$e&}<|+0=TjJ>+E%e2Z+}Yrj4@gCZnmJ(B@Iwj{J)35w`I@9^31L zU3K(zc%_>?d$(!5&DEe!GKb1wmwF70;U{n)kTOt!NbA?7Sc4d1sjROhS(mPKwy} z*@R07{RnpwMiM3xW)R*dbeU}1IfN?+HxY&sL~j4d^HS)DhclmoKLn{?=o6U6;W6@3 zr`Y!EgkDdZHf-T3@FH_Nd4F*#{qc;!d*QQ;Ny2Z0JEo!cp5rne;TU1<^XP`@4fUV* z0?SdtTZFt9(Orc5Ub5}q375Xy09VHQm9N~-2i_~{Mu-XxDOldzSL@ps!EOn8m(=v$0&!q{2J z4dE?9{@b>_o$%v3hCjlaUA)&i@wC~<-@ANT2pMhvo_SvU5BlwW+kS}f7@;Tj#1lMU zCCnoTjsc`SNRYhv`ycyB`s~eL8bUl@(j;#UxCYLl4+yIX13qBRB5WlbB6RrB@UDR8 zAi|S`>pw!?2{s|?I1kL3hb^5Rb^zsI5H%DJX*#AZmGXWJtPD+!O!NB?}< zKy&=O#X$GX|pXC!#QD*Zyg*J0f*mle~~3$=y*DeqYKtO;u7oACLx7zr*(54qKpLhaG zQyba4LTa64b41Re=Y5F^sd)$m#W=LG8e1M>20%=#oz)S$UgHhc z_eUW!l0EAQ*mk1^6$ghv6cfWVC-dfW#6=_927F?MwQmyJd9j%d{ox7x;wcK%1@h86 zWA1ycz8ve<%jg%%0Zb!mmA)feWs$B4LS44i5pS@V{rAr0EN5P#6tjY5dN=JL6;265 z&Fat0LQh&bl&nDB2N{C?9O=?X_G4gDvw)#PiQY<&sFm}zC*av7v6LZG|!(vOwNo!4|qXBLkO4df(75-b)SQSAqcb*Of10)18ypYz){)gt(edc|*>+ zR7Lj_A98+NGKV`Mf0h^fIs@qnoS-3o6=Phd|eF-JR<842{H!bsV4109DQmh65r6NEGPTxNXR=BNamqsUP z+FHLM5Z!=?K5i1ilF-oIk?u}8%nEyL@Wq!*E{J)Tu+As=Ft zPsB;y;}gj1s`IMkWV>iz>Bx2;*Ml!QTc5WGjLArcZOzdsTD3)23;z6IaT(OwsOD{=5o+5`C7b`NCt=e7OvXaQ4l*G;I_FYT+gkB8R{e z1nif2(hGZ3%16S>J?iL(a(;wQvUYtO5w}X8J|ZqCS8c6JU-b`;!Mzzhg%j4Msx?1@ z!vhYmI?YHk&3LAxZU!Hh3T>2Ze66nWk`~Th!2^P_R!W0UJ`QJilxDO)X3PMx}g&(nZHdm(+LmCbR*oZJOG%WRlS3!(%eKXp=y;do|O(LjS1n z2byRG0Wz#MUM8xDBez2{(p7%1V<5DGbAgL~p_Nq~osxEr?i6~#cb2K^)@my0rHSPC zfIuiZTpD(5t=)^L(!@2pA`?Iq#t>vr4tkR`=H4)s)F`%9QHuV7&uw&f-sb zNRM6BLt79?0%WNNh`9B9rqX}oLzG(h!`_T^zSGE{_&p%q*dmq7;pQhi5Zxu| zH<50R92kaoe9$nwiYc589ck-PUOj;&sZ#m&&|=#5@kF^junztt&^E)`?L*lX%&qV8 z{x$I~AG_bskLOCXmQ^ah{)U=R-@b1$-l;ECLm~B^R0nCnsXARo^lC1#sn&6lb98yE zN$2aIL#bKlY}G(=5w8v8y6VZj`tCTn7Yn)Vz$BN}^w14nDnr+MswjsGX%qF{Hz57t2|3a;FwmEwt_kB4hxf|egp zJ4PXcIeUduj*`s+Pz@8+2p4ZK+$m&cU?8a%NUlG>=a4iIl00bGZfgAyj69~owh(%m zPR(1_mYs>$XM-#(c4x>{MMCsUGSw@)g!+PveDw@($fyeI=dy6?od8M2SSNG2AOTR1 zU6(*q-*U7^w*vmkED%Z%4XnPPl5;;<#HP^-r-<$a?W%x z{*-T~7*0>sV{D@_-X$7wsLXsKuaoE`a35i}$ngJ}D*9vt<4lY#NacG(d(1e$_`ai9 ze&;g)V7z>g=may`)K_}W6?;b|V>lGZRvs5>81)OmUQBnSQ$^~XdLXHp1{!+Rcf2-& zp5j1v0s1F2sH|F8yNMQFaIYD#gLPp#Nh*7e2uce?#k|R0GOs1P7Bf0&-_VRyzH2H& zHD9>H;&B7a4G+lZ5&F@CO`eY6^7&S3JIWT6X?}2=@PDUj2L}Y*HE+waMqR-ZQdBQ_ zM!GH?iz#o$NyR?K3F7D=cnAdQ<$p*iSqol+45-g%8?|+=Uh@hi9)TKJ4|SeEJr9)o zvtBS&2IlM7HBq*V5c8#;MhkE~zP0;7oDUeB;p|Nux-!?-BY91}*8RCY#%h<-G(V^h zqC$!sAywa>fgwzn_SW0*-1k4z`Hrb<&u4NF%xG`DxhRXAzhb3I+xyLuw%e+=e(q40 z>gTVX(7L#DfUU444HMLmDGlp!;~#kzHNx*&;HJ2qmhuIezera{I>)dk;AVfg$x^8^ zW^b&A)iEE~8huD-tD1^<>)3A9N5597SB>XDhHQ78B#sJicMWwwogqoYKO+vKPXniF zVM-ExV-(TdFbDJH#n}8f{my1yy}oJS?-4bV{dPh4pu@Fv;$nHhn9eX%i=8k~>7#-& z3hEj7yB?+{E;{X>X4tA@e;0=CP`~pOJiBy!Z=4$8rcm#AUWi6xTykq*a3lWW?`X@9 zAN3W2iZfD+Lf;n2xyobG_20vFGm86K1zb7wW~7R4L~0lnj1FvMP6_U2$GJGPPk*iY zNA=nnVzzQJB}n0Ve#jw>Q9|kK7*Fux0eL^j5v|BD-GE#UP3aYnt^TIlBvY;GjkPDw z6LpeSTqD}bk?lR|aY+gn3oU#)8+?ET2?zw~k6dqsSs4z~o}oMpCmjAy#rKc-3DSYI=_Z53Ju zwtI`iosU+#5*8%n|BJuIZ7sYsXpe3iI^+%)l;)nXPP_rJi|YBmP|B#a56PFUyzQkb zYVoa%wZd0&ynoIe+EX-`Q&o9SQx)fgDHpS*nDSFid3=5wJ%L!_@U~Pt=6suqYjnkB zxdmrzre>JHG5g~YN9S*EG#@wc-&69-IymPJ9ViMNRoDgGMC z?xZL89iJvqL_M#JR_w3WxjV8B6yk~Mq4ERbztQ(oav3CytXqeYB7M{uNNqgGl+ae- za+DRcNR72rJp@XZ<0CdKqZsYG8SSFPTWBRNmwy+1XHt%!!bGTD;N=v1B>PtfbgN`U zvgaT}BD&uor&9B55aL_vezQKrBGRA9E7j?-Qi{&jU)_0z7r8wlpOO|4DS#hZ`M#SW zmjH#9ES-dhX-vlLGL?UT6iK9;T;0$&1d+IxC6V#kLx#q^a;BJrXVqZfD}eA$FEIP? zQXF|VW2PYH;D%HXcLJ&tc4)eT@{4}XnAeA;aFJPEiZk--k4ed39H(n5&8QGeSU^|F z7jb3^y7Wo<7g4NCDUwNHIn(1ON5D9HRgiJJpc{4^x(kj&XW;(~<1oQ^`*F?mrb*L+ z+L6rRk-L!yIq@p&#PKR^aZHc9coz-&4EO!$pJ$guix8vV#r?998`ZIbxS(h@&kz%%PV>T%Phq}%k0`46leIpU^by}a{7j2w43Fg= zwPa?!q1A)ej}qk+m1dp;7Oy~^O16|0sa4I1l&<#;f~dP26V+Yc0%u^l_HTDq(yn1! zTzvZ86FQG0e60`auMKX|hFUGHxaelF1NW$&aXM<$oL7x?GK;5hXr_+uP@|vHqEWia zs28O;Po}j<6%>hd@P&`Z^(Z&$DD`JEWM)f0Gj`Yg4SbQ&N$TOvf|!Y&@eFQd-DDIE z>S4f*q7TrQw#oq1s1DqL%>gEU%Hg`-dTAZ_g0^v>498Vm@R% zLO)!0nMa;HH~@>oM^8aJRrn2oc4e6S7CfT+QAtcVSsc2w)dKjz)G&c}RAbkBs7KV+ zgQ6^`JCc2(!KIP}k!0PZvuKqWUMRQgub0NimWwLZugk>%KZ6Fz>TN!wg7$H{hjW$E zr}Jn4jggvU3K?S9c_c38}F7b6dM{& zu6%^vTOg>6bug1}fWXk;MWTST%{hA&5HAP>UBV_qjTjLjT|%!`{_(PKPQE+iZ6>|% z^6}uiGeh)4*5YqIKoePoJgW;KU)xm?uW;Dee|X%)RPsO3WM+@7i-xUI74#iW)0Jr~ zho7Y;dUotUq2ETuZelf&lWdesy`#o+I9o$i+`a@Elnb-(=cT3z6DlHwyq2GgxC8TG+PlSy5D z1+)zE<@&itE!0mrj3}m8Bip#%UOdh|6C7B^>K@LrI%}BrdIg8Qyj<;**_t6=WRghf zs7)ZpJUL0UYNIZ~Hjqi5A?y4HLTk?kTjW2G#db6-VE;vrJkiA>?WK2V zdwQyo4&^h^fJ7tN8)<^NQzv11Fu9uKUi7NE(n%g@=3Jona^v|^mvmMo`!J$kbLxwX zKntt3P7w|}IheYOQ#H{^-dvyDM3KC6u>OW^>B{=#vjoXEI@#y!JxriZhS^)g$$0>N ze9A`B=6TF*&#?KJIUMXq4%#Od6biUy0)x@1A|bo>UJmj{(2hivfO<% zeeuXrk{6le;EZ|?%xheTSMMiz7>*PC8EZiDd1$_7_u)+iP;D}k$_SaLk;3xq zk&<<<&Z<(kPj}RmOtwvA>vzNL8i$nmRd@b&)l&nzZcdh|jPxt@Z5whJw1{%F+AT+IL(h*gq&f|G16y-4yRN&an} zu~lR=&x8HkRUVtj)O{oI&q?`Zv<6 zT+j0tIHt4CJp?e+Axl4`M^dB(69kN9c{Rwb~%V-#0+R~|0TW=Na z_*#Ws-;*c8SLIs4n-nn}(h6YJ)gV=cW_U@j%rYgLdBQ0fA=h+Wx(4KfQ{)zEojQz^ zNvG$k&HbE_pS^Rb^vPm%x<;pm%|-GW&KpB{)#n-AmEDSUSKcQm!+Af+17j*(bs-za z$1)P+pV1QCQE{rhro{?wN8=QPx{d;(IMlfYE2>I=njl+)lL_;g2Nesa!4%b=0y!yu60qg zyB?Q(fUDj|>#)h0PyWasnYxN_!t!ArAtPeyQs04wv^?r(22&#?SqA@8x~-zt3k@&( z%+H#i(R&#AyG6`19~sRp@^O%WMjWsDXl(NTAP%gz{@C7#kq6u(rP8)Y-i>G*Wa1RLG#=@?;xpQD zdV_+I`AWLahjKKt0bgH`qyy?sNrJwO&XRd*LyP)2S&PMzyPu)1i)b5is73^W?W%;= z*sFgazky!-<%7ieQ9220jV71duo}UGLBev078r7xBzFrmM&t z&d`<-Hb=4|*&R2S=+obb9D47f^#g&R^;%Cm$7pgj&&IH)<7fz;(Hw=7uiy}M)g3BNSZ=YPbaCfkv|dKK;8*IKoinv1@EViV|}DC-M`lZ z#Pcy6leO+nHC0HAWH+P9`1{0c@slF3^CINX+^f_-c+&?vWlG~Kx4`e!@CVh&Qe1OZ zsrAMm^o%h(RF5C)w=c%>C2#T9M6!RmLx|s_)=!mk_*M6fag#0%ofkQI=Q??un#}%Dn@gMzb@D7HPd>Xfl{rA#cjRf)zF%pA_;T4p zvek38%xqQaRuYMGW>W@KMIDD6%rB|6U?LO1yaND6I@mXAWMU}I1|OZms|epl!Ol-6 zK%{hI_^yn6xz@PcB%kjjvmy4eN$C|&*{NPLDbhZ{hsgGjYpG$AoJG?#M%J4m9bS{X z<2D1$o>r$~26K8ba=`}hVRfwmchVm4Re3yRO>SmqJ zeRp|+3xs!NbW(*9jby)|so0^)r$}iTwtO!|9Q|xstk+*k9%bm1s@7DmG9Xg~6!I%aQD1;_!mn?R2P&*0m=22AzCREkeel zobMCRHkuPV)M>g_ar~A4XbPv1V!WQKbT95u2OZ6UldrSL#Eyy594S++A?VG;>LiE! zE68N8Lrw?V>hpTYK^nV;R2tnL)k!kt(9XF+60KY$A6(ap>#7F4pK9nDwLb*$i2`|? zwrRAREdHDLdPsJ;hZcpt_k@1s+6+H;q%K5O{XNFXsaCA9pARtdI5BsJIhTeE0D#{|ZZgmP3Ly>Sa0`s^nsO>rTvwq~S)C{^L^*e4ORDjdSMrqrq~avBAWU ziac!-q#Z!|?G0L=s9&xT0=J2%55ufA_FS?I9GNrst8t>xSWjqORwILKs7d)5r?#-a zgVuOrNBWk@z}fhV46nT!(){Dz8#Ak$+~maU>;cL(f)S9Sqv0Wjzn1@OPvXlvcWE zrLlL+Nt-VV_2Czsr|Z9j82ts38&=>vP48ou*u7@c{As>Z`Lx&i8jd$45>@U&1sQ-HV-1uAkqzeD*kZzMw zq8YwZ{ZgMYTLdH0dg$vg?)&;w4{I7ykD{Gag_Fvx;p5dDQ1HDHy_TgU5&_}cSH~ND zS5>1%rwj4NHTsi094$Su9qa?2*XP0Q!rWNp2>t+4x)=y~_R-^9eN^+I!uKi}P zE_w_;sKpnsqqA`q2NlAue&pP=MC+UDuDwd1qd210l<7|Ly8J!5_|mB4)8!bm__y=E z_)R)oyvh%n3YnSIVm;|1l*_fgk)%B)iIipLO;c5iOo*(mIZspd)jo%+F+$aOLRB9_ z)jV>HIeRO#l_GnM?Qc2%(Kqy!C-kM(7jnddLl9yX6(ftSg2G@iY;MxT@-_JWdiltf zw`=?taW)@YCTvDNdIPm+92L;0LAgj&B=64pR+d!>#f&O;d^kK}m7WEuGI4yhL2fbf zMYik#LMu9&F_t&x9g!BLI222biL^QXS>bsxNgjG>Pxoy37=fny zZ|}wFeqPf4wO&8<(krpQLaw*I*!}gzZYK?L|E0Me%89t%K0zv|QGJh6-nSLcZzlNS~VA{82Z~nN9ftqt2K! zk7u7zr_Nc%^O8|5`Fs96(aG~`_+#~|bSG3%=8W7fR#`PEMPUy!&B3tm-SEI!#gW1} zY6cV(hYRrnR7GVS=l=W*`5WmoH8*K^8}JRYf=5UxwB|mPSXBAXZbjCYms{oS&yQR_ zBe$tlw&72)dK|2w9}lhxY)K6D{aEYt_W|}q`o5tLIEAVlGD4L?3EwJKty2v#BJ=@Z z{Yz%}k2D?ixK;i|<(6d6y!-Ee;DMn-AAHdBjk^5Fl=EYE$`8OpW0O%Q7Fi4NTeP@o zbaFyCr6g2Hg|^s_g;bW3@rRmf)ohN@OS74jI)I?*s8ifl`PaIVwA9q5O`9}vQHeXD zN#VpxVaDv-Ge@0jl~+*17HPxaloC(k3VXAAV(-LQCII*3rdnmskOk2Efil*t*DI|+ z2`L~3=xjifQ}$)8%uTYUR`!i_?-y(1w&s%Kl84Jvxw)IiT2Yj^TnGuRU}iY?#bnT> zBo!y_m9y<<2P(G(YA+sjx>fG6Jtegj;2z#Gu;ns9D_#=N=FK3gU}6u3K5d$1P2iJ` z-0v$awSDhoRq!Q75j^(S7ta={O!M^YTa7Vz{838vLJ{BU=mOxMg=d-t;0}#Wfrv}SoyFgQ-dy*B zjvDf?$12@p-g^4FEt168DT_Lolry}|fj*yK9+%{k+@T)P3B1w9RNCmVE8LMs59j;s zc2-$TN@$$hi_y(&d$y2#C$&=jr=-V#7 zH{}V`HL*%hMDv7mKXix2%mMpyZshy6%gCusx29D@3KBZFLkZCgaCjnDB~DDW%4_9L zXbLs?Yb&e?M<{-vvXd2*z16^uj+Hx_AcTn=<4Z#R(!P%V0DyaeG_Ekzwip}*6H}36 zuz1g=mWtt>+?4kXkCz=}%5J+X?Fbj0*z`mDR!5ic{Irv_H&Qg!Uz;@i6w0E1#1&}G zO{ZN9kyRdh6(5~XpV%thzj%iK@CjDgVEV=?U%T)k%mv2X_ap8VDUl9~JxIOjzK1J! zG`Hs3R{5aBz_!aOw>3#SVwI0h3hcNnjT5C6$x&pU2Bup*2-L)_LSZB{0_(|)ANWaukM`At=+N6)C#6-60Qs?MdX>oW!K)88pY5dv#*v z)^uxC)`8&KeCyfe?$EFlPoUBjT9wHM)vm&rS`j@2J+v~#3a-!uC0FifThHE;VDH?~ zNf1{h#9j1niK|Mh5#qi`)cuhX?+;g0E@o)#VwVSY80?-zgspPRNolp#+^YopV!{61 z@PF6z#c8Vq`^v<$HE>g77iPMmnINTmlcX_Ld494xl;1phHmWADBe8M^zu){&KAc_e zy0HOuk9^n7#Au=m38JH{VJmhIv10V#u*!kF&<*2g4)~j(5mHNRKTQ~(Uc$Fj5)wwG z2M_p~2iN*iLx)k*E%^b~{^N1D7JVIBRe89nXYg7~zzxU1KeyF&h0GJcVeKW&Y0s|gMdX;8cZPpJAP_pP@q8NvdB?=}1n;TR5#Aa^(={7-O= z^Q4S~?|3m8{cc_k*ya{$(xFqEGjm?xJE6TIW2 zr<29tYwk3nOd5fWLp>>Da#O6bx)TJ6X{WYuc9BpN8JB3y?UU$m$e-JEv?r3=)Em?D zXSguE-UOTE3HP0j-8H3es8*eWsn1nt+2w`$H$ViBmSOQE!(V>vEjkncxXdrhkXIaj zaC%X=Z@u}-?`GbD(YQ`+I4JwWYqf!Sn^42rE@ChYRPh94?Od z<^>LQ;D#6bk?!!Nn1^#bIUHQyTx1op>5w*!! z8go;67gcU<8rbF!9m-tinO>ZTb(?*Co+z4>-o=rW{3{|ULb+_$bmJm!aiU_J+(@gh z7~K6OPvRzfJK7Dq#+rO1hC-w)VY9UQ1b`lSigO@g-%M-5ES+Qcak1&@QLQ}l1A;ff zZ=`I(69ARi3Ee~t9^*YK$5V~ww8|#Q=i_C863*`wsy&dB%FKGJ0F59c4%C-~KLC~H z2vEO9K)wEmiJy#bB|w>tfRg`+iBBx-!Mcg2Gy*!rP&%$UEQeJBR6|CIT}RujviT(Z z0jTs%0s2$}8P4T1?n>v<~Db!8B z>q4bs<3@9Ip$j?*#;*GPHvN8ve%EpsJOTyLbP_I~SR6FxG5obIhAZj*T6|s|CQWjL zT;Igas_@sQG76*b0bm9s%j5w;`Bj8FCnqQ5G=DBOx^a5Wn%KQMzSt^H$f?8*?^ezH zup;`Tw7NW9pMc0&;~jB16G1SwvrV_5V6p677tRnT$0|?dPFFZ($~OxCK&-ePH{@a> z?2e$fnokUDITol*w5C;ds|5MV*!d7uAOJ1C)Bq*An!w7WKy9)&HLD_E-$o+}vQ`B4 zVihu3ba<0rR?^dqZ)Q}^s%Zqt4kgoHfs#mvk_MP?YEG?H_B4PZN;$Q@-O;y*1ne}c zv=Y4)uvtdTASL<{u@c+#g6x%-*rpds^t<$e_tEHN4OB`J)wH7;Q7hv|fyJ3O$^;kg z+W85WCYbXcOiRNrj+T*3rQW{+>dlJw29ME{e0rl&z6#r6HD|2^TYY0`WnploRoV_% zcX(V1SBg@!cpk+>iLRkvOYHH8;rO;@C>aX8UzFH0sm!}1)&{GOd?)>*5?f@>JNpkk zGXS{>&CCt78Cb#SOHt=k>KzAJ4H(UGf6-sM`e4fKak3j5}970y$+BgK>XgZz)Q zzHJE1Nc_PnZ*^&8xSj8>OSj5Sq5uQ-0PeS$Qg(3nxt_#2nOln^u1$mG6hn)*?@CUv zw+9ZP0JkBafyIZzg`Y8vcYiu(uT?sN(MH7kbfUy?{L`d#E~W(brIS41>7=acv=z~h zNl%%8UnFppsXY3*;HiB`rg!fNy21C-VBcU&2Y;B4^6)v4A7i%%Di4E;hPtGoWsnb- znphKV(J!o<2k;VF8K^kyiL?q~H$P1))1VfE+Mk;WZ!QwZu^*#JQVvk9V1O}ff8cxx z)pB7lb3YOh8Fn~O=Nfe`BSs(i8=Ue1PL`~dc%BZ}o3$Y)w*ZAOega|Ws>hUp^rA6@g!{w z-ts$S;>}Ocz6ht*P;IP@-XL+}^Jh{66o&Q%S9&wER?-#Ctn%E{gFgfhTEWYtR=d&@ zsO{wYXY35hKy?!ShOCtn+ozVc$CJ>$5lBqxmur-f4l~MxgrB%M9u?gx{TSRQs&4VY zaR26}$M>1og-dYgO7}QQ7NYP2dR`Y9HWhi^>$O2gB4eT9=;I!Thn;6>p-TLI&G_Wg{X zO6gW<1^HT&9hKRStl(V|nd+1Zh8h(J5Bw~a4pQGJgQD+e;p=J6SDwo4@a-%97bh<7 zk#ZqFWJt1JoZzf% z;$0m50T?|IxF$Sr)>%CZt9^w9p=w-+qZ4?_2!`Ht!smpogr;bW^9UzE zN<2Kz*pP4r;cD{665b|ATwvt6kC`MMkC*$-!E=!3Gbq3+LJeULA(g41C*gg{O1P8v z*9lXmh5lk+^XR()PJSUq!|I zbyuZi+>Jo+!T)}`RJt#d66ln<%dPUO<4(B6)bL0W=q_`oeUCdTIeL^r2NtLL`jgm{ z61dsi;t|8Mw%)by_Ihu}AKYve1!;R7mzc(x+<+55o5q>q8$@C)56e2 z`cy@iMuW3BJg_a=f^WG|o3*I>C|tCs4+$O^mlvq*Wd+4+fn!*Fp_qXYZ+^4boB}?u zwJoV2^i^Pcrz|_|S8E!-;l9=?mANec$(rcfJVU=8Tu-96bzpm4pl+|%6*$tym+JOU zl+CF0z>(%w@E*p%0^AD;#avJh+(69V<8do^6)$+LIe^}m$#7?%yF3=;e~ z1Fawj?-Kl@lg?$?$J_i$Flf260^^Cx{1xqhfM>1ezI8MSZ0^XduLO>?w#vktnPq>P znBFPDdi^IW(2{ugmUMTZZh-Yvso;r>tPa$*x61g93+CC@S*bh*cmL3n_`SWI<2pfE zMit{pDu&f@KKIRuT7iyaxF@#sFRu0N3JuO+>S|z zw0g;7S4D2VuDayN>eZ{85C1-N%jzfxg^+=|2gVKLuh)7?B$~IO{7{?>j6mJPR`79P zG{=0JM$M>d&AB^-xSZ&S6QJYpSS#p-3qs_FV2NHQ1P1B`;ubQf24jwyw|lJM*;4Vs zdjOPH@`FfxgoaKTNTG?T3r-{5Uwe*K%8#qr{@PrwdJ9D87S=fQSQhp%CW9w37BjM` zJ3RGU;EO}@IlsQE*+rc%OF{R%zmclmgrmU&)aA#IG#5-m)aR}i!ztF7mfyJQQ#QjaS9Z%`9Y^Wi^(TW)skAOWg-^; zp;bOC5nHxR$zhWwhsOAk+O##=+@U&=man25!m@>9!ieY?<_c+(-nN!6#9_K^R8t|b zFTb2uVFhJUa0hbv4p8tVUgyiS?B-JqQLb^??u7%1%3a~H4pPaE4kM!5ES3oLMy`If zAo9p&|KWB8*5&&cvYP|7w^?6d;OK*;v}!5@kf_hhZiFHbCvwD#RB>}l7FJ=>E@ju>|QNI#dOr>T(o_{k3mZ^bLl=pL4NQ zrhBdDiy{lwWVwjCi4gb`h{)=q4n?%#IEf25nQ6E4DZ>hwfLG4_2-43|ZU zzpiE(Gs;z*vwQe=dXVEmuNBP0aX_bJJP%sabL||`hLGZ3IGDdt7fFmkkz)~gme42? zSS8;`a}-Rq43`#Gd5$MwBYxkJBWU%2Sx(C&qI*?yJ^B$zC|Esf(iSpb($zgI)jcQh zfdlz65=4HVAYO7r)}Yp;Vi{h5|4jfNbP&HHk=uzN$;fbuHR)O+xCg$uQF^FVR$N$f zNtRt1ggPrO)LnGi=p;<}iyc=>DZf7l+@NGk{EJHJOwT5eR=G7*%X(U^JoX{-DLCtGbs$ORD_Q7MnYtzp zs^jp+3GRjPB>{=>wzSIEGvyqqcIO9Lt$-H8RE z{nYMzE-GW9k(xxwRR4*pe2k%lnkhXKjNw~W^I^*HE&RA>SE2{kM>Dbdj+ezZq_ycJ zi==%(MEa2J8BgRf?kiWZI?3;}H*0+^Ud~@ICH4b{=5!+joVkjEq6%8l7I_b? z=$rt~yo7Z$C-@!WcKHQ2X z3v!Z1NV(rIsEzipCNy`*7d}O0J4$Hp!BQAw%kJgRO}D*&(e@OJWBV&#G}c}KPMPSj z{aX(CYrFYaV-;4*ShrXCqEf{Zg6V0hI2*mQj(Y!7*aQjxO_1UJXYi6MEH}i|E_2SZ+*!@&@q<3|0v*D-6mVe!OzS9eXYt16exZ*ta zlA@gTzVF!7maTSR5S5_3O+3}Vq#D=ek+f01BAd@kuk9PTgRLo;R+RJGi1Qr3U^VuhjaV^-nB92s_r)W$C# zWXO5mQ%M#tb5xd;}s%i?QjoQ{XaRX9Fqepawq(q09 z42UTQ52|EPwaB1Q@{>bJ)Qf>AG~|3gHcZ;RP^W+Kwh>2>B+j;<;;v#qB3Tu|wWB*0 zF_6j=-E$LTO(28QzydU0fR<>kcsU_0NoPV_l0#e@ zh6LE(0pn_s-Ar^FAWq`gH55BTf#jDcSOC-N;h|n}1DP zfy)EymBT8wuO-KT-J$Q)ore-R1;%2ljKZp*bO+ z&M%5Izc_2H_34`e#fPY;t$;a0iuA#QVHE{KtZ!ZST$9Z2+KmrZlf$OrW&sFI8#!Oh zCp7I|^O(XT^!X%-M1s}m4vNh&SwBnGwCVcqI+K(tk4SLJP7UWLRuz1b zzpZF=XxcCXG@1vsdL;(Vn1-E6EHv#~lQw68PTLDX#i7p+8Df<@s)Ff&4CA+3=Yf(r zBh zR|SXi*Cf0$i&yCC!NU{!q!SNo!bF+>BfaYy@apY)OV|TT0boN=AHHDJxBkPKR`5ph-GO7xSPMcEZ)wG0%`yC*JDzi4B8V9hib&tb z9(C$Gp4iv`clgA#h)8^_mnR&N9(12@V(bEvJs~X&PHM@@1V5v?4H=<`h(|+uKCKJs zqV;ve$+#UdARL~CP0xmP&sr1Yd_k;tC?bLw`#Ka6F^qjD%A*3BqbrU`1)BZ!I2$wh zIBcOMMTs>9;h?mlAhft-tEdm}_;65E113-N;bQolKKwxjB`L?rn8)zm6P_k=j`vJG zaxz~x)(Te6pCUZb=X%9e?mwVyp8ScqL)Eb|r%pMXY}#eW3hQd5&Xyy(6oe`|Lr#MC zbfdN37ZmbGt3}=a(Q~OF@VOpyG+M?7rZ*DT!*H5gA^IHZB~`%+nn+nu1p;QT2pn>a zI*XOVDOZR%IwxPNf=hvunPPdcnzt6QJ5A*;lQd8M#7h1M(=2wWNlGGnNR=tqES72N z6kM?m=3M|{E&o_vG#(UrxN)4h&V8VFesk6mDITj}#R1(9DW1s9As6uST-WYiy3(r@WY&Z-(GTm*r(FaHFzC7a{Os*^*(Qh~4Bne2(AT%$K^BN6E|PjX2H{YqQs$qW$bEw8h9g#u2S zclJYaLE5@d@HfhHO0o6uEAznhX6-cL5)?72(!x7P_$4}vjSFdnMMm=b*lE+1H&;=4YuIk|E(AEk_waFUQPw@;Ge=l(b7ae-gb2K3cw zRf0a{c=WDVKaLDkZa$skrVsVe-sp#m>fPmdq8}k9Rk}1^{`7QUMI#2_iPo&-qUYs- zLpS?Q^W+>H(Z+vSp|2%QPbU-iegIhye6D4{dMc-fM07`6rGA<#;~{#j2GObB{O~l9 zz=LZKF7_wnGu50$zvP)^x2(PbhtBf0&y#hET&$b68NmoGnb@kGe=BEp4r+j#eUAz) z-ib|fulA#0|HiFm%(HpVDW1P)psG^)u@n3eC6+BH|#wVU-1;uaOKr9Wi0{t%~ zi6ij-%QEr!`F>^ui!O@FCRpH5rd7Jmv>&e}FPN}GOB*XNofwAfAz}rgSDI6VW03{n zqI^%pD6@zj1fEDlloykal*6c$QFqn-32KXcTP?6OJ@C0!ZdUNcze+pWS*4lH<>mj; z_9pOARcGV>OfrE45^g|1+@oSOuEeDh5+oO9a0U~>DsGj!&{BPEU0{YqS#FpN%+2*G zwb1&urS<1qTkYHaqzjuC%>+#XxCC5^;sRJTx8s7=0tw3ezt6dMW)j4{{{HRDhnqR) z+;h+RoacGYbDrlpM`=w}1lS`a7S#zdk|jkkf`-xg1F=e-S)665h6sw$E(YQN01#n7 zP=P=IqvdlZ)AzB0bhIUp0UOR!`~l+%$_Vf44Ey(oU5Ky;!>I_rZ`p#FIBO55x(YHK zrazBOEQOmOxy8M!x`L`G-{<^Q&C@uoN#r2${fG`_v;f}`Y7Ep*)iyXQTVZxQ40}W9 z4QSVlJubc+KM~ysw{Lwrj1OOLETFe@)3xdtWiZu7?1nv&>dmMk5YZd&DpfsB?4^DV zX&cO!ok6_FLDYi)866dPwe?J5)1p)UIlMl|pvf_;nUGK1N%0mU9Ay`2+P$tsd@>>tGgR!h zzQO!k@C>z)37HE55%W23I5L}H6Qz?f!!AW(;9Rh3q5slXx-7knu#Ohva3$kBcdoQ) zY;?HMGeJxI={#m%VW|Qw@oOR>cD2)3z>7|_r@S8T8K5owb&1lFJ>Nijdz8*dOdtBA zu>X_H?)d&`+I@?uF}{CX>^3wr_mAUvKeelTyxj!3^82bb>1aCo#u{k<=w|S_Po0e_ z_eG1&&K5qYSK(cCy$W~7W4PhmqduXg5pGRd)73{vmEY8w-V*$||2hDPQare9FhBAD zHE2D2vkZV~cdDQ44neUo=1K+UE;kdj!a0=SG8p0i0W-Ak>WdkgRu2J`_dZ>~tva;= zN-I?@H7kW%(c?kz?$V3R+G6}^W)wBknsABAA_VheB*|>`M%Uil zg*fIBI`YKFh zxU##s+}Pb>^cb<>>TpEOZaA|k_8ucBvoB{^xgWTz>7{a?uNDI9S0Fes z+oNog;`flbd4#d?E#p9ywlp<@wSFpd$tW@oYsBtNW%`TuN#zkzyyP>jWK3|2=V1BNf z{RJAHyZ*~#jmVmfR z_D?x-#{ty+)LI#+7rXlbbS(Nk;^%r7H(f0gTNcc$ex~}(FN8-5zNmgcali%Oy5Xlt+u+&^~C zx#*k9zdGMYG4z~ulE=}2Bn63fednHB*}@9#VIDbDbxYCWKV{7mwXXv7R>-6^Ylot~ z=(%DwcNQowHY$tmCg;(eyJPXTAYt zVdw=(ifxATIeoyaEH>HQxM*u9%f2Ng`Y8*>=5_>!DA4d)8I+~Oq|DvAWLpw%4=8mI zv>0PoyIYrB6Nb=){Klo|xGybVZC)@~>p;cM+q>k;FGADV-MeJBE`LHvBd}b$0d)Lb!>cp1sW{-OYrRM&Dr8hVXU3qjIJn5yvDCm z{e;LwuW`1>;Cmo4K(;+aaO>&OS!}1E5Dw~>WD|5RkodDTK-$z@E>5=Odlx6W7N-h` z%~#DW&U|o=3;iWuAT#X=wUwekr-JjRdK0rU7yRuN52)p2|BN4xU2QO*J%n9d3okFc z_YZ3hWmh>M@%U80e5@fLd;nvT9Mk{s=~>nuWNa2@nfC2~K3#$D$~H{x^M&WiZ2@*U z-(+36Jh|i*MHgSXv^US6%iHaoL*72D;N#@>Siz~BCG}iH>&@x^ zllFP**V)M@@eQ&*rp3zkDsdlFdkk9|&VhDtrpopnL_EO23xE{Od<9@(T&9#GAe{5F zVUX@eFRI!mCLk_5RzT=b?EWEJo2qTbMIkNmrrP0Uak$gWpyZ%&2!M#TGD(1?)^xfG zd{aw&oj?|9EG3f;SN5nH*L{;}QGNjCP^)A)aEigv%2;iwC=ru*8+tmMzok@nJ}+llD`@jqY!;c9hP5 zOZ~H)_rro75o;|Iz&zt&1sdi~rcUO@Jw=1Q>fna3U9{$p1(<5DIkSJL`kmPE^wq8E zO;{bt-Zkt^7n8RzxDorh?vo=IkM~7%Xcy#&by44xAob7R_t8* zRWS2RIakgUqU)C0S zi@8KXd)r{1MTIO&O=dw&6vv>gndL{TvSg22PWoB}Lsi?-mvK3uC^O%?nSwEN{0Knw zhDTc}ZslZf?XuAq(5S3fSXa8}=>_eI#s~}SwM((X0!y)>UK!Tp{nZ^Y)aKhiOHb-M z?B)yU8q}MYUNXw(YuXk)!F$`d=rf=11lY>rCW<0z*qTu^IaE+MgZWj0!f6CVPh{L9oxaa_jln{CWSu zAiCFi56wWj8{mdyM$AR&^H>$EYHV6HZRzhxW-Tulq?29C9t9e#Eq;lH>y6KFj!(xF zaSxiOF+%}IZ0pp?Mh>iJ30SuYSl3`-b9m`Dua$VZtz;j)?=Af1R>y!cp_4NbEpe5g zT_pkcuoPO}jM&-{(DHY?` zvgb#O-CU#WrWHXPA20_na(I~#FI($d7>S_vUyinTs6>5WK{q-~Md1@vG%k`EZ>ZYq z*tC@R96w2TeJ~S014Q}xIX^juZFQZBt&n%@+~r+X%xJ44kFH1OxHLJ;8WF1Xx!C;1 zTeSEF`4n+|5QkN2f>g`R0**|iGzgovRuzbNWD*e3ijhEP`mP)oJ%I_^QFL2XZX8+K zcMxO5i-ayPS%>AK^Y986tq7uXY!9t>0fb(cF*@l%`MA&5U(~fRH&BQ`s7H+w8O%D) zs6Hz;!kFiuhG;;4iZSNw=Ia#ZyacC7n)5Xxd72_1T}f|q$4FG7q&RS@O$RFB5ZOMe zl-^rU;W1@WrT83U>K*-hJg4)iVj0_LswtSY}!yr@$%vSEn@4?+O zh5f^Y3!Lcpq-%0M@D52#gh;2FkHs6yp)w3>MH3xX!tNvit@s~(z_SIH$8Uq{IMl5KpmNHNpkQ&+(A`nqi zv(y;?SNwZo;E%hsK`;4zmMdnNzE$dd9_+2oJndmi z-7nDF^KXO$FjeXC?qV}F{}Ctbwof2Olz0`ucu22oCTII1))*^|L8*?cnHE><2cKB% z31ZUIWkTdk*Xt*S3bnCsy8v*q?AVIavE0s~9FQGoFvmVej-hadtr#M-m_na{j6E?& znc@6|w<76jM~)vfM!vX*_kiUoM#O9g@HJ>h$+*kiBU%tmcKa}R<{)X| zKw2mel^zmS)Itza#GLAr2FiO6S_P0;%xcCQv91tNLT#30DH*FLN^nV5hbKy~Cloqz z&9Em=bhon3$)qTsHCrj)<9b{{ZE9Dk$RkuCoW`R5wdRsS$O%0%!Q|Kmg+8L%)@rk zy()Ky3pnGmfYVcMw$5MWbe&16@Ln9)NY_Cdly~+-mB0>2fD@xy_I0+Nj-0ux~ z$lR|^pIzkaiM3O^M)WFoNUw6;QIvACqv*;#TroJKn4L_yMX+{mJ$j&!`{CNsF6NdY zc?VQ^7;-P?UwUJkP!pgqWL}sqb-55%`ltZu+W@>0KynCIr~oEte!TBhb93WnpRW)g zKN8*lee=(bu#GY|Wl#47GQ;sdKR1Gvg{j0%B7rrVRMeR&kyJ+ol|;;o1pz9lfZ$#E z?0>}F^_Du-=zHSk9m9#3P1`iyQ3Q5u9qh8%#$a|7dRH z$p6RM;#X-?mi!a_i;BABA01qa%xVE&?9%>?y#5zx|L<;hm%{I8z0m%HU!eVMRH$YP z>F{9)zleintvkO#jCCkV7JA!UjKNQI5XL^y5@qD`8xl#P~PuNfS#BDy=p(1NH@XwG#^ABsneVPEcG@bRR_H|%%Y`XYgKa!v$6ab=R93&BA`WF~`2|7RJ_2DM!x5qJv{c165yRRQ7K^!|*!Z6fc zq$PeVz5WtbXg#&87-47Z?^Pbqn3R5X4!W7wb}wsAxDZ18(u2!J562ne|i-79PFMw~7IJvFpjw z3FybZ_+iPON0738pPZUoON9OvaV5x8(lEcyLD!@eI(SCO4~mx=2&+j$PX z_pT%;t|t^5>KsY)sy2Bm)tppd+UL`1)BcoVl~mFg{Vg^vvN&SLdjY+1=T$p0=n&_S z6S6Rl3ca(|_#cm!0bVUdgwd2j!cYs4?P8SR#g#*mUc$xZBaEK!E&7_#bH$=DM$cJV zQxo}&o=IBbA55h&sLrr|KtTaV1dT?|%tfafJ>QScF>r2`cu{g(>aR!>of^Hx=($Bp zJf*%WPJi3znH9ax=)t`6whk0_j3yP(`-Oi-*EzAj-sx=XPs@blmK2+$H5&s*uKR z!oFxxUDMuqrH#)M_M7TO6ZXwbM?vUH+V^oqyeI0GoeT?2ODy*@lCC-cRS67fOS%Q! zxcks7_*CnkLLn6zQmO-=I`0q>4SYHvB)2j;*~Qi~FYbjD?6N5#*1%vfvcB(Fh#Iwl zbVpbBXie`^fa#qn537`HLorfHVZ89BGo8F19&G26eg*)PoqIN{KF;Mmd*u&_q4Vup z{&~_(pM8GVt`Ca|S>wTT_39aB3hd%3lAhfDKh(Ch90C^sjSI(Moyt(NZ> z@I6pMNrz=oUfCkF)MZf$>27?3!sOb$cV{afLN8tEGxd9C^xSsNvKGRD9VQC76}owq zI-Pep7|!WSVUx?9CNP;tY7f61|BB@2`?oM)9{D*6Anvo1EdUAh*~z*b;~n&RZ276c zS-jsdz`gabY|3@Jeq^DxcEwEIR&Sl%e}-vGkOL5dpFGH-AU&7td8{@=NZ)-x8LM|t z9{nP@JE&Jb9XkS-6Q6K|CYKG2d|FO%qGwwZdTLzNo2L2FXa(dMRC;8H!L`ytN-M8U z&0m)e^~!xMbGcVx!aA*~jPA{7FZ4qKy7)j=j$6Hi(zrpc+LUh&=vA?6t?)n+kj;v= zwzGPxcF!}+uC+2r5!Elwz8xu%blB-sJv#j4{J$^=TfUp0p*ct98H9l0_+Y>McyMr) z%JIq}Zknt+$}{CkQN57<$%UnEgRB+OLOg~-h}*lOd;CD8qzs#hMy#inzCl{9N|=Io zdDRb7b<7)6Z7r&jy8;d7nS*A8%x@1Wb@@i!ykbzXD+Qe);XxUZUCJalkFr2r3cHf= zaE^RU%2#A7i}*zAaytXcYhTT3AyRlB;HxY>JcbS89JM3qP5yF1Ia7V&9E-;p6#DF8 zch)I9C-`s?qty$?^#@P1f!!5X6vm`C%Z-0TK5flK)jix~A5TF*`W^|n{*tSzKhYAW zGT`Ds2Lqs-7EO9>?yS4|RRO!hPkGREzT%R6?K}Aie{Z{NSUz8XTH}cZyj1|MIK>X; zSbk)H%>I^=s(}|o=S<-Z_Qh<9MK)OOyo;JC$n_K>I*=b2qr@@jD2ZB-CuKqV*a60({t(o400&Ci_?*C* zl23T^g#3PkqavA}-sPbqogxj@=&xyswemKnWBz6H^#8InM}0d#Q?H{|srq_^;j9rN zg3~hE6eNc+eVlZhYH!s662TAcT;@Cvjj4> z$awRbaxT&E1Q)tF9s%EY=o=b^g2I@s)2J`MysCEOmQ7z-_F?5A&Le;DA zy557E?BXnNH>ZbeW%CWp*X`UP>TE95snSH`*&fJe<()#XEgoB&|1`T7xFJjD#aof9 zmU%cDKl2D@yn-)RQ4Etw2Ei*mk936hE`Zz#!Z}5;>U!~E5zJQ@DMrJ2@&g1Jz3Gp$ zxm!sGoSVfU)9T$A@{5Ee*Cw^8o?#ZuXdmA%(5Fq~i=DIN^9(yxwG93pU_0-|JlLKx zSO~b1sza%TFh|4-eBwvIkE`kiS>Z0V`&o@!|Lp2eAVUYI3#k<-a}53{tw+v3E+YJ8 zP5g@JZ^sS!)-5gf7S-S^tCYSiU$X*okYU06(zv{ClmgS0)xtwo zr($n&I-4%QEkyMmkm+DSrb7*_A!XEjgWzC83!!8UT6A&0(hV2D&!bnMRc0)YV*9I< ztl~f|B1xkf^mLxcCUFhmQjt6qJ95J^&b-mcRCP2DX6N2>5&Vrkxj374Rk7+6A`mU{ zuoPt9$v#|BtmcSc@&6cbTD-}djOFOqHOQ)vB8fHMwy+0C`G6#xRrqF%rJO|i(#Ly!ir;2snd#EG-g=nO+Bth zml#k4&s5HpP-FOj__yeHL*;<;_OgWgJIv-+nU{&P#fWl3qozb}K0#aaqH7D5Q>M9r zMPVF3mqrex_in6+eJ#HG1nj~1j!wJZX=@hwJv9J<;C+# z75|AcQoAb9xA>y;#Q1J*3Q$&L*UKUDt6nQd*S#iHsng?EI6Zz_Jmu5!J6;!0`LEOP z*LroFGYWSAIXjGACx$Gi>(*TXe|yk8P8M`Kf)>|eKN1| zb|R0{-JEiur3{%+5!5T&T^kWND|O<9xyZh7_4C@|&w;u_j2eYn(FD(GnxjNYbiqh3 zL>1uUN)XDVV&%e7%+I4_mrBLB#x=B7>aSn&YB@Q@{CFO}&MI~-uEp$wlFZ$vh03;j zokYbXc%I52V(kASC100wDuCr;3VGp-$VKN!w1jBRu5PFLQp$Kx-hIFynkxNwcRrS~ zDHWr(7>3;sKS+1dlVu8y;eeSjZ|ytgT{7lJ^C~~);Mwe$H*iOkDx!~N&NE=<;fJw) z^-dk->|5w2OL5jw?op)Am_Z9hxLuq{@#%^A?xx4!N#wFT?Mx5hA}l8&C?kj4+}s9V zdJXdC228KcqP=Z7zW>?HSn8x8XN`@z%m>aMxKV4hNC#XWNwd#pXOMcgAYx4{7uTWO zuY=vN=eI$2y2^Np3yst_N+E3(AG;rQ9f#U*e1ig&=+_~bF7HL_1ZgVejQVZ1!tY zfhE=x&yug+Uilzp)Y~iS+)N$()Y}`L<%gO%;TN@691DavV!E8$<2L?>PyfagN)z%p zrRxglHd2LAy49a9C!P_0*h)x|;jw;9n`WNpg7aMJS|@)T5#73J0`a(-kntwuTc=jQ z{Y)CFDYB*XL=0i=F>br~S$UE?Vx5gs%B+EQkg_7?GidkKo9hhT|6SK^?}t+gGEOYV zFpLWz5h=o=HJScz|w6VSWDQl2<;bHUY~ z1%bFJ;l*{77ADWY#4?%}@4y*$=mro05klX#ly?h4H(ScP1)=Xn?3L1P>b}EL&MnwB zhvrgFIps+BE?&)N(=8Gd;)y15d;O>5DU$3ZBt`6|A}J_nZiteTp9lCs0$Qwo5_=eN z5?>;Q5bkyNXRf?UK-^WsT*uE;En9!NrxVxhrY)d@-~T&Gt#Gkx^^cDkijaQtq4X_i zJ}j+`eus7`L5~R0>}Bf1$GXEdN~6{WDM$1!GH)rtO<>-D^s(cO`R5fNjHOP=jkbmE zZ`U)=#-z-+CqKbTS{r8r|Wq>_J%3dQar=NNd0aKSFSRo@JDz*$)-?mz#{wJ zoMcBwao0OazeuN~nR@1FPlka^Y1WCEKFG!-lAYdunyD`#NDc$kOd^a9o}zJe!I>qa~DXWWnPhP zG~8H0;{=DuTpMbx6YIR_VmG?ojfUpO)jay5N42XmdCS6)T4*&lgf!eF44k{Rl^UxA z+t@~*;dbT>wG6c-Yt(nr@Vg1ElRw^0CyU&Nn!_Y(j}}AqKBfA0jv0a5W*XbGd^Q^)6;>MNsx#oSs%>4@PZIvkQ^U88k*py- zzTj$1|Nom}y_)l1Wh?*9C9YP7ApLbB_SFZ5ZXjDa%H~~Yamb9_pLW

    4ga5@UlPJ>T3y9T;kv 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

    C{F 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%0A>J3{DI1!|!Vw;p*nQM;bnlob2w2(Qc|U5_lzN z2Z<-ty}hEp1MPNL4bVP$hvK2)Y0o@&xGB*(Y;ezZenkB+Fa)eXN|-(sZ!n)UjsIh; zgA@a}ANWlyxc0U)ov*M#%8!o>n+5Lsu|V9e}5XFdiCH!6~|G zTuaC&CWLX#aBk$ew9~lGfG&q<)AhqMmOo-F73bjE!|vGib1w2=)!1Clv&L?{3wJ*^ z9z6zkU#9`M8Ji|y6?8Gj4uyc>eVMCV<35G8I*gX|7dQIazbhjCo^+RIg zav@`I0NARDrT;U}2az-BMpyoMcl9WGVGz$bYpk6We5W9Oe9&>Oep`vGNpE52XKD=* z&K&95+DTX3&>njcWH0d?S4OSD)7&_QY^Mh_kbSv_F?|#s-i=LYXprstP8L9eYCAIQ zx>31Rv%Ikz!u#@s^c263mT|E@usfKq-TkND?fGM4`S>s3!!)PuwG+NG-azoQ*S|DY zKNmZ8DzrZGdqc)26hd!qBEJcn(_NDg%hAhQZ{>Mwkt}c$3|cEmk4P>CNym|f&DEZE zKF`?Bg|f369-B6$0XzLvaFd@^X}P53vj3#D)&^v;0iU;Mxqv;c#}ef4<=zSU5|8QG z*Qb}c{c}eYyusY$=4nkVdsyXkhC+IGB;{tgIv~|arL5qKx6}RaB^@pOoQTeDS?uT7 zb(~{a8t!gIxAT81^Q_j@J`-)t?$aEfY*Fu@ji~Ct; z@m-2s?5P*gA!hv2oixUS_18Jl(K%LHSuuJ{?+w7JF+0;6*JQ68{Nk3AzDsRu8?0D5 z?aiXsdJ{)Cu^Bwn|Ix-Yek~z-4gx2`AF0j?@tTWM>`uG&z^?D1XiN+~>CTNVKIzW= z;Ipk8a3gybx#;*TTe(=q}AF;L-Un>1);oOJ8|4zjX(^H635h;JLFScM=!! z7|-SK-Xw4+$HzI5fA#%ehivGP;bbsJD;DJ&U@E5U64E8l@oUEi4%r>{w$rp8MBjb} zZ;7^*+2!@}>sUMQeTzNp<;D1m)TUq@4?Ng>Q9U;?p1R9(2K`K%TM)rcU8)#>3dVQA zNmhMja&F(WE}uv&4!d^|9)UFEFwsJF1fLG<}|ea^v3S4vF}*PbOXc4WhqE z^miA}#o)4MAGQm$-^IWBKL;A`_Gqv2YFBHqRnQ=w?tj*T3!bIz?K)`)u1=0lUu7LN%Y?rL2T_Hg4)fXQy0wwJ%} zz~l)kCtOuVan>VV%WoY(9CZt@pEq}IWFEK%=ud0d0Cq#*`Q-XB-wW2Uc5vw}owbHO zREGSC%D*lp7=0XHTIIKG!&oD`ehK+vxU1DI$C;O23y5uIT`;*7+6d;FeKDB1t98ZM z^r!T^eFjG1!dx%)FZqd7jm~ue|C~(Pbjl7a2-c-=|78JnlX{xFFOzx@n?o$JVi*Q6rzGW;*I(ABynf)l#c!QK zyJuPrTVAnyw9bInucY2Lb8m~3*~e9B&AEpBv!Q8HF6|$_VOh)c>5&0v1nZJd_xk8z zMg7?6sP^Axj<|p>YQ~s-H6GR}0OPdThuZS`p}5 zi|hp6zbg{JhTD(-(1MQYb1vnu0|tl5AA@XJ*w|B`5l%w+ZP!+6+!zRnz_2V{Xk9$9`RJ zenj7_*a&^}y#Vd+EIWV?2-u!yem)ud6ApB(GN{-%!=X{&$MZw6LV)%-v7{nE(#0o+ZCENi}c%(B+$EWB)# zq40hqc;&MnsTjc$ct~wEC5+fg-0$GGX+ylEdc;?*U4I(;4PM==dH;^OL;SkN7VW4T zqyszSD1Bq}4FByoraAEA3Zp;LoF9N=XT6Y$UPxt}L`&&}J1G-nt;|_jXBIdP0!}~g zHs#?vEG2yf=`F~;^q2VdXk#lrQd#b-U$+r?a(EuwGpQ;cIaZsG?lHF4GX6!kEm3

    +x37VB4?c~i2SaO`9!yv> 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
    *Lw(5X(!5&}qy_Egbb$&q|#Yfy*Tl9(8 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 z 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%0D6QsWP5>0~a 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%0A^Q7~ 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 z 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 z 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

    PoBHj^mQx#5k~Zjsf-mZe;EV?{18#A z+!OneNC%@snThczlLb-Tdn-Qoc?iX(7LUelhyaEkLgEDA7qa!Cq>eQxE(q8er)on90n!A7S-3;}{6yd?Ff;}cvS<7VA6VtlO@nd-*GHe!rd zi+rCau_&n)@2xXF;mU=gx|Wf?sy4Y>>Kl?VUK>_hE&a|bCNmy`x(oZni(;=yZ}Y`R z5lOlbwYzV8!lp>#eQwveR2#Kg=G$Z;XM3+`tuq>j^SYVW*h#HmU&BiJfcjYWD1+D( z?L@4hj#C8dL?Tu9@q}xNX84RX!JXzMpQEGZ*7SNLv6Py0vEIZ7`W3Jt)O3f`^nD99 zuVbld;G^pG;#R3jmIyh3B8lIVp`Xf-LG)5yGl&kX&nbPjM6$?1RAgi2N~Nc|k-#6+ zJghbEDaA>@RhJDA`>=3K9VTJ*1NZ4MPlYcwcB&q~qJ)5$gV>_KY^u+=VJbnYORgeF z^)-YfBref($!n;BuLz^~;x$+JU2pkfH_X6Lfn0whIpzVSUvp?0B6)|*;9;^nOvZXi z$U`xXD+{Rk#1e(|ILNEcFTyE

    TB?kzNRUsexvSrvtdeGL7K*(vbPIcP3BH{#=dV0 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

    f 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

    %1>2!DYzRASi5S=> z*tfh;Y?I=kM{JWGMsSPasm3@z?j7(vWi(c7liY?LVwT!i{Yquw0U zKML)Pgl#ec>qFW$X$9Ym#QD7FLOaLRv}Sz z&ik|0tT0gQ>3RKrf6QyGS?ha!zR&%6zTefJZLe`N?W|;cZ&K$pzGP?Ymy16Cv$#-W z{GaEHaS6|AD(+pZcP-3O{2~fGatD~>P@?K#&TVWN!@0H}Bo?I3&F}W~p+^>ahM5!m zsT5u^}&Bw zIr05qILbWs8s7M9_Yb#hfk!;?dE^{@bb}k!&zbd4f)i!PpQ3-D{}YL-8(p@ni@%%5 ze6pc-ZOEJ6w!+MPRdu`p%4He#?spSa(NXt{Uecr|Y(R-^a5j1M)G;h zz?t$bIe7(R^?aE2bIz3SnU=T6%3d6M!fGwV-@s^`T^9bA}VoQ(_QO$!%-T;HUvZq_R59^0*c^8PDPm497uPc^c+ z8Cr%%b6C`w_bb4~)c1eT+3vup6*&Ktvby*DhmA+AhPN-~_T-m;vh;8O9m(TG&$zfJ zrzP81^zW)C`48^>R`=^%^%>|0xy`Qnygw$YyuV*BUJ=^&8gMf=SoixgjjDf5mVJ3# zvMkR=%8mz?$+9cB-%Z)51wU`7=?~CDnqcV-<#Dg|FQ$#3Q>F&o@{C5`oy2#Hrj^~B zHz^c6VI}dr#lROu{l;go}yDp_YXB-<}I5Unw!$sLe z?46I|qlMnfucCY%<1J^r6~DI2)iu=ZDK~THRcCPi0KC%=-CjYt5amJ{!NS!KoYB`- zo5660=?RrG&JcQ<@Zb{4=0dl@K48~u)UV{-mr~%1-)#iG(z6BMAlI9;URkdC)p|y~ z2=yZ11ae_Z`o8bIa+$I3{aiCWMvi(_Ub2rS?p2mNo2qN5Z}Ac4ru^;Pb*8l*9_ERz zRN3`E5(`>x4(<^yt$a06^)Hk;{yX7Ldgvu^Qh46aehJ~#Hm6V?-Ny%7+(>*)DX^a-3LAHL9ZziU*$fR zYaZA9tFa$gqfRf+R&o|b7W#7XS<60jVB}aiaF5RqhF^l8UjFu_pO<_oUzonNyf(DB z0>0T;j7;5|sQUgPn-5-Q8ksNiPPWGbhcC6{(YvqP?|z3q-2`ux%xZoiQB^+8I8^cB zcMeAig5f^uox%%yeJ5nU-H|qQ7Ld=0s-|cX_f}x9rS*Y>Q-DAZzm$WGH8)c={@)F%Rg>4?euq zXU`Gdk-3pEIWja4-0bE2$bf0K&q?+jpq|E7`m02hhx^=R;LRR>?O=eyH|&mpjL ztN6DcAO3FkcvfKdG_p=d!Gjp%z?P2ZBVz+z@_bBhA2~r2CHJ;J3;fS{U(Wlo%Y%!% zo|#h6>hctj`x^HDDzWfI>Nw*Qojdn|W>@

    ^aK@g4bQfuhG1$Zu`@~9$TZj*%&N_ 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


    E4j_p3D);11@ilk1Ohmgi;e8(~gA`sMpd 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�gpW+PuEXtoYPHfG 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 D<%z&e diff --git a/mac/bin/swig/share/swig/4.1.0/allkw.swg b/mac/bin/swig/share/swig/4.1.0/allkw.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/attribute.i b/mac/bin/swig/share/swig/4.1.0/attribute.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/carrays.i b/mac/bin/swig/share/swig/4.1.0/carrays.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/cdata.i b/mac/bin/swig/share/swig/4.1.0/cdata.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/cmalloc.i b/mac/bin/swig/share/swig/4.1.0/cmalloc.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/constraints.i b/mac/bin/swig/share/swig/4.1.0/constraints.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/cpointer.i b/mac/bin/swig/share/swig/4.1.0/cpointer.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i b/mac/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i deleted file mode 100755 index 861da838..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i +++ /dev/null @@ -1,179 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) - -// By default C# will marshal bools as 4 bytes -// UnmanagedType.I1 will change this to 1 byte -// FIXME - When running on mono ArraySubType appears to be ignored and bools will be marshalled as 4-byte -// https://github.com/mono/mono/issues/15592 - -// input only arrays -%typemap(ctype) bool INPUT[] "bool*" -%typemap(cstype) bool INPUT[] "bool[]" -%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray,ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]") bool INPUT[] "bool[]" -%typemap(csin) bool INPUT[] "$csinput" - -%typemap(in) bool INPUT[] %{ -$1 = $input; -%} -%typemap(freearg) bool INPUT[] "" -%typemap(argout) bool INPUT[] "" - -// output only arrays -%typemap(ctype) bool OUTPUT[] "bool*" -%typemap(cstype) bool OUTPUT[] "bool[]" -%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray,ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]") bool OUTPUT[] "bool[]" -%typemap(csin) bool OUTPUT[] "$csinput" - -%typemap(in) bool OUTPUT[] %{ -$1 = $input; -%} -%typemap(freearg) bool OUTPUT[] "" -%typemap(argout) bool OUTPUT[] "" - -// inout arrays -%typemap(ctype) bool INOUT[] "bool*" -%typemap(cstype) bool INOUT[] "bool[]" -%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray,ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]") bool INOUT[] "bool[]" -%typemap(csin) bool INOUT[] "$csinput" - -%typemap(in) bool INOUT[] %{ -$1 = $input; -%} -%typemap(freearg) bool INOUT[] "" -%typemap(argout) bool INOUT[] "" - - -%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/mac/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i b/mac/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i deleted file mode 100755 index 355a910c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i +++ /dev/null @@ -1,517 +0,0 @@ -// 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); - 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)); %} - -// 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/mac/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i deleted file mode 100755 index d47fab55..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i +++ /dev/null @@ -1,323 +0,0 @@ -// 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)); %} - -%typemap(directorin) CONST TYPE -%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (new $1_ltype(SWIG_STD_MOVE($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) : 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/mac/bin/swig/share/swig/4.1.0/csharp/complex.i b/mac/bin/swig/share/swig/4.1.0/csharp/complex.i deleted file mode 100755 index 4a6f91cd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/complex.i +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __cplusplus -%include -#else -#error C# module only supports complex in C++ mode. -#endif diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/csharp.swg b/mac/bin/swig/share/swig/4.1.0/csharp/csharp.swg deleted file mode 100755 index 1f80d12a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/csharp.swg +++ /dev/null @@ -1,1120 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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($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(SWIG_STD_MOVE($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 is null", 0); - return $null; - } %} -%typemap(in, canthrow=1, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ $1 = ($1_ltype)$input; - if (!$1) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "$1_type is null", 0); - return $null; - } - rvrdeleter.reset($1); %} -%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 [] "$csclassname.getCPtr($csinput)" -%typemap(csin) SWIGTYPE && "$csclassname.swigRelease($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(csvarin, excode=SWIGEXCODE2) void *VOID_INT_PTR %{ - set { - $imcall;$excode - } %} -%typemap(csvarout, excode=SWIGEXCODE2) void *VOID_INT_PTR %{ - get { - 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::*) "" -%typemap(csinterfacemodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "public interface" - - -// 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; - } - - CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef swigRelease($csclassname obj) { - if (obj != null) { - if (!obj.swigCMemOwn) - throw new global::System.ApplicationException("Cannot release ownership as memory is not owned"); - global::System.Runtime.InteropServices.HandleRef ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.Dispose(); - return ptr; - } else { - return new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); - } - } -%} - -// 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; - } - - CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef swigRelease($csclassname obj) { - if (obj != null) { - if (!obj.swigCMemOwn) - throw new global::System.ApplicationException("Cannot release ownership as memory is not owned"); - global::System.Runtime.InteropServices.HandleRef ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.Dispose(); - return ptr; - } else { - return new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); - } - } -%} -%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; - } - - CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef swigRelease($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/mac/bin/swig/share/swig/4.1.0/csharp/csharphead.swg b/mac/bin/swig/share/swig/4.1.0/csharp/csharphead.swg deleted file mode 100755 index 56a019bd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/csharphead.swg +++ /dev/null @@ -1,339 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) do { if (!(expr)) {SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, msg, ""); return nullreturn; } } while (0) -%} diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg b/mac/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg deleted file mode 100755 index 1904fce9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef CSHARP_CSHARPKW_SWG_ -#define CSHARP_CSHARPKW_SWG_ - -/* Warnings for C# keywords */ -#define CSHARPKW(x) %keywordwarn("'" `x` "' is a C# keyword",rename="%s_") `x` - -#define CSHARPCLASSKW(x) %keywordwarn("'" `x` "' is a special method name used in the C# wrapper classes",%$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/mac/bin/swig/share/swig/4.1.0/csharp/director.swg b/mac/bin/swig/share/swig/4.1.0/csharp/director.swg deleted file mode 100755 index 5d2ab5d9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/director.swg +++ /dev/null @@ -1,50 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/enums.swg b/mac/bin/swig/share/swig/4.1.0/csharp/enums.swg deleted file mode 100755 index 5cc26547..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/enums.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg b/mac/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg deleted file mode 100755 index 24e4bcf1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg +++ /dev/null @@ -1,88 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg b/mac/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg deleted file mode 100755 index fd680173..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg +++ /dev/null @@ -1,130 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/std_array.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_array.i deleted file mode 100755 index 6e7fe9eb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_array.i +++ /dev/null @@ -1,227 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i deleted file mode 100755 index da15df3e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i +++ /dev/null @@ -1,38 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap (ctype) std::auto_ptr< TYPE > "void *" -%typemap (imtype, out="System.IntPtr") std::auto_ptr< TYPE > "global::System.Runtime.InteropServices.HandleRef" -%typemap (cstype) std::auto_ptr< TYPE > "$typemap(cstype, TYPE)" - -%typemap(in) std::auto_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(csin) std::auto_ptr< TYPE > "$typemap(cstype, TYPE).swigRelease($csinput)" - -%typemap (out) std::auto_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(csout, excode=SWIGEXCODE) std::auto_ptr< TYPE > { - System.IntPtr cPtr = $imcall; - $typemap(cstype, TYPE) ret = (cPtr == System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode - return ret; - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::auto_ptr< TYPE > "" - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/std_common.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/std_complex.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_complex.i deleted file mode 100755 index 6a0cc545..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_complex.i +++ /dev/null @@ -1,95 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/std_deque.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/std_except.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_except.i deleted file mode 100755 index c983bd0f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_except.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/std_list.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_list.i deleted file mode 100755 index cf6f2023..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_list.i +++ /dev/null @@ -1,519 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/std_map.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_map.i deleted file mode 100755 index 7a118569..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_map.i +++ /dev/null @@ -1,312 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/std_pair.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/std_set.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_set.i deleted file mode 100755 index 01215226..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_set.i +++ /dev/null @@ -1,311 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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($typemap(cstype, T) 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 object 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 ($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 = 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/mac/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/std_string.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_string.i deleted file mode 100755 index c8920c09..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_string.i +++ /dev/null @@ -1,111 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 "const 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 = $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 & "const 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 = $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/mac/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i deleted file mode 100755 index 0a4caafb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i +++ /dev/null @@ -1,38 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap (ctype) std::unique_ptr< TYPE > "void *" -%typemap (imtype, out="System.IntPtr") std::unique_ptr< TYPE > "global::System.Runtime.InteropServices.HandleRef" -%typemap (cstype) std::unique_ptr< TYPE > "$typemap(cstype, TYPE)" - -%typemap(in) std::unique_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(csin) std::unique_ptr< TYPE > "$typemap(cstype, TYPE).swigRelease($csinput)" - -%typemap (out) std::unique_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(csout, excode=SWIGEXCODE) std::unique_ptr< TYPE > { - System.IntPtr cPtr = $imcall; - $typemap(cstype, TYPE) ret = (cPtr == System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode - return ret; - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::unique_ptr< TYPE > "" - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/std_vector.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_vector.i deleted file mode 100755 index a2add584..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_vector.i +++ /dev/null @@ -1,418 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 < 0 || ($typemap(cstype, size_t))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/mac/bin/swig/share/swig/4.1.0/csharp/std_wstring.i b/mac/bin/swig/share/swig/4.1.0/csharp/std_wstring.i deleted file mode 100755 index 1d10ca80..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/std_wstring.i +++ /dev/null @@ -1,146 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_wstring.i - * - * Typemaps for std::wstring and const std::wstring& - * std::wstring is mapped to a C# Unicode string (UTF16) and is passed around by value. - * std::wstring support includes wchar_t as a 2 byte type (Windows) and a 4 byte type - * (most Unix systems). - * - * 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 -%} - -%fragment("Swig_csharp_UTF16ToWString", "header") %{ -/* For converting from .NET UTF16 (2 byte unicode) strings. wchar_t is 2 bytes on Windows, 4 bytes on Linux. */ -static std::wstring Swig_csharp_UTF16ToWString(const unsigned short *str) { - if (sizeof(wchar_t) == 2) { - return std::wstring((wchar_t *)str); - } else { - const unsigned short *pBegin(str); - const unsigned short *ptr(pBegin); - - while (*ptr != 0) - ++ptr; - - std::wstring result; - result.reserve(ptr - pBegin); - while(pBegin != ptr) - result.push_back(*pBegin++); - - return result; - } -} -%} - -namespace std { - -%naturalvar wstring; - -class wstring; - -// wstring -%typemap(ctype, out="void *") wstring "unsigned short *" -%typemap(imtype, - inattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - outattributes="[return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directorinattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directoroutattributes="[return: 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, fragment="Swig_csharp_UTF16ToWString") wstring -%{ if (!$input) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); - return $null; - } - $1 = Swig_csharp_UTF16ToWString($input); %} -%typemap(out) wstring %{ $result = SWIG_csharp_wstring_with_length_callback($1.c_str(), (int)$1.size()); %} - -%typemap(directorout, canthrow=1) wstring -%{ if (!$input) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); - return $null; - } - $result = Swig_csharp_UTF16ToWString($input); %} - -%typemap(directorin) wstring %{ $input = SWIG_csharp_wstring_with_length_callback($1.c_str(), (int)$1.size()); %} - -%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 -%{ SWIG_csharp_ApplicationException_callback($1.c_str(), (int)$1.size()); - return $null; %} - -// const wstring & -%typemap(ctype, out="void *") const wstring & "unsigned short *" -%typemap(imtype, - inattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - outattributes="[return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directorinattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directoroutattributes="[return: 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, fragment="Swig_csharp_UTF16ToWString") const wstring & -%{ if (!$input) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); - return $null; - } - std::wstring $1_str(Swig_csharp_UTF16ToWString($input)); - $1 = &$1_str; %} -%typemap(out) const wstring & %{ $result = SWIG_csharp_wstring_with_length_callback($1->c_str(), (int)$1->size()); %} - -%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 = Swig_csharp_UTF16ToWString($input); - $result = &$1_str; %} - -%typemap(directorin) const wstring & %{ $input = SWIG_csharp_wstring_with_length_callback($1.c_str(), (int)$1.size()); %} - -%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 & -%{ SWIG_csharp_ApplicationException_callback($1.c_str(), (int)$1.size()); - return $null; %} - -} - diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/stl.i b/mac/bin/swig/share/swig/4.1.0/csharp/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/swiginterface.i b/mac/bin/swig/share/swig/4.1.0/csharp/swiginterface.i deleted file mode 100755 index e5bfd23a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/swiginterface.i +++ /dev/null @@ -1,63 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/swigmove.i b/mac/bin/swig/share/swig/4.1.0/csharp/swigmove.i deleted file mode 100755 index 2f21bd6f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/swigmove.i +++ /dev/null @@ -1,16 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, canthrow=1, fragment="") SWIGTYPE MOVE ($&1_type argp) -%{ argp = ($&1_ltype)$input; - if (!argp) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null $1_type", 0); - return $null; - } - SwigValueWrapper< $1_ltype >::reset($1, argp); %} - -%typemap(csin) SWIGTYPE MOVE "$&csclassname.swigRelease($csinput)" diff --git a/mac/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i b/mac/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i deleted file mode 100755 index e7312e8f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i +++ /dev/null @@ -1,34 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/typemaps.i b/mac/bin/swig/share/swig/4.1.0/csharp/typemaps.i deleted file mode 100755 index b6f9bddb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/typemaps.i +++ /dev/null @@ -1,253 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/csharp/wchar.i b/mac/bin/swig/share/swig/4.1.0/csharp/wchar.i deleted file mode 100755 index f1e0d5a2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/csharp/wchar.i +++ /dev/null @@ -1,335 +0,0 @@ -/* ----------------------------------------------------------------------------- - * wchar.i - * - * Typemaps for the wchar_t type - * wchar_t * is mapped to a C# Unicode string (UTF16) and is passed around by value. - * wchar_t * support includes wchar_t as a 2 byte type (Windows) and a 4 byte type - * (most Unix systems). - * - * 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_ - -%fragment(""); // TODO: %fragment("") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) (new wchar_t[wcslen((const wchar_t *)$input)+1]); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,fragment="") wchar_t * { - delete [] $1; - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) (new wchar_t[wcslen((const wchar_t *)$input)+1]); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,warning=SWIGWARN_TYPEMAP_WCHARLEAK_MSG,fragment="") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) (new wchar_t[wcslen((const wchar_t *)$input)+1]); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -#else -%typemap(memberin,fragment="") wchar_t * { - free($1); - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(memberin,warning=SWIGWARN_TYPEMAP_WCHARLEAK_MSG,fragment="") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,fragment="") wchar_t * { - free($1); - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,warning=SWIGWARN_TYPEMAP_WCHARLEAK_MSG,fragment="") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} - -#endif diff --git a/mac/bin/swig/share/swig/4.1.0/cstring.i b/mac/bin/swig/share/swig/4.1.0/cstring.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/cwstring.i b/mac/bin/swig/share/swig/4.1.0/cwstring.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i deleted file mode 100755 index 6d85c5ae..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i +++ /dev/null @@ -1,293 +0,0 @@ -%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)); %} - -%typemap(directorin) CONST TYPE -%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (new $1_ltype(SWIG_STD_MOVE($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) : 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/mac/bin/swig/share/swig/4.1.0/d/carrays.i b/mac/bin/swig/share/swig/4.1.0/d/carrays.i deleted file mode 100755 index f2803ea4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/carrays.i +++ /dev/null @@ -1,111 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/cpointer.i b/mac/bin/swig/share/swig/4.1.0/d/cpointer.i deleted file mode 100755 index da3084b7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/cpointer.i +++ /dev/null @@ -1,171 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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() { - delete self; -} -#else -NAME() { - return (TYPE *) calloc(1,sizeof(TYPE)); -} -~NAME() { - 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 -%{ delete self; %} -#else -%{ 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/mac/bin/swig/share/swig/4.1.0/d/d.swg b/mac/bin/swig/share/swig/4.1.0/d/d.swg deleted file mode 100755 index f5bb4596..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/d.swg +++ /dev/null @@ -1,46 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/dclassgen.swg b/mac/bin/swig/share/swig/4.1.0/d/dclassgen.swg deleted file mode 100755 index e4ff8d5f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/dclassgen.swg +++ /dev/null @@ -1,172 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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; -} - -public static void* swigRelease(typeof(this) obj) { - if (obj !is null) { - if (!obj.swigCMemOwn) - throw new Exception("Cannot release ownership as memory is not owned"); - void* ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.dispose(); - return ptr; - } else { - return null; - } -} - -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; -} - -public static void* swigRelease(typeof(this) obj) { - if (obj !is null) { - if (!obj.swigCMemOwn) - throw new Exception("Cannot release ownership as memory is not owned"); - void* ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.dispose(); - return ptr; - } else { - return null; - } -} - -mixin $imdmodule.SwigOperatorDefinitions; -%} - - -/* - * Type wrapper classes. - */ - -%typemap(dbody) SWIGTYPE *, 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; -} - -public static void* swigRelease(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/mac/bin/swig/share/swig/4.1.0/d/ddirectives.swg b/mac/bin/swig/share/swig/4.1.0/d/ddirectives.swg deleted file mode 100755 index 145cf01f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/ddirectives.swg +++ /dev/null @@ -1,11 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/denums.swg b/mac/bin/swig/share/swig/4.1.0/d/denums.swg deleted file mode 100755 index 3f812466..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/denums.swg +++ /dev/null @@ -1,60 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/dexception.swg b/mac/bin/swig/share/swig/4.1.0/d/dexception.swg deleted file mode 100755 index 1aadbaad..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/dexception.swg +++ /dev/null @@ -1,30 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/dhead.swg b/mac/bin/swig/share/swig/4.1.0/d/dhead.swg deleted file mode 100755 index 1ef1e416..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/dhead.swg +++ /dev/null @@ -1,298 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) do { if (!(expr)) {SWIG_DSetPendingException(SWIG_DException, msg); return nullreturn; } } while (0) -%} - - -/* - * 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/mac/bin/swig/share/swig/4.1.0/d/director.swg b/mac/bin/swig/share/swig/4.1.0/d/director.swg deleted file mode 100755 index 02da0e0a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/director.swg +++ /dev/null @@ -1,49 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/dkw.swg b/mac/bin/swig/share/swig/4.1.0/d/dkw.swg deleted file mode 100755 index 2a189ed6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/dkw.swg +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef D_DKW_SWG_ -#define D_DKW_SWG_ - -/* Warnings for D keywords */ -#define DKEYWORD(x) %keywordwarn("'" `x` "' is a D keyword",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/mac/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg b/mac/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg deleted file mode 100755 index a07d0a5d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg +++ /dev/null @@ -1,94 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/doperators.swg b/mac/bin/swig/share/swig/4.1.0/d/doperators.swg deleted file mode 100755 index 0a82a6cb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/doperators.swg +++ /dev/null @@ -1,259 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 overridable 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 overridable 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 overridable 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/mac/bin/swig/share/swig/4.1.0/d/dprimitives.swg b/mac/bin/swig/share/swig/4.1.0/d/dprimitives.swg deleted file mode 100755 index eaee816d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/dprimitives.swg +++ /dev/null @@ -1,171 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/dstrings.swg b/mac/bin/swig/share/swig/4.1.0/d/dstrings.swg deleted file mode 100755 index 02895c15..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/dstrings.swg +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/dswigtype.swg b/mac/bin/swig/share/swig/4.1.0/d/dswigtype.swg deleted file mode 100755 index c227519e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/dswigtype.swg +++ /dev/null @@ -1,241 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 && "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 [], - 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($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(SWIG_STD_MOVE($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 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; -} - - -/* - * Rvalue reference conversion typemaps. - */ - -%typemap(in, canthrow=1, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ $1 = ($1_ltype)$input; - if (!$1) { - SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "$1_type is null"); - return $null; - } - rvrdeleter.reset($1); %} -%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.swigRelease($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]) } -%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/mac/bin/swig/share/swig/4.1.0/d/dvoid.swg b/mac/bin/swig/share/swig/4.1.0/d/dvoid.swg deleted file mode 100755 index 805f1e71..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/dvoid.swg +++ /dev/null @@ -1,18 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i deleted file mode 100755 index 500b6115..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap (ctype) std::auto_ptr< TYPE > "void *" -%typemap (imtype) std::auto_ptr< TYPE > "void*" -%typemap (dtype) std::auto_ptr< TYPE > "$typemap(dtype, TYPE)" - -%typemap(in) std::auto_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(din, - nativepointer="cast(void*)$dinput" -) std::auto_ptr< TYPE > "$typemap(dtype, TYPE).swigRelease($dinput)" - -%typemap (out) std::auto_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(dout, excode=SWIGEXCODE, - nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}" -) std::auto_ptr< TYPE > { - void* cPtr = $imcall; - $typemap(dtype, TYPE) ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode - return ret; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::auto_ptr< TYPE > "" - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/d/std_common.i b/mac/bin/swig/share/swig/4.1.0/d/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/mac/bin/swig/share/swig/4.1.0/d/std_deque.i b/mac/bin/swig/share/swig/4.1.0/d/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/d/std_except.i b/mac/bin/swig/share/swig/4.1.0/d/std_except.i deleted file mode 100755 index fbfd6c33..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_except.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/std_map.i b/mac/bin/swig/share/swig/4.1.0/d/std_map.i deleted file mode 100755 index c5e03d06..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_map.i +++ /dev/null @@ -1,62 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/std_pair.i b/mac/bin/swig/share/swig/4.1.0/d/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/mac/bin/swig/share/swig/4.1.0/d/std_string.i b/mac/bin/swig/share/swig/4.1.0/d/std_string.i deleted file mode 100755 index 8d75d23e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_string.i +++ /dev/null @@ -1,98 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i deleted file mode 100755 index 9317a7e0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap (ctype) std::unique_ptr< TYPE > "void *" -%typemap (imtype) std::unique_ptr< TYPE > "void*" -%typemap (dtype) std::unique_ptr< TYPE > "$typemap(dtype, TYPE)" - -%typemap(in) std::unique_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(din, - nativepointer="cast(void*)$dinput" -) std::unique_ptr< TYPE > "$typemap(dtype, TYPE).swigRelease($dinput)" - -%typemap (out) std::unique_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(dout, excode=SWIGEXCODE, - nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}" -) std::unique_ptr< TYPE > { - void* cPtr = $imcall; - $typemap(dtype, TYPE) ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode - return ret; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::unique_ptr< TYPE > "" - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/d/std_vector.i b/mac/bin/swig/share/swig/4.1.0/d/std_vector.i deleted file mode 100755 index fb8f7d2e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/std_vector.i +++ /dev/null @@ -1,605 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/stl.i b/mac/bin/swig/share/swig/4.1.0/d/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/d/swigmove.i b/mac/bin/swig/share/swig/4.1.0/d/swigmove.i deleted file mode 100755 index e2eb8340..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/swigmove.i +++ /dev/null @@ -1,16 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, canthrow=1) SWIGTYPE MOVE ($&1_type argp) -%{ argp = ($&1_ltype)$input; - if (!argp) { - SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Attempt to dereference null $1_type"); - return $null; - } - SwigValueWrapper< $1_ltype >::reset($1, argp); %} - -%typemap(din) SWIGTYPE MOVE "$dclassname.swigRelease($dinput)" diff --git a/mac/bin/swig/share/swig/4.1.0/d/typemaps.i b/mac/bin/swig/share/swig/4.1.0/d/typemaps.i deleted file mode 100755 index 4f1b5997..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/typemaps.i +++ /dev/null @@ -1,261 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/d/wrapperloader.swg b/mac/bin/swig/share/swig/4.1.0/d/wrapperloader.swg deleted file mode 100755 index 67e03bfc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/d/wrapperloader.swg +++ /dev/null @@ -1,309 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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; - } else { - static import std.c.string; - } - static import std.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 core.sys.posix.dlfcn; - } 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/mac/bin/swig/share/swig/4.1.0/director_common.swg b/mac/bin/swig/share/swig/4.1.0/director_common.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/exception.i b/mac/bin/swig/share/swig/4.1.0/exception.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/go/cdata.i b/mac/bin/swig/share/swig/4.1.0/go/cdata.i deleted file mode 100755 index b4411af9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/cdata.i +++ /dev/null @@ -1,97 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/go/director.swg b/mac/bin/swig/share/swig/4.1.0/go/director.swg deleted file mode 100755 index 103ba22a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/director.swg +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/go/exception.i b/mac/bin/swig/share/swig/4.1.0/go/exception.i deleted file mode 100755 index 5abd306a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/exception.i +++ /dev/null @@ -1,7 +0,0 @@ -%typemap(throws,noblock=1) (...) { - SWIG_exception(SWIG_RuntimeError,"unknown exception"); -} - -%insert("runtime") %{ -#define SWIG_exception(code, msg) _swig_gopanic(msg) -%} diff --git a/mac/bin/swig/share/swig/4.1.0/go/go.swg b/mac/bin/swig/share/swig/4.1.0/go/go.swg deleted file mode 100755 index 348ae5f0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/go.swg +++ /dev/null @@ -1,744 +0,0 @@ -/* ------------------------------------------------------------ - * 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, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) -%{ $1 = *($&1_ltype)&$input; -rvrdeleter.reset($1); %} - -%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[ANY], char[] -%{ free($1); %} - -%typemap(freearg) char *& -%{ free(temp$argnum); %} - -%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; -%} - -/* The int & type needs to convert to intgo. */ - -%typemap(gotype) int & "*int" - -%typemap(in) int & (int e) -%{ - e = (int)*$input; - $1 = &e; -%} - -%typemap(out) int & -%{ $result = new intgo(*$1); %} - -%typemap(argout) int & -%{ *$input = (intgo)e$argnum; %} - -%typemap(goout) int & "" - -%typemap(directorin) int & (intgo e) -%{ - e = (intgo)$1; - $input = &e; -%} - -%typemap(godirectorin) int & "" - -%typemap(directorout) int & -%{ - $*1_ltype f = ($*1_ltype)*$input; - $result = ($1_ltype)&f; -%} - -%typemap(directorargout) int & -%{ $1 = (int)*$input; %} - -%typemap(argout) const int & "" -%typemap(directorargout) const int & "" - -/* 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 & -%{ $result = $input; %} - -/* 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(SWIG_STD_MOVE($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/mac/bin/swig/share/swig/4.1.0/go/gokw.swg b/mac/bin/swig/share/swig/4.1.0/go/gokw.swg deleted file mode 100755 index 35428300..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/gokw.swg +++ /dev/null @@ -1,33 +0,0 @@ -/* Rename keywords. */ - -#define GOKW(x) %keywordwarn("'" `x` "' is a Go keyword",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/mac/bin/swig/share/swig/4.1.0/go/goruntime.swg b/mac/bin/swig/share/swig/4.1.0/go/goruntime.swg deleted file mode 100755 index 7bf083bd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/goruntime.swg +++ /dev/null @@ -1,217 +0,0 @@ -/* ------------------------------------------------------------ - * 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 - -%} - -%insert(cgo_comment_typedefs) %{ -#include -#include -%} - -#if SWIGGO_INTGO_SIZE == 32 -%insert(runtime) %{ -typedef int intgo; -typedef unsigned int uintgo; -%} -%insert(cgo_comment_typedefs) %{ -typedef int intgo; -typedef unsigned int uintgo; -%} -#elif SWIGGO_INTGO_SIZE == 64 -%insert(runtime) %{ -typedef long long intgo; -typedef unsigned long long uintgo; -%} -%insert(cgo_comment_typedefs) %{ -typedef long long intgo; -typedef unsigned long long uintgo; -%} -#else -%insert(runtime) %{ -typedef ptrdiff_t intgo; -typedef size_t uintgo; -%} -%insert(cgo_comment_typedefs) %{ -typedef ptrdiff_t intgo; -typedef size_t uintgo; -%} -#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_; - -%} - -%insert(cgo_comment_typedefs) %{ - -typedef struct { char *p; intgo n; } _gostring_; -typedef struct { void* array; intgo len; intgo cap; } _goslice_; - -%} - -#ifdef SWIGGO_GCCGO - -/* 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 -%} - -#endif - -#ifndef SWIGGO_GCCGO - -%go_import("unsafe", _ "runtime/cgo") - -#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 -%} - -/* Convert a Go interface value into a C++ pointer. */ - -%insert(go_header) %{ -func getSwigcptr(v interface { Swigcptr() uintptr }) uintptr { - if v == nil { - return 0 - } - return v.Swigcptr() -} -%} - -/* 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/mac/bin/swig/share/swig/4.1.0/go/gostring.swg b/mac/bin/swig/share/swig/4.1.0/go/gostring.swg deleted file mode 100755 index 44cbbb8e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/gostring.swg +++ /dev/null @@ -1,29 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/go/std_array.i b/mac/bin/swig/share/swig/4.1.0/go/std_array.i deleted file mode 100755 index 36c790e3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/std_array.i +++ /dev/null @@ -1,43 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; diff --git a/mac/bin/swig/share/swig/4.1.0/go/std_deque.i b/mac/bin/swig/share/swig/4.1.0/go/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/go/std_except.i b/mac/bin/swig/share/swig/4.1.0/go/std_except.i deleted file mode 100755 index 4f021a12..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/std_except.i +++ /dev/null @@ -1,31 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/go/std_list.i b/mac/bin/swig/share/swig/4.1.0/go/std_list.i deleted file mode 100755 index ff6f7001..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/std_list.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/go/std_map.i b/mac/bin/swig/share/swig/4.1.0/go/std_map.i deleted file mode 100755 index 773b6d0c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/std_map.i +++ /dev/null @@ -1,66 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/go/std_pair.i b/mac/bin/swig/share/swig/4.1.0/go/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/go/std_string.i b/mac/bin/swig/share/swig/4.1.0/go/std_string.i deleted file mode 100755 index 35b4a5e4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/std_string.i +++ /dev/null @@ -1,162 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(throws) string -%{ _swig_gopanic($1.c_str()); %} - -%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) %} - -%typemap(throws) const string & -%{ _swig_gopanic($1.c_str()); %} - - -%typemap(gotype) string * "*string" - -%typemap(in) string * (string temp) -%{ - if ($input) { - temp.assign($input->p, $input->n); - $1 = &temp; - } else - $1 = 0; -%} - -%typemap(godirectorout) string * -%{ - if $input != nil { - p := Swig_malloc(len(*$input)) - s := (*[1<<30]byte)(unsafe.Pointer(p))[:len(*$input)] - copy(s, *$input) - $result = (*string)(unsafe.Pointer(&s)) - } else { - $result = nil - } -%} - -%typemap(directorout) string * (string temp) -%{ - temp.assign($input->p, $input->n); - $result = &temp; - free($input.p); -%} - -%typemap(out,fragment="AllocateString") string * (_gostring_ temp) -%{ - temp = Swig_AllocateString($1->data(), $1->length()); - $result = &temp; -%} - -%typemap(goout,fragment="CopyString") string * -%{ *$result = swigCopyString(*$1) %} - -%typemap(directorin,fragment="AllocateString") string * (_gostring_ temp) -%{ - if ($1) { - temp = Swig_AllocateString($1->data(), $1->length()); - $input = &temp; - } else - $input = 0; -%} - -%typemap(godirectorin,fragment="CopyString") string * -%{ *$result = swigCopyString(*$input); %} - -%typemap(argout,fragment="AllocateString") string * -%{ - if ($1) - *$input = Swig_AllocateString($1->data(), $1->length()); -%} - -%typemap(goargout,fragment="CopyString") string * -%{ - if $input != nil { - *$1 = swigCopyString(*$input) - } -%} - -} diff --git a/mac/bin/swig/share/swig/4.1.0/go/std_vector.i b/mac/bin/swig/share/swig/4.1.0/go/std_vector.i deleted file mode 100755 index 679c7075..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/std_vector.i +++ /dev/null @@ -1,92 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/go/swigmove.i b/mac/bin/swig/share/swig/4.1.0/go/swigmove.i deleted file mode 100755 index e1984b6e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/swigmove.i +++ /dev/null @@ -1,15 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in) SWIGTYPE MOVE ($&1_type argp) -%{ - argp = ($&1_ltype)$input; - if (argp == NULL) { - _swig_gopanic("Attempt to dereference null $1_type"); - } - SwigValueWrapper< $1_ltype >::reset($1, argp); -%} diff --git a/mac/bin/swig/share/swig/4.1.0/go/typemaps.i b/mac/bin/swig/share/swig/4.1.0/go/typemaps.i deleted file mode 100755 index d2e60d37..00000000 --- a/mac/bin/swig/share/swig/4.1.0/go/typemaps.i +++ /dev/null @@ -1,298 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/Makefile b/mac/bin/swig/share/swig/4.1.0/guile/Makefile deleted file mode 100755 index fba7fd5d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/Makefile +++ /dev/null @@ -1,3 +0,0 @@ - -co: - co RCS/*.i* RCS/*.swg* diff --git a/mac/bin/swig/share/swig/4.1.0/guile/common.scm b/mac/bin/swig/share/swig/4.1.0/guile/common.scm deleted file mode 100755 index 17c9ab58..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/common.scm +++ /dev/null @@ -1,70 +0,0 @@ -;;;************************************************************************ -;;;*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/mac/bin/swig/share/swig/4.1.0/guile/cplusplus.i b/mac/bin/swig/share/swig/4.1.0/guile/cplusplus.i deleted file mode 100755 index d5d65efa..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/cplusplus.i +++ /dev/null @@ -1,22 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/extra-install.list b/mac/bin/swig/share/swig/4.1.0/guile/extra-install.list deleted file mode 100755 index 05d2c0c4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/extra-install.list +++ /dev/null @@ -1,2 +0,0 @@ -# see top-level Makefile.in -common.scm diff --git a/mac/bin/swig/share/swig/4.1.0/guile/guile.i b/mac/bin/swig/share/swig/4.1.0/guile/guile.i deleted file mode 100755 index ef270d74..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/guile.i +++ /dev/null @@ -1,33 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/guile_scm.swg b/mac/bin/swig/share/swig/4.1.0/guile/guile_scm.swg deleted file mode 100755 index 16dc8aa9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/guile_scm.swg +++ /dev/null @@ -1,46 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg b/mac/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg deleted file mode 100755 index 689a1060..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg +++ /dev/null @@ -1,532 +0,0 @@ -/* ----------------------------------------------------------------------------- - * guile_scm_run.swg - * ----------------------------------------------------------------------------- */ - -#if __GNUC__ >= 10 -#if defined(__cplusplus) -#pragma GCC diagnostic ignored "-Wvolatile" /* For 'volatile SCM *' in at least Guile 3.0 and earlier */ -#endif -#endif - -#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) \ - do { \ - if (!(expr)) \ - scm_error(scm_from_locale_symbol("swig-contract-assertion-failed"), \ - (char *) FUNC_NAME, (char *) msg, \ - SCM_EOL, SCM_BOOL_F); \ - } while (0) - -/* 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 void SWIG_Guile_MarkPointerNoncollectable(SCM s); - -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_is_null(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_is_null(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_is_null(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); - int ret = SWIG_ERROR; - - if (scm_is_null(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 ((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) { - if ((SCM_CELL_TYPE(smob) == swig_collectable_tag && SCM_CELL_WORD_1(smob) == 0) || SCM_CELL_TYPE(smob) == swig_tag) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - } - - 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 */ - ret = SWIG_OK; - } else { - return SWIG_ERROR; - } - } else { - *result = (void *) SCM_CELL_WORD_1(smob); - ret = SWIG_OK; - } - - if (flags & SWIG_POINTER_DISOWN) { - SWIG_Guile_MarkPointerNoncollectable(smob); - } - if (flags & SWIG_POINTER_CLEAR) { - SCM_SET_CELL_WORD_1(smob, 0); - } - } - return ret; -} - -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_is_null(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_is_null(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/mac/bin/swig/share/swig/4.1.0/guile/interpreter.i b/mac/bin/swig/share/swig/4.1.0/guile/interpreter.i deleted file mode 100755 index 524e0694..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/interpreter.i +++ /dev/null @@ -1,59 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/list-vector.i b/mac/bin/swig/share/swig/4.1.0/guile/list-vector.i deleted file mode 100755 index 82405259..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/list-vector.i +++ /dev/null @@ -1,488 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) - {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) - { - 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++) { - 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++) - 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 - {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 - { - 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++) - 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++) - free((*$1)[i]); - free(*$1); - } -} diff --git a/mac/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i b/mac/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i deleted file mode 100755 index d8a631ca..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i +++ /dev/null @@ -1,102 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/ports.i b/mac/bin/swig/share/swig/4.1.0/guile/ports.i deleted file mode 100755 index 7691d3e3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/ports.i +++ /dev/null @@ -1,50 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i deleted file mode 100755 index 59d5c0ed..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scm_misc_error(FUNC_NAME, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'", SCM_EOL); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/guile/std_common.i b/mac/bin/swig/share/swig/4.1.0/guile/std_common.i deleted file mode 100755 index 97974497..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/std_common.i +++ /dev/null @@ -1,25 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - SWIG_free(temp); - return s; -} -%} diff --git a/mac/bin/swig/share/swig/4.1.0/guile/std_deque.i b/mac/bin/swig/share/swig/4.1.0/guile/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/guile/std_except.i b/mac/bin/swig/share/swig/4.1.0/guile/std_except.i deleted file mode 100755 index 6c30a319..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/std_except.i +++ /dev/null @@ -1,13 +0,0 @@ -// 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/mac/bin/swig/share/swig/4.1.0/guile/std_map.i b/mac/bin/swig/share/swig/4.1.0/guile/std_map.i deleted file mode 100755 index f84e78bc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/std_map.i +++ /dev/null @@ -1,1370 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/std_pair.i b/mac/bin/swig/share/swig/4.1.0/guile/std_pair.i deleted file mode 100755 index 050d4880..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/std_pair.i +++ /dev/null @@ -1,867 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/std_string.i b/mac/bin/swig/share/swig/4.1.0/guile/std_string.i deleted file mode 100755 index c49bfcb0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/std_string.i +++ /dev/null @@ -1,95 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - 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); - 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); - 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); - SWIG_free(tempptr); - } else { - SWIG_exception(SWIG_TypeError, "string expected"); - } - } - - %typemap(varout) string { - $result = SWIG_str02scm($1.c_str()); - } - - %typemap(throws) string { - scm_throw(scm_from_locale_symbol((char *) "swig-exception"), - scm_list_n(SWIG_str02scm($1.c_str()), SCM_UNDEFINED)); - } - - %typemap(throws) const string & { - scm_throw(scm_from_locale_symbol((char *) "swig-exception"), - scm_list_n(SWIG_str02scm($1.c_str()), SCM_UNDEFINED)); - } -} diff --git a/mac/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i deleted file mode 100755 index 6f907e90..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scm_misc_error(FUNC_NAME, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'", SCM_EOL); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/guile/std_vector.i b/mac/bin/swig/share/swig/4.1.0/guile/std_vector.i deleted file mode 100755 index 42bad849..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/std_vector.i +++ /dev/null @@ -1,424 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/guile/swigmove.i b/mac/bin/swig/share/swig/4.1.0/guile/swigmove.i deleted file mode 100755 index 87ab91ea..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/swigmove.i +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "$1_type", $symname, $argnum); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/mac/bin/swig/share/swig/4.1.0/guile/swigrun.i b/mac/bin/swig/share/swig/4.1.0/guile/swigrun.i deleted file mode 100755 index e4573eb3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/swigrun.i +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- mode: c -*- */ - -%module swigrun - -#ifdef SWIGGUILE_SCM - -%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/mac/bin/swig/share/swig/4.1.0/guile/typemaps.i b/mac/bin/swig/share/swig/4.1.0/guile/typemaps.i deleted file mode 100755 index 45a2208f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/guile/typemaps.i +++ /dev/null @@ -1,501 +0,0 @@ -/* ----------------------------------------------------------------------------- - * typemaps.i - * - * Guile-specific typemaps - * ----------------------------------------------------------------------------- */ - -/* These are defined with a view to eventually merging with those defined for other target languages in swigtypemaps.swg and exception.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) -#define %argument_nullref(_type, _name, _argn) scm_misc_error(FUNC_NAME, "invalid null reference for argument " #_argn " of type '" _type "'", SCM_EOL) -#define %releasenotowned_fail(_code, _type, _name, _argn) scm_misc_error(FUNC_NAME, "cannot release ownership as memory is not owned for argument " #_argn " of type '" _type "'", SCM_EOL) - -/* Pointers */ - -%typemap(in) SWIGTYPE *, SWIGTYPE [] { - $1 = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, $argnum, 0); -} -%typemap(in) SWIGTYPE & ($1_ltype argp) { - argp = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, $argnum, 0); - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - $1 = argp; -} -%typemap(in, noblock=1, fragment="") SWIGTYPE && (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) { - res = SWIG_ConvertPtr($input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "$1_type", $symname, $argnum); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -} -%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); - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - $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); - $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 = ($&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) SWIG_free($1);" -%typemap (freearg) char **INPUT, char **BOTH "if (must_free$argnum) 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 * { - 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 - * ------------------------------------------------------------ */ - -%typemap(in) SWIGTYPE (CLASS::*) { - int res = SWIG_ConvertMember($input, %as_voidptr(&$1), sizeof($1), $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($1), $descriptor)); -} - -%typemap(varin) SWIGTYPE (CLASS::*) { - int res = SWIG_ConvertMember($input,%as_voidptr(&$1), sizeof($1), $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($1), $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_is_bool($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/mac/bin/swig/share/swig/4.1.0/intrusive_ptr.i b/mac/bin/swig/share/swig/4.1.0/intrusive_ptr.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/inttypes.i b/mac/bin/swig/share/swig/4.1.0/inttypes.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/java/arrays_java.i b/mac/bin/swig/share/swig/4.1.0/java/arrays_java.i deleted file mode 100755 index a57da64b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/arrays_java.i +++ /dev/null @@ -1,392 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - 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)); %} - -// 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/mac/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i deleted file mode 100755 index ce00162d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i +++ /dev/null @@ -1,337 +0,0 @@ -// 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)); %} - -%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(SWIG_STD_MOVE($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/mac/bin/swig/share/swig/4.1.0/java/director.swg b/mac/bin/swig/share/swig/4.1.0/java/director.swg deleted file mode 100755 index 53651355..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/director.swg +++ /dev/null @@ -1,541 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) -#include -#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; - } - } - } - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) - static void detach(void *jvm) { - static_cast(jvm)->DetachCurrentThread(); - } - - static void make_detach_key() { - pthread_key_create(&detach_key_, detach); - } - - /* thread-local key to register a destructor */ - static pthread_key_t detach_key_; -#endif - - private: - /* pointer to Java object */ - jobject jthis_; - /* Local or global reference flag */ - bool weak_global_; - }; - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) - pthread_key_t JObjectWrapper::detach_key_; -#endif - - /* 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 - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) - // At least on Android 6, detaching after every call causes a memory leak. - // Instead, register a thread desructor and detach only when the thread ends. - // See https://developer.android.com/training/articles/perf-jni#threads - static pthread_once_t once = PTHREAD_ONCE_INIT; - - pthread_once(&once, JObjectWrapper::make_detach_key); - pthread_setspecific(JObjectWrapper::detach_key_, director->swig_jvm_); -#endif - } - ~JNIEnvWrapper() { -#if !defined(SWIG_JAVA_DETACH_ON_THREAD_END) && !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_; - } - }; - - struct SwigDirectorMethod { - const char *name; - const char *desc; - jmethodID methid; - SwigDirectorMethod(JNIEnv *jenv, jclass baseclass, const char *name, const char *desc) : name(name), desc(desc) { - methid = jenv->GetMethodID(baseclass, name, desc); - } - }; - - /* 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); - } - } - } - - jclass swig_new_global_ref(JNIEnv *jenv, const char *classname) { - jclass clz = jenv->FindClass(classname); - return clz ? (jclass)jenv->NewGlobalRef(clz) : 0; - } - - 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/mac/bin/swig/share/swig/4.1.0/java/enums.swg b/mac/bin/swig/share/swig/4.1.0/java/enums.swg deleted file mode 100755 index 81fe5787..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/enums.swg +++ /dev/null @@ -1,116 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/enumsimple.swg b/mac/bin/swig/share/swig/4.1.0/java/enumsimple.swg deleted file mode 100755 index c270149b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/enumsimple.swg +++ /dev/null @@ -1,71 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg b/mac/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg deleted file mode 100755 index c2012f56..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg +++ /dev/null @@ -1,117 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg b/mac/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg deleted file mode 100755 index 31fb8a79..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg +++ /dev/null @@ -1,72 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/java.swg b/mac/bin/swig/share/swig/4.1.0/java/java.swg deleted file mode 100755 index 8719818b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/java.swg +++ /dev/null @@ -1,1458 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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($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(SWIG_STD_MOVE($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 is null"); - return $null; - } %} -%typemap(in, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ $1 = *($&1_ltype)&$input; - if (!$1) { - SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type is null"); - return $null; - } - rvrdeleter.reset($1); %} -%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 [] "$javaclassname.getCPtr($javainput)" -%typemap(javain) SWIGTYPE && "$javaclassname.swigRelease($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::*) "" -%typemap(javainterfacemodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "public interface" - -/* 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; - } - - CPTR_VISIBILITY static long swigRelease($javaclassname obj) { - long ptr = 0; - if (obj != null) { - if (!obj.swigCMemOwn) - throw new RuntimeException("Cannot release ownership as memory is not owned"); - ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.delete(); - } - return ptr; - } -%} - -// 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; - } - - CPTR_VISIBILITY static long swigRelease($javaclassname obj) { - long ptr = 0; - if (obj != null) { - if (!obj.swigCMemOwn) - throw new RuntimeException("Cannot release ownership as memory is not owned"); - ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.delete(); - } - return ptr; - } -%} -%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; - } - - CPTR_VISIBILITY static long swigRelease($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/mac/bin/swig/share/swig/4.1.0/java/javahead.swg b/mac/bin/swig/share/swig/4.1.0/java/javahead.swg deleted file mode 100755 index 758a037d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/javahead.swg +++ /dev/null @@ -1,91 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) %{ -#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_JavaIllegalStateException, -} 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_JavaIllegalStateException, "java/lang/IllegalStateException" }, - { (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) do { if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } } while (0) -%} diff --git a/mac/bin/swig/share/swig/4.1.0/java/javakw.swg b/mac/bin/swig/share/swig/4.1.0/java/javakw.swg deleted file mode 100755 index 8a5b76ee..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/javakw.swg +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef JAVA_JAVAKW_SWG_ -#define JAVA_JAVAKW_SWG_ - -/* Warnings for Java keywords */ -#define JAVAKW(x) %keywordwarn("'" `x` "' is a java keyword",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/mac/bin/swig/share/swig/4.1.0/java/std_array.i b/mac/bin/swig/share/swig/4.1.0/java/std_array.i deleted file mode 100755 index d3436cc6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_array.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 "jlong" -%typemap (jtype) std::auto_ptr< TYPE > "long" -%typemap (jstype) std::auto_ptr< TYPE > "$typemap(jstype, TYPE)" - -%typemap(in) std::auto_ptr< TYPE > (TYPE *auto_temp) -%{ auto_temp = *(TYPE **)&$input; - $1.reset(auto_temp); %} - -%typemap(javain) std::auto_ptr< TYPE > "$typemap(jstype, TYPE).swigRelease($javainput)" - -%typemap (out) std::auto_ptr< TYPE > %{ - jlong lpp = 0; - *(TYPE **) &lpp = $1.release(); - $result = lpp; -%} - -%typemap(javaout) std::auto_ptr< TYPE > { - long cPtr = $jnicall; - return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::auto_ptr< TYPE > "" - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/java/std_common.i b/mac/bin/swig/share/swig/4.1.0/java/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/mac/bin/swig/share/swig/4.1.0/java/std_deque.i b/mac/bin/swig/share/swig/4.1.0/java/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/java/std_except.i b/mac/bin/swig/share/swig/4.1.0/java/std_except.i deleted file mode 100755 index 91d2f92c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_except.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/std_list.i b/mac/bin/swig/share/swig/4.1.0/java/std_list.i deleted file mode 100755 index 1077bd0a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_list.i +++ /dev/null @@ -1,225 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/std_map.i b/mac/bin/swig/share/swig/4.1.0/java/std_map.i deleted file mode 100755 index 6d5ca1aa..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_map.i +++ /dev/null @@ -1,224 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/std_pair.i b/mac/bin/swig/share/swig/4.1.0/java/std_pair.i deleted file mode 100755 index 75ad3031..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_pair.i +++ /dev/null @@ -1,37 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/std_set.i b/mac/bin/swig/share/swig/4.1.0/java/std_set.i deleted file mode 100755 index 053866bc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_set.i +++ /dev/null @@ -1,207 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 add($typemap(jboxtype, T) key) { - return addImpl(key); - } - - 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); - } - - public void remove() { - throw new java.lang.UnsupportedOperationException(); - } - }.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 addImpl(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/mac/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/mac/bin/swig/share/swig/4.1.0/java/std_string.i b/mac/bin/swig/share/swig/4.1.0/java/std_string.i deleted file mode 100755 index 830a8961..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_string.i +++ /dev/null @@ -1,121 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i deleted file mode 100755 index 838ca495..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) - -%typemap (jni) std::unique_ptr< TYPE > "jlong" -%typemap (jtype) std::unique_ptr< TYPE > "long" -%typemap (jstype) std::unique_ptr< TYPE > "$typemap(jstype, TYPE)" - -%typemap(in) std::unique_ptr< TYPE > (TYPE *unique_temp) -%{ unique_temp = *(TYPE **)&$input; - $1.reset(unique_temp); %} - -%typemap(javain) std::unique_ptr< TYPE > "$typemap(jstype, TYPE).swigRelease($javainput)" - -%typemap (out) std::unique_ptr< TYPE > %{ - jlong lpp = 0; - *(TYPE **) &lpp = $1.release(); - $result = lpp; -%} - -%typemap(javaout) std::unique_ptr< TYPE > { - long cPtr = $jnicall; - return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::unique_ptr< TYPE > "" - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/java/std_unordered_map.i b/mac/bin/swig/share/swig/4.1.0/java/std_unordered_map.i deleted file mode 100755 index 283a9b46..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_unordered_map.i +++ /dev/null @@ -1,211 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/java/std_unordered_set.i b/mac/bin/swig/share/swig/4.1.0/java/std_unordered_set.i deleted file mode 100755 index ddcedf05..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_unordered_set.i +++ /dev/null @@ -1,203 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - } - - public void remove() { - throw new java.lang.UnsupportedOperationException(); - } - }.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/mac/bin/swig/share/swig/4.1.0/java/std_vector.i b/mac/bin/swig/share/swig/4.1.0/java/std_vector.i deleted file mode 100755 index 60ee23eb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_vector.i +++ /dev/null @@ -1,185 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(); - reserve(initialElements.length); - - 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/mac/bin/swig/share/swig/4.1.0/java/std_wstring.i b/mac/bin/swig/share/swig/4.1.0/java/std_wstring.i deleted file mode 100755 index efa9e63b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/std_wstring.i +++ /dev/null @@ -1,180 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 = (jsize)$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 = (jsize)$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.size(), '\0'); - for (size_t i = 0; i < $1.size(); ++i) { - message[i] = (char)$1[i]; - } - 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 = (jsize)$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 = (jsize)$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.size(), '\0'); - for (size_t i = 0; i < $1.size(); ++i) { - message[i] = (char)$1[i]; - } - SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, message.c_str()); - return $null; %} - -} - diff --git a/mac/bin/swig/share/swig/4.1.0/java/stl.i b/mac/bin/swig/share/swig/4.1.0/java/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/java/swiginterface.i b/mac/bin/swig/share/swig/4.1.0/java/swiginterface.i deleted file mode 100755 index c3ca97d3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/swiginterface.i +++ /dev/null @@ -1,74 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(SWIG_STD_MOVE($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/mac/bin/swig/share/swig/4.1.0/java/swigmove.i b/mac/bin/swig/share/swig/4.1.0/java/swigmove.i deleted file mode 100755 index 671b988a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/swigmove.i +++ /dev/null @@ -1,16 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in) SWIGTYPE MOVE ($&1_type argp) -%{ argp = *($&1_ltype*)&$input; - if (!argp) { - SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type"); - return $null; - } - SwigValueWrapper< $1_ltype >::reset($1, argp); %} - -%typemap(javain) SWIGTYPE MOVE "$&javaclassname.swigRelease($javainput)" diff --git a/mac/bin/swig/share/swig/4.1.0/java/typemaps.i b/mac/bin/swig/share/swig/4.1.0/java/typemaps.i deleted file mode 100755 index e130c193..00000000 --- a/mac/bin/swig/share/swig/4.1.0/java/typemaps.i +++ /dev/null @@ -1,529 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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; igetPrivateObject()->tryAllowDestroyInGC(); %} \ No newline at end of file diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_common.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_common.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_complex.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_complex.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_deque.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_deque.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_except.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_except.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_map.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_map.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_pair.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_pair.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_string.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_string.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_vector.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/std_vector.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/stl.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/stl.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/typemaps.i b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/typemaps.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i deleted file mode 100755 index 713b7ef2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i +++ /dev/null @@ -1,94 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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)) {} -%fragment("SWIG_JSCOutInt", "header", fragment=SWIG_From_frag(int)) {} -%fragment("SWIG_JSCOutNumber", "header", fragment=SWIG_From_frag(double)) {} - -%define JAVASCRIPT_ARRAYS_IN_DECL(NAME, CTYPE, ANY, ANYLENGTH) - -%typemap(in, fragment=NAME) CTYPE[ANY] { - if (JSValueIsObject(context, $input)) - { - int i; - // Convert into Array - JSObjectRef array = JSValueToObject(context, $input, NULL); - - int length = ANYLENGTH; - - $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); - - // Get each element from array - for (i = 0; i < length; i++) - { - JSValueRef jsvalue = JSObjectGetPropertyAtIndex(context, array, i, NULL); - $*1_ltype temp; - - // Get primitive value from JSObject - int res = SWIG_AsVal(CTYPE)(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) CTYPE[ANY] { - free($1); -} - -%enddef - -%define JAVASCRIPT_ARRAYS_OUT_DECL(NAME, CTYPE) - -%typemap(out, fragment=NAME) CTYPE[ANY] { - int length = $1_dim0; - JSValueRef values[length]; - int i; - - for (i = 0; i < length; i++) - { - values[i] = SWIG_From(CTYPE)($1[i]); - } - - $result = JSObjectMakeArray(context, length, values, NULL); -} - -%enddef - -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, , SWIGJSC_ArrayLength(context, array)) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, ANY, $1_dim0) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, , SWIGJSC_ArrayLength(context, array)) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, ANY, $1_dim0) - -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutInt", int) -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutNumber", double) - diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i deleted file mode 100755 index e58dbf71..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ccomplex.i - * - * C complex typemaps - * ISO C99: 7.3 Complex arithmetic - * ----------------------------------------------------------------------------- */ - - -%include - -%{ -#include -%} - -#define complex _Complex - -/* 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i deleted file mode 100755 index 4c3b3c5e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef __cplusplus -%include -#else -%include -#endif - diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i deleted file mode 100755 index 0246cfde..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg deleted file mode 100755 index 3a83b649..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * javascript.swg - * - * Javascript typemaps - * ----------------------------------------------------------------------------- */ - -%include - -%include - -%include - -%include - -%include - -%include - -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg deleted file mode 100755 index 4050a6ee..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg +++ /dev/null @@ -1,429 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg deleted file mode 100755 index dcc205db..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg +++ /dev/null @@ -1,146 +0,0 @@ -/* - 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.0f); - 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg deleted file mode 100755 index 4778bf03..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg deleted file mode 100755 index 45765433..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg +++ /dev/null @@ -1,69 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg deleted file mode 100755 index b0138b39..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg +++ /dev/null @@ -1,112 +0,0 @@ -%insert(init) %{ -SWIGRUNTIME void -SWIG_JSC_SetModule(JSGlobalContextRef context, swig_module_info *swig_module) { - JSObjectRef globalObject; - JSStringRef moduleName; - JSClassDefinition classDef; - JSClassRef classRef; - JSObjectRef object; - - if(context == 0){ - return; - } - - globalObject = JSContextGetGlobalObject(context); - moduleName = JSStringCreateWithUTF8CString("swig_module_info_data"); - - classDef = kJSClassDefinitionEmpty; - classRef = JSClassCreate(&classDef); - - object = JSObjectMake(context, classRef, NULL); - JSObjectSetPrivate(object, (void*)swig_module); - - JSObjectSetProperty(context, globalObject, moduleName, object, kJSPropertyAttributeNone, NULL); - - JSClassRelease(classRef); - JSStringRelease(moduleName); -} -SWIGRUNTIME swig_module_info * -SWIG_JSC_GetModule(JSGlobalContextRef context) { - JSObjectRef globalObject; - JSStringRef moduleName; - JSValueRef value; - JSObjectRef object; - - if(context == 0){ - return 0; - } - - globalObject = JSContextGetGlobalObject(context); - moduleName = JSStringCreateWithUTF8CString("swig_module_info_data"); - - if(JSObjectHasProperty(context, globalObject, moduleName) == false) { - JSStringRelease(moduleName); - return 0; - } - - value = JSObjectGetProperty(context, globalObject, moduleName, NULL); - object = JSValueToObject(context, value, NULL); - JSStringRelease(moduleName); - - return (swig_module_info*)JSObjectGetPrivate(object); -} - -#define SWIG_GetModule(clientdata) SWIG_JSC_GetModule(clientdata) -#define SWIG_SetModule(clientdata, pointer) SWIG_JSC_SetModule(clientdata, pointer) -#define SWIG_INIT_CLIENT_DATA_TYPE JSGlobalContextRef -%} - -%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(context); -%} - -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg deleted file mode 100755 index c3c11839..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg +++ /dev/null @@ -1,40 +0,0 @@ -#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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg deleted file mode 100755 index 20d575d9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg +++ /dev/null @@ -1,192 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg deleted file mode 100755 index 4d5a9355..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg +++ /dev/null @@ -1,369 +0,0 @@ -/* ---------------------------------------------------------------------------- - * 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_ValueRef(JSContextRef context, JSValueRef *exception, JSValueRef valRef) { - JSValueRef error_arguments[1]; - JSObjectRef exception_object; - /* 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] = valRef; - exception_object = JSObjectMakeError(context, 1, error_arguments, NULL); - - /* Return the exception_object */ - *exception = exception_object; -} - -SWIGRUNTIME void SWIG_Javascript_Raise(JSContextRef context, JSValueRef *exception, const char* msg) { - JSStringRef message = JSStringCreateWithUTF8CString(msg); - JSValueRef exception_value = JSValueMakeString(context, message); - - SWIG_Javascript_Raise_ValueRef(context, exception, exception_value); - - 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; - } - assert(ptr); - *ptr = NULL; - if (!info || cdata->info == info) { - *ptr = cdata->swigCObject; - } else { - swig_cast_info *tc = SWIG_TypeCheckStruct(cdata->info, info); - if (tc) { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc, cdata->swigCObject, &newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } else { - return SWIG_ERROR; - } - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !cdata->swigCMemOwn) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (flags & SWIG_POINTER_DISOWN) { - cdata->swigCMemOwn = false; - } - if (flags & SWIG_POINTER_CLEAR) { - cdata->swigCObject = 0; - } - } - - 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 -bool SWIGJSC_ValueIsArray(JSContextRef context, JSValueRef value) { - if (JSValueIsObject(context, value)) { - static JSStringRef ArrayString = NULL; - static JSStringRef isArrayString = NULL; - JSObjectRef array = NULL; - JSObjectRef isArray = NULL; - JSValueRef retval = NULL; - - if (!ArrayString) - ArrayString = JSStringCreateWithUTF8CString("Array"); - if (!isArrayString) - isArrayString = JSStringCreateWithUTF8CString("isArray"); - - array = (JSObjectRef)JSObjectGetProperty(context, JSContextGetGlobalObject(context), ArrayString, NULL); - isArray = (JSObjectRef)JSObjectGetProperty(context, array, isArrayString, NULL); - retval = JSObjectCallAsFunction(context, isArray, NULL, 1, &value, NULL); - - if (JSValueIsBoolean(context, retval)) - return JSValueToBoolean(context, retval); - } - return false; -} - -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 if (!SWIGJSC_ValueIsArray(context, value)) { - arr = JSObjectMakeArray(context, 1, &value, 0); - } else { - arr = JSValueToObject(context, value, 0); - } - - length = SWIGJSC_ArrayLength(context, arr); - JSObjectSetPropertyAtIndex(context, arr, length, obj, 0); - return arr; -} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg deleted file mode 100755 index a626390c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg +++ /dev/null @@ -1,20 +0,0 @@ -/* ----------------------------------------------------------------------------- - * javascriptruntime.swg - * - * Javascript support code - * ----------------------------------------------------------------------------- */ - -%insert(runtime) %{ -#include -#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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg deleted file mode 100755 index 5c8081a8..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg +++ /dev/null @@ -1,187 +0,0 @@ -/* ------------------------------------------------------------ - * 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_ValueRef(context, exception, obj) - -%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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i deleted file mode 100755 index a252e0aa..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i deleted file mode 100755 index 9fa10880..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i +++ /dev/null @@ -1,81 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i deleted file mode 100755 index 586ac5c6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i +++ /dev/null @@ -1,99 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i b/mac/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i deleted file mode 100755 index b5b441bc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i +++ /dev/null @@ -1,148 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/mac/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i deleted file mode 100755 index 6dc7e4b9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i +++ /dev/null @@ -1,86 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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)) {} -%fragment("SWIG_JSCOutInt", "header", fragment=SWIG_From_frag(int)) {} -%fragment("SWIG_JSCOutNumber", "header", fragment=SWIG_From_frag(double)) {} - -%define JAVASCRIPT_ARRAYS_IN_DECL(NAME, CTYPE, ANY, ANYLENGTH) - -%typemap(in, fragment=NAME) CTYPE[ANY] { - if ($input->IsArray()) { - // Convert into Array - v8::Local array = v8::Local::Cast($input); - - int length = ANYLENGTH; - - $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); - - // Get each element from array - for (int i = 0; i < length; i++) { - v8::Local jsvalue = SWIGV8_ARRAY_GET(array, i); - $*1_ltype temp; - - // Get primitive value from JSObject - int res = SWIG_AsVal(CTYPE)(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 an array"); - } -} - -%typemap(freearg) CTYPE[ANY] { - free($1); -} - -%enddef - -%define JAVASCRIPT_ARRAYS_OUT_DECL(NAME, CTYPE) - -%typemap(out, fragment=NAME) CTYPE[ANY] { - int length = $1_dim0; - v8::Local array = SWIGV8_ARRAY_NEW(length); - - for (int i = 0; i < length; i++) { - SWIGV8_ARRAY_SET(array, i, SWIG_From(CTYPE)($1[i])); - } - - $result = array; -} - -%enddef - -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, , array->Length()) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, ANY, $1_dim0) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, , array->Length()) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, ANY, $1_dim0) - -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutInt", int) -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutNumber", double) - diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i deleted file mode 100755 index e58dbf71..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ccomplex.i - * - * C complex typemaps - * ISO C99: 7.3 Complex arithmetic - * ----------------------------------------------------------------------------- */ - - -%include - -%{ -#include -%} - -#define complex _Complex - -/* 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/mac/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/complex.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/complex.i deleted file mode 100755 index 4c3b3c5e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/complex.i +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef __cplusplus -%include -#else -%include -#endif - diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/exception.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/exception.i deleted file mode 100755 index 0246cfde..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/exception.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg deleted file mode 100755 index 3a83b649..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * javascript.swg - * - * Javascript typemaps - * ----------------------------------------------------------------------------- */ - -%include - -%include - -%include - -%include - -%include - -%include - -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg deleted file mode 100755 index dcda0ee6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg +++ /dev/null @@ -1,435 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(); - - SWIGV8_OBJECT self = args.Holder(); - $jslocals - if(self->InternalFieldCount() < 1) SWIG_exception_fail(SWIG_ERROR, "Illegal call of constructor $jswrapper."); - 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; - SWIGV8_VALUE 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(); - - SWIGV8_OBJECT self = args.Holder(); - $jslocals - if(self->InternalFieldCount() < 1) SWIG_exception_fail(SWIG_ERROR, "Illegal call of constructor $jswrapper."); - 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(); - $jswrapper(args, errorHandler); - if(errorHandler.err.IsEmpty()) { - return; - } - } -%} - -/* ----------------------------------------------------------------------------- - * js_dtor: template for a destructor wrapper - * - $jsmangledname: mangled class name - * - $jstype: class type - * ----------------------------------------------------------------------------- */ -%fragment ("js_dtor", "templates") -%{ - -static void $jswrapper(const v8::WeakCallbackInfo &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - - if(proxy->swigCMemOwn && proxy->swigCObject) { -#ifdef SWIGRUNTIME_DEBUG - printf("Deleting wrapped instance: %s\n", proxy->info->name); -#endif - $jsfree proxy->swigCObject; - } - delete proxy; -} -%} - -/* ----------------------------------------------------------------------------- - * 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") -%{ -static void $jswrapper(const v8::WeakCallbackInfo &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - - if(proxy->swigCMemOwn && proxy->swigCObject) { - $jstype arg1 = ($jstype)proxy->swigCObject; - ${destructor_action} - } - delete proxy; -} -%} - -/* ----------------------------------------------------------------------------- - * 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 SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { - SWIGV8_HANDLESCOPE(); - - SWIGV8_VALUE 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") -%{ -static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { - 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(); - - SWIGV8_VALUE 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(); - - SWIGV8_VALUE 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(); - - SWIGV8_VALUE 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(); - $jswrapper(args, errorHandler); - if(errorHandler.err.IsEmpty()) { - return; - } - } -%} - -/* ----------------------------------------------------------------------------- - * 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 */ - SWIGV8_FUNCTION_TEMPLATE $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())) - { - $jsmangledname_class->Inherit( - v8::Local::New( - v8::Isolate::GetCurrent(), - static_cast(SWIGTYPE_p$jsbaseclass->clientdata)->class_templ) - ); - -#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) */ - SWIGV8_FUNCTION_TEMPLATE $jsmangledname_class_0 = SWIGV8_CreateClassTemplate("$jsname"); - $jsmangledname_class_0->SetCallHandler($jsctor); - $jsmangledname_class_0->Inherit($jsmangledname_class); -#if (SWIG_V8_VERSION < 0x0704) - $jsmangledname_class_0->SetHiddenPrototype(true); - v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(); -#else - v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(context).ToLocalChecked(); -#endif -%} - -/* ----------------------------------------------------------------------------- - * 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") -%{ - SWIGV8_MAYBE_CHECK($jsparent_obj->Set(context, 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") -%{ - SWIGV8_OBJECT $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") -%{ - SWIGV8_MAYBE_CHECK($jsparent_obj->Set(context, 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, context); -%} - -/* ----------------------------------------------------------------------------- - * 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, context); -%} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg deleted file mode 100755 index 7b3c5547..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg +++ /dev/null @@ -1,124 +0,0 @@ -/* - 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 SWIGV8_VALUE -SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) -{ - SWIGV8_HANDLESCOPE_ESC(); - - v8::Local vals = SWIGV8_ARRAY_NEW(0); - - SWIGV8_ARRAY_SET(vals, 0, SWIG_From(double)(Real(c))); - SWIGV8_ARRAY_SET(vals, 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) (SWIGV8_VALUE o, Type* val) -{ - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { - SWIGV8_ARRAY array = SWIGV8_ARRAY::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)(SWIGV8_ARRAY_GET(array, 0), &re); - if (!SWIG_IsOK(res)) { - return SWIG_TypeError; - } - - res = SWIG_AsVal(double)(SWIGV8_ARRAY_GET(array, 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) (SWIGV8_VALUE o, Type* val) -{ - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { - SWIGV8_ARRAY array = SWIGV8_ARRAY::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)(SWIGV8_ARRAY_GET(array, 0), &re); - if (!SWIG_IsOK(res)) { - return SWIG_TypeError; - } - - res = SWIG_AsVal(double)(SWIGV8_ARRAY_GET(array, 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/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg deleted file mode 100755 index 4778bf03..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg deleted file mode 100755 index ea303fa3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg +++ /dev/null @@ -1,87 +0,0 @@ -%insert(runtime) %{ - -typedef v8::FunctionCallback SwigV8FunctionCallback; -typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; -typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; -typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; - -/** - * Creates a class template for a class with specified initialization function. - */ -SWIGRUNTIME SWIGV8_FUNCTION_TEMPLATE SWIGV8_CreateClassTemplate(const char* symbol) { - SWIGV8_HANDLESCOPE_ESC(); - - v8::Local class_templ = SWIGV8_FUNCTEMPLATE_NEW_VOID(); - class_templ->SetClassName(SWIGV8_SYMBOL_NEW(symbol)); - - SWIGV8_OBJECT_TEMPLATE inst_templ = class_templ->InstanceTemplate(); - inst_templ->SetInternalFieldCount(1); - - SWIGV8_OBJECT_TEMPLATE equals_templ = class_templ->PrototypeTemplate(); - equals_templ->Set(SWIGV8_SYMBOL_NEW("equals"), SWIGV8_FUNCTEMPLATE_NEW(_SWIGV8_wrap_equals)); - - SWIGV8_OBJECT_TEMPLATE 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(SWIGV8_FUNCTION_TEMPLATE class_templ, const char* symbol, - SwigV8FunctionCallback _func) { - SWIGV8_OBJECT_TEMPLATE 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(SWIGV8_FUNCTION_TEMPLATE class_templ, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { - SWIGV8_OBJECT_TEMPLATE 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(SWIGV8_OBJECT obj, const char* symbol, - const SwigV8FunctionCallback& _func, v8::Local context) { - SWIGV8_MAYBE_CHECK(obj->Set(context, SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction(context).ToLocalChecked())); -} - -/** - * Registers a class method with given name for a given object. - */ -SWIGRUNTIME void SWIGV8_AddStaticVariable(SWIGV8_OBJECT obj, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter, - v8::Local context) { - SWIGV8_MAYBE_CHECK(obj->SetAccessor(context, SWIGV8_SYMBOL_NEW(symbol), getter, setter)); -} - -SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) -{ - char buffer[256]; - char msg[512]; - int res; - - 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; - } - - 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/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg deleted file mode 100755 index 3bf8c416..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg +++ /dev/null @@ -1,126 +0,0 @@ -%insert(header) %{ -#include -%} - -%insert(init) %{ - -SWIGRUNTIME void -SWIG_V8_SetModule(v8::Local context, swig_module_info *swig_module) { - v8::Local global_obj = context->Global(); - v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); - assert(!mod.IsEmpty()); - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); - global_obj->SetPrivate(context, privateKey, mod); -} - -SWIGRUNTIME swig_module_info * -SWIG_V8_GetModule(v8::Local context) { - v8::Local global_obj = context->Global(); - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); - v8::Local moduleinfo; - if (!global_obj->GetPrivate(context, privateKey).ToLocal(&moduleinfo)) - return 0; - - 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) -#define SWIG_INIT_CLIENT_DATA_TYPE v8::Local - -%} - -%insert(init) "swiginit.swg" - -// Open the initializer function definition here - -%fragment ("js_initializer_define", "templates") %{ -#define SWIGV8_INIT $jsname_initialize -%} - -%insert(init) %{ -#if !defined(NODE_MODULE_VERSION) || (NODE_MODULE_VERSION < 12) -// Note: 'extern "C"'' disables name mangling which makes it easier to load the symbol manually -extern "C" void SWIGV8_INIT (SWIGV8_OBJECT exports_obj) -#elif (NODE_MODULE_VERSION < 64) -void SWIGV8_INIT (SWIGV8_OBJECT exports_obj, SWIGV8_VALUE /*module*/, void*) -#else -void SWIGV8_INIT (SWIGV8_OBJECT exports_obj, SWIGV8_VALUE /*module*/, v8::Local context, void*) -#endif -{ -#if !defined(NODE_MODULE_VERSION) || NODE_MODULE_VERSION < 64 - v8::Local context = SWIGV8_CURRENT_CONTEXT(); -#endif - - SWIG_InitializeModule(context); -%} - - -/* ----------------------------------------------------------------------------- - * 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) -#if (NODE_MODULE_VERSION < 64) -NODE_MODULE($jsname, $jsname_initialize) -#else -NODE_MODULE_CONTEXT_AWARE($jsname, $jsname_initialize) -#endif -#endif -%} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg deleted file mode 100755 index c3c11839..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg +++ /dev/null @@ -1,40 +0,0 @@ -#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/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg deleted file mode 100755 index 8ed571df..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg +++ /dev/null @@ -1,203 +0,0 @@ -/* ------------------------------------------------------------ - * Primitive Types - * ------------------------------------------------------------ */ - -/* boolean */ - -%fragment(SWIG_From_frag(bool),"header") { -SWIGINTERNINLINE -SWIGV8_VALUE -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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(int)(int value) -{ - return SWIGV8_INT32_NEW(value); -} -} - -%fragment(SWIG_AsVal_frag(int),"header") { -SWIGINTERN -int SWIG_AsVal_dec(int)(SWIGV8_VALUE 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 -SWIGV8_VALUE 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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(unsigned long)(unsigned long value) -{ - return value <= UINT32_MAX ? (SWIGV8_VALUE)SWIGV8_INTEGER_NEW_UNS(value) : (SWIGV8_VALUE)SWIGV8_NUMBER_NEW(static_cast(value)); -} -} - -%fragment(SWIG_AsVal_frag(unsigned long),"header", - fragment="SWIG_CanCastAsInteger") { -SWIGINTERN -int SWIG_AsVal_dec(unsigned long)(SWIGV8_VALUE 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 -SWIGV8_VALUE 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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(unsigned long long)(unsigned long long value) -{ - return value <= UINT32_MAX ? (SWIGV8_VALUE)SWIGV8_INTEGER_NEW_UNS(value) : (SWIGV8_VALUE)SWIGV8_NUMBER_NEW(static_cast(value)); -} -%#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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(double) (double val) -{ - return SWIGV8_NUMBER_NEW(val); -} -} - -%fragment(SWIG_AsVal_frag(double),"header") { -SWIGINTERN -int SWIG_AsVal_dec(double)(SWIGV8_VALUE obj, double *val) -{ - if(!obj->IsNumber()) { - return SWIG_TypeError; - } - if(val) *val = SWIGV8_NUMBER_VALUE(obj); - - return SWIG_OK; -} -} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg deleted file mode 100755 index f7627085..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg +++ /dev/null @@ -1,487 +0,0 @@ -/* --------------------------------------------------------------------------- - * These typedefs and defines are used to deal with v8 API changes - * - * Useful table of versions: https://nodejs.org/en/download/releases/ - * ---------------------------------------------------------------------------*/ - -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_STRING_NEW2(cstr, len) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::String::kNormalString, len) -#else -#define SWIGV8_STRING_NEW2(cstr, len) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::NewStringType::kNormal, len)).ToLocalChecked() -#endif - -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 - -#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) - -#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) - -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_STRING_NEW(str) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::String::kNormalString) -#define SWIGV8_SYMBOL_NEW(sym) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::String::kNormalString) -#else -#define SWIGV8_STRING_NEW(str) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::NewStringType::kNormal)).ToLocalChecked() -#define SWIGV8_SYMBOL_NEW(sym) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::NewStringType::kNormal)).ToLocalChecked() -#endif - -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_MAYBE_CHECK(maybe) maybe.FromJust() -#else -#define SWIGV8_MAYBE_CHECK(maybe) maybe.Check() -#endif - -#define SWIGV8_ARRAY_NEW(size) v8::Array::New(v8::Isolate::GetCurrent(), size) -#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_ARRAY v8::Local -#define SWIGV8_FUNCTION_TEMPLATE v8::Local -#define SWIGV8_OBJECT v8::Local -#define SWIGV8_OBJECT_TEMPLATE v8::Local -#define SWIGV8_VALUE v8::Local -#define SWIGV8_NULL() v8::Null(v8::Isolate::GetCurrent()) -#define SWIGV8_ARRAY_GET(array, index) (array)->Get(SWIGV8_CURRENT_CONTEXT(), index).ToLocalChecked() -#define SWIGV8_ARRAY_SET(array, index, value) SWIGV8_MAYBE_CHECK((array)->Set(SWIGV8_CURRENT_CONTEXT(), index, value)) - -#define SWIGV8_SET_CLASS_TEMPL(class_templ, class) class_templ.Reset(v8::Isolate::GetCurrent(), class); - -#if SWIG_V8_VERSION < 0x0608 -#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_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(v8::Isolate::GetCurrent(), buffer, len) -#define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length(v8::Isolate::GetCurrent()) -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() -#else -#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(v8::Isolate::GetCurrent()) -#endif -#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))); -} - -SWIGINTERN void SWIG_V8_Raise(SWIGV8_VALUE obj, const char *msg) { - SWIGV8_THROW_EXCEPTION(v8::Exception::Error(SWIGV8_TO_STRING(obj))); -} - - -/* - 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); - } - } - SWIGV8_VALUE 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() { - handle.ClearWeak(); - handle.Reset(); - - 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; - - void (*dtor) (const v8::WeakCallbackInfo &data); -}; - -SWIGRUNTIME v8::Persistent SWIGV8_SWIGTYPE_Proxy_class_templ; - -SWIGRUNTIME int SWIG_V8_ConvertInstancePtr(SWIGV8_OBJECT objRef, void **ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE(); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - - SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); - - if(cdata == NULL) { - return SWIG_ERROR; - } - if(info && 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; - } - int newmemory = 0; - *ptr = SWIG_TypeCast(tc, cdata->swigCObject, &newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } else { - *ptr = cdata->swigCObject; - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !cdata->swigCMemOwn) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (flags & SWIG_POINTER_DISOWN) { - cdata->swigCMemOwn = false; - } - if (flags & SWIG_POINTER_CLEAR) { - cdata->swigCObject = 0; - } - } - return SWIG_OK; -} - - -SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - delete proxy; -} - -SWIGRUNTIME int SWIG_V8_GetInstancePtr(SWIGV8_VALUE valRef, void **ptr) { - if(!valRef->IsObject()) { - return SWIG_TypeError; - } - SWIGV8_OBJECT objRef = SWIGV8_OBJECT::Cast(valRef); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - - SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); - - if(cdata == NULL) { - return SWIG_ERROR; - } - - *ptr = cdata->swigCObject; - - return SWIG_OK; -} - -SWIGRUNTIME void SWIGV8_SetPrivateData(SWIGV8_OBJECT 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; - - obj->SetAlignedPointerInInternalField(0, cdata); - - cdata->handle.Reset(v8::Isolate::GetCurrent(), obj); - - 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); - } - -#if (SWIG_V8_VERSION < 0x0704) - cdata->handle.MarkIndependent(); -// Looks like future versions do not require that anymore: -// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 -#endif -} - -SWIGRUNTIME int SWIG_V8_ConvertPtr(SWIGV8_VALUE 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; - } - SWIGV8_OBJECT objRef = SWIGV8_OBJECT::Cast(valRef); - return SWIG_V8_ConvertInstancePtr(objRef, ptr, info, flags); -} - -SWIGRUNTIME SWIGV8_VALUE SWIG_V8_NewPointerObj(void *ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE_ESC(); - - SWIGV8_FUNCTION_TEMPLATE class_templ; - - if (ptr == NULL) { - v8::Local result = SWIGV8_NULL(); - SWIGV8_ESCAPE(result); - } - - 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); - } - - v8::Local result = class_templ->InstanceTemplate()->NewInstance(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked(); - - 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(); - - SWIGV8_VALUE 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(); - - SWIGV8_VALUE 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(SWIGV8_VALUE valRef) { - SWIGV8_HANDLESCOPE(); - - SWIGV8_OBJECT objRef = SWIGV8_TO_OBJECT(valRef); - if(objRef->InternalFieldCount() < 1) return false; - 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; - return (flag->IsBoolean() && SWIGV8_BOOLEAN_VALUE(flag)); -} - -SWIGRUNTIME -swig_type_info *SwigV8Packed_UnpackData(SWIGV8_VALUE valRef, void *ptr, size_t size) { - if (SwigV8Packed_Check(valRef)) { - SWIGV8_HANDLESCOPE(); - - SwigV8PackedData *sobj; - - SWIGV8_OBJECT objRef = SWIGV8_TO_OBJECT(valRef); - - sobj = static_cast(objRef->GetAlignedPointerFromInternalField(0)); - if (sobj == NULL || sobj->size != size) return 0; - memcpy(ptr, sobj->data, size); - return sobj->type; - } else { - return 0; - } -} - -SWIGRUNTIME -int SWIGV8_ConvertPacked(SWIGV8_VALUE 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; -} - -SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo &data) { - SwigV8PackedData *cdata = data.GetParameter(); - delete cdata; -} - -SWIGRUNTIME -SWIGV8_VALUE 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(); - - 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)); - - obj->SetAlignedPointerInInternalField(0, cdata); - - cdata->handle.Reset(v8::Isolate::GetCurrent(), obj); - - cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter); - -#if (SWIG_V8_VERSION < 0x0704) - cdata->handle.MarkIndependent(); -// Looks like future versions do not require that anymore: -// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 -#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 - -SWIGV8_VALUE SWIGV8_AppendOutput(SWIGV8_VALUE result, SWIGV8_VALUE obj) { - SWIGV8_HANDLESCOPE_ESC(); - - if (result->IsUndefined()) { - result = SWIGV8_ARRAY_NEW(0); - } else if (!result->IsArray()) { - SWIGV8_ARRAY tmparr = SWIGV8_ARRAY_NEW(0); - SWIGV8_ARRAY_SET(tmparr, 0, result); - result = tmparr; - } - - SWIGV8_ARRAY arr = SWIGV8_ARRAY::Cast(result); - SWIGV8_ARRAY_SET(arr, arr->Length(), obj); - SWIGV8_ESCAPE(arr); -} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg deleted file mode 100755 index 4e93fc4c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg +++ /dev/null @@ -1,47 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 doesn't support anything that -// old so SWIG generated code can rely on these. - -// 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 - -#undef SWIG_V8_VERSION -#define SWIG_V8_VERSION ((V8_MAJOR_VERSION / 10) * 4096 + \ - (V8_MAJOR_VERSION % 10) * 256 + \ - (V8_MINOR_VERSION / 10) * 16 + \ - (V8_MINOR_VERSION % 10)) - -#include -#include -#include -#include -%} - -%insert(runtime) "swigrun.swg"; /* SWIG API */ -%insert(runtime) "swigerrors.swg"; /* SWIG errors */ - -%insert(runtime) "javascriptrun.swg" - diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg deleted file mode 100755 index 8dc2d945..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg +++ /dev/null @@ -1,59 +0,0 @@ - -/* ------------------------------------------------------------ - * utility methods for char strings - * ------------------------------------------------------------ */ -%fragment("SWIG_AsCharPtrAndSize", "header", fragment="SWIG_pchar_descriptor") { -SWIGINTERN int -SWIG_AsCharPtrAndSize(SWIGV8_VALUE valRef, char** cptr, size_t* psize, int *alloc) -{ - if(valRef->IsString()) { - v8::Local js_str = v8::Local::Cast(valRef); - - size_t len = SWIGV8_UTF8_LENGTH(js_str) + 1; - char* cstr = (char*) %new_array(len, char); - 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()) { - SWIGV8_OBJECT obj = SWIGV8_OBJECT::Cast(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 SWIGV8_VALUE -SWIG_FromCharPtrAndSize(const char* carray, size_t size) -{ - if (carray) { - if (size > INT_MAX) { - // TODO: handle extra long strings - return SWIGV8_UNDEFINED(); - } else { - v8::Local js_str = SWIGV8_STRING_NEW2(carray, size); - return js_str; - } - } else { - return SWIGV8_UNDEFINED(); - } -} -} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg b/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg deleted file mode 100755 index c4d341be..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg +++ /dev/null @@ -1,43 +0,0 @@ -/* ------------------------------------------------------------ - * 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 SWIGV8_VALUE -#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(obj, type) - -/* Include the unified typemap library */ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i deleted file mode 100755 index a252e0aa..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i deleted file mode 100755 index 3b8b0936..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i deleted file mode 100755 index b72c50b9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i +++ /dev/null @@ -1,35 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i deleted file mode 100755 index 586ac5c6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i +++ /dev/null @@ -1,99 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i b/mac/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i deleted file mode 100755 index e88f0019..00000000 --- a/mac/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i +++ /dev/null @@ -1,148 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/mac/bin/swig/share/swig/4.1.0/linkruntime.c b/mac/bin/swig/share/swig/4.1.0/linkruntime.c old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/lua/_std_common.i b/mac/bin/swig/share/swig/4.1.0/lua/_std_common.i deleted file mode 100755 index 567e68b7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/_std_common.i +++ /dev/null @@ -1,93 +0,0 @@ -/* ----------------------------------------------------------------------------- - * _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/mac/bin/swig/share/swig/4.1.0/lua/argcargv.i b/mac/bin/swig/share/swig/4.1.0/lua/argcargv.i deleted file mode 100755 index 94cc8ed4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/argcargv.i +++ /dev/null @@ -1,57 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - - Use it as follows: - - %apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) } - extern int mainApp(size_t argc, const char **argv); - - then from lua: - - args = { "arg0", "arg1" } - mainApp(args) - - * ------------------------------------------------------------ */ - -%{ -SWIGINTERN int SWIG_argv_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; -} -%} - -%typemap(in) (int ARGC, char **ARGV) { - if (lua_istable(L,$input)) { - int i, size = SWIG_argv_size(L,$input); - $1 = ($1_ltype) size; - $2 = (char **) malloc((size+1)*sizeof(char *)); - for (i = 0; i < size; i++) { - lua_rawgeti(L,$input,i+1); - if (lua_isnil(L,-1)) - break; - $2[i] = (char *)lua_tostring(L, -1); - lua_pop(L,1); - } - $2[i]=NULL; - } else { - $1 = 0; $2 = 0; - lua_pushstring(L,"Expecting argv array"); - lua_error(L); - } -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - $1 = lua_istable(L,$input); -} - -%typemap(freearg) (int ARGC, char **ARGV) { - free((char *) $2); -} diff --git a/mac/bin/swig/share/swig/4.1.0/lua/carrays.i b/mac/bin/swig/share/swig/4.1.0/lua/carrays.i deleted file mode 100755 index 1bc45d81..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/carrays.i +++ /dev/null @@ -1,8 +0,0 @@ -/* 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/mac/bin/swig/share/swig/4.1.0/lua/factory.i b/mac/bin/swig/share/swig/4.1.0/lua/factory.i deleted file mode 100755 index 7e605c5d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/factory.i +++ /dev/null @@ -1,23 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/lua/lua.swg b/mac/bin/swig/share/swig/4.1.0/lua/lua.swg deleted file mode 100755 index 12c635d7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/lua.swg +++ /dev/null @@ -1,236 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 it's 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 it's 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),$&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 -// it's 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/mac/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i b/mac/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i deleted file mode 100755 index 81fa54bd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i +++ /dev/null @@ -1,124 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 it's 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/mac/bin/swig/share/swig/4.1.0/lua/luakw.swg b/mac/bin/swig/share/swig/4.1.0/lua/luakw.swg deleted file mode 100755 index 394e4005..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/luakw.swg +++ /dev/null @@ -1,67 +0,0 @@ -/* - Warnings for Lua keywords, built-in names and bad names. -*/ - -#define LUAKW(x) %keywordwarn("'" `x` "' is a Lua keyword", 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/mac/bin/swig/share/swig/4.1.0/lua/luarun.swg b/mac/bin/swig/share/swig/4.1.0/lua/luarun.swg deleted file mode 100755 index f47fd4fa..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/luarun.swg +++ /dev/null @@ -1,1950 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) \ - do { if (!(expr)) { SWIG_Lua_pusherrstring(L, (char *) msg); goto fail; } } while (0) - - -/* 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 it's 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) */ - swig_lua_userdata* userData; - assert(lua_isuserdata(L,1)); /* just in case */ - userData = (swig_lua_userdata*)lua_touserdata(L,1); /* get the userdata address */ - - lua_pushfstring(L, "", userData->type->str, userData->ptr); - 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 its bases (recursively) for first instance of something that is - * not equal to SWIG_Lua_resolve_metamethod. (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 skipping searching metamethod in the given class and immediately going to searching in bases. skip_check - * is not carried 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 metamethods 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) -{ - int ret = SWIG_ERROR; - 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; - } - if (lua_islightuserdata(L,index)) - { - *ptr=lua_touserdata(L,index); - 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_RELEASE) == SWIG_POINTER_RELEASE) && !usr->own) - { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - if (flags & SWIG_POINTER_DISOWN) /* must disown the object */ - { - usr->own = 0; - } - if (!type) /* special cast void*, no casting fn */ - { - *ptr=usr->ptr; - ret = SWIG_OK; - } - else - { - cast=SWIG_TypeCheck(usr->type->name,type); /* performs normal type checking */ - if (cast) - { - int newmemory = 0; - *ptr=SWIG_TypeCast(cast,usr->ptr,&newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - ret = SWIG_OK; - } - } - if ((ret == SWIG_OK) && (flags & SWIG_POINTER_CLEAR)) - { - usr->ptr = 0; - } - } - return ret; -} - -SWIGRUNTIME void* SWIG_Lua_MustGetPtr(lua_State *L,int index,swig_type_info *type,int flags, - int argnum,const char *func_name){ - void *result = 0; - 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/mac/bin/swig/share/swig/4.1.0/lua/luaruntime.swg b/mac/bin/swig/share/swig/4.1.0/lua/luaruntime.swg deleted file mode 100755 index 399bb640..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/luaruntime.swg +++ /dev/null @@ -1,104 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg b/mac/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg deleted file mode 100755 index 7d23917e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg +++ /dev/null @@ -1,418 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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&($*1_ltype temp) -%{ temp=($*1_ltype)lua_tonumber(L,$input); $1=&temp;%} - -%typemap(in,checkfn="lua_isnumber") const unsigned int&($*1_ltype temp) -%{SWIG_contract_assert((lua_tonumber(L,$input)>=0),"number must not be negative"); -temp=($*1_ltype)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",fragment="") SWIGTYPE&& (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) %{ - res = SWIG_ConvertPtr(L, $input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type '$1_type' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $descriptor); - } - } - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -%} - -// 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($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($1),$descriptor))) - SWIG_fail_ptr("$symname",$argnum,$descriptor); -%} - -%typemap(out) SWIGTYPE (CLASS::*) -%{ - SWIG_NewMemberObj(L,(void*)(&$1),sizeof($1),$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 it's 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 it's 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 it's 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/mac/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i deleted file mode 100755 index b3b71d0f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, checkfn="SWIG_isptrtype", noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(L, $input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $descriptor(TYPE *)); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - SWIG_NewPointerObj(L, $1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); SWIG_arg++; -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(L, $input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/lua/std_common.i b/mac/bin/swig/share/swig/4.1.0/lua/std_common.i deleted file mode 100755 index cee11e8c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/mac/bin/swig/share/swig/4.1.0/lua/std_deque.i b/mac/bin/swig/share/swig/4.1.0/lua/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/lua/std_except.i b/mac/bin/swig/share/swig/4.1.0/lua/std_except.i deleted file mode 100755 index 34ab6a1a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/std_except.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/lua/std_map.i b/mac/bin/swig/share/swig/4.1.0/lua/std_map.i deleted file mode 100755 index 773b6d0c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/std_map.i +++ /dev/null @@ -1,66 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/lua/std_pair.i b/mac/bin/swig/share/swig/4.1.0/lua/std_pair.i deleted file mode 100755 index 410da922..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/std_pair.i +++ /dev/null @@ -1,26 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/lua/std_string.i b/mac/bin/swig/share/swig/4.1.0/lua/std_string.i deleted file mode 100755 index b95a8a4a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/std_string.i +++ /dev/null @@ -1,125 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i deleted file mode 100755 index ad08f3b0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, checkfn="SWIG_isptrtype", noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(L, $input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $descriptor(TYPE *)); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - SWIG_NewPointerObj(L, $1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); SWIG_arg++; -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(L, $input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/lua/std_vector.i b/mac/bin/swig/share/swig/4.1.0/lua/std_vector.i deleted file mode 100755 index 9eb85e9e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/std_vector.i +++ /dev/null @@ -1,140 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/lua/stl.i b/mac/bin/swig/share/swig/4.1.0/lua/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/lua/swigmove.i b/mac/bin/swig/share/swig/4.1.0/lua/swigmove.i deleted file mode 100755 index d130e797..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/swigmove.i +++ /dev/null @@ -1,18 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, checkfn="lua_isuserdata", noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(L, $input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type '$1_type' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $&1_descriptor); - } - } - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/mac/bin/swig/share/swig/4.1.0/lua/typemaps.i b/mac/bin/swig/share/swig/4.1.0/lua/typemaps.i deleted file mode 100755 index 68f6f6cc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/typemaps.i +++ /dev/null @@ -1,554 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 it's 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 don't 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); - -*/ - -%{ -#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/mac/bin/swig/share/swig/4.1.0/lua/wchar.i b/mac/bin/swig/share/swig/4.1.0/lua/wchar.i deleted file mode 100755 index 9f3be6fc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/lua/wchar.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/math.i b/mac/bin/swig/share/swig/4.1.0/math.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/mzscheme/Makefile b/mac/bin/swig/share/swig/4.1.0/mzscheme/Makefile deleted file mode 100755 index fba7fd5d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/Makefile +++ /dev/null @@ -1,3 +0,0 @@ - -co: - co RCS/*.i* RCS/*.swg* diff --git a/mac/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg b/mac/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg deleted file mode 100755 index 57d04081..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg +++ /dev/null @@ -1,521 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) \ - do { \ - 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); \ - } \ - } while (0) - -/* 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; - int own; -}; - -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 && proxy->own) { - ((Scheme_Prim *)proxy->type->clientdata)(1, (Scheme_Object **)&proxy); - } - } -} - -static Scheme_Object * -SWIG_MzScheme_NewPointerObj(void *ptr, swig_type_info *type, int owner) { - if (ptr) { - 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; - new_proxy->own = owner & SWIG_POINTER_OWN; - if (new_proxy->own) { - scheme_add_finalizer(new_proxy, mz_free_swig, NULL); - } - return (Scheme_Object *) new_proxy; - } else { - return scheme_make_null(); - } -} - -static int -SWIG_MzScheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type, int flags) { - swig_cast_info *cast; - int ret = SWIG_ERROR; - - 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 ((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE && !proxy->own) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - - 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 */ - ret = SWIG_OK; - } else { - return SWIG_ERROR; - } - } else { - *result = proxy->object; - ret = SWIG_OK; - } - - if (flags & SWIG_POINTER_DISOWN) { - scheme_subtract_finalizer(proxy, mz_free_swig, NULL); - proxy->own = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - proxy->object = 0; - } - } - return ret; -} - -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/mac/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg b/mac/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg deleted file mode 100755 index f45c8725..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg +++ /dev/null @@ -1,56 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i deleted file mode 100755 index c61bc8b2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'"); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_common.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/std_common.i deleted file mode 100755 index a83e2731..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_common.i +++ /dev/null @@ -1,23 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_map.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/std_map.i deleted file mode 100755 index 1d3eec24..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_map.i +++ /dev/null @@ -1,1388 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i deleted file mode 100755 index 75f6751c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i +++ /dev/null @@ -1,874 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/mzscheme/std_string.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/std_string.i deleted file mode 100755 index 70673ead..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_string.i +++ /dev/null @@ -1,64 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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()); - } - - %typemap(throws) string { - scheme_signal_error("%s: %s", FUNC_NAME, $1.c_str()); - } - - %typemap(throws) const string & { - scheme_signal_error("%s: %s", FUNC_NAME, $1.c_str()); - } -} - - diff --git a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i deleted file mode 100755 index 53cf4669..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'"); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i deleted file mode 100755 index 0ef5edb1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i +++ /dev/null @@ -1,451 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i deleted file mode 100755 index bbfcdcb1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type '$1_type'"); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (argp == NULL) scheme_signal_error(FUNC_NAME ": swig-type-error (null reference)"); - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/mac/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i b/mac/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i deleted file mode 100755 index 6c31aea5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i +++ /dev/null @@ -1,399 +0,0 @@ -/* ----------------------------------------------------------------------------- - * typemaps.i - * ----------------------------------------------------------------------------- */ - -#define %set_output(obj) $result = obj -#define %set_varoutput(obj) $result = obj -#define %argument_fail(code, type, name, argn) scheme_wrong_type(FUNC_NAME, type, argn, argc, argv) -#define %as_voidptr(ptr) (void*)(ptr) - - -/* 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 & { - $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum, 0); - if ($1 == NULL) scheme_signal_error(FUNC_NAME ": swig-type-error (null reference)"); -} - -%typemap(in, noblock=1, fragment="") SWIGTYPE && (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) { - res = SWIG_ConvertPtr($input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type '$1_type'"); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (argp == NULL) scheme_signal_error(FUNC_NAME ": swig-type-error (null reference)"); - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -} - -%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); - $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); - $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); - -%typemap(throws) char * { - scheme_signal_error("%s: %s", FUNC_NAME, $1); -} - -/* 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/mac/bin/swig/share/swig/4.1.0/ocaml/carray.i b/mac/bin/swig/share/swig/4.1.0/ocaml/carray.i deleted file mode 100755 index 4378f733..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/carray.i +++ /dev/null @@ -1,131 +0,0 @@ -%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; - const 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/mac/bin/swig/share/swig/4.1.0/ocaml/class.swg b/mac/bin/swig/share/swig/4.1.0/ocaml/class.swg deleted file mode 100755 index eb369cd7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/class.swg +++ /dev/null @@ -1,67 +0,0 @@ -(*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/mac/bin/swig/share/swig/4.1.0/ocaml/cstring.i b/mac/bin/swig/share/swig/4.1.0/ocaml/cstring.i deleted file mode 100755 index f1190ad5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/cstring.i +++ /dev/null @@ -1,268 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ocaml/director.swg b/mac/bin/swig/share/swig/4.1.0/ocaml/director.swg deleted file mode 100755 index eb91aaf4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/director.swg +++ /dev/null @@ -1,101 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ocaml/extra-install.list b/mac/bin/swig/share/swig/4.1.0/ocaml/extra-install.list deleted file mode 100755 index 16486eb2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/extra-install.list +++ /dev/null @@ -1,4 +0,0 @@ -# see top-level Makefile.in -swigp4.ml -swig.mli -swig.ml diff --git a/mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.i b/mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.i deleted file mode 100755 index cc26d185..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.i +++ /dev/null @@ -1,50 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ocaml.i - * - * SWIG Configuration File for Ocaml - * ----------------------------------------------------------------------------- */ - -/* Insert common stuff */ -%insert(runtime) "swigrun.swg" - -/* Include headers */ -%insert(runtime) "ocamlrundec.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) "ocamlrun.swg" -/*#endif*/ - -%insert(classtemplate) "class.swg" - -/* 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/mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg b/mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg deleted file mode 100755 index 703b7e44..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg +++ /dev/null @@ -1,320 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ocaml.swg - * - * 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, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ - $1 = ($ltype) caml_ptr_val($input,$1_descriptor); - rvrdeleter.reset($1); -%} - -%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 & { - const 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 && { - const 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)) ; -} - -%typemap(varout) SWIGTYPE { - $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)&$1, $&1_descriptor); -} - -#ifdef __cplusplus - -%typemap(out) SWIGTYPE { - $&1_ltype temp = new $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(varout) SWIGTYPE * { - $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)$1, $1_descriptor); -} - -%typemap(directorin) SWIGTYPE { - $<ype temp = new $1_ltype(SWIG_STD_MOVE($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); -} -/* 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(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/mac/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg b/mac/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg deleted file mode 100755 index 5e66085e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg +++ /dev/null @@ -1,72 +0,0 @@ -#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/mac/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg b/mac/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg deleted file mode 100755 index 53ad952f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg +++ /dev/null @@ -1,607 +0,0 @@ -/* -*-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(Bp_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); - const 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 const 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); - - const 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/mac/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg b/mac/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg deleted file mode 100755 index dde0b8e5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg +++ /dev/null @@ -1,212 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ocamlrundec.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) do { if(!(expr)) {SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, msg);} } while (0) - - 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/mac/bin/swig/share/swig/4.1.0/ocaml/preamble.swg b/mac/bin/swig/share/swig/4.1.0/ocaml/preamble.swg deleted file mode 100755 index 39374ce4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/preamble.swg +++ /dev/null @@ -1,17 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/ocaml/std_common.i b/mac/bin/swig/share/swig/4.1.0/ocaml/std_common.i deleted file mode 100755 index 7e64607d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/std_common.i +++ /dev/null @@ -1,23 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ocaml/std_complex.i b/mac/bin/swig/share/swig/4.1.0/ocaml/std_complex.i deleted file mode 100755 index 5192261a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/std_complex.i +++ /dev/null @@ -1,65 +0,0 @@ -// -*- 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/mac/bin/swig/share/swig/4.1.0/ocaml/std_deque.i b/mac/bin/swig/share/swig/4.1.0/ocaml/std_deque.i deleted file mode 100755 index 5b38962b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/std_deque.i +++ /dev/null @@ -1,28 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ocaml/std_except.i b/mac/bin/swig/share/swig/4.1.0/ocaml/std_except.i deleted file mode 100755 index 74ddcb51..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/std_except.i +++ /dev/null @@ -1,23 +0,0 @@ -%{ -#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/mac/bin/swig/share/swig/4.1.0/ocaml/std_list.i b/mac/bin/swig/share/swig/4.1.0/ocaml/std_list.i deleted file mode 100755 index e0524aa4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/std_list.i +++ /dev/null @@ -1,217 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ocaml/std_map.i b/mac/bin/swig/share/swig/4.1.0/ocaml/std_map.i deleted file mode 100755 index 3f197baa..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/std_map.i +++ /dev/null @@ -1,79 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ocaml/std_pair.i b/mac/bin/swig/share/swig/4.1.0/ocaml/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ocaml/std_string.i b/mac/bin/swig/share/swig/4.1.0/ocaml/std_string.i deleted file mode 100755 index 2564cfb3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/std_string.i +++ /dev/null @@ -1,136 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(varout) 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(varout) string * { - $result = caml_val_string_len((*$1).c_str(),(*$1).size()); -} - -%typemap(typecheck) string, const string & = char *; - -%typemap(throws) string, const string & "SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1.c_str());" - -} - -#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/mac/bin/swig/share/swig/4.1.0/ocaml/std_vector.i b/mac/bin/swig/share/swig/4.1.0/ocaml/std_vector.i deleted file mode 100755 index 891d038c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/std_vector.i +++ /dev/null @@ -1,98 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ocaml/stl.i b/mac/bin/swig/share/swig/4.1.0/ocaml/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/ocaml/swig.ml b/mac/bin/swig/share/swig/4.1.0/ocaml/swig.ml deleted file mode 100755 index 58a93347..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/swig.ml +++ /dev/null @@ -1,166 +0,0 @@ -(* -*- 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/mac/bin/swig/share/swig/4.1.0/ocaml/swig.mli b/mac/bin/swig/share/swig/4.1.0/ocaml/swig.mli deleted file mode 100755 index c5ffadb1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/swig.mli +++ /dev/null @@ -1,62 +0,0 @@ -(* -*- 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/mac/bin/swig/share/swig/4.1.0/ocaml/swigmove.i b/mac/bin/swig/share/swig/4.1.0/ocaml/swigmove.i deleted file mode 100755 index 32f9903b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/swigmove.i +++ /dev/null @@ -1,11 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0) { - argp1 = ($&1_ltype) caml_ptr_val($input,$&1_descriptor); - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/mac/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml b/mac/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml deleted file mode 100755 index 2f6074a9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml +++ /dev/null @@ -1,135 +0,0 @@ -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/mac/bin/swig/share/swig/4.1.0/ocaml/typecheck.i b/mac/bin/swig/share/swig/4.1.0/ocaml/typecheck.i deleted file mode 100755 index 0c0a600a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/typecheck.i +++ /dev/null @@ -1,197 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ocaml/typemaps.i b/mac/bin/swig/share/swig/4.1.0/ocaml/typemaps.i deleted file mode 100755 index 39231e22..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/typemaps.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ---------------------------------------------------------------------------- - * typemaps.i - * - * These typemaps provide support for input/output arguments for C/C++ pointers - * and C++ references. -* ---------------------------------------------------------------------------- */ - -%define INPUT_OUTPUT_INOUT_TYPEMAPS(type, c_to_ocaml, ocaml_to_c) -%typemap(in) type *INPUT(type temp), type &INPUT(type temp) { - temp = (type)ocaml_to_c($input); - $1 = &temp; -} -%typemap(typecheck) type *INPUT = type; -%typemap(typecheck) type &INPUT = type; - -%typemap(in, numinputs=0) type *OUTPUT($*1_ltype temp), type &OUTPUT($*1_ltype temp) "$1 = &temp;" -%typemap(argout) type *OUTPUT, type &OUTPUT { - swig_result = caml_list_append(swig_result, c_to_ocaml(*$1)); -} -%typemap(in) type *INOUT = type *INPUT; -%typemap(in) type &INOUT = type &INPUT; - -%typemap(argout) type *INOUT = type *OUTPUT; -%typemap(argout) type &INOUT = type &OUTPUT; - -%typemap(typecheck) type *INOUT = type; -%typemap(typecheck) type &INOUT = type; -%enddef - -INPUT_OUTPUT_INOUT_TYPEMAPS(bool, caml_val_bool, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(int, caml_val_int, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(long, caml_val_long, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(short, caml_val_int, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(char, caml_val_char, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(signed char, caml_val_char, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(float, caml_val_float, caml_double_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(double, caml_val_double, caml_double_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned int, caml_val_uint, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long, caml_val_ulong, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned short, caml_val_ushort, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned char, caml_val_uchar, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(long long, caml_val_long, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long long, caml_val_ulong, caml_long_val); -#undef INPUT_OUTPUT_INOUT_TYPEMAPS diff --git a/mac/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg b/mac/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg deleted file mode 100755 index c3ba904a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg +++ /dev/null @@ -1,2 +0,0 @@ -SWIGEXT void SWIG_init() { - SWIG_InitializeModule(0); diff --git a/mac/bin/swig/share/swig/4.1.0/octave/argcargv.i b/mac/bin/swig/share/swig/4.1.0/octave/argcargv.i deleted file mode 100755 index 8d455e58..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/argcargv.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - if ($input.is_scalar_type()) { - $1 = 0; $2 = NULL; - %argument_fail(SWIG_TypeError, "'int ARGC, char **ARGV' is not a list", $symname, $argnum); - } - octave_value_list list = $input.list_value(); - int i, len = list.length(); - $1 = ($1_ltype) len; - $2 = (char **) malloc((len+1)*sizeof(char *)); - for (i = 0; i < len; i++) { - if (!list(i).is_string()) { - $1 = 0; - %argument_fail(SWIG_TypeError, "'int ARGC, char **ARGV' use a non-string", $symname, $argnum); - } - $2[i] = (char *)list(i).string_value().c_str(); - } - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - $1 = 0; - const octave_value& ov = $input; - if (!ov.is_scalar_type()) { - octave_value_list list = ov.list_value(); - int i, len = list.length(); - $1 = 1; - for (i = 0; i < len; i++) { - if (!list(i).is_string()) { - $1 = 0; - break; - } - } - } -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/mac/bin/swig/share/swig/4.1.0/octave/attribute.i b/mac/bin/swig/share/swig/4.1.0/octave/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i deleted file mode 100755 index 87c89b5f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i +++ /dev/null @@ -1,401 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/mac/bin/swig/share/swig/4.1.0/octave/carrays.i b/mac/bin/swig/share/swig/4.1.0/octave/carrays.i deleted file mode 100755 index 014de37f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/carrays.i +++ /dev/null @@ -1,5 +0,0 @@ -%define %array_class(TYPE,NAME) - %array_class_wrap(TYPE,NAME,__paren__,__paren_asgn__) -%enddef - -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/cdata.i b/mac/bin/swig/share/swig/4.1.0/octave/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/cmalloc.i b/mac/bin/swig/share/swig/4.1.0/octave/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/director.swg b/mac/bin/swig/share/swig/4.1.0/octave/director.swg deleted file mode 100755 index 5b9cd86e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/director.swg +++ /dev/null @@ -1,146 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) - -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/mac/bin/swig/share/swig/4.1.0/octave/exception.i b/mac/bin/swig/share/swig/4.1.0/octave/exception.i deleted file mode 100755 index 2f0f489a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/exception.i +++ /dev/null @@ -1,14 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/octave/extra-install.list b/mac/bin/swig/share/swig/4.1.0/octave/extra-install.list deleted file mode 100755 index 41ef9477..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/extra-install.list +++ /dev/null @@ -1,2 +0,0 @@ -# see top-level Makefile.in -octheaders.hpp diff --git a/mac/bin/swig/share/swig/4.1.0/octave/factory.i b/mac/bin/swig/share/swig/4.1.0/octave/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/implicit.i b/mac/bin/swig/share/swig/4.1.0/octave/implicit.i deleted file mode 100755 index 152c2b05..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/implicit.i +++ /dev/null @@ -1,7 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/octave/octave.swg b/mac/bin/swig/share/swig/4.1.0/octave/octave.swg deleted file mode 100755 index 872054d8..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octave.swg +++ /dev/null @@ -1,8 +0,0 @@ -%include -%include -%include -%include -%include -%include - -%define %docstring %feature("docstring") %enddef diff --git a/mac/bin/swig/share/swig/4.1.0/octave/octcomplex.swg b/mac/bin/swig/share/swig/4.1.0/octave/octcomplex.swg deleted file mode 100755 index 553c25a3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octcomplex.swg +++ /dev/null @@ -1,92 +0,0 @@ -/* - 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 - accessor 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.0f); - 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/mac/bin/swig/share/swig/4.1.0/octave/octcontainer.swg b/mac/bin/swig/share/swig/4.1.0/octave/octcontainer.swg deleted file mode 100755 index 394c90ba..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octcontainer.swg +++ /dev/null @@ -1,623 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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. - * ----------------------------------------------------------------------------- */ - -#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="") -{ - -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() 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)) - 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; - } - } -%#if SWIG_OCTAVE_PREREQ(6,0,0) - catch (octave::execution_exception& exec) { - } -%#endif - catch (std::exception& e) { -%#if SWIG_OCTAVE_PREREQ(6,0,0) - if (seq) // Know that octave is not in an error state -%#else - if (seq&&!error_state) -%#endif - 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/mac/bin/swig/share/swig/4.1.0/octave/octfragments.swg b/mac/bin/swig/share/swig/4.1.0/octave/octfragments.swg deleted file mode 100755 index 8b137891..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octfragments.swg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/mac/bin/swig/share/swig/4.1.0/octave/octheaders.hpp b/mac/bin/swig/share/swig/4.1.0/octave/octheaders.hpp deleted file mode 100755 index 26e5564d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octheaders.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// -// This header includes all C++ headers required for generated Octave wrapper code. -// Using a single header file allows pre-compilation of Octave headers, as follows: -// * Check out this header file: -// swig -octave -co octheaders.hpp -// * Pre-compile header file into octheaders.hpp.gch: -// g++ -c ... octheaders.hpp -// * Use pre-compiled header file: -// g++ -c -include octheaders.hpp ... -// - -#if !defined(SWIG_OCTAVE_OCTHEADERS_HPP) -#define SWIG_OCTAVE_OCTHEADERS_HPP - -// Required C++ headers -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Minimal headers to define Octave version -#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) - -// Required Octave headers -#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 - -#endif // !defined(SWIG_OCTAVE_OCTHEADERS_HPP) diff --git a/mac/bin/swig/share/swig/4.1.0/octave/octiterators.swg b/mac/bin/swig/share/swig/4.1.0/octave/octiterators.swg deleted file mode 100755 index e186c94a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octiterators.swg +++ /dev/null @@ -1,357 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/octave/octopers.swg b/mac/bin/swig/share/swig/4.1.0/octave/octopers.swg deleted file mode 100755 index 665b7033..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octopers.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg b/mac/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg deleted file mode 100755 index 1c9aa908..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg +++ /dev/null @@ -1,254 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/octave/octrun.swg b/mac/bin/swig/share/swig/4.1.0/octave/octrun.swg deleted file mode 100755 index 2973318c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octrun.swg +++ /dev/null @@ -1,1669 +0,0 @@ -#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 - -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; } - -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { - return execute(tw,nargout,args); - } -#endif -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave_value_list execute(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -#else - octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -#endif - 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; - - }; -#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 thisown; // 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), thisown(_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 (thisown) { - ++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; - try { - a = out.int_vector_value(); - } - catch (octave::execution_exception& oee) { - return dim_vector(1,1); - } -#else - Array a = out.int_vector_value(); - if (error_state) return dim_vector(1,1); -#endif - 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.thisown = 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; - int clear_pointer = 0; - - if (own) - *own = 0; - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !thisown) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (own) - *own = *own | thisown; - if (flags & SWIG_POINTER_DISOWN) { - thisown = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - clear_pointer = 1; - } - } - - if (!type && types.size()) { - if (vptr) { - *vptr = types[0].second.ptr; - if (clear_pointer) - types[0].second.ptr = 0; - } - return SWIG_OK; - } - for (unsigned int j = 0; j < types.size(); ++j) - if (type == types[j].first) { - if (vptr) { - *vptr = types[j].second.ptr; - if (clear_pointer) - types[j].second.ptr = 0; - } - 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; - } - if (clear_pointer) - types[j].second.ptr = 0; - } - res = SWIG_OK; - break; - } - return res; - } - - bool is_owned() const { - return thisown; - } - -#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; - } - -#if SWIG_OCTAVE_PREREQ(6,0,0) - virtual bool isstruct() const { -#else - virtual bool is_map() const { -#endif - 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(); - } - -#if SWIG_OCTAVE_PREREQ(4,4,0) - virtual bool isobject() const { -#else - virtual bool is_object() const { -#endif - 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, -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::mach_info::float_format fmt) { -#else - oct_mach_info::float_format fmt) { -#endif - 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) - { - // Ensure type_id() is set correctly - if (t_id == -1) { - t_id = octave_swig_ref::static_type_id(); - } - } - - ~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(); } - -#if SWIG_OCTAVE_PREREQ(6,0,0) - virtual bool isstruct() const - { return ptr->isstruct(); } -#else - virtual bool is_map() const - { return ptr->is_map(); } -#endif - - 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); } - -#if SWIG_OCTAVE_PREREQ(4,4,0) - virtual bool isobject() const - { return ptr->isobject(); } -#else - virtual bool is_object() const - { return ptr->is_object(); } -#endif - - 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, -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::mach_info::float_format fmt) -#else - oct_mach_info::float_format fmt) -#endif - { 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); } - -#if SWIG_OCTAVE_PREREQ(4,4,0) - static void set_type_id(int type_id) { t_id=type_id; } -#endif - - 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) - { - // Ensure type_id() is set correctly - if (t_id == -1) { - t_id = octave_swig_packed::static_type_id(); - } - } - - 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, -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::mach_info::float_format fmt) { -#else - oct_mach_info::float_format fmt) { -#endif - 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 - -#if SWIG_OCTAVE_PREREQ(4,4,0) - static void set_type_id(int type_id) { t_id=type_id; } -#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; - - if (ptr) { -#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)); - } - return octave_value(Matrix()); // null matrix -} - -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(6,0,0) - octave::interpreter *interp = octave::interpreter::the_interpreter (); - return interp->global_varval(name); -#else -#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 -#endif -} - -SWIGRUNTIME void SWIG_Octave_SetGlobalValue(std::string name, const octave_value& value) { -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::interpreter *interp = octave::interpreter::the_interpreter (); - interp->global_assign(name, value); -#elif 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_scope symscope = octave::interpreter::the_interpreter()->get_current_scope(); -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::interpreter *interp = octave::interpreter::the_interpreter (); - interp->assign(name, interp->global_varval(name)); - octave::tree_evaluator& tree_eval = interp->get_evaluator(); - octave::call_stack& callStack = tree_eval.get_call_stack(); - std::shared_ptr stackFrame = callStack.get_current_stack_frame(); - octave::symbol_record sym=symscope.lookup_symbol(name); - stackFrame->mark_global(sym); -#else - octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); - symscope.assign(name, symtab.global_varval(name)); - symscope.mark_global(name); -#endif -#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/mac/bin/swig/share/swig/4.1.0/octave/octruntime.swg b/mac/bin/swig/share/swig/4.1.0/octave/octruntime.swg deleted file mode 100755 index e76151f1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octruntime.swg +++ /dev/null @@ -1,425 +0,0 @@ -#ifdef SWIG_OCTAVE_EXTERNAL_OCTHEADERS -%insert(runtime) %{ -#include "octheaders.hpp" -%} -#else -%insert(runtime) "octheaders.hpp"; -#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(6,0,0) -#elif 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(6,0,0) -#elif 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_exit_usage = "-*- texinfo -*- \n\ -@deftypefn {Loadable Function} {} swig_exit([@var{exit_status}])\n\ -Exit Octave without performing any memory cleanup.\n\ -@end deftypefn"; - -DEFUN_DLD( swig_exit, args, nargout, swig_exit_usage ) { - if (args.length() > 1) { - error("swig_exit: must be called with at most one arguments"); - return octave_value_list(); - } - int exit_status = 0; - if (args.length() == 1) { - exit_status = args(0).int_value(); - } - ::_Exit(exit_status); - return octave_value(); -} - -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"; - -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.*, reappeared in 4.2.*, hack not possible in 4.4.* or later due to - // removal of octave_exit, so turn on for all versions between 3.2.*. and 4.4.*. - // can be turned off with macro definition. -#ifndef SWIG_OCTAVE_NO_SEGFAULT_HACK -#if !SWIG_OCTAVE_PREREQ(4,4,0) -#if SWIG_OCTAVE_PREREQ(3,2,0) - octave_exit = ::_Exit; -#endif -#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; - for (int i = 0; i < types.numel(); ++i) { - if (types(i) == octave_swig_ref::static_type_name()) { - register_octave_swig_ref = false; - octave_swig_ref::set_type_id(i); - } - if (types(i) == octave_swig_packed::static_type_name()) { - register_octave_swig_packed = false; - octave_swig_packed::set_type_id(i); - } - } - if (register_octave_swig_ref) { - octave_swig_ref::register_type(); - } - if (register_octave_swig_packed) { - octave_swig_packed::register_type(); - } - } -#else - octave_swig_ref::register_type(); - octave_swig_packed::register_type(); -#endif - SWIG_InitializeModule(0); - SWIG_PropagateClientData(); - -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); - octave::call_stack& stack = tree_eval.get_call_stack(); - octave_function *me = stack.current_function(); -#elif 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(); - } - if (!SWIG_Octave_InstallFunction(me, "swig_exit")) { - 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/mac/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg b/mac/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg deleted file mode 100755 index 80b2154d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg +++ /dev/null @@ -1,222 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg b/mac/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg deleted file mode 100755 index 4984fddf..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg +++ /dev/null @@ -1,99 +0,0 @@ - -// 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 -%runtime %{ -SWIGINTERN void SWIG_Octave_Raise(const octave_value &obj, const char *type) { - if (obj.is_string()) - error("%s", obj.string_value().c_str()); - else - error("C++ side threw an exception of type %s", type); -} -%} -#define SWIG_Raise(obj, type, desc) SWIG_Octave_Raise(obj, type) - -// 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/mac/bin/swig/share/swig/4.1.0/octave/octuserdir.swg b/mac/bin/swig/share/swig/4.1.0/octave/octuserdir.swg deleted file mode 100755 index ebb11b3a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/octuserdir.swg +++ /dev/null @@ -1,72 +0,0 @@ -/* ------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/octave/std_alloc.i b/mac/bin/swig/share/swig/4.1.0/octave/std_alloc.i deleted file mode 100755 index 35dc051b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/octave/std_basic_string.i b/mac/bin/swig/share/swig/4.1.0/octave/std_basic_string.i deleted file mode 100755 index 01a2c34a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_basic_string.i +++ /dev/null @@ -1,64 +0,0 @@ -#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/mac/bin/swig/share/swig/4.1.0/octave/std_carray.i b/mac/bin/swig/share/swig/4.1.0/octave/std_carray.i deleted file mode 100755 index e69de29b..00000000 diff --git a/mac/bin/swig/share/swig/4.1.0/octave/std_char_traits.i b/mac/bin/swig/share/swig/4.1.0/octave/std_char_traits.i deleted file mode 100755 index bf4e6c47..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/std_common.i b/mac/bin/swig/share/swig/4.1.0/octave/std_common.i deleted file mode 100755 index c8f17ba7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_common.i +++ /dev/null @@ -1,72 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/octave/std_complex.i b/mac/bin/swig/share/swig/4.1.0/octave/std_complex.i deleted file mode 100755 index 461e2fdf..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_complex.i +++ /dev/null @@ -1,25 +0,0 @@ -/* - * STD C++ complex typemaps - */ - -%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/mac/bin/swig/share/swig/4.1.0/octave/std_container.i b/mac/bin/swig/share/swig/4.1.0/octave/std_container.i deleted file mode 100755 index cab76452..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/std_deque.i b/mac/bin/swig/share/swig/4.1.0/octave/std_deque.i deleted file mode 100755 index c40cfee1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_deque.i +++ /dev/null @@ -1,25 +0,0 @@ -// 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/mac/bin/swig/share/swig/4.1.0/octave/std_except.i b/mac/bin/swig/share/swig/4.1.0/octave/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/std_list.i b/mac/bin/swig/share/swig/4.1.0/octave/std_list.i deleted file mode 100755 index 35f6c132..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_list.i +++ /dev/null @@ -1,26 +0,0 @@ -// 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/mac/bin/swig/share/swig/4.1.0/octave/std_map.i b/mac/bin/swig/share/swig/4.1.0/octave/std_map.i deleted file mode 100755 index fd15661c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_map.i +++ /dev/null @@ -1,157 +0,0 @@ -// 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/mac/bin/swig/share/swig/4.1.0/octave/std_pair.i b/mac/bin/swig/share/swig/4.1.0/octave/std_pair.i deleted file mode 100755 index 2f307380..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_pair.i +++ /dev/null @@ -1,147 +0,0 @@ -// 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/mac/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/std_string.i b/mac/bin/swig/share/swig/4.1.0/octave/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/octave/std_vector.i b/mac/bin/swig/share/swig/4.1.0/octave/std_vector.i deleted file mode 100755 index 2862b5e7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_vector.i +++ /dev/null @@ -1,26 +0,0 @@ -// 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/mac/bin/swig/share/swig/4.1.0/octave/std_wstring.i b/mac/bin/swig/share/swig/4.1.0/octave/std_wstring.i deleted file mode 100755 index dc1378ae..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/std_wstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/stl.i b/mac/bin/swig/share/swig/4.1.0/octave/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/octave/swigmove.i b/mac/bin/swig/share/swig/4.1.0/octave/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/octave/typemaps.i b/mac/bin/swig/share/swig/4.1.0/octave/typemaps.i deleted file mode 100755 index 1f9b9c43..00000000 --- a/mac/bin/swig/share/swig/4.1.0/octave/typemaps.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/Makefile.in b/mac/bin/swig/share/swig/4.1.0/perl5/Makefile.in deleted file mode 100755 index e0b3b74b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/Makefile.in +++ /dev/null @@ -1,120 +0,0 @@ -# --------------------------------------------------------------- -# SWIG Perl5 Makefile -# -# This file can be used to build various Perl5 extensions with SWIG. -# By default this file is set up for dynamic loading, but it can -# be easily customized for static extensions by modifying various -# portions of the file. -# -# SRCS = C source files -# CXXSRCS = C++ source files -# OBJCSRCS = Objective-C source files -# OBJS = Additional .o files (compiled previously) -# INTERFACE = SWIG interface file -# TARGET = Name of target module or executable -# -# Many portions of this file were created by the SWIG configure -# script and should already reflect your machine. -#---------------------------------------------------------------- - -SRCS = -CXXSRCS = -OBJCSRCS = -OBJS = -INTERFACE = -WRAPFILE = $(INTERFACE:.i=_wrap.c) -WRAPOBJ = $(INTERFACE:.i=_wrap.o) -TARGET = module@SO@ # Use this kind of target for dynamic loading -#TARGET = myperl # Use this target for static linking - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -CC = @CC@ -CXX = @CXX@ -OBJC = @CC@ -Wno-import # -Wno-import needed for gcc -CFLAGS = -INCLUDES = -LIBS = - -# SWIG Options -# SWIG = location of the SWIG executable -# SWIGOPT = SWIG compiler options -# SWIGCC = Compiler used to compile the wrapper file - -SWIG = $(exec_prefix)/bin/swig -SWIGOPT = -perl5 -SWIGCC = $(CC) - -# SWIG Library files. Uncomment this to statically rebuild Perl -#SWIGLIBS = -static -lperlmain.i - -# Rules for creating .o files from source. - -COBJS = $(SRCS:.c=.o) -CXXOBJS = $(CXXSRCS:.cxx=.o) -OBJCOBJS = $(OBJCSRCS:.m=.o) -ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) - -# Command that will be used to build the final extension. -BUILD = $(SWIGCC) - -# Uncomment the following if you are using dynamic loading -CCSHARED = @CCSHARED@ -BUILD = @LDSHARED@ - -# Uncomment the following if you are using dynamic loading with C++ and -# need to provide additional link libraries (this is not always required). - -#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ - -L/usr/local/lib -lg++ -lstdc++ -lgcc - -# Perl installation - -PERL_INCLUDE = -I@PERL5EXT@ -PERL_LIB = -L@PERL5EXT@ -lperl -PERL_FLAGS = -Dbool=char -Dexplicit= - -# Build libraries (needed for static builds) - -LIBM = @LIBM@ -LIBC = @LIBC@ -SYSLIBS = $(LIBM) $(LIBC) @LIBS@ - -# Build options - -BUILD_LIBS = $(LIBS) # Dynamic loading - -# Compilation rules for non-SWIG components - -.SUFFIXES: .c .cxx .m - -.c.o: - $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - -.cxx.o: - $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< - -.m.o: - $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - - -# ---------------------------------------------------------------------- -# Rules for building the extension -# ---------------------------------------------------------------------- - -all: $(TARGET) - -# Convert the wrapper file into an object file - -$(WRAPOBJ) : $(WRAPFILE) - $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(PERL_INCLUDE) $(PERL_FLAGS) $(WRAPFILE) - -$(WRAPFILE) : $(INTERFACE) - $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) - -$(TARGET): $(WRAPOBJ) $(ALLOBJS) - $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) - -clean: - rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/Makefile.pl b/mac/bin/swig/share/swig/4.1.0/perl5/Makefile.pl deleted file mode 100755 index cffdc8e7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/Makefile.pl +++ /dev/null @@ -1,19 +0,0 @@ -# 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/mac/bin/swig/share/swig/4.1.0/perl5/argcargv.i b/mac/bin/swig/share/swig/4.1.0/perl5/argcargv.i deleted file mode 100755 index 48a6047b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/argcargv.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - int i; - I32 len; - AV *av = (AV *)SvRV($input); - if (SvTYPE(av) != SVt_PVAV) { - SWIG_croak("in method '$symname', Expecting reference to argv array"); - goto fail; - } - len = av_len(av) + 1; - $1 = ($1_ltype) len; - $2 = (char **) malloc((len+1)*sizeof(char *)); - for (i = 0; i < len; i++) { - SV **tv = av_fetch(av, i, 0); - $2[i] = SvPV_nolen(*tv); - } - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - AV *av = (AV *)SvRV($input); - $1 = SvTYPE(av) == SVt_PVAV; -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/attribute.i b/mac/bin/swig/share/swig/4.1.0/perl5/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/carrays.i b/mac/bin/swig/share/swig/4.1.0/perl5/carrays.i deleted file mode 100755 index 8be67abc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/carrays.i +++ /dev/null @@ -1,2 +0,0 @@ -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/cdata.i b/mac/bin/swig/share/swig/4.1.0/perl5/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/cmalloc.i b/mac/bin/swig/share/swig/4.1.0/perl5/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/cpointer.i b/mac/bin/swig/share/swig/4.1.0/perl5/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/cstring.i b/mac/bin/swig/share/swig/4.1.0/perl5/cstring.i deleted file mode 100755 index ede9c596..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/director.swg b/mac/bin/swig/share/swig/4.1.0/perl5/director.swg deleted file mode 100755 index f0a6614f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/director.swg +++ /dev/null @@ -1,317 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/perl5/exception.i b/mac/bin/swig/share/swig/4.1.0/perl5/exception.i deleted file mode 100755 index b786f25e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/exception.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) -} diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/extra-install.list b/mac/bin/swig/share/swig/4.1.0/perl5/extra-install.list deleted file mode 100755 index db93830a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/extra-install.list +++ /dev/null @@ -1,2 +0,0 @@ -# see top-level Makefile.in -Makefile.pl noembed.h diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/factory.i b/mac/bin/swig/share/swig/4.1.0/perl5/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/noembed.h b/mac/bin/swig/share/swig/4.1.0/perl5/noembed.h deleted file mode 100755 index 4e30f111..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/noembed.h +++ /dev/null @@ -1,116 +0,0 @@ -/* 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/mac/bin/swig/share/swig/4.1.0/perl5/perl5.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perl5.swg deleted file mode 100755 index 693c2b94..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perl5.swg +++ /dev/null @@ -1,42 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg deleted file mode 100755 index 57296c67..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg +++ /dev/null @@ -1,34 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg deleted file mode 100755 index 45d25d1f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/mac/bin/swig/share/swig/4.1.0/perl5/perlhead.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlhead.swg deleted file mode 100755 index 773adee9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlhead.swg +++ /dev/null @@ -1,91 +0,0 @@ -#ifdef __cplusplus -/* Needed on some windows machines---since MS plays funny games with the header files under C++ */ -#include -#include -extern "C" { -#endif - -#if __GNUC__ >= 10 -#if defined(__cplusplus) -#pragma GCC diagnostic ignored "-Wvolatile" -#endif -#endif - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#if __GNUC__ >= 10 -#pragma GCC diagnostic pop -#endif - -/* PERL_REVISION was added in Perl 5.6. */ -#if !defined PERL_REVISION || (PERL_REVISION-0 == 5 && PERL_VERSION-0 < 8) -# error SWIG requires Perl >= 5.8.0 -#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 - -#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/mac/bin/swig/share/swig/4.1.0/perl5/perlinit.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlinit.swg deleted file mode 100755 index c26b93fa..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlinit.swg +++ /dev/null @@ -1,78 +0,0 @@ - -/* Export the SWIG initialization function */ -%header %{ -#ifdef __cplusplus -extern "C" -#endif -#ifndef MULTIPLICITY -SWIGEXPORT void SWIG_init (CV* cv); -#else -SWIGEXPORT void SWIG_init (pTHXo_ CV* cv); -#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/mac/bin/swig/share/swig/4.1.0/perl5/perlkw.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlkw.swg deleted file mode 100755 index 00648e0b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlkw.swg +++ /dev/null @@ -1,251 +0,0 @@ -/* 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/mac/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg deleted file mode 100755 index 4917f6ef..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg +++ /dev/null @@ -1,2 +0,0 @@ -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/perlmain.i b/mac/bin/swig/share/swig/4.1.0/perl5/perlmain.i deleted file mode 100755 index 18ecb7eb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlmain.i +++ /dev/null @@ -1,82 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/perl5/perlopers.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlopers.swg deleted file mode 100755 index e7d13b67..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlopers.swg +++ /dev/null @@ -1,54 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg deleted file mode 100755 index 4cb67567..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg +++ /dev/null @@ -1,364 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/perl5/perlrun.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlrun.swg deleted file mode 100755 index 71f19cbf..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlrun.swg +++ /dev/null @@ -1,493 +0,0 @@ -/* ----------------------------------------------------------------------------- - * perlrun.swg - * - * This file contains the runtime support for Perl modules - * and includes code for managing global variables and pointer - * type checking. - * ----------------------------------------------------------------------------- */ - -#define SWIG_PERL_OBJECT_DECL -#define SWIG_PERL_OBJECT_CALL - -/* 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 */ -#ifndef MULTIPLICITY -# define SWIG_CALLXS(_name) _name(cv) -#else -# define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) -#endif - -#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 */ - -static void SWIGUNUSED SWIG_croak_null() -{ - SV *err = get_sv("@", GV_ADD); - if (sv_isobject(err)) - croak(0); - else - croak("%s", SvPV_nolen(err)); -} - - -/* - 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; - int check_owned_pointer_release = (flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE; - - 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) || check_owned_pointer_release)) { - /* - * 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); - int owned = 0; - 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)) { - owned = 1; - if (flags & SWIG_POINTER_DISOWN) { - hv_delete_ent(hv, obj, 0, 0); - } - } - } - if (check_owned_pointer_release && !owned) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - } - - if (tsv && (flags & SWIG_POINTER_CLEAR)) { - SvIV_set(tsv, 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 */ -#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 -{ - 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/mac/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg deleted file mode 100755 index f948023d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg +++ /dev/null @@ -1,8 +0,0 @@ - -%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/mac/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg deleted file mode 100755 index 242a9c96..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg +++ /dev/null @@ -1,59 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg deleted file mode 100755 index 42f8887b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg +++ /dev/null @@ -1,104 +0,0 @@ -/* ------------------------------------------------------------ - * 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), $1_descriptor); -} - -%typemap(varout) SWIGTYPE *const = SWIGTYPE *; - diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg b/mac/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg deleted file mode 100755 index 718440e8..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg +++ /dev/null @@ -1,2 +0,0 @@ -#define %perlcode %insert("perl") - diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/reference.i b/mac/bin/swig/share/swig/4.1.0/perl5/reference.i deleted file mode 100755 index b424c533..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/reference.i +++ /dev/null @@ -1,261 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/std_common.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_common.i deleted file mode 100755 index 7c1ff232..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_common.i +++ /dev/null @@ -1,28 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/perl5/std_deque.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/std_except.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/std_list.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_list.i deleted file mode 100755 index 36678add..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_list.i +++ /dev/null @@ -1,377 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/perl5/std_map.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_map.i deleted file mode 100755 index 1b373183..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_map.i +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/perl5/std_pair.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/perl5/std_string.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_string.i deleted file mode 100755 index 6f34f184..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_string.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/std_vector.i b/mac/bin/swig/share/swig/4.1.0/perl5/std_vector.i deleted file mode 100755 index 5bfd2c5a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/std_vector.i +++ /dev/null @@ -1,592 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/perl5/swigmove.i b/mac/bin/swig/share/swig/4.1.0/perl5/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/perl5/typemaps.i b/mac/bin/swig/share/swig/4.1.0/perl5/typemaps.i deleted file mode 100755 index 3e1f60d9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/perl5/typemaps.i +++ /dev/null @@ -1,371 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/php/argcargv.i b/mac/bin/swig/share/swig/4.1.0/php/argcargv.i deleted file mode 100755 index e0093c21..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/argcargv.i +++ /dev/null @@ -1,40 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - int len, i; - zval *val; - zend_array *ar; - if (Z_TYPE($input) != IS_ARRAY) { - SWIG_PHP_Error(E_ERROR, "Type error in '$symname'. Expected array"); - goto fail; - } - ar = Z_ARR($input); - len = zend_array_count(ar); - $1 = ($1_ltype) len; - $2 = (char **) malloc((len+1)*sizeof(char *)); - i = 0; - ZEND_HASH_FOREACH_VAL(ar, val) { - if (Z_TYPE(*val) != IS_STRING) { - SWIG_PHP_Error(E_ERROR, "Array must use strings only, in '$symname'."); - goto fail; - } - if (i == len) { - SWIG_PHP_Error(E_ERROR, "Array is bigger than zend report in '$symname'."); - goto fail; - } - $2[i++] = Z_STRVAL(*val); - } ZEND_HASH_FOREACH_END(); - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - $1 = Z_TYPE($input) == IS_ARRAY; -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/mac/bin/swig/share/swig/4.1.0/php/const.i b/mac/bin/swig/share/swig/4.1.0/php/const.i deleted file mode 100755 index a74af0d7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/const.i +++ /dev/null @@ -1,103 +0,0 @@ -/* ----------------------------------------------------------------------------- - * const.i - * - * Typemaps for constants - * ----------------------------------------------------------------------------- */ -%typemap(classconsttab) int, - unsigned int, - short, - unsigned short, - long, - unsigned long, - unsigned char, - signed char, - enum SWIGTYPE %{ - zend_declare_class_constant_long(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, ($1_type)($value)); -%} - -%typemap(classconsttab) bool %{ - zend_declare_class_constant_bool(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, ($1_type)($value)); -%} - -%typemap(classconsttab) float, - double %{ - zend_declare_class_constant_double(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, $value); -%} - -%typemap(classconsttab) char %{ -{ - char swig_char = $value; - zend_declare_class_constant_stringl(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, &swig_char, 1); -} -%} - -%typemap(classconsttab) char *, - const char *, - char [], - const char [] %{ - zend_declare_class_constant_string(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, $value); -%} - -// This creates a zend_object to wrap the pointer, and we can't do that -// before the Zend runtime has been initialised so we delay it until -// RINIT. The downside is it then happens for every request. -%typemap(classconsttab,rinit=1) SWIGTYPE *, - SWIGTYPE &, - SWIGTYPE &&, - SWIGTYPE [] %{ -{ - zval z; - ZVAL_UNDEF(&z); - SWIG_SetPointerZval(&z, (void*)($value), $1_descriptor, 0); - zval_copy_ctor(&z); - zend_declare_class_constant(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, &z); -} -%} - -%typemap(classconsttab) SWIGTYPE (CLASS::*) "" - -%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);"; - -// This creates a zend_object to wrap the pointer, and we can't do that -// before the Zend runtime has been initialised so we delay it until -// RINIT. The downside is it then happens for every request. -%typemap(consttab,rinit=1) SWIGTYPE *, - SWIGTYPE &, - SWIGTYPE &&, - SWIGTYPE [] { - zend_constant c; - ZVAL_UNDEF(&c.value); - 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/mac/bin/swig/share/swig/4.1.0/php/director.swg b/mac/bin/swig/share/swig/4.1.0/php/director.swg deleted file mode 100755 index 55ffff51..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/director.swg +++ /dev/null @@ -1,180 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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_ - -#define SWIG_DIRECTOR_CAST(ARG) dynamic_cast(ARG) - -#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 { - private: - /* flag indicating whether the object is owned by PHP or C++ */ - mutable bool swig_disown_flag; - - 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) : swig_disown_flag(false) { - ZVAL_COPY_VALUE(&swig_self, self); - } - - ~Director() { - if (swig_disown_flag) { - Z_DELREF(swig_self); - } - } - - zend_object *swig_get_self() const { return Z_OBJ(swig_self); } - - void swig_disown() const { - if (!swig_disown_flag) { - swig_disown_flag = true; - Z_ADDREF(swig_self); - } - } - - 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); - } - } - }; - - /* 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; - } - // Don't replace an already active PHP exception. - if (!EG(exception)) zend_throw_exception(NULL, swig_msg.c_str(), code); - } - - 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/mac/bin/swig/share/swig/4.1.0/php/factory.i b/mac/bin/swig/share/swig/4.1.0/php/factory.i deleted file mode 100755 index 5f2b397e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/factory.i +++ /dev/null @@ -1,109 +0,0 @@ -/* - 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, phptype="?SWIGTYPE") Method { - int dcast = 0; - %formacro(%_factory_dispatch, Types) - if (!dcast) { - SWIG_SetPointerZval(return_value, SWIG_as_voidptr($1), $descriptor, $owner); - } -}%enddef diff --git a/mac/bin/swig/share/swig/4.1.0/php/php.swg b/mac/bin/swig/share/swig/4.1.0/php/php.swg deleted file mode 100755 index fd092807..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/php.swg +++ /dev/null @@ -1,594 +0,0 @@ -/* ----------------------------------------------------------------------------- - * php.swg - * - * PHP configuration file - * ----------------------------------------------------------------------------- */ - -// Default to generating PHP type declarations (for PHP >= 8) except for -// cases which are liable to cause compatibility issues with existing -// bindings. -%feature("php:type", "compat"); - -%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 - -// 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, "bool", CONVERT_BOOL_IN); - -%pass_by_val(size_t, "int", CONVERT_INT_IN); - -%pass_by_val(enum SWIGTYPE, "int", CONVERT_INT_IN); - -%pass_by_val(signed int, "int", CONVERT_INT_IN); -%pass_by_val(int,"int", CONVERT_INT_IN); -%pass_by_val(unsigned int,"int", CONVERT_INT_IN); - -%pass_by_val(signed short, "int", CONVERT_INT_IN); -%pass_by_val(short,"int", CONVERT_INT_IN); -%pass_by_val(unsigned short, "int", CONVERT_INT_IN); - -%pass_by_val(signed long, "int", CONVERT_INT_IN); -%pass_by_val(long, "int", CONVERT_INT_IN); -%pass_by_val(unsigned long, "int", CONVERT_INT_IN); - -%pass_by_val(signed long long, "int|string", CONVERT_LONG_LONG_IN); -%pass_by_val(long long, "int|string", CONVERT_LONG_LONG_IN); -%pass_by_val(unsigned long long, "int|string", CONVERT_UNSIGNED_LONG_LONG_IN); - -%pass_by_val(signed char, "int", CONVERT_INT_IN); -%pass_by_val(char, "string", CONVERT_CHAR_IN); -%pass_by_val(unsigned char, "int", CONVERT_INT_IN); - -%pass_by_val(float, "float", CONVERT_FLOAT_IN); - -%pass_by_val(double, "float", CONVERT_FLOAT_IN); - -%pass_by_val(char *, "string", 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, phptype="string") char[ANY] -%{ - convert_to_string(&$input); - $1 = ($1_ltype) Z_STRVAL($input); -%} - -%typemap(in, phptype="string") (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, phptype="SWIGTYPE") SWIGTYPE ($&1_ltype tmp) -%{ - if (SWIG_ConvertPtr(&$input, (void **) &tmp, $&1_descriptor, 0) < 0 || tmp == NULL) { - zend_type_error("Expected $&1_descriptor for argument $argnum of $symname"); - return; - } - $1 = *tmp; -%} - -%typemap(directorout) SWIGTYPE ($&1_ltype tmp) -%{ - if (SWIG_ConvertPtr($input, (void **) &tmp, $&1_descriptor, 0) < 0 || tmp == NULL) { - zend_type_error("Expected $&1_descriptor for argument $argnum of $symname"); - SWIG_fail; - } - $result = *tmp; -%} - -%typemap(in, phptype="?SWIGTYPE") SWIGTYPE *, - SWIGTYPE [] -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } -%} - -%typemap(directorout) SWIGTYPE * (swig_owntype own), - SWIGTYPE [] (swig_owntype own) -%{ - if (SWIG_ConvertPtrAndOwn($input, (void **)&$result, $1_descriptor, SWIG_POINTER_DISOWN, &own) < 0) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - SWIG_fail; - } - swig_acquire_ownership_obj((void*)$result, own); -%} - -%typemap(in, phptype="SWIGTYPE") SWIGTYPE & -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0 || $1 == NULL) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } -%} -%typemap(in, fragment="") SWIGTYPE && (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) %{ - res = SWIG_ConvertPtr(&$input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $1_descriptor of $symname"); - return; - } else { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } - } - if (!argp) { - zend_type_error("Invalid null reference for argument $argnum of $1_descriptor of $symname"); - return; - } - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -%} - -%typemap(directorout) SWIGTYPE & ($1_ltype tmp), - SWIGTYPE && ($1_ltype tmp) -%{ - if (SWIG_ConvertPtr($input, (void **) &tmp, $1_descriptor, 0) < 0 || tmp == NULL) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - SWIG_fail; - } - $result = tmp; -%} - -%typemap(in, phptype="?SWIGTYPE") SWIGTYPE *const& ($*ltype temp) -%{ - if (SWIG_ConvertPtr(&$input, (void **) &temp, $*1_descriptor, 0) < 0) { - zend_type_error("Expected $*1_descriptor for argument $argnum of $symname"); - return; - } - $1 = ($1_ltype)&temp; -%} - -%typemap(in, phptype="?SWIGTYPE") SWIGTYPE *DISOWN -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, SWIG_POINTER_DISOWN) < 0) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } -%} - -%typemap(argout) SWIGTYPE *, - SWIGTYPE [], - SWIGTYPE &, - SWIGTYPE &&; - -%typemap(in, phptype="?SWIGTYPE") void * -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, 0, 0) < 0) { - /* Allow NULL from php for void* */ - if (Z_ISNULL($input)) { - $1=0; - } else { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } - } -%} - -/* Special case when void* is passed by reference so it can be made to point - to opaque api structs */ -%typemap(in, phptype="?SWIG\\_p_void", byref=1) 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 */ - zend_throw_exception(zend_ce_type_error, "Type error in argument $arg of $symname", 0); - goto fail; - } - } - 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 && Z_ISREF($input)) { - SWIG_SetPointerZval(Z_REFVAL($input), (void*) ptr$argnum, $*1_descriptor, 1); - } -%} - -/* Typemap for output values */ - -%typemap(out, phptype="int") - int, - unsigned int, - short, - unsigned short, - long, - unsigned long, - signed char, - unsigned char, - size_t -%{ - RETVAL_LONG($1); -%} - -%typemap(out, phptype="int") enum SWIGTYPE -%{ - RETVAL_LONG((long)$1); -%} - -%typemap(out, phptype="int|string") long long -%{ - if ((long long)LONG_MIN <= $1 && $1 <= (long long)LONG_MAX) { - RETVAL_LONG((long)($1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%lld", (long long)$1)); - } -%} -%typemap(out, phptype="int|string") unsigned long long -%{ - if ($1 <= (unsigned long long)LONG_MAX) { - RETVAL_LONG((long)($1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%llu", (unsigned long long)$1)); - } -%} - -%typemap(out, phptype="int") - 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, phptype="int") const enum SWIGTYPE & -%{ - RETVAL_LONG((long)*$1); -%} - -%typemap(out, phptype="int") const enum SWIGTYPE && -%{ - RETVAL_LONG((long)*$1); -%} - -%typemap(out, phptype="int|string") const long long & -%{ - if ((long long)LONG_MIN <= *$1 && *$1 <= (long long)LONG_MAX) { - RETVAL_LONG((long)(*$1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%lld", (long long)(*$1))); - } -%} -%typemap(out, phptype="int|string") const unsigned long long & -%{ - if (*$1 <= (unsigned long long)LONG_MAX) { - RETVAL_LONG((long)(*$1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%llu", (unsigned long long)(*$1))); - } -%} - -%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, phptype="bool") bool -%{ - RETVAL_BOOL(($1) ? 1 : 0); -%} - -%typemap(out, phptype="bool") const bool & -%{ - RETVAL_BOOL((*$1) ? 1 : 0); -%} - -%typemap(directorin) bool -%{ - ZVAL_BOOL($input, ($1) ? 1 : 0); -%} - -%typemap(out, phptype="float") float, - double -%{ - RETVAL_DOUBLE($1); -%} - -%typemap(out, phptype="float") const float &, - const double & -%{ - RETVAL_DOUBLE(*$1); -%} - -%typemap(directorin) float, - double -%{ - ZVAL_DOUBLE($input, $1); -%} - -%typemap(out, phptype="string") char -%{ - RETVAL_STRINGL(&$1, 1); -%} - -%typemap(out, phptype="string") const char & -%{ - RETVAL_STRINGL(&*$1, 1); -%} - -%typemap(out, phptype="string") char [] -%{ - RETVAL_STRING((const char *)$1); -%} - -%typemap(out, phptype="?string") char * -%{ - if (!$1) { - RETVAL_NULL(); - } else { - RETVAL_STRING((const char *)$1); - } -%} - -%typemap(out, phptype="?string") char *& -%{ - if (!*$1) { - RETVAL_NULL(); - } else { - RETVAL_STRING((const char *)*$1); - } -%} - -%typemap(out, phptype="?SWIGTYPE") SWIGTYPE * -%{ - SWIG_SetPointerZval($result, (void *)$1, $1_descriptor, $owner); -%} - -%typemap(out, phptype="SWIGTYPE") - SWIGTYPE [], - SWIGTYPE &, - SWIGTYPE && -%{ - SWIG_SetPointerZval($result, (void *)$1, $1_descriptor, $owner); -%} - -%typemap(out, phptype="?SWIGTYPE") SWIGTYPE *const& -%{ - SWIG_SetPointerZval($result, (void *)*$1, $*1_descriptor, $owner); -%} - -%typemap(directorin) SWIGTYPE *, - SWIGTYPE [], - SWIGTYPE &, - SWIGTYPE && -%{ - ZVAL_UNDEF($input); - SWIG_SetPointerZval($input, (void *)&$1, $1_descriptor, $owner); -%} - -%typemap(out, phptype="SWIGTYPE") SWIGTYPE (CLASS::*) -{ - void * p = emalloc(sizeof($1)); - memcpy(p, &$1, sizeof($1)); - SWIG_SetPointerZval($result, (void *)p, $&1_descriptor, 1); -} - -%typemap(in, phptype="SWIGTYPE") SWIGTYPE (CLASS::*) -{ - void * p = SWIG_Z_FETCH_OBJ_P(&$input)->ptr; - memcpy(&$1, p, sizeof($1)); -} - -%typemap(out, phptype="?SWIGTYPE") SWIGTYPE *DYNAMIC -{ - swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor, (void **) &$1); - SWIG_SetPointerZval($result, (void *)$1, ty, $owner); -} - -%typemap(out, phptype="SWIGTYPE") SWIGTYPE &DYNAMIC -{ - swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor, (void **) &$1); - SWIG_SetPointerZval($result, (void *)$1, ty, $owner); -} - -%typemap(out, phptype="SWIGTYPE") SWIGTYPE -{ -#ifdef __cplusplus - $&1_ltype resultobj = new $1_ltype($1); -#else - $&1_ltype resultobj = ($&1_ltype) malloc(sizeof($1_type)); - memcpy(resultobj, &$1, sizeof($1_type)); -#endif - SWIG_SetPointerZval($result, (void *)resultobj, $&1_descriptor, 1); -} - -%typemap(directorin) SWIGTYPE -%{ - ZVAL_UNDEF($input); - SWIG_SetPointerZval($input, (new $1_ltype(SWIG_STD_MOVE($1))), $&1_descriptor, 1); -%} - -%typemap(out, phptype="void") void "" - -%typemap(out, phptype="string") char [ANY] -{ - size_t 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 *& - " $1 = (Z_TYPE($input) == IS_STRING || Z_TYPE($input) == IS_NULL); " - -%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) 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); - goto fail; -%} - -%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE *, SWIGTYPE [], SWIGTYPE [ANY] %{ - (void)$1; - zend_throw_exception(NULL, "C++ $1_type exception thrown", 0); - goto fail; -%} - -%typemap(throws) char * %{ - zend_throw_exception(NULL, $1, 0); - goto fail; -%} - -/* 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 - -/* PHP known interfaces */ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/php/phpinit.swg b/mac/bin/swig/share/swig/4.1.0/php/phpinit.swg deleted file mode 100755 index ae72a10a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/phpinit.swg +++ /dev/null @@ -1,16 +0,0 @@ - -/* ------------------------------------------------------------ - * The start of the PHP initialization function - * ------------------------------------------------------------ */ - -%insert(init) "swiginit.swg" - -%init %{ -SWIG_php_minit { - zend_class_entry SWIGUNUSED internal_ce; - SWIG_InitializeModule((void*)&module_number); -#if PHP_MAJOR_VERSION == 8 && PHP_MINOR_VERSION == 0 - /* This hack is needed to avoid segfaults. */ - EG(class_table) = CG(class_table); -#endif -%} diff --git a/mac/bin/swig/share/swig/4.1.0/php/phpinterfaces.i b/mac/bin/swig/share/swig/4.1.0/php/phpinterfaces.i deleted file mode 100755 index 5b1da8b7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/phpinterfaces.i +++ /dev/null @@ -1,62 +0,0 @@ -/* ----------------------------------------------------------------------------- - * phpinterfaces.i - * - * Define "known" PHP interfaces. - * - * These can be added at MINIT time (which is when PHP loads the extension - * module). - * - * Any interface can be added via phpinterfaces, but looking up the - * zend_class_entry by name has to wait until RINIT time, which means it - * happens for every request. - * ----------------------------------------------------------------------------- */ - -// Note: Abstract interfaces such as "Traversable" can't be used in -// "implements" so are not relevant here. - -%insert(header) %{ - -#define SWIG_PHP_INTERFACE_Iterator_CE zend_ce_iterator -#define SWIG_PHP_INTERFACE_Iterator_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_IteratorAggregate_CE zend_ce_aggregate -#define SWIG_PHP_INTERFACE_IteratorAggregate_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_ArrayAccess_CE zend_ce_arrayaccess -#define SWIG_PHP_INTERFACE_ArrayAccess_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_Serializable_CE zend_ce_serializable -#define SWIG_PHP_INTERFACE_Serializable_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_Countable_CE zend_ce_countable -#define SWIG_PHP_INTERFACE_Countable_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_OuterIterator_CE spl_ce_OuterIterator -#define SWIG_PHP_INTERFACE_OuterIterator_HEADER "ext/spl/spl_iterators.h" - -#define SWIG_PHP_INTERFACE_RecursiveIterator_CE spl_ce_RecursiveIterator -#define SWIG_PHP_INTERFACE_RecursiveIterator_HEADER "ext/spl/spl_iterators.h" - -#define SWIG_PHP_INTERFACE_SeekableIterator_CE spl_ce_SeekableIterator -#define SWIG_PHP_INTERFACE_SeekableIterator_HEADER "ext/spl/spl_iterators.h" - -#define SWIG_PHP_INTERFACE_SplObserver_CE spl_ce_SplObserver -#define SWIG_PHP_INTERFACE_SplObserver_HEADER "ext/spl/spl_observer.h" - -#define SWIG_PHP_INTERFACE_SplSubject_CE spl_ce_SplSubject -#define SWIG_PHP_INTERFACE_SplSubject_HEADER "ext/spl/spl_observer.h" - -#define SWIG_PHP_INTERFACE_DateTimeInterface_CE php_date_get_interface_ce() -#define SWIG_PHP_INTERFACE_DateTimeInterface_HEADER "ext/date/php_date.h" - -// The "json" extension needs to be loaded earlier that us for this to work. -#define SWIG_PHP_INTERFACE_JsonSerializable_CE php_json_serializable_ce -#define SWIG_PHP_INTERFACE_JsonSerializable_HEADER "ext/json/php_json.h" - -// New in PHP 8.0. -#if PHP_MAJOR_VERSION >= 8 -# define SWIG_PHP_INTERFACE_Stringable_CE zend_ce_stringable -# define SWIG_PHP_INTERFACE_Stringable_HEADER "zend_interfaces.h" -#endif - -%} diff --git a/mac/bin/swig/share/swig/4.1.0/php/phpkw.swg b/mac/bin/swig/share/swig/4.1.0/php/phpkw.swg deleted file mode 100755 index 443ac8bf..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/phpkw.swg +++ /dev/null @@ -1,888 +0,0 @@ -/* ----------------------------------------------------------------------------- - * phpkw.swg - * ----------------------------------------------------------------------------- */ - -/* Keyword (case insensitive) */ -#define PHPKW(x) %keywordwarn("'" `x` "' is a PHP keyword",sourcefmt="%(lower)s",rename="c_%s") `x` - -/* Keyword, except ok as a function */ -#define PHPKW_ok_as_function(x) %keywordwarn("'" `x` "' is a PHP keyword, renaming to 'c_" `x` "'",%$not %$isfunction,sourcefmt="%(lower)s",rename="c_%s") `x` - -/* Class (case insensitive) */ -#define PHPCN(x) %keywordwarn("'" `x` "' is a PHP reserved class name",%$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",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(fn); // as of PHP 7.4 -PHPKW(for); -PHPKW(foreach); -PHPKW(function); -PHPKW(global); -PHPKW(goto); -PHPKW(if); -PHPKW(implements); -PHPKW(instanceof); -PHPKW(insteadof); -PHPKW(interface); -PHPKW(match); // as of PHP 8.0 -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); - -/* PHP 8.1 made `readonly` a keyword, but (unlike any other keyword it seems) - * it may still be used as a function name. - */ -PHPKW_ok_as_function(readonly); - -// 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(PHP_FLOAT_DIG); // Since 7.2.0 -PHPBN2(PHP_FLOAT_EPSILON); // Since 7.2.0 -PHPBN2(PHP_FLOAT_MIN); // Since 7.2.0 -PHPBN2(PHP_FLOAT_MAX); // Since 7.2.0 -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(PHP_FD_SETSIZE); // Since 7.1.0 -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_RECOVERABLE_ERROR); -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); -/* Since 7.4.0 (Microsoft Windows only) */ -PHPBN2(PHP_WINDOWS_EVENT_CTRL_C); -PHPBN2(PHP_WINDOWS_EVENT_CTRL_BREAK); -/* 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(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. */ -/* Check is case insensitive - these *MUST* be listed in lower case here. */ -PHPCN(directory); -PHPCN(stdclass); -PHPCN(__php_incomplete_class); -PHPCN(exception); -PHPCN(errorexception); -PHPCN(php_user_filter); -PHPCN(closure); -PHPCN(generator); -PHPCN(self); -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 -/* Predefined interfaces and classes, introduced in PHP 7.0.0 */ -PHPCN(arithmeticerror); -PHPCN(assertionerror); -PHPCN(divisionbyzeroerror); -PHPCN(error); -PHPCN(throwable); -PHPCN(parseerror); -PHPCN(typeerror); -/* 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 PHPKW_ok_as_function -#undef PHPBN1a -#undef PHPBN1b -#undef PHPBN1 -#undef PHPBN2a -#undef PHPBN2b -#undef PHPBN2 -#undef PHPCN -#undef PHPFN diff --git a/mac/bin/swig/share/swig/4.1.0/php/phppointers.i b/mac/bin/swig/share/swig/4.1.0/php/phppointers.i deleted file mode 100755 index a4ff3c0b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/phppointers.i +++ /dev/null @@ -1,42 +0,0 @@ -%define %pass_by_ref( TYPE, PHP_TYPE, CONVERT_IN, CONVERT_OUT ) -%typemap(in,byref=1,phptype=PHP_TYPE) TYPE *REF ($*1_ltype tmp), - TYPE &REF ($*1_ltype tmp) -%{ - if (Z_ISREF($input)) { - CONVERT_IN(tmp, $*1_ltype, $input); - $1 = &tmp; - } else { - zend_type_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, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed int, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( int, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( unsigned int, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed short, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( short, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( unsigned short, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed long, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( long, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( unsigned long, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed char, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( char, "string", CONVERT_CHAR_IN, ZVAL_STRING ); -%pass_by_ref( unsigned char, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( float, "float", CONVERT_FLOAT_IN, ZVAL_DOUBLE ); -%pass_by_ref( double, "float", CONVERT_FLOAT_IN, ZVAL_DOUBLE ); - -%pass_by_ref( char *, "string", CONVERT_CHAR_IN, ZVAL_STRING ); diff --git a/mac/bin/swig/share/swig/4.1.0/php/phprun.swg b/mac/bin/swig/share/swig/4.1.0/php/phprun.swg deleted file mode 100755 index d3ad0d26..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/phprun.swg +++ /dev/null @@ -1,272 +0,0 @@ -/* ----------------------------------------------------------------------------- - * phprun.swg - * - * PHP runtime library - * ----------------------------------------------------------------------------- */ - -#define swig_owntype int - -#ifdef __cplusplus -extern "C" { -#endif - -#if PHP_MAJOR_VERSION < 7 -# error These bindings need PHP 7 or later - to generate PHP5 bindings use: SWIG < 4.0.0 and swig -php5 -#endif - -#include "zend_inheritance.h" -#include "zend_exceptions.h" -#include "zend_inheritance.h" - -#if PHP_MAJOR_VERSION == 7 -/* These macros were new in PHP 8.0. For PHP 7.x we define them to give the - * same result except without any type declarations. PHP 7.x supports type - * declarations, but not for the return type, and alternate types aren't - * supported, so we don't try to support these. - */ -# define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(name, byref, num_req, classes, types) \ - ZEND_BEGIN_ARG_INFO_EX(name, 0, byref, num_req) -# define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(name, byref, num_req, types) \ - ZEND_BEGIN_ARG_INFO_EX(name, 0, byref, num_req) - -/* NB We can just ignore `default` here we currently always pass NULL for it - * (this mechanism for specifying default parameter values was new in PHP 8.0 - * so it's not useful while we still want to support PHP7 too). - */ -# define ZEND_ARG_OBJ_TYPE_MASK(byref, name, classes, types, default) \ - ZEND_ARG_INFO(byref, name) -# define ZEND_ARG_TYPE_MASK(byref, name, types, default) \ - ZEND_ARG_INFO(byref, name) -#endif - -#include /* for abort(), used in generated code. */ - -#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 was 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 - -/* zend_object_alloc was new in PHP 7.3. */ -#if PHP_MAJOR_VERSION == 7 && PHP_MINOR_VERSION < 3 -static zend_always_inline void *zend_object_alloc(size_t obj_size, zend_class_entry *ce) { - void *obj = emalloc(obj_size + zend_object_properties_size(ce)); - memset(obj, 0, obj_size - sizeof(zval)); - return obj; -} -#endif - -/* ZEND_THIS was new in PHP 7.4. */ -#ifndef ZEND_THIS -# define ZEND_THIS &EX(This) -#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 { zend_throw_exception(NULL, msg, code); SWIG_fail; } while (0) - -#define SWIG_contract_assert(expr,msg) \ - do { if (!(expr)) zend_printf("Contract Assert Failed %s\n", msg); } while (0) - -/* Standard SWIG API */ -#define SWIG_GetModule(clientdata) SWIG_Php_GetModule() -#define SWIG_SetModule(clientdata, pointer) SWIG_Php_SetModule(pointer, *(int*)clientdata) - -static zend_class_entry SWIG_Php_swig_wrapped_interface_ce; - -#if PHP_MAJOR_VERSION == 7 -/* zend_class_implements_interface() was new in PHP 8.0. - * - * We could use instanceof_function_ex(C, I, 1) here for 7.4, but for 7.3 - * and earlier that doesn't work, so instead we just provide a compatibility - * implementation which does what zend_class_implements_interface() does in 8.x - * and use that for all 7.x so there are fewer variants to worry about testing. - */ -static int zend_class_implements_interface(const zend_class_entry *class_ce, const zend_class_entry *interface_ce) { - uint32_t i; - if (class_ce->num_interfaces) { - for (i = 0; i < class_ce->num_interfaces; i++) { - if (class_ce->interfaces[i] == interface_ce) { - return 1; - } - } - } - return 0; -} -#endif - -/* used to wrap returned objects in so we know whether they are newobject - and need freeing, or not */ -typedef struct { - void * ptr; - int newobject; - const swig_type_info * type; - zend_object std; -} swig_object_wrapper; - -#define SWIG_Z_FETCH_OBJ_P(zv) swig_php_fetch_object(Z_OBJ_P(zv)) - -static inline -swig_object_wrapper * swig_php_fetch_object(zend_object *obj) { - return (swig_object_wrapper *)((char *)obj - XtOffsetOf(swig_object_wrapper, std)); -} - -#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) { - // Return PHP NULL for a C/C++ NULL pointer. - if (!ptr) { - ZVAL_NULL(z); - return; - } - - if (!type->clientdata) { - zend_type_error("Type: %s not registered with zend", type->name); - return; - } - - { - zend_object *obj; - swig_object_wrapper *value; - if (Z_TYPE_P(z) == IS_OBJECT) { - /* The PHP object is already initialised - this is the case when wrapping - * the return value from a PHP constructor. */ - obj = Z_OBJ_P(z); - } else { - zend_class_entry *ce = (zend_class_entry*)(type->clientdata); - obj = ce->create_object(ce); - ZVAL_OBJ(z, obj); - } - value = swig_php_fetch_object(obj); - value->ptr = ptr; - value->newobject = (newobject & 1); - value->type = type; - } -} - -/* We wrap C/C++ pointers as PHP objects. */ -static int -SWIG_ConvertPtrAndOwn(zval *z, void **ptr, swig_type_info *ty, int flags, swig_owntype *own) { - if (own) - *own = 0; - - if (z == NULL) { - *ptr = 0; - return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; - } - - switch (Z_TYPE_P(z)) { - case IS_OBJECT: { - zend_object *obj = Z_OBJ_P(z); - swig_object_wrapper *value; - if (ty && ty->clientdata == (void*)obj->ce) { - // Object is exactly the class asked for - this handles common cases cheaply, - // and in particular the PHP classes we use to wrap a pointer to a non-class. - } else if (!zend_class_implements_interface(obj->ce, &SWIG_Php_swig_wrapped_interface_ce)) { - // Not an object we've wrapped. - return -1; - } - - /* convert and cast value->ptr from value->type to ptr as ty. */ - value = swig_php_fetch_object(obj); - if (!ty) { - /* They don't care about the target type, so just pass on the pointer! */ - *ptr = value->ptr; - } else { - swig_cast_info *tc = SWIG_TypeCheck(value->type->name, ty); - if (tc) { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc, value->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 |= SWIG_CAST_NEW_MEMORY; - } - } else { - *ptr = NULL; - } - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !value->newobject) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (*ptr == NULL) - return SWIG_ERROR; /* should be SWIG_NullReferenceError?? */ - if (flags & SWIG_POINTER_DISOWN) { - value->newobject = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - value->ptr = 0; - } - } - - return SWIG_OK; - } - case IS_NULL: - *ptr = 0; - return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; - } - - return -1; -} - -static int -SWIG_ConvertPtr(zval *z, void **ptr, swig_type_info *ty, int flags) { - return SWIG_ConvertPtrAndOwn(z, ptr, ty, flags, 0); -} - -static const char const_name[] = "swig_runtime_data_type_pointer"; -static swig_module_info *SWIG_Php_GetModule(void) { - 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); -} - -/* Common parts of the "create_object" object handler. */ -static zend_object *SWIG_Php_do_create_object(zend_class_entry *ce, zend_object_handlers *handlers) { - swig_object_wrapper *obj = (swig_object_wrapper*)zend_object_alloc(sizeof(swig_object_wrapper), ce); - zend_object_std_init(&obj->std, ce); - object_properties_init(&obj->std, ce); - obj->std.handlers = handlers; - obj->newobject = 1; - return &obj->std; -} - -/* Common parts of the "free_obj" object handler. - Returns void* pointer if the C/C++ object should be destroyed. */ -static void* SWIG_Php_free_obj(zend_object *object) { - if (object) { - swig_object_wrapper *obj = swig_php_fetch_object(object); - zend_object_std_dtor(&obj->std); - if (obj->newobject) return obj->ptr; - } - return NULL; -} diff --git a/mac/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i deleted file mode 100755 index 28409165..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(&$input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $descriptor(TYPE *) of $symname"); - return; - } else { - zend_type_error("Expected $descriptor(TYPE *) for argument $argnum of $symname"); - return; - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - SWIG_SetPointerZval($result, (void *)$1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(&$input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/php/std_common.i b/mac/bin/swig/share/swig/4.1.0/php/std_common.i deleted file mode 100755 index 1b69fc77..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/std_common.i +++ /dev/null @@ -1,9 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_common.i - * - * SWIG typemaps for STL - common utilities - * ----------------------------------------------------------------------------- */ - -%include - -%apply size_t { std::size_t }; diff --git a/mac/bin/swig/share/swig/4.1.0/php/std_deque.i b/mac/bin/swig/share/swig/4.1.0/php/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/php/std_map.i b/mac/bin/swig/share/swig/4.1.0/php/std_map.i deleted file mode 100755 index fed3cf0b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/std_map.i +++ /dev/null @@ -1,82 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/php/std_pair.i b/mac/bin/swig/share/swig/4.1.0/php/std_pair.i deleted file mode 100755 index 732347db..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/php/std_string.i b/mac/bin/swig/share/swig/4.1.0/php/std_string.i deleted file mode 100755 index b2039786..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/std_string.i +++ /dev/null @@ -1,90 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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, phptype="string") string %{ - convert_to_string(&$input); - $1.assign(Z_STRVAL($input), Z_STRLEN($input)); - %} - - %typemap(directorout) string %{ - convert_to_string($input); - $result.assign(Z_STRVAL_P($input), Z_STRLEN_P($input)); - %} - - %typemap(out, phptype="string") string %{ - ZVAL_STRINGL($result, $1.data(), $1.size()); - %} - - %typemap(directorin) string, const string& %{ - ZVAL_STRINGL($input, $1.data(), $1.size()); - %} - - %typemap(out, phptype="string") const string & %{ - ZVAL_STRINGL($result, $1->data(), $1->size()); - %} - - %typemap(throws) string, const string& %{ - zend_throw_exception(NULL, $1.c_str(), 0); - goto fail; - %} - - %typemap(in, phptype="string") 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, phptype="string") 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) %{ - 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/mac/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i deleted file mode 100755 index 1bf31595..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(&$input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $descriptor(TYPE *) of $symname"); - return; - } else { - zend_type_error("Expected $descriptor(TYPE *) for argument $argnum of $symname"); - return; - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - SWIG_SetPointerZval($result, (void *)$1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(&$input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/php/std_vector.i b/mac/bin/swig/share/swig/4.1.0/php/std_vector.i deleted file mode 100755 index 382b37ca..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/std_vector.i +++ /dev/null @@ -1,114 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/php/swigmove.i b/mac/bin/swig/share/swig/4.1.0/php/swigmove.i deleted file mode 100755 index b16a3c54..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/swigmove.i +++ /dev/null @@ -1,24 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(&$input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $&1_descriptor of $symname"); - return; - } else { - zend_type_error("Expected $&1_descriptor for argument $argnum of $symname"); - return; - } - } - if (!argp) { - zend_type_error("Invalid null reference for argument $argnum of $&1_descriptor of $symname"); - return; - } - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/mac/bin/swig/share/swig/4.1.0/php/typemaps.i b/mac/bin/swig/share/swig/4.1.0/php/typemaps.i deleted file mode 100755 index 718469ed..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/typemaps.i +++ /dev/null @@ -1,295 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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, phptype="bool") 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, phptype="float") 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, phptype="float") 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, phptype="float") 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, phptype="int") 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, phptype="int") 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 { - ZVAL_NEW_STR(&o, zend_strpprintf(0, "%lld", (long long)temp$argnum)); - } - t_output_helper($result, &o); -} -%typemap(in, phptype="int|string") 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 { - ZVAL_NEW_STR(&$arg, zend_strpprintf(0, "%lld", (long long)lvalue$argnum)); - } -%} -%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 { - ZVAL_NEW_STR($result, zend_strpprintf(0, "%lld", (long long)(*arg$argnum))); - } -%} - -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 { - ZVAL_NEW_STR(&o, zend_strpprintf(0, "%llu", (unsigned long long)temp$argnum)); - } - t_output_helper($result, &o); -} -%typemap(in, phptype="int|string") 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 { - ZVAL_NEW_STR((*$arg), zend_strpprintf(0, "%llu", (unsigned long long)lvalue$argnum)); - } -%} -%typemap(argout) unsigned long long &OUTPUT -%{ - if (*arg$argnum <= (unsigned long long)LONG_MAX) { - ZVAL_LONG($result, (long)(*arg$argnum)); - } else { - ZVAL_NEW_STR($result, zend_strpprintf(0, "%llu", (unsigned long long)(*arg$argnum))); - } -%} - -%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, phptype="string") 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,phptype="?SWIGTYPE") 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 */ - zend_type_error("Expected reference or NULL for argument $arg of $symname"); - return; - } - } - 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/mac/bin/swig/share/swig/4.1.0/php/utils.i b/mac/bin/swig/share/swig/4.1.0/php/utils.i deleted file mode 100755 index 33db942a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/php/utils.i +++ /dev/null @@ -1,115 +0,0 @@ - -%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 == '\0' && !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 == '\0' && !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, PHP_TYPE, CONVERT_IN ) -%typemap(in, phptype=PHP_TYPE) TYPE -%{ - CONVERT_IN($1,$1_ltype,$input); -%} -%typemap(in, phptype=PHP_TYPE) const TYPE & ($*1_ltype temp) -%{ - CONVERT_IN(temp,$*1_ltype,$input); - $1 = &temp; -%} -%typemap(directorout) TYPE -%{ - CONVERT_IN($result, $1_ltype, *$input); -%} -%typemap(directorout) const TYPE & -%{ - $*1_ltype swig_val; - CONVERT_IN(swig_val, $*1_ltype, *$input); - $1_ltype temp = new $*1_ltype(swig_val); - swig_acquire_ownership(temp); - $result = temp; -%} -%typemap(directorfree) const TYPE & -%{ - if (director) { - director->swig_release_ownership(%as_voidptr($input)); - } -%} -%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/mac/bin/swig/share/swig/4.1.0/pointer.i b/mac/bin/swig/share/swig/4.1.0/pointer.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/python/Makefile.in b/mac/bin/swig/share/swig/4.1.0/python/Makefile.in deleted file mode 100755 index 27c38444..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/Makefile.in +++ /dev/null @@ -1,119 +0,0 @@ -# --------------------------------------------------------------- -# SWIG Python Makefile -# -# This file can be used to build various Python extensions with SWIG. -# By default this file is set up for dynamic loading, but it can -# be easily customized for static extensions by modifying various -# portions of the file. -# -# SRCS = C source files -# CXXSRCS = C++ source files -# OBJCSRCS = Objective-C source files -# OBJS = Additional .o files (compiled previously) -# INTERFACE = SWIG interface file -# TARGET = Name of target module or executable -# -# Many portions of this file were created by the SWIG configure -# script and should already reflect your machine. -#---------------------------------------------------------------- - -SRCS = -CXXSRCS = -OBJCSRCS = -OBJS = -INTERFACE = -WRAPFILE = $(INTERFACE:.i=_wrap.c) -WRAPOBJ = $(INTERFACE:.i=_wrap.o) -TARGET = module@SO@ # Use this kind of target for dynamic loading -#TARGET = mypython # Use this target for static linking - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -CC = @CC@ -CXX = @CXX@ -OBJC = @CC@ -Wno-import # -Wno-import needed for gcc -CFLAGS = -INCLUDES = -LIBS = - -# SWIG Options -# SWIG = location of the SWIG executable -# SWIGOPT = SWIG compiler options -# SWIGCC = Compiler used to compile the wrapper file - -SWIG = $(exec_prefix)/bin/swig -SWIGOPT = -python -SWIGCC = $(CC) - -# SWIG Library files. Uncomment if rebuilding the Python interpreter -#SWIGLIBS = -lembed.i - -# Rules for creating .o files from source. - -COBJS = $(SRCS:.c=.o) -CXXOBJS = $(CXXSRCS:.cxx=.o) -OBJCOBJS = $(OBJCSRCS:.m=.o) -ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) - -# Command that will be used to build the final extension. -BUILD = $(SWIGCC) - -# Uncomment the following if you are using dynamic loading -CCSHARED = @CCSHARED@ -BUILD = @LDSHARED@ - -# Uncomment the following if you are using dynamic loading with C++ and -# need to provide additional link libraries (this is not always required). - -#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ - -L/usr/local/lib -lg++ -lstdc++ -lgcc - -# Python installation - -PY_INCLUDE = -DHAVE_CONFIG_H @PYINCLUDE@ -PY_LIB = @PYLIB@ - -# Build libraries (needed for static builds) - -LIBM = @LIBM@ -LIBC = @LIBC@ -SYSLIBS = $(LIBM) $(LIBC) @LIBS@ - -# Build options - -BUILD_LIBS = $(LIBS) # Dynamic loading - -# Compilation rules for non-SWIG components - -.SUFFIXES: .c .cxx .m - -.c.o: - $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - -.cxx.o: - $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< - -.m.o: - $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - - -# ---------------------------------------------------------------------- -# Rules for building the extension -# ---------------------------------------------------------------------- - -all: $(TARGET) - -# Convert the wrapper file into an object file - -$(WRAPOBJ) : $(WRAPFILE) - $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDES) $(PY_INCLUDE) - -$(WRAPFILE) : $(INTERFACE) - $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) - -$(TARGET): $(WRAPOBJ) $(ALLOBJS) - $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) - -clean: - rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/mac/bin/swig/share/swig/4.1.0/python/README b/mac/bin/swig/share/swig/4.1.0/python/README deleted file mode 100755 index 70968e7d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/README +++ /dev/null @@ -1,103 +0,0 @@ -/* ----------------------------------------------------------------------------- - * - * User interfaces: include these ones as needed - * - * ----------------------------------------------------------------------------- */ - -/* ----------------------------------------------------------------------------- - * Special types and user helpers - * ----------------------------------------------------------------------------- */ - -argcargv.i Handler for (int argc, char **argv) -attribute.i Convert a pair of set/get methods into a "native" python attribute -ccomplex.i C99 complex type -complex.i C99 or C++ complex type -cstring.i Various forms of C character string handling -cwstring.i Various forms of C wchar_t string handling -embed.i embedding the Python interpreter in something else -file.i FILE C type -implicit.i Allow the use of implicit C++ constructors -wchar.i wchar_t C type - -/* ----------------------------------------------------------------------------- - * C++ STD + STL - * ----------------------------------------------------------------------------- */ - -std_alloc.i allocator -std_basic_string.i basic string -std_char_traits.i char traits -std_complex.i complex -std_deque.i deque -std_except.i exceptions -std_ios.i ios -std_iostream.i istream/ostream -std_list.i list -std_map.i map -std_multimap.i multimap -std_multiset.i multiset -std_pair.i pair -std_set.i set -std_sstream.i string stream -std_streambuf.i streambuf -std_string.i string -std_vector.i vector -std_wios.i wios -std_wiostream.i wistream/wostream -std_wsstream.i wstring stream -std_wstreambuf.i wstreambuf -std_wstring.i wstring - - - -/* ----------------------------------------------------------------------------- -/* - * Implementation files: don't look at them unless you are really drunk - * - * ----------------------------------------------------------------------------- */ - -/* ----------------------------------------------------------------------------- - * Basic files - * ----------------------------------------------------------------------------- */ - -python.swg Main language file, it just includes what is needed. -pyuserdir.swg User visible directives (%pythonnondynamic, etc) -pymacros.swg Internal macros used for typemaps -pyfragments.swg Allow the user to overload the default fragments -pyopers.swg Python operations (+=, *=, etc) -pythonkw.swg Python keywords and special names -pyinit.swg Python Init method - -/* ----------------------------------------------------------------------------- - * The runtime part - * ----------------------------------------------------------------------------- */ - -pyruntime.swg Main runtime file definition -pyapi.swg SWIG/Python API declarations -pyrun.swg Python run-time code - -/* ----------------------------------------------------------------------------- - * Internal typemap specializations - * ----------------------------------------------------------------------------- */ - -pyswigtype.swg SWIGTYPE -pystrings.swg Char strings (char *) -pywstrings.swg Wchar Strings (wchar_t *) -pyprimtypes.swg Primitive types (shot,int,double,etc) -pycomplex.swg PyComplex and helper for C/C++ complex types -pydocs.swg Typemaps documentation - -/* ----------------------------------------------------------------------------- - * C++ STD + STL - * ----------------------------------------------------------------------------- */ - -pycontainer.swg python container iterators -std_common.i general common code for the STD/STL implementation -std_container.i general common code for the STD/STL containers - - -/*----------------------------------------------------------------------------- - * Backward compatibility and deprecated - * ----------------------------------------------------------------------------- */ - -std_vectora.i vector + allocator (allocators are now supported in STD/STL) -typemaps.i old in/out typemaps (doesn't need to be included) diff --git a/mac/bin/swig/share/swig/4.1.0/python/argcargv.i b/mac/bin/swig/share/swig/4.1.0/python/argcargv.i deleted file mode 100755 index 419803a8..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/argcargv.i +++ /dev/null @@ -1,89 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%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/mac/bin/swig/share/swig/4.1.0/python/attribute.i b/mac/bin/swig/share/swig/4.1.0/python/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i deleted file mode 100755 index bfd8787c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i +++ /dev/null @@ -1,411 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/mac/bin/swig/share/swig/4.1.0/python/builtin.swg b/mac/bin/swig/share/swig/4.1.0/python/builtin.swg deleted file mode 100755 index 5cff6835..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/builtin.swg +++ /dev/null @@ -1,764 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -SWIGINTERN Py_hash_t -SwigPyObject_hash(PyObject *obj) { - SwigPyObject *sobj = (SwigPyObject *)obj; - void *ptr = sobj->ptr; -#if PY_VERSION_HEX < 0x03020000 - return (Py_hash_t)(Py_ssize_t)ptr; -#else - return (Py_hash_t)ptr; -#endif -} - -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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /* tp_print */ -#else - (Py_ssize_t)0, /* tp_vectorcall_offset */ -#endif - 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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /* tp_print */ -#else - (Py_ssize_t)0, /* tp_vectorcall_offset */ -#endif - 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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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 >= 0x030900a4 - Py_SET_TYPE(type, metatype); -#else - Py_TYPE(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/mac/bin/swig/share/swig/4.1.0/python/carrays.i b/mac/bin/swig/share/swig/4.1.0/python/carrays.i deleted file mode 100755 index 74b2be9c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/carrays.i +++ /dev/null @@ -1,13 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/python/ccomplex.i b/mac/bin/swig/share/swig/4.1.0/python/ccomplex.i deleted file mode 100755 index b99f96a4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/ccomplex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ccomplex.i - * - * C complex typemaps - * ISO C99: 7.3 Complex arithmetic - * ----------------------------------------------------------------------------- */ - - -%include - -%{ -#include -%} - -#define complex _Complex - -/* 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/mac/bin/swig/share/swig/4.1.0/python/cdata.i b/mac/bin/swig/share/swig/4.1.0/python/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/cmalloc.i b/mac/bin/swig/share/swig/4.1.0/python/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/complex.i b/mac/bin/swig/share/swig/4.1.0/python/complex.i deleted file mode 100755 index 4c3b3c5e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/complex.i +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef __cplusplus -%include -#else -%include -#endif - diff --git a/mac/bin/swig/share/swig/4.1.0/python/cpointer.i b/mac/bin/swig/share/swig/4.1.0/python/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/cstring.i b/mac/bin/swig/share/swig/4.1.0/python/cstring.i deleted file mode 100755 index ede9c596..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/cwstring.i b/mac/bin/swig/share/swig/4.1.0/python/cwstring.i deleted file mode 100755 index 2824d9c7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/cwstring.i +++ /dev/null @@ -1,3 +0,0 @@ -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/python/director.swg b/mac/bin/swig/share/swig/4.1.0/python/director.swg deleted file mode 100755 index 9694c623..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/director.swg +++ /dev/null @@ -1,389 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - } - }; - - /* 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/mac/bin/swig/share/swig/4.1.0/python/embed.i b/mac/bin/swig/share/swig/4.1.0/python/embed.i deleted file mode 100755 index 3fc2d14e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/embed.i +++ /dev/null @@ -1,120 +0,0 @@ -// -// 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 %{ -#if !defined(PY_SSIZE_T_CLEAN) && !defined(SWIG_NO_PY_SSIZE_T_CLEAN) -#define PY_SSIZE_T_CLEAN -#endif - -#if __GNUC__ >= 7 -#pragma GCC diagnostic push -#if defined(__cplusplus) && __cplusplus >=201703L -#pragma GCC diagnostic ignored "-Wregister" /* For python-2.7 headers that use register */ -#endif -#endif - -#include - -#if __GNUC__ >= 7 -#pragma GCC diagnostic pop -#endif - -#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/mac/bin/swig/share/swig/4.1.0/python/exception.i b/mac/bin/swig/share/swig/4.1.0/python/exception.i deleted file mode 100755 index bb0b15c9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/exception.i +++ /dev/null @@ -1,6 +0,0 @@ -%include - - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) -} diff --git a/mac/bin/swig/share/swig/4.1.0/python/factory.i b/mac/bin/swig/share/swig/4.1.0/python/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/file.i b/mac/bin/swig/share/swig/4.1.0/python/file.i deleted file mode 100755 index 359c34d2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/file.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/python/implicit.i b/mac/bin/swig/share/swig/4.1.0/python/implicit.i deleted file mode 100755 index 152c2b05..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/implicit.i +++ /dev/null @@ -1,7 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/python/pyabc.i b/mac/bin/swig/share/swig/4.1.0/python/pyabc.i deleted file mode 100755 index cae1e703..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyabc.i +++ /dev/null @@ -1,14 +0,0 @@ -%define %pythonabc(Type, Abc) - %feature("python:abc", Abc) Type; -%enddef -%pythoncode %{if _swig_python_version_info[0:2] >= (3, 3): - import collections.abc -else: - import collections -%} -%pythonabc(std::vector, "collections.abc.MutableSequence if _swig_python_version_info >= (3, 3) else collections.MutableSequence"); -%pythonabc(std::list, "collections.abc.MutableSequence if _swig_python_version_info >= (3, 3) else collections.MutableSequence"); -%pythonabc(std::map, "collections.abc.MutableMapping if _swig_python_version_info >= (3, 3) else collections.MutableMapping"); -%pythonabc(std::multimap, "collections.abc.MutableMapping if _swig_python_version_info >= (3, 3) else collections.MutableMapping"); -%pythonabc(std::set, "collections.abc.MutableSet if _swig_python_version_info >= (3, 3) else collections.MutableSet"); -%pythonabc(std::multiset, "collections.abc.MutableSet if _swig_python_version_info >= (3, 3) else collections.MutableSet"); diff --git a/mac/bin/swig/share/swig/4.1.0/python/pyapi.swg b/mac/bin/swig/share/swig/4.1.0/python/pyapi.swg deleted file mode 100755 index 19e6979b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyapi.swg +++ /dev/null @@ -1,30 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/python/pybackward.swg b/mac/bin/swig/share/swig/4.1.0/python/pybackward.swg deleted file mode 100755 index 8305fc78..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pybackward.swg +++ /dev/null @@ -1,45 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/pybuffer.i b/mac/bin/swig/share/swig/4.1.0/python/pybuffer.i deleted file mode 100755 index 2fdaa6d6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pybuffer.i +++ /dev/null @@ -1,119 +0,0 @@ -/* 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/mac/bin/swig/share/swig/4.1.0/python/pycomplex.swg b/mac/bin/swig/share/swig/4.1.0/python/pycomplex.swg deleted file mode 100755 index 28c96361..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pycomplex.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* - 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.0f); - 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/mac/bin/swig/share/swig/4.1.0/python/pycontainer.swg b/mac/bin/swig/share/swig/4.1.0/python/pycontainer.swg deleted file mode 100755 index d6fdff08..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pycontainer.swg +++ /dev/null @@ -1,1082 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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_SLICEOBJECT PyObject -#else -# define SWIGPY_SLICEOBJECT PySliceObject -#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) { - return PyObject_SetAttr(child, container_owner_attribute(), owner) != -1; - } - 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() 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)) - 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__(SWIGPY_SLICEOBJECT *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) SWIGPY_SLICEOBJECT* { - if (!PySlice_Check($input)) { - %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); - } - $1 = (SWIGPY_SLICEOBJECT *) $input; - } - %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) SWIGPY_SLICEOBJECT* { - $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__(SWIGPY_SLICEOBJECT *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(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__(SWIGPY_SLICEOBJECT *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(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__(SWIGPY_SLICEOBJECT *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(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__(SWIGPY_SLICEOBJECT *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(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/mac/bin/swig/share/swig/4.1.0/python/pydocs.swg b/mac/bin/swig/share/swig/4.1.0/python/pydocs.swg deleted file mode 100755 index 5a25423d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pydocs.swg +++ /dev/null @@ -1,45 +0,0 @@ - -// 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/mac/bin/swig/share/swig/4.1.0/python/pyerrors.swg b/mac/bin/swig/share/swig/4.1.0/python/pyerrors.swg deleted file mode 100755 index 10b694cd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyerrors.swg +++ /dev/null @@ -1,107 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - 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 - if (newvalue) { - Py_XDECREF(value); - PyErr_Restore(type, newvalue, traceback); - } else { - PyErr_Restore(type, value, traceback); - } - } else { - /* Raise TypeError using given message */ - PyErr_SetString(PyExc_TypeError, message); - } -} diff --git a/mac/bin/swig/share/swig/4.1.0/python/pyfragments.swg b/mac/bin/swig/share/swig/4.1.0/python/pyfragments.swg deleted file mode 100755 index 535a45bd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/mac/bin/swig/share/swig/4.1.0/python/pyhead.swg b/mac/bin/swig/share/swig/4.1.0/python/pyhead.swg deleted file mode 100755 index 6f37160b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyhead.swg +++ /dev/null @@ -1,75 +0,0 @@ -/* 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 _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 - - -SWIGINTERN char* -SWIG_Python_str_AsChar(PyObject *str) -{ -#if PY_VERSION_HEX >= 0x03030000 - return (char *)PyUnicode_AsUTF8(str); -#else - return PyString_AsString(str); -#endif -} - -/* Was useful for Python 3.0.x-3.2.x - now provided only for compatibility - * with any uses in user interface files. */ -#define SWIG_Python_str_DelForPy3(x) - - -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 -#ifdef SWIGPYTHON_BUILTIN -# define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule_builtin" SWIG_TYPE_TABLE_NAME -#else -# define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule" SWIG_TYPE_TABLE_NAME -#endif -# define SWIGPY_CAPSULE_NAME ("swig_runtime_data" SWIG_RUNTIME_VERSION "." SWIGPY_CAPSULE_ATTR_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/mac/bin/swig/share/swig/4.1.0/python/pyinit.swg b/mac/bin/swig/share/swig/4.1.0/python/pyinit.swg deleted file mode 100755 index 6833b455..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyinit.swg +++ /dev/null @@ -1,325 +0,0 @@ -/* ------------------------------------------------------------ - * The start of the Python initialization function - * ------------------------------------------------------------ */ - -%insert(init) "swiginit.swg" - -#if defined(SWIGPYTHON_BUILTIN) -%fragment(""); // For offsetof -#endif - -#if defined SWIGPYTHON_FASTPROXY && !defined SWIGPYTHON_BUILTIN - -%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 -%} - -#endif - -%init %{ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------------------------------------------------------- - * 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); - } - } -} - -/* ----------------------------------------------------------------------------- - * Patch %callback methods' docstrings to hold the callback ptrs - * -----------------------------------------------------------------------------*/ - -SWIGINTERN void -SWIG_Python_FixMethods(PyMethodDef *methods, const 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; - const 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; - } - } - } - } - } -} - -#ifdef __cplusplus -} -#endif - -%} - -#if defined SWIGPYTHON_FASTPROXY && !defined SWIGPYTHON_BUILTIN - -%init %{ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------------------------------------------------------- - * 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 - -%} - -#endif - -%init %{ - -/* -----------------------------------------------------------------------------* - * 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/mac/bin/swig/share/swig/4.1.0/python/pyiterators.swg b/mac/bin/swig/share/swig/4.1.0/python/pyiterators.swg deleted file mode 100755 index cb15e35c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyiterators.swg +++ /dev/null @@ -1,458 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/python/pymacros.swg b/mac/bin/swig/share/swig/4.1.0/python/pymacros.swg deleted file mode 100755 index ab7bace5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pymacros.swg +++ /dev/null @@ -1,4 +0,0 @@ -%include - - - diff --git a/mac/bin/swig/share/swig/4.1.0/python/pyname_compat.i b/mac/bin/swig/share/swig/4.1.0/python/pyname_compat.i deleted file mode 100755 index a9630dbe..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyname_compat.i +++ /dev/null @@ -1,85 +0,0 @@ -/* -* 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/mac/bin/swig/share/swig/4.1.0/python/pyopers.swg b/mac/bin/swig/share/swig/4.1.0/python/pyopers.swg deleted file mode 100755 index fd2fcc58..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyopers.swg +++ /dev/null @@ -1,264 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg b/mac/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg deleted file mode 100755 index 6a01af17..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg +++ /dev/null @@ -1,353 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/python/pyrun.swg b/mac/bin/swig/share/swig/4.1.0/python/pyrun.swg deleted file mode 100755 index 6b119be1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyrun.swg +++ /dev/null @@ -1,1913 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 < 0x03030000 -# error "This version of SWIG only supports Python 3 >= 3.3" -#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); - if (result) { - PyList_SET_ITEM(result, 0, o2); - } else { - Py_DECREF(obj); - return 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; - } - } -} - -SWIGINTERN int -SWIG_Python_CheckNoKeywords(PyObject *kwargs, const char *name) { - int no_kwargs = 1; - if (kwargs) { - assert(PyDict_Check(kwargs)); - if (PyDict_Size(kwargs) > 0) { - PyErr_Format(PyExc_TypeError, "%s() does not take keyword arguments", name); - no_kwargs = 0; - } - } - return no_kwargs; -} - -/* A functor is a function object with one single object argument */ -#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); - -/* - 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 - -#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(PyObject *SWIGUNUSEDPARM(v)) { -#if PY_VERSION_HEX >= 0x03000000 - return PyUnicode_InternFromString(""); -#else - return PyString_FromString(""); -#endif -} - -SWIGINTERN PyObject * -swig_varlink_str(PyObject *o) { - swig_varlinkobject *v = (swig_varlinkobject *) o; -#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(PyObject *o) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - swig_globalvar *var = v->vars; - while (var) { - swig_globalvar *n = var->next; - free(var->name); - free(var); - var = n; - } -} - -SWIGINTERN PyObject * -swig_varlink_getattr(PyObject *o, char *n) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - 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(PyObject *o, char *n, PyObject *p) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - 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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /*tp_print*/ -#else - (Py_ssize_t)0, /*tp_vectorcall_offset*/ -#endif - (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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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; -} - - -static PyObject *Swig_Globals_global = NULL; - -SWIGINTERN PyObject * -SWIG_globals(void) { - if (Swig_Globals_global == NULL) { - Swig_Globals_global = SWIG_newvarlink(); - } - return Swig_Globals_global; -} - -#ifdef __cplusplus -} -#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; - Py_INCREF(obj); - data->newargs = obj; - } else { - data->newraw = PyObject_GetAttrString(data->klass, "__new__"); - if (data->newraw) { - data->newargs = PyTuple_New(1); - if (data->newargs) { - Py_INCREF(obj); - PyTuple_SET_ITEM(data->newargs, 0, obj); - } else { - Py_DECREF(data->newraw); - Py_DECREF(data->klass); - free(data); - return 0; - } - } else { - Py_INCREF(obj); - data->newargs = obj; - } - } - /* 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) { - data->delargs = !(PyCFunction_GET_FLAGS(data->destroy) & METH_O); - } else { - data->delargs = 0; - } - data->implicitconv = 0; - data->pytype = 0; - return data; - } -} - -SWIGRUNTIME void -SwigPyClientData_Del(SwigPyClientData *data) -{ - Py_XDECREF(data->klass); - Py_XDECREF(data->newraw); - Py_XDECREF(data->newargs); - Py_XDECREF(data->destroy); - free(data); -} - -/* =============== 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_XINCREF(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) { - PyObject *val = SwigPyObject_long(v); - if (val) { - PyObject *ofmt; - PyTuple_SET_ITEM(args, 0, val); - 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 (repr && v->next) { - PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); - if (nrep) { -# 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 - } else { - Py_DecRef(repr); - repr = NULL; - } - } - 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); - -static PyObject* Swig_Capsule_global = NULL; - -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); - if (tmp) { - res = SWIG_Python_CallFunctor(destroy, tmp); - } else { - res = 0; - } - Py_XDECREF(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(Swig_Capsule_global); - } - Py_XDECREF(next); -#ifdef SWIGPYTHON_BUILTIN - Py_XDECREF(sobj->dict); -#endif - 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; - } - ((SwigPyObject *)next)->next = sobj->next; - 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)) { - Py_DECREF(SwigPyObject_acquire(v,args)); - } else { - Py_DECREF(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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /*tp_print*/ -#else - (Py_ssize_t)0, /*tp_vectorcall_offset*/ -#endif - (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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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; -#ifdef SWIGPYTHON_BUILTIN - sobj->dict = 0; -#endif - if (own == SWIG_POINTER_OWN) { - /* Obtain a reference to the Python capsule wrapping the module information, so that the - * module information is correctly destroyed after all SWIG python objects have been freed - * by the GC (and corresponding destructors invoked) */ - Py_XINCREF(Swig_Capsule_global); - } - } - 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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /*tp_print*/ -#else - (Py_ssize_t)0, /*tp_vectorcall_offset*/ -#endif - (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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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 (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !sobj->own) { - res = SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (own) - *own = *own | sobj->own; - if (flags & SWIG_POINTER_DISOWN) { - sobj->own = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - sobj->ptr = 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; - } - if (dict) { - PyDict_SetItem(dict, SWIG_This(), swig_this); - } else{ - Py_DECREF(inst); - inst = 0; - } - } -#else - if (PyObject_SetAttr(inst, SWIG_This(), swig_this) == -1) { - Py_DECREF(inst); - inst = 0; - } -#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) { - if (PyObject_SetAttr(inst, SWIG_This(), swig_this) == -1) { - Py_DECREF(inst); - inst = 0; - } else { - PyType_Modified(Py_TYPE(inst)); - } - } - } - 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 int -SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) -{ -#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; - } - if (dict) { - return PyDict_SetItem(dict, SWIG_This(), swig_this); - } else{ - return -1; - } - } -#endif - return PyObject_SetAttr(inst, SWIG_This(), swig_this); -} - - -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) { - Py_DECREF(SwigPyObject_append((PyObject*) sthis, obj[1])); - } else { - if (SWIG_Python_SetSwigThis(obj[0], obj[1]) != 0) - return NULL; - } - 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 - if (newobj) { - 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 - -static PyObject *Swig_TypeCache_global = NULL; - -/* The python cached type query */ -SWIGRUNTIME PyObject * -SWIG_Python_TypeCache(void) { - if (Swig_TypeCache_global == NULL) { - Swig_TypeCache_global = PyDict_New(); - } - return Swig_TypeCache_global; -} - -SWIGRUNTIME swig_module_info * -SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { -#ifdef SWIG_LINK_RUNTIME - static void *type_pointer = (void *)0; - /* first check if module already created */ - if (!type_pointer) { - type_pointer = SWIG_ReturnGlobalTypeList((void *)0); - } -#else - void *type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); - if (PyErr_Occurred()) { - PyErr_Clear(); - type_pointer = (void *)0; - } -#endif - return (swig_module_info *) type_pointer; -} - - -static int interpreter_counter = 0; // how many (sub-)interpreters are using swig_module's types - -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; - if (--interpreter_counter != 0) // another sub-interpreter may still be using the swig_module's types - return; - for (i =0; i < swig_module->size; ++i) { - swig_type_info *ty = types[i]; - if (ty->owndata) { - SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; - ty->clientdata = 0; - if (data) SwigPyClientData_Del(data); - } - } - Py_DECREF(SWIG_This()); - Swig_This_global = NULL; - Py_DECREF(SWIG_globals()); - Swig_Globals_global = NULL; - Py_DECREF(SWIG_Python_TypeCache()); - Swig_TypeCache_global = NULL; - Swig_Capsule_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) { - if (PyModule_AddObject(module, SWIGPY_CAPSULE_ATTR_NAME, pointer) == 0) { - ++interpreter_counter; - Swig_Capsule_global = pointer; - } else { - Py_DECREF(pointer); - } - } else { - Py_XDECREF(pointer); - } -} - -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); - if (obj) { - 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); - } - 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); - } 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(); - } - 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) - goto done; - } - 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/mac/bin/swig/share/swig/4.1.0/python/pyruntime.swg b/mac/bin/swig/share/swig/4.1.0/python/pyruntime.swg deleted file mode 100755 index 1d028ada..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyruntime.swg +++ /dev/null @@ -1,49 +0,0 @@ -%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(PY_SSIZE_T_CLEAN) && !defined(SWIG_NO_PY_SSIZE_T_CLEAN) -#define PY_SSIZE_T_CLEAN -#endif - -#if __GNUC__ >= 7 -#pragma GCC diagnostic push -#if defined(__cplusplus) && __cplusplus >=201703L -#pragma GCC diagnostic ignored "-Wregister" /* For python-2.7 headers that use register */ -#endif -#endif - -#if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) -/* Use debug wrappers with the Python release dll */ - -#if defined(_MSC_VER) && _MSC_VER >= 1929 -/* Workaround compilation errors when redefining _DEBUG in MSVC 2019 version 16.10 and later - * See https://github.com/swig/swig/issues/2090 */ -# include -#endif - -# undef _DEBUG -# include -# define _DEBUG 1 -#else -# include -#endif - -#if __GNUC__ >= 7 -#pragma GCC diagnostic pop -#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/mac/bin/swig/share/swig/4.1.0/python/pystdcommon.swg b/mac/bin/swig/share/swig/4.1.0/python/pystdcommon.swg deleted file mode 100755 index afa71350..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pystdcommon.swg +++ /dev/null @@ -1,265 +0,0 @@ -%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) { - int res = SWIG_ERROR; - swig_type_info *descriptor = type_info(); - if (val) { - Type *p = 0; - int newmem = 0; - res = descriptor ? SWIG_ConvertPtrAndOwn(obj, (void **)&p, descriptor, 0, &newmem) : SWIG_ERROR; - if (SWIG_IsOK(res)) { - if (newmem & SWIG_CAST_NEW_MEMORY) { - res |= SWIG_NEWOBJMASK; - } - *val = p; - } - } else { - res = descriptor ? SWIG_ConvertPtr(obj, 0, descriptor, 0) : SWIG_ERROR; - } - 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/mac/bin/swig/share/swig/4.1.0/python/pystrings.swg b/mac/bin/swig/share/swig/4.1.0/python/pystrings.swg deleted file mode 100755 index 64ed685e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pystrings.swg +++ /dev/null @@ -1,139 +0,0 @@ -/* ------------------------------------------------------------ - * 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 - if (PyBytes_AsStringAndSize(obj, &cstr, &len) == -1) - return SWIG_TypeError; -%#else - if (PyString_AsStringAndSize(obj, &cstr, &len) == -1) - return SWIG_TypeError; -%#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/mac/bin/swig/share/swig/4.1.0/python/python.swg b/mac/bin/swig/share/swig/4.1.0/python/python.swg deleted file mode 100755 index 769d9e10..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/python.swg +++ /dev/null @@ -1,59 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/python/pythonkw.swg b/mac/bin/swig/share/swig/4.1.0/python/pythonkw.swg deleted file mode 100755 index a2103452..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pythonkw.swg +++ /dev/null @@ -1,140 +0,0 @@ -/* - Warnings for Python keywords, built-in names and bad names. -*/ - -#define PYTHONKW(x) %keywordwarn("'" `x` "' is a python keyword", 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/mac/bin/swig/share/swig/4.1.0/python/pythreads.swg b/mac/bin/swig/share/swig/4.1.0/python/pythreads.swg deleted file mode 100755 index 8d6c5ab4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pythreads.swg +++ /dev/null @@ -1,68 +0,0 @@ -#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 */ -# if !defined(SWIG_PYTHON_INITIALIZE_THREADS) -# if PY_VERSION_HEX < 0x03070000 -# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() -# else -# define SWIG_PYTHON_INITIALIZE_THREADS -# endif -# 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/mac/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg b/mac/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg deleted file mode 100755 index 32e15803..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg +++ /dev/null @@ -1,8 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/pytypemaps.swg b/mac/bin/swig/share/swig/4.1.0/python/pytypemaps.swg deleted file mode 100755 index 0ae25a68..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pytypemaps.swg +++ /dev/null @@ -1,105 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/python/pyuserdir.swg b/mac/bin/swig/share/swig/4.1.0/python/pyuserdir.swg deleted file mode 100755 index 31107607..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pyuserdir.swg +++ /dev/null @@ -1,242 +0,0 @@ -/* ------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/python/pywstrings.swg b/mac/bin/swig/share/swig/4.1.0/python/pywstrings.swg deleted file mode 100755 index 0e5a78df..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/pywstrings.swg +++ /dev/null @@ -1,85 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/python/std_alloc.i b/mac/bin/swig/share/swig/4.1.0/python/std_alloc.i deleted file mode 100755 index 35dc051b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_array.i b/mac/bin/swig/share/swig/4.1.0/python/std_array.i deleted file mode 100755 index a3de3125..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_array.i +++ /dev/null @@ -1,91 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_basic_string.i b/mac/bin/swig/share/swig/4.1.0/python/std_basic_string.i deleted file mode 100755 index e3f524db..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_basic_string.i +++ /dev/null @@ -1,89 +0,0 @@ -#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/mac/bin/swig/share/swig/4.1.0/python/std_carray.i b/mac/bin/swig/share/swig/4.1.0/python/std_carray.i deleted file mode 100755 index 680d6711..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_carray.i +++ /dev/null @@ -1,54 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/python/std_char_traits.i b/mac/bin/swig/share/swig/4.1.0/python/std_char_traits.i deleted file mode 100755 index bf4e6c47..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_common.i b/mac/bin/swig/share/swig/4.1.0/python/std_common.i deleted file mode 100755 index 60576623..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_common.i +++ /dev/null @@ -1,74 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/python/std_complex.i b/mac/bin/swig/share/swig/4.1.0/python/std_complex.i deleted file mode 100755 index c9c46c4c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_complex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/python/std_container.i b/mac/bin/swig/share/swig/4.1.0/python/std_container.i deleted file mode 100755 index d24c1570..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_deque.i b/mac/bin/swig/share/swig/4.1.0/python/std_deque.i deleted file mode 100755 index d9a17470..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_deque.i +++ /dev/null @@ -1,27 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/std_except.i b/mac/bin/swig/share/swig/4.1.0/python/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_ios.i b/mac/bin/swig/share/swig/4.1.0/python/std_ios.i deleted file mode 100755 index aa6f0994..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_ios.i +++ /dev/null @@ -1,3 +0,0 @@ -%rename(ios_base_in) std::ios_base::in; - -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_iostream.i b/mac/bin/swig/share/swig/4.1.0/python/std_iostream.i deleted file mode 100755 index 43d6b0c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_iostream.i +++ /dev/null @@ -1,8 +0,0 @@ -namespace std -{ -%callback(1) endl; -%callback(1) ends; -%callback(1) flush; -} - -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_list.i b/mac/bin/swig/share/swig/4.1.0/python/std_list.i deleted file mode 100755 index 24d274b4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_list.i +++ /dev/null @@ -1,28 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/std_map.i b/mac/bin/swig/share/swig/4.1.0/python/std_map.i deleted file mode 100755 index e0b7d69d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_map.i +++ /dev/null @@ -1,310 +0,0 @@ -/* - 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 = 0; - 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/mac/bin/swig/share/swig/4.1.0/python/std_multimap.i b/mac/bin/swig/share/swig/4.1.0/python/std_multimap.i deleted file mode 100755 index bbffb6bc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_multimap.i +++ /dev/null @@ -1,93 +0,0 @@ -/* - 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 = 0; - 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/mac/bin/swig/share/swig/4.1.0/python/std_multiset.i b/mac/bin/swig/share/swig/4.1.0/python/std_multiset.i deleted file mode 100755 index ac430334..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_multiset.i +++ /dev/null @@ -1,41 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/std_pair.i b/mac/bin/swig/share/swig/4.1.0/python/std_pair.i deleted file mode 100755 index cf463cb8..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_pair.i +++ /dev/null @@ -1,206 +0,0 @@ -/* - 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 = 0; - 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 = 0; - 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/mac/bin/swig/share/swig/4.1.0/python/std_set.i b/mac/bin/swig/share/swig/4.1.0/python/std_set.i deleted file mode 100755 index 0ef01199..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_set.i +++ /dev/null @@ -1,67 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_sstream.i b/mac/bin/swig/share/swig/4.1.0/python/std_sstream.i deleted file mode 100755 index 6647df8c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_sstream.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_streambuf.i b/mac/bin/swig/share/swig/4.1.0/python/std_streambuf.i deleted file mode 100755 index 44b9bb4d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_streambuf.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_string.i b/mac/bin/swig/share/swig/4.1.0/python/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_unordered_map.i b/mac/bin/swig/share/swig/4.1.0/python/std_unordered_map.i deleted file mode 100755 index 784be4c8..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_unordered_map.i +++ /dev/null @@ -1,296 +0,0 @@ -/* - 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 = 0; - 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/mac/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i b/mac/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i deleted file mode 100755 index bc095ea4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i +++ /dev/null @@ -1,100 +0,0 @@ -/* - 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 = 0; - 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/mac/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i b/mac/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i deleted file mode 100755 index b0f3f096..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i +++ /dev/null @@ -1,48 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/std_unordered_set.i b/mac/bin/swig/share/swig/4.1.0/python/std_unordered_set.i deleted file mode 100755 index 79fca6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_unordered_set.i +++ /dev/null @@ -1,67 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/std_vector.i b/mac/bin/swig/share/swig/4.1.0/python/std_vector.i deleted file mode 100755 index 2ac41a54..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_vector.i +++ /dev/null @@ -1,34 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/std_vectora.i b/mac/bin/swig/share/swig/4.1.0/python/std_vectora.i deleted file mode 100755 index 3f084bd7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_vectora.i +++ /dev/null @@ -1,31 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/python/std_wios.i b/mac/bin/swig/share/swig/4.1.0/python/std_wios.i deleted file mode 100755 index 930a57dd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_wios.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_wiostream.i b/mac/bin/swig/share/swig/4.1.0/python/std_wiostream.i deleted file mode 100755 index d3a5ee78..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_wiostream.i +++ /dev/null @@ -1,10 +0,0 @@ -namespace std -{ -%callback(1) wendl; -%callback(1) wends; -%callback(1) wflush; -} - -%include -%include -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_wsstream.i b/mac/bin/swig/share/swig/4.1.0/python/std_wsstream.i deleted file mode 100755 index 8843f56d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_wsstream.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i b/mac/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i deleted file mode 100755 index c0f09201..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/std_wstring.i b/mac/bin/swig/share/swig/4.1.0/python/std_wstring.i deleted file mode 100755 index ef862813..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/std_wstring.i +++ /dev/null @@ -1,3 +0,0 @@ -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/python/stl.i b/mac/bin/swig/share/swig/4.1.0/python/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/python/swigmove.i b/mac/bin/swig/share/swig/4.1.0/python/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/python/typemaps.i b/mac/bin/swig/share/swig/4.1.0/python/typemaps.i deleted file mode 100755 index dba63dd5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/typemaps.i +++ /dev/null @@ -1,148 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/mac/bin/swig/share/swig/4.1.0/python/wchar.i b/mac/bin/swig/share/swig/4.1.0/python/wchar.i deleted file mode 100755 index 308139a3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/python/wchar.i +++ /dev/null @@ -1,21 +0,0 @@ -#ifdef __cplusplus - -%{ -#include -%} - -#else - -%{ -#include -%} - -#endif - -%types(wchar_t *); -%include - -/* - Enable swig wchar support. -*/ -#define SWIG_WCHAR diff --git a/mac/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i deleted file mode 100755 index 13f041fb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i +++ /dev/null @@ -1,420 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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" -%} - -%typemap(rtype) 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(rtype, TYPE)" - -%typemap(scoercein) 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 > *& - %{ if (inherits($input, "ExternalReference")) $input = slot($input,"ref"); %} - -%typemap(scoerceout) 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 > *& - %{ $result <- if (is.null($result)) $result - else new("$typemap(rtype, TYPE)", ref=$result); %} - - -%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; - - -%enddef diff --git a/mac/bin/swig/share/swig/4.1.0/r/cdata.i b/mac/bin/swig/share/swig/4.1.0/r/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/r/exception.i b/mac/bin/swig/share/swig/4.1.0/r/exception.i deleted file mode 100755 index 39cb0959..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/exception.i +++ /dev/null @@ -1,8 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/r/r.swg b/mac/bin/swig/share/swig/4.1.0/r/r.swg deleted file mode 100755 index c1ce37c3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/r.swg +++ /dev/null @@ -1,281 +0,0 @@ -/* */ - - -%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 - -%runtime %{ -SWIGINTERN void SWIG_R_Raise(SEXP obj, const char *msg) { - Rf_error(Rf_isString(obj) ? CHAR(Rf_asChar(obj)) : msg); -} -%} - -#define %raise(OBJ, TYPE, DESC) SWIG_R_Raise(OBJ, "C/C++ exception of type " TYPE); return R_NilValue - -%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/mac/bin/swig/share/swig/4.1.0/r/rcontainer.swg b/mac/bin/swig/share/swig/4.1.0/r/rcontainer.swg deleted file mode 100755 index 54b31b39..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/rcontainer.swg +++ /dev/null @@ -1,198 +0,0 @@ - -// -// 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/mac/bin/swig/share/swig/4.1.0/r/rfragments.swg b/mac/bin/swig/share/swig/4.1.0/r/rfragments.swg deleted file mode 100755 index c3b40a90..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/rfragments.swg +++ /dev/null @@ -1,191 +0,0 @@ -/* 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/mac/bin/swig/share/swig/4.1.0/r/rkw.swg b/mac/bin/swig/share/swig/4.1.0/r/rkw.swg deleted file mode 100755 index c4af7084..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/rkw.swg +++ /dev/null @@ -1,36 +0,0 @@ -/* - Warnings for R keywords, built-in names and bad names. -*/ - -#define RKW(x) %keywordwarn("'" `x` "' is a R keyword", rename="_%s") `x` -#define RSWIGKW(x) %keywordwarn("'" `x` "' is a SWIG R reserved parameter name", 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/mac/bin/swig/share/swig/4.1.0/r/ropers.swg b/mac/bin/swig/share/swig/4.1.0/r/ropers.swg deleted file mode 100755 index acb99798..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/ropers.swg +++ /dev/null @@ -1,32 +0,0 @@ -#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/mac/bin/swig/share/swig/4.1.0/r/rrun.swg b/mac/bin/swig/share/swig/4.1.0/r/rrun.swg deleted file mode 100755 index 79844612..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/rrun.swg +++ /dev/null @@ -1,420 +0,0 @@ -/* 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 -#include - -#if R_VERSION >= R_Version(2,6,0) -#define VMAXTYPE void * -#else -#define VMAXTYPE char * -#endif - -/* Last error */ -static int SWIG_lasterror_code = 0; -static char SWIG_lasterror_msg[1024]; -SWIGRUNTIME void SWIG_Error(int code, const char *format, ...) { - va_list arg; - SWIG_lasterror_code = code; - va_start(arg, format); - vsnprintf(SWIG_lasterror_msg, sizeof(SWIG_lasterror_msg), format, arg); - va_end(arg); -} - -SWIGRUNTIME const char *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:UnknownError"; -} - -#define SWIG_fail goto fail - -/* - 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/mac/bin/swig/share/swig/4.1.0/r/rstdcommon.swg b/mac/bin/swig/share/swig/4.1.0/r/rstdcommon.swg deleted file mode 100755 index 5f41fd14..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/rstdcommon.swg +++ /dev/null @@ -1,205 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/r/rtype.swg b/mac/bin/swig/share/swig/4.1.0/r/rtype.swg deleted file mode 100755 index a9c06758..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/rtype.swg +++ /dev/null @@ -1,328 +0,0 @@ - -/* 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 *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 *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); %} - -%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/mac/bin/swig/share/swig/4.1.0/r/srun.swg b/mac/bin/swig/share/swig/4.1.0/r/srun.swg deleted file mode 100755 index 2e8eda11..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/srun.swg +++ /dev/null @@ -1,150 +0,0 @@ -# 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/mac/bin/swig/share/swig/4.1.0/r/std_alloc.i b/mac/bin/swig/share/swig/4.1.0/r/std_alloc.i deleted file mode 100755 index 87fa8d4a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include \ No newline at end of file diff --git a/mac/bin/swig/share/swig/4.1.0/r/std_common.i b/mac/bin/swig/share/swig/4.1.0/r/std_common.i deleted file mode 100755 index cda26231..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_common.i +++ /dev/null @@ -1,73 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/r/std_container.i b/mac/bin/swig/share/swig/4.1.0/r/std_container.i deleted file mode 100755 index 076c1c6a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/mac/bin/swig/share/swig/4.1.0/r/std_deque.i b/mac/bin/swig/share/swig/4.1.0/r/std_deque.i deleted file mode 100755 index 0c757ab0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include \ No newline at end of file diff --git a/mac/bin/swig/share/swig/4.1.0/r/std_except.i b/mac/bin/swig/share/swig/4.1.0/r/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/r/std_list.i b/mac/bin/swig/share/swig/4.1.0/r/std_list.i deleted file mode 100755 index d67ec021..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_list.i +++ /dev/null @@ -1,5 +0,0 @@ -#define %swig_list_methods(Type...) %swig_sequence_methods(Type) -#define %swig_list_methods_val(Type...) %swig_sequence_methods_val(Type); - -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/r/std_map.i b/mac/bin/swig/share/swig/4.1.0/r/std_map.i deleted file mode 100755 index 56057514..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_map.i +++ /dev/null @@ -1,5 +0,0 @@ -%fragment("StdMapTraits","header") -%{ -%} - -%include diff --git a/mac/bin/swig/share/swig/4.1.0/r/std_pair.i b/mac/bin/swig/share/swig/4.1.0/r/std_pair.i deleted file mode 100755 index e9803449..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_pair.i +++ /dev/null @@ -1,5 +0,0 @@ -%fragment("StdPairTraits","header") -%{ -%} - -%include diff --git a/mac/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/mac/bin/swig/share/swig/4.1.0/r/std_string.i b/mac/bin/swig/share/swig/4.1.0/r/std_string.i deleted file mode 100755 index dc1378ae..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/r/std_vector.i b/mac/bin/swig/share/swig/4.1.0/r/std_vector.i deleted file mode 100755 index 62478fe6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/std_vector.i +++ /dev/null @@ -1,1105 +0,0 @@ -// 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 > > > { - 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(STRSXP, val->at(pos).size())); - // Fill the R vector - for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) - { - CHARACTER_POINTER(VECTOR_ELT(result, pos))[vpos] = Rf_mkChar(val->at(pos).at(vpos).c_str()); - } - } - 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 > & -%{ %} - -// 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);" - -%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.character)) %} -%typemap("rtype") std::vector > >, std::vector > > *, std::vector > > & "list" -%typemap("scoercein") std::vector< std::vector > >, std::vector > > *, std::vector > > & "$input = lapply($input, as.character);" - -// 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 >&, - 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 - -%apply std::vector< std::basic_string > { std::vector }; -%apply std::vector< std::vector< std::basic_string > > { std::vector< std::vector > }; diff --git a/mac/bin/swig/share/swig/4.1.0/r/stl.i b/mac/bin/swig/share/swig/4.1.0/r/stl.i deleted file mode 100755 index 91da6a2b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/stl.i +++ /dev/null @@ -1,9 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/r/swigmove.i b/mac/bin/swig/share/swig/4.1.0/r/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/r/typemaps.i b/mac/bin/swig/share/swig/4.1.0/r/typemaps.i deleted file mode 100755 index 1f9b9c43..00000000 --- a/mac/bin/swig/share/swig/4.1.0/r/typemaps.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/Makefile.swig b/mac/bin/swig/share/swig/4.1.0/ruby/Makefile.swig deleted file mode 100755 index 648b3213..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/Makefile.swig +++ /dev/null @@ -1,42 +0,0 @@ -# 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/mac/bin/swig/share/swig/4.1.0/ruby/argcargv.i b/mac/bin/swig/share/swig/4.1.0/ruby/argcargv.i deleted file mode 100755 index 24df9c94..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/argcargv.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - - Use it as follows: - - %apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) } - - %inline %{ - - int mainApp(size_t argc, const char **argv) { - return argc; - } - - then from ruby: - - $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/mac/bin/swig/share/swig/4.1.0/ruby/attribute.i b/mac/bin/swig/share/swig/4.1.0/ruby/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i deleted file mode 100755 index 70deae4f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i +++ /dev/null @@ -1,401 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/mac/bin/swig/share/swig/4.1.0/ruby/carrays.i b/mac/bin/swig/share/swig/4.1.0/ruby/carrays.i deleted file mode 100755 index 8f74cd9b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/carrays.i +++ /dev/null @@ -1,6 +0,0 @@ -%define %array_class(TYPE,NAME) - %array_class_wrap(TYPE,NAME,__getitem__,__setitem__) -%enddef - -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/cdata.i b/mac/bin/swig/share/swig/4.1.0/ruby/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/cmalloc.i b/mac/bin/swig/share/swig/4.1.0/ruby/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/cpointer.i b/mac/bin/swig/share/swig/4.1.0/ruby/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/cstring.i b/mac/bin/swig/share/swig/4.1.0/ruby/cstring.i deleted file mode 100755 index ede9c596..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/director.swg b/mac/bin/swig/share/swig/4.1.0/ruby/director.swg deleted file mode 100755 index 9395b818..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/director.swg +++ /dev/null @@ -1,311 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(); - } - }; - - /* 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/mac/bin/swig/share/swig/4.1.0/ruby/embed.i b/mac/bin/swig/share/swig/4.1.0/ruby/embed.i deleted file mode 100755 index 9226ef45..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/embed.i +++ /dev/null @@ -1,16 +0,0 @@ -%wrapper %{ - -#include - -int -main(argc, argv) - int argc; - char **argv; -{ - ruby_init(); - ruby_options(argc, argv); - ruby_run(); - return 0; -} - -%} diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/exception.i b/mac/bin/swig/share/swig/4.1.0/ruby/exception.i deleted file mode 100755 index 1e80d96d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/exception.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg);)) -} diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/extconf.rb b/mac/bin/swig/share/swig/4.1.0/ruby/extconf.rb deleted file mode 100755 index 3bac8ccc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/extconf.rb +++ /dev/null @@ -1,9 +0,0 @@ -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/mac/bin/swig/share/swig/4.1.0/ruby/extra-install.list b/mac/bin/swig/share/swig/4.1.0/ruby/extra-install.list deleted file mode 100755 index 4610fa8f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/extra-install.list +++ /dev/null @@ -1,3 +0,0 @@ -# see top-level Makefile.in -Makefile.swig -extconf.rb diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/factory.i b/mac/bin/swig/share/swig/4.1.0/ruby/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/file.i b/mac/bin/swig/share/swig/4.1.0/ruby/file.i deleted file mode 100755 index f9aaa275..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/file.i +++ /dev/null @@ -1,39 +0,0 @@ -// 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/mac/bin/swig/share/swig/4.1.0/ruby/progargcargv.i b/mac/bin/swig/share/swig/4.1.0/ruby/progargcargv.i deleted file mode 100755 index a2843c34..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/progargcargv.i +++ /dev/null @@ -1,34 +0,0 @@ -/* -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/mac/bin/swig/share/swig/4.1.0/ruby/ruby.swg b/mac/bin/swig/share/swig/4.1.0/ruby/ruby.swg deleted file mode 100755 index d1335974..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/ruby.swg +++ /dev/null @@ -1,72 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg deleted file mode 100755 index e0077572..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg deleted file mode 100755 index 6b0472ce..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg +++ /dev/null @@ -1,105 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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-, "Subtraction 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__, "Subtraction 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/mac/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg deleted file mode 100755 index c43f38fc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg +++ /dev/null @@ -1,404 +0,0 @@ -#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) - { - /* - 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(VALUEFUNC(swig_rescue_funcall), VALUE(&args), - (VALUEFUNC(swig_rescue_swallow)), Qnil); - } - if (ret == Qnil) { - VALUE a = rb_funcall2( _obj, hash_id, 0, 0 ); - VALUE b = rb_funcall2( VALUE(other), hash_id, 0, 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(VALUEFUNC(swig_rescue_funcall), VALUE(&args), - (VALUEFUNC(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(VALUEFUNC(swig_rescue_funcall), VALUE(&args), - (VALUEFUNC(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/mac/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg deleted file mode 100755 index d2aaf6cb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg +++ /dev/null @@ -1,148 +0,0 @@ -/* - 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_funcall2(obj, real_id, 0, 0); -} - -SWIGINTERN VALUE SWIG_Complex_Imaginary(VALUE obj) { - static ID imag_id = rb_intern("imag"); - return rb_funcall2(obj, imag_id, 0, 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.0f); - 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/mac/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg deleted file mode 100755 index 597ae83d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg +++ /dev/null @@ -1,1114 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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() const - { - int s = (int) size(); - for (int i = 0; i < s; ++i) { - VALUE item = rb_ary_entry(_seq, i ); - if (!swig::check(item)) - 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( const 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 (const 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( const 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( const 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( const 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_funcall2( i, id_start, 0, 0 ); - VALUE end = rb_funcall2( i, id_end, 0, 0 ); - bool noend = ( rb_funcall2( i, id_noend, 0, 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 (const 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 (const 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/mac/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg deleted file mode 100755 index 663dddb8..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg +++ /dev/null @@ -1,134 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubydef.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubydef.swg deleted file mode 100755 index 956aaee0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubydef.swg +++ /dev/null @@ -1 +0,0 @@ -/* empty file added for backward comp. */ diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg deleted file mode 100755 index 434544bc..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg +++ /dev/null @@ -1,154 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg deleted file mode 100755 index 3c3b6581..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/mac/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg deleted file mode 100755 index e4d9e214..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg +++ /dev/null @@ -1,185 +0,0 @@ -#if __GNUC__ >= 7 -#pragma GCC diagnostic push -#if defined(__cplusplus) -#pragma GCC diagnostic ignored "-Wregister" -#if __GNUC__ >= 10 -#pragma GCC diagnostic ignored "-Wvolatile" -#if __GNUC__ >= 11 -#pragma GCC diagnostic ignored "-Wdeprecated-enum-enum-conversion" -#endif -#endif -#endif -#endif - -#include - -#if __GNUC__ >= 7 -#pragma GCC diagnostic pop -#endif - -/* 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 - - - -/* - * The following macros are used for providing the correct type of a - * function pointer to the Ruby C API. - * Starting with Ruby 2.7 (corresponding to RB_METHOD_DEFINITION_DECL being - * defined) these macros act transparently due to Ruby's moving away from - * ANYARGS and instead employing strict function signatures. - * - * Note: In case of C (not C++) the macros are transparent even before - * Ruby 2.7 due to the fact that the Ruby C API used function declarators - * with empty parentheses, which allows for an unspecified number of - * arguments. - * - * PROTECTFUNC(f) is used for the function pointer argument of the Ruby - * C API function rb_protect(). - * - * VALUEFUNC(f) is used for the function pointer argument(s) of Ruby C API - * functions like rb_define_method() and rb_define_singleton_method(). - * - * VOIDFUNC(f) is 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 Ruby C API functions like Data_Wrap_Struct() - * and Data_Make_Struct(). - * - * SWIG_RUBY_VOID_ANYARGS_FUNC(f) is used for the function pointer - * argument(s) of Ruby C API functions like rb_define_virtual_variable(). - * - * SWIG_RUBY_INT_ANYARGS_FUNC(f) is used for the function pointer - * argument(s) of Ruby C API functions like st_foreach(). - */ -#if defined(__cplusplus) && !defined(RB_METHOD_DEFINITION_DECL) -# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f) -# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f) -# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) -# define SWIG_RUBY_VOID_ANYARGS_FUNC(f) ((void (*)(ANYARGS))(f)) -# define SWIG_RUBY_INT_ANYARGS_FUNC(f) ((int (*)(ANYARGS))(f)) -#else -# define PROTECTFUNC(f) (f) -# define VALUEFUNC(f) (f) -# define VOIDFUNC(f) (f) -# define SWIG_RUBY_VOID_ANYARGS_FUNC(f) (f) -# define SWIG_RUBY_INT_ANYARGS_FUNC(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/mac/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg deleted file mode 100755 index fc6e039b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg +++ /dev/null @@ -1 +0,0 @@ -%insert(initbeforefunc) "swiginit.swg" diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg deleted file mode 100755 index 89fea452..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg +++ /dev/null @@ -1,932 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubykw.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubykw.swg deleted file mode 100755 index 6b4685eb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubykw.swg +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef RUBY_RUBYKW_SWG_ -#define RUBY_RUBYKW_SWG_ - -/* Warnings for Ruby keywords */ -#define RUBYKW(x) %keywordwarn("'" `x` "' is a ruby keyword",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/mac/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg deleted file mode 100755 index de2a52ba..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg +++ /dev/null @@ -1,13 +0,0 @@ - -// 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/mac/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg deleted file mode 100755 index d1ac8bf0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg +++ /dev/null @@ -1,55 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg deleted file mode 100755 index 4b078dee..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg +++ /dev/null @@ -1,228 +0,0 @@ -/* ----------------------------------------------------------------------------- - * rubyprimtypes.swg - * ----------------------------------------------------------------------------- */ -/* ------------------------------------------------------------ - * Primitive Types - * ------------------------------------------------------------ */ - -/* auxiliary ruby fail method */ - -%fragment("SWIG_ruby_failed","header") -{ -SWIGINTERN VALUE -SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2)) -{ - return Qnil; -} -} - -%define %ruby_aux_method(Type, Method, Action) -SWIGINTERN VALUE SWIG_AUX_##Method##(VALUE arg) -{ - VALUE *args = (VALUE *)arg; - 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(VALUEFUNC(SWIG_AUX_NUM2LONG), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2LL), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2ULL), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2DBL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { - if (val) *val = v; - return SWIG_OK; - } - } - return SWIG_TypeError; -} -} - - diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg deleted file mode 100755 index 6cac4626..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg +++ /dev/null @@ -1,468 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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__"); - if (NIL_P(stype)) - return NULL; - 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; - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE)) { - if (!RDATA(obj)->dfree) - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - - /* 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; - } - } - - if (flags & SWIG_POINTER_CLEAR) { - DATA_PTR(obj) = 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); - rb_undef_alloc_func(cl); - /* 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_funcall2( proc, swig_arity_id, 0, 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/mac/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg deleted file mode 100755 index 41215614..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg +++ /dev/null @@ -1,9 +0,0 @@ - -%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/mac/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg deleted file mode 100755 index e14f6590..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg +++ /dev/null @@ -1,33 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg deleted file mode 100755 index 99dd7f81..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg +++ /dev/null @@ -1,199 +0,0 @@ - -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg deleted file mode 100755 index 4120b38e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg +++ /dev/null @@ -1,15 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg deleted file mode 100755 index 5150333c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg +++ /dev/null @@ -1,162 +0,0 @@ -/** - * @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/mac/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg deleted file mode 100755 index 3adf0008..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg +++ /dev/null @@ -1,57 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg deleted file mode 100755 index 1edcc568..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg +++ /dev/null @@ -1,136 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(ID id, VALUE *var) { - 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", - VALUEFUNC(swig_ruby_trackings_count), - SWIG_RUBY_VOID_ANYARGS_FUNC((rb_gvar_setter_t*)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(st_data_t ptr, st_data_t obj, st_data_t meth) { - ((void (*) (void *, VALUE))meth)((void *)ptr, (VALUE)obj); - return ST_CONTINUE; -} - -SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) { - st_foreach(swig_ruby_trackings, - SWIG_RUBY_INT_ANYARGS_FUNC(swig_ruby_internal_iterate_callback), - (st_data_t)meth); -} - -#ifdef __cplusplus -} -#endif diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg deleted file mode 100755 index 3837df07..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg +++ /dev/null @@ -1,62 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg deleted file mode 100755 index 1689c7f0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg +++ /dev/null @@ -1,20 +0,0 @@ -#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/mac/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg b/mac/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg deleted file mode 100755 index 7da6f4bf..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg +++ /dev/null @@ -1,58 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/ruby/std_alloc.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_alloc.i deleted file mode 100755 index 35dc051b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/std_array.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_array.i deleted file mode 100755 index a4d3ef54..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_array.i +++ /dev/null @@ -1,102 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i deleted file mode 100755 index 3d7ae8ba..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i deleted file mode 100755 index ba13ba76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i +++ /dev/null @@ -1,92 +0,0 @@ -#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/mac/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i deleted file mode 100755 index bf4e6c47..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/std_common.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_common.i deleted file mode 100755 index 0cf9ce10..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_common.i +++ /dev/null @@ -1,74 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/ruby/std_complex.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_complex.i deleted file mode 100755 index ef4e8a10..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_complex.i +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/ruby/std_container.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_container.i deleted file mode 100755 index 85379505..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/std_deque.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_deque.i deleted file mode 100755 index b70f34ee..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_deque.i +++ /dev/null @@ -1,30 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_except.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/std_functors.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_functors.i deleted file mode 100755 index 54ee97b5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_functors.i +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @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/mac/bin/swig/share/swig/4.1.0/ruby/std_ios.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_ios.i deleted file mode 100755 index 7aafae28..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_ios.i +++ /dev/null @@ -1,14 +0,0 @@ - -#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/mac/bin/swig/share/swig/4.1.0/ruby/std_iostream.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_iostream.i deleted file mode 100755 index ee36bec4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_iostream.i +++ /dev/null @@ -1,12 +0,0 @@ -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/mac/bin/swig/share/swig/4.1.0/ruby/std_list.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_list.i deleted file mode 100755 index b0b4928e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_list.i +++ /dev/null @@ -1,42 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_map.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_map.i deleted file mode 100755 index 6dd2ffa7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_map.i +++ /dev/null @@ -1,424 +0,0 @@ -// -// 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_funcall2(obj, id_to_a, 0, 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/mac/bin/swig/share/swig/4.1.0/ruby/std_multimap.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_multimap.i deleted file mode 100755 index 5d8e33e9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_multimap.i +++ /dev/null @@ -1,226 +0,0 @@ -/* - 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_funcall2(obj, id_to_a, 0, 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/mac/bin/swig/share/swig/4.1.0/ruby/std_multiset.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_multiset.i deleted file mode 100755 index 252ae10d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_multiset.i +++ /dev/null @@ -1,50 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_pair.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_pair.i deleted file mode 100755 index 38a4ffb9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_pair.i +++ /dev/null @@ -1,212 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_queue.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_queue.i deleted file mode 100755 index 2a16d9cf..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_queue.i +++ /dev/null @@ -1,33 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_set.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_set.i deleted file mode 100755 index 1b425c6b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_set.i +++ /dev/null @@ -1,228 +0,0 @@ -/* - 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<$type>($1, 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($1.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/mac/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i deleted file mode 100755 index 086e3081..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i +++ /dev/null @@ -1,144 +0,0 @@ -#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) { - int res = SWIG_ERROR; - swig_type_info *descriptor = type_info >(); - if (val) { - std::shared_ptr *p = 0; - swig_ruby_owntype newmem = {0, 0}; - res = descriptor ? SWIG_ConvertPtrAndOwn(obj, (void **)&p, descriptor, 0, &newmem) : SWIG_ERROR; - if (SWIG_IsOK(res)) { - 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; - } - } else { - res = descriptor ? SWIG_ConvertPtr(obj, 0, descriptor, 0) : SWIG_ERROR; - } - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_sstream.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_sstream.i deleted file mode 100755 index 537a3ae5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_sstream.i +++ /dev/null @@ -1,2 +0,0 @@ - -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/std_stack.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_stack.i deleted file mode 100755 index 7df48ef1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_stack.i +++ /dev/null @@ -1,35 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i deleted file mode 100755 index 44b9bb4d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/std_string.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_string.i deleted file mode 100755 index f9ecd8e8..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_string.i +++ /dev/null @@ -1,7 +0,0 @@ - -%warnfilter(SWIGWARN_RUBY_WRONG_NAME) std::basic_string; - -AUTODOC(substr, "Return a portion of the String"); - -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i deleted file mode 100755 index f988714d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i deleted file mode 100755 index 3c6b6502..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i +++ /dev/null @@ -1,83 +0,0 @@ -// -// 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_funcall2(obj, id_to_a, 0, 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/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i deleted file mode 100755 index c3261f9e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i +++ /dev/null @@ -1,100 +0,0 @@ -/* - 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_funcall2(obj, id_to_a, 0, 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/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i deleted file mode 100755 index dae13eef..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i +++ /dev/null @@ -1,50 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i deleted file mode 100755 index e8e1b087..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i +++ /dev/null @@ -1,50 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_vector.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_vector.i deleted file mode 100755 index 67fdcd1f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_vector.i +++ /dev/null @@ -1,52 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_vectora.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_vectora.i deleted file mode 100755 index 1708361e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_vectora.i +++ /dev/null @@ -1,36 +0,0 @@ -/* - 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/mac/bin/swig/share/swig/4.1.0/ruby/std_wstring.i b/mac/bin/swig/share/swig/4.1.0/ruby/std_wstring.i deleted file mode 100755 index c5d168a0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/std_wstring.i +++ /dev/null @@ -1,63 +0,0 @@ -%{ -#if defined(__linux__) -#include -#if BYTE_ORDER == LITTLE_ENDIAN -#define SWIG_RUBY_ENDIAN "LE" -#elif BYTE_ORDER == BIG_ENDIAN -#define SWIG_RUBY_ENDIAN "BE" -#endif -#else -#define SWIG_RUBY_ENDIAN "LE" -#endif - -#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-16" SWIG_RUBY_ENDIAN -#elif WCHAR_MAX == 0x7fffffff || WCHAR_MAX == 0xffffffff -#define SWIG_RUBY_WSTRING_ENCODING "UTF-32" SWIG_RUBY_ENDIAN -#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/mac/bin/swig/share/swig/4.1.0/ruby/stl.i b/mac/bin/swig/share/swig/4.1.0/ruby/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/swigmove.i b/mac/bin/swig/share/swig/4.1.0/ruby/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/ruby/timeval.i b/mac/bin/swig/share/swig/4.1.0/ruby/timeval.i deleted file mode 100755 index 94a75c80..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/timeval.i +++ /dev/null @@ -1,69 +0,0 @@ -/* - 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_funcall2($input, rb_intern("tv_sec"), 0, 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/mac/bin/swig/share/swig/4.1.0/ruby/typemaps.i b/mac/bin/swig/share/swig/4.1.0/ruby/typemaps.i deleted file mode 100755 index 68343646..00000000 --- a/mac/bin/swig/share/swig/4.1.0/ruby/typemaps.i +++ /dev/null @@ -1,314 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/mac/bin/swig/share/swig/4.1.0/runtime.swg b/mac/bin/swig/share/swig/4.1.0/runtime.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i deleted file mode 100755 index 87c89b5f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i +++ /dev/null @@ -1,401 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/mac/bin/swig/share/swig/4.1.0/scilab/carrays.i b/mac/bin/swig/share/swig/4.1.0/scilab/carrays.i deleted file mode 100755 index 014de37f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/carrays.i +++ /dev/null @@ -1,5 +0,0 @@ -%define %array_class(TYPE,NAME) - %array_class_wrap(TYPE,NAME,__paren__,__paren_asgn__) -%enddef - -%include diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/cmalloc.i b/mac/bin/swig/share/swig/4.1.0/scilab/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/cpointer.i b/mac/bin/swig/share/swig/4.1.0/scilab/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/exception.i b/mac/bin/swig/share/swig/4.1.0/scilab/exception.i deleted file mode 100755 index 17f4175c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/exception.i +++ /dev/null @@ -1,6 +0,0 @@ -%include - - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), SWIG_Scilab_Error(code, msg);) -} diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/matrix.i b/mac/bin/swig/share/swig/4.1.0/scilab/matrix.i deleted file mode 100755 index 0936d936..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/matrix.i +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Matrix typemaps - * - */ - -%include -%include -%include -%include - - diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/sciarray.swg b/mac/bin/swig/share/swig/4.1.0/scilab/sciarray.swg deleted file mode 100755 index c00e3837..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/sciarray.swg +++ /dev/null @@ -1,115 +0,0 @@ -/* -------------------------------------------------------------------------- - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scibool.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scibool.swg deleted file mode 100755 index 9aed88ec..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scibool.swg +++ /dev/null @@ -1,156 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scichar.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scichar.swg deleted file mode 100755 index 5edbf5b7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scichar.swg +++ /dev/null @@ -1,292 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg deleted file mode 100755 index f6078690..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg +++ /dev/null @@ -1,445 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scidouble.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scidouble.swg deleted file mode 100755 index 1b826330..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scidouble.swg +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scienum.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scienum.swg deleted file mode 100755 index cc1f7c97..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scienum.swg +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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(), (int)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/mac/bin/swig/share/swig/4.1.0/scilab/sciexception.swg b/mac/bin/swig/share/swig/4.1.0/scilab/sciexception.swg deleted file mode 100755 index 1d653b31..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/sciexception.swg +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scifloat.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scifloat.swg deleted file mode 100755 index f0af17c0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scifloat.swg +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/sciint.swg b/mac/bin/swig/share/swig/4.1.0/scilab/sciint.swg deleted file mode 100755 index 2d699356..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/sciint.swg +++ /dev/null @@ -1,202 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scilab.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scilab.swg deleted file mode 100755 index 3b5f6e81..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scilab.swg +++ /dev/null @@ -1,6 +0,0 @@ -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/scilist.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scilist.swg deleted file mode 100755 index 513f40b6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scilist.swg +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scilong.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scilong.swg deleted file mode 100755 index 4e55be53..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scilong.swg +++ /dev/null @@ -1,123 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg deleted file mode 100755 index 37f68339..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg +++ /dev/null @@ -1,199 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg deleted file mode 100755 index 9444a807..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg +++ /dev/null @@ -1,170 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg deleted file mode 100755 index e304d4f6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg +++ /dev/null @@ -1,175 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg deleted file mode 100755 index fe75e156..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg +++ /dev/null @@ -1,69 +0,0 @@ -// 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/mac/bin/swig/share/swig/4.1.0/scilab/scipointer.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scipointer.swg deleted file mode 100755 index 94ca4ef3..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scipointer.swg +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg b/mac/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg deleted file mode 100755 index b5e30d93..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg +++ /dev/null @@ -1,23 +0,0 @@ -%include -%include - -%include - -%include -%include - -%include -%include - -%include -%include - -%include -%include -%include - -%include - -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/scirun.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scirun.swg deleted file mode 100755 index 586d5f16..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scirun.swg +++ /dev/null @@ -1,532 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) { - 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 -SWIGEXPORT 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 -SWIGEXPORT 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/mac/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg b/mac/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg deleted file mode 100755 index e772926f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg +++ /dev/null @@ -1,47 +0,0 @@ -%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 -SWIGEXPORT int SWIG__Init(SWIG_GatewayParameters) { - SWIG_InitializeModule(NULL); - SWIG_CreateScilabVariables(pvApiCtx); - swig_module_initialized = 1; -%} diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/scisequence.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scisequence.swg deleted file mode 100755 index 5fe0fdbe..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scisequence.swg +++ /dev/null @@ -1,195 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg deleted file mode 100755 index b7d07844..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg +++ /dev/null @@ -1,98 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg deleted file mode 100755 index 29cc52d6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg deleted file mode 100755 index 41d37e55..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg +++ /dev/null @@ -1,98 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg deleted file mode 100755 index 3a9f7bf6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg +++ /dev/null @@ -1,104 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg deleted file mode 100755 index b3618e94..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg +++ /dev/null @@ -1,123 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scishort.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scishort.swg deleted file mode 100755 index 3d2f0f97..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scishort.swg +++ /dev/null @@ -1,188 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg b/mac/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg deleted file mode 100755 index 99fdce7b..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg +++ /dev/null @@ -1,259 +0,0 @@ -// 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/mac/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg b/mac/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg deleted file mode 100755 index f7338958..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg +++ /dev/null @@ -1,190 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i deleted file mode 100755 index b5735381..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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/mac/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i deleted file mode 100755 index bf4e6c47..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/std_common.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_common.i deleted file mode 100755 index 97cfa7b0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_common.i +++ /dev/null @@ -1,72 +0,0 @@ -%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/mac/bin/swig/share/swig/4.1.0/scilab/std_container.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_container.i deleted file mode 100755 index a1e037b8..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_container.i +++ /dev/null @@ -1,3 +0,0 @@ -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/std_deque.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_deque.i deleted file mode 100755 index d2ca597a..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_deque.i +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/std_except.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/std_list.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_list.i deleted file mode 100755 index 75d002d4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_list.i +++ /dev/null @@ -1,30 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/std_map.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_map.i deleted file mode 100755 index 07eb63fd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_map.i +++ /dev/null @@ -1,79 +0,0 @@ -// -// 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/mac/bin/swig/share/swig/4.1.0/scilab/std_multiset.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_multiset.i deleted file mode 100755 index 67e17926..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_multiset.i +++ /dev/null @@ -1,30 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/std_pair.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_pair.i deleted file mode 100755 index 39ef008d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/scilab/std_set.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_set.i deleted file mode 100755 index 9070e2d6..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_set.i +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i deleted file mode 100755 index df873679..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/std_string.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_string.i deleted file mode 100755 index 8736c2a2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_string.i +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 - -%typemap(throws, noblock=1) std::string { - SWIG_Scilab_Raise_Ex($1.c_str(), "$type", $&descriptor); -} - -%typemap(throws, noblock=1) const std::string & { - SWIG_Scilab_Raise_Ex($1.c_str(), "$type", $descriptor); -} diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/std_vector.i b/mac/bin/swig/share/swig/4.1.0/scilab/std_vector.i deleted file mode 100755 index 6eaeeca5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/std_vector.i +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * 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/mac/bin/swig/share/swig/4.1.0/scilab/stl.i b/mac/bin/swig/share/swig/4.1.0/scilab/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/swigmove.i b/mac/bin/swig/share/swig/4.1.0/scilab/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/scilab/typemaps.i b/mac/bin/swig/share/swig/4.1.0/scilab/typemaps.i deleted file mode 100755 index 9d713874..00000000 --- a/mac/bin/swig/share/swig/4.1.0/scilab/typemaps.i +++ /dev/null @@ -1,62 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/shared_ptr.i b/mac/bin/swig/share/swig/4.1.0/shared_ptr.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/README b/mac/bin/swig/share/swig/4.1.0/std/README old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/_std_deque.i b/mac/bin/swig/share/swig/4.1.0/std/_std_deque.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_alloc.i b/mac/bin/swig/share/swig/4.1.0/std/std_alloc.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_array.i b/mac/bin/swig/share/swig/4.1.0/std/std_array.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_basic_string.i b/mac/bin/swig/share/swig/4.1.0/std/std_basic_string.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_carray.swg b/mac/bin/swig/share/swig/4.1.0/std/std_carray.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_char_traits.i b/mac/bin/swig/share/swig/4.1.0/std/std_char_traits.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_common.i b/mac/bin/swig/share/swig/4.1.0/std/std_common.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_container.i b/mac/bin/swig/share/swig/4.1.0/std/std_container.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_deque.i b/mac/bin/swig/share/swig/4.1.0/std/std_deque.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_except.i b/mac/bin/swig/share/swig/4.1.0/std/std_except.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_ios.i b/mac/bin/swig/share/swig/4.1.0/std/std_ios.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_iostream.i b/mac/bin/swig/share/swig/4.1.0/std/std_iostream.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_list.i b/mac/bin/swig/share/swig/4.1.0/std/std_list.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_map.i b/mac/bin/swig/share/swig/4.1.0/std/std_map.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_multimap.i b/mac/bin/swig/share/swig/4.1.0/std/std_multimap.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_multiset.i b/mac/bin/swig/share/swig/4.1.0/std/std_multiset.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_pair.i b/mac/bin/swig/share/swig/4.1.0/std/std_pair.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_queue.i b/mac/bin/swig/share/swig/4.1.0/std/std_queue.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_set.i b/mac/bin/swig/share/swig/4.1.0/std/std_set.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_sstream.i b/mac/bin/swig/share/swig/4.1.0/std/std_sstream.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_stack.i b/mac/bin/swig/share/swig/4.1.0/std/std_stack.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_streambuf.i b/mac/bin/swig/share/swig/4.1.0/std/std_streambuf.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_string.i b/mac/bin/swig/share/swig/4.1.0/std/std_string.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_unordered_map.i b/mac/bin/swig/share/swig/4.1.0/std/std_unordered_map.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_unordered_multimap.i b/mac/bin/swig/share/swig/4.1.0/std/std_unordered_multimap.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_unordered_multiset.i b/mac/bin/swig/share/swig/4.1.0/std/std_unordered_multiset.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_unordered_set.i b/mac/bin/swig/share/swig/4.1.0/std/std_unordered_set.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_vector.i b/mac/bin/swig/share/swig/4.1.0/std/std_vector.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_vectora.i b/mac/bin/swig/share/swig/4.1.0/std/std_vectora.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_wios.i b/mac/bin/swig/share/swig/4.1.0/std/std_wios.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_wiostream.i b/mac/bin/swig/share/swig/4.1.0/std/std_wiostream.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_wsstream.i b/mac/bin/swig/share/swig/4.1.0/std/std_wsstream.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_wstreambuf.i b/mac/bin/swig/share/swig/4.1.0/std/std_wstreambuf.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std/std_wstring.i b/mac/bin/swig/share/swig/4.1.0/std/std_wstring.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/std_except.i b/mac/bin/swig/share/swig/4.1.0/std_except.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/stdint.i b/mac/bin/swig/share/swig/4.1.0/stdint.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/stl.i b/mac/bin/swig/share/swig/4.1.0/stl.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swig.swg b/mac/bin/swig/share/swig/4.1.0/swig.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swigarch.i b/mac/bin/swig/share/swig/4.1.0/swigarch.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swigerrors.swg b/mac/bin/swig/share/swig/4.1.0/swigerrors.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swigfragments.swg b/mac/bin/swig/share/swig/4.1.0/swigfragments.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swiginit.swg b/mac/bin/swig/share/swig/4.1.0/swiginit.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swiglabels.swg b/mac/bin/swig/share/swig/4.1.0/swiglabels.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swigrun.i b/mac/bin/swig/share/swig/4.1.0/swigrun.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swigrun.swg b/mac/bin/swig/share/swig/4.1.0/swigrun.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swigwarn.swg b/mac/bin/swig/share/swig/4.1.0/swigwarn.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/swigwarnings.swg b/mac/bin/swig/share/swig/4.1.0/swigwarnings.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/Makefile.in b/mac/bin/swig/share/swig/4.1.0/tcl/Makefile.in deleted file mode 100755 index 019091c9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/Makefile.in +++ /dev/null @@ -1,122 +0,0 @@ -# --------------------------------------------------------------- -# SWIG Tcl Makefile -# -# This file can be used to build various Tcl extensions with SWIG. -# By default this file is set up for dynamic loading, but it can -# be easily customized for static extensions by modifying various -# portions of the file. -# -# SRCS = C source files -# CXXSRCS = C++ source files -# OBJCSRCS = Objective-C source files -# OBJS = Additional .o files (compiled previously) -# INTERFACE = SWIG interface file -# TARGET = Name of target module or executable -# -# Many portions of this file were created by the SWIG configure -# script and should already reflect your machine. However, you -# may need to modify the Makefile to reflect your specific -# application. -#---------------------------------------------------------------- - -SRCS = -CXXSRCS = -OBJCSRCS = -OBJS = -INTERFACE = -WRAPFILE = $(INTERFACE:.i=_wrap.c) -WRAPOBJ = $(INTERFACE:.i=_wrap.o) -TARGET = module@SO@ # Use this kind of target for dynamic loading -#TARGET = my_tclsh # Use this target for static linking - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -CC = @CC@ -CXX = @CXX@ -OBJC = @CC@ -Wno-import # -Wno-import needed for gcc -CFLAGS = -INCLUDES = -LIBS = - -# SWIG Options -# SWIG = location of the SWIG executable -# SWIGOPT = SWIG compiler options -# SWIGCC = Compiler used to compile the wrapper file - -SWIG = $(exec_prefix)/bin/swig -SWIGOPT = -tcl -SWIGCC = $(CC) - -# SWIG Library files. Uncomment if rebuilding tclsh -#SWIGLIBS = -ltclsh.i - -# Rules for creating .o files from source. - -COBJS = $(SRCS:.c=.o) -CXXOBJS = $(CXXSRCS:.cxx=.o) -OBJCOBJS = $(OBJCSRCS:.m=.o) -ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) - -# Command that will be used to build the final extension. -BUILD = $(SWIGCC) - -# Uncomment the following if you are using dynamic loading -CCSHARED = @CCSHARED@ -BUILD = @LDSHARED@ - -# Uncomment the following if you are using dynamic loading with C++ and -# need to provide additional link libraries (this is not always required). - -#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ - -L/usr/local/lib -lg++ -lstdc++ -lgcc - -# Tcl installation (where is Tcl located) - -TCL_INCLUDE = @TCLINCLUDE@ -TCL_LIB = @TCLLIB@ - -# Build libraries (needed for static builds) - -LIBM = @LIBM@ -LIBC = @LIBC@ -SYSLIBS = $(LIBM) $(LIBC) @LIBS@ - -# Build options (uncomment only one of these) - -BUILD_LIBS = $(LIBS) # Dynamic loading -#BUILD_LIBS = $(TCL_LIB) -ltcl $(LIBS) $(SYSLIBS) # tclsh - -# Compilation rules for non-SWIG components - -.SUFFIXES: .c .cxx .m - -.c.o: - $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - -.cxx.o: - $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< - -.m.o: - $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - - -# ---------------------------------------------------------------------- -# Rules for building the extension -# ---------------------------------------------------------------------- - -all: $(TARGET) - -# Convert the wrapper file into an object file - -$(WRAPOBJ) : $(WRAPFILE) - $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDES) $(TCL_INCLUDE) - -$(WRAPFILE) : $(INTERFACE) - $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) - -$(TARGET): $(WRAPOBJ) $(ALLOBJS) - $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) - -clean: - rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/argcargv.i b/mac/bin/swig/share/swig/4.1.0/tcl/argcargv.i deleted file mode 100755 index bbe149ef..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/argcargv.i +++ /dev/null @@ -1,29 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - int i, nitems; - Tcl_Obj **listobjv; - if (Tcl_ListObjGetElements(interp, $input, &nitems, &listobjv) == TCL_ERROR) { - SWIG_exception_fail(SWIG_ValueError, "in method '$symname', Expecting list of argv"); - goto fail; - } - $1 = ($1_ltype) nitems; - $2 = (char **) malloc((nitems+1)*sizeof(char *)); - for (i = 0; i < nitems; i++) { - $2[i] = Tcl_GetStringFromObj(listobjv[i], NULL); - } - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - int len; - $1 = Tcl_ListObjLength(interp, $input, &len) == TCL_OK; -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/attribute.i b/mac/bin/swig/share/swig/4.1.0/tcl/attribute.i deleted file mode 100755 index 779716cd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/carrays.i b/mac/bin/swig/share/swig/4.1.0/tcl/carrays.i deleted file mode 100755 index 0236672d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/carrays.i +++ /dev/null @@ -1,4 +0,0 @@ -%include - - - diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/cdata.i b/mac/bin/swig/share/swig/4.1.0/tcl/cdata.i deleted file mode 100755 index 36796599..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/cmalloc.i b/mac/bin/swig/share/swig/4.1.0/tcl/cmalloc.i deleted file mode 100755 index 248f06b9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/cpointer.i b/mac/bin/swig/share/swig/4.1.0/tcl/cpointer.i deleted file mode 100755 index d824792f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/cstring.i b/mac/bin/swig/share/swig/4.1.0/tcl/cstring.i deleted file mode 100755 index ede9c596..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/cwstring.i b/mac/bin/swig/share/swig/4.1.0/tcl/cwstring.i deleted file mode 100755 index b17ca763..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/cwstring.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/exception.i b/mac/bin/swig/share/swig/4.1.0/tcl/exception.i deleted file mode 100755 index 4d22797c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/exception.i +++ /dev/null @@ -1,6 +0,0 @@ -%include - - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg); return TCL_ERROR;)) -} diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/factory.i b/mac/bin/swig/share/swig/4.1.0/tcl/factory.i deleted file mode 100755 index 46a0a873..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i deleted file mode 100755 index b24809af..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - Tcl_SetObjResult(interp, SWIG_NewInstanceObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/std_common.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_common.i deleted file mode 100755 index 0718facb..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_common.i +++ /dev/null @@ -1,17 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/tcl/std_deque.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_deque.i deleted file mode 100755 index cb98f6c2..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/std_except.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_except.i deleted file mode 100755 index af98428f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/std_map.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_map.i deleted file mode 100755 index 2c7f40ac..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_map.i +++ /dev/null @@ -1,79 +0,0 @@ -// -// 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/mac/bin/swig/share/swig/4.1.0/tcl/std_pair.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_pair.i deleted file mode 100755 index 39ef008d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/tcl/std_string.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_string.i deleted file mode 100755 index 5b31b28c..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_string.i +++ /dev/null @@ -1,2 +0,0 @@ -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i deleted file mode 100755 index 0ea324cd..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - Tcl_SetObjResult(interp, SWIG_NewInstanceObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/std_vector.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_vector.i deleted file mode 100755 index a74bf3a1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_vector.i +++ /dev/null @@ -1,436 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -SWIGINTERN Tcl_Obj* SwigString_FromString(const std::string &s) { - return Tcl_NewStringObj(s.data(), (int)s.length()); -} - -SWIGINTERN 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; -} - -SWIGINTERN int SwigString_AsString(Tcl_Interp *interp, Tcl_Obj *o, std::string *val) { - int len; - const char* temp = Tcl_GetStringFromObj(o, &len); - (void)interp; - 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 - else 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 - else 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/mac/bin/swig/share/swig/4.1.0/tcl/std_wstring.i b/mac/bin/swig/share/swig/4.1.0/tcl/std_wstring.i deleted file mode 100755 index f1326149..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/std_wstring.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/stl.i b/mac/bin/swig/share/swig/4.1.0/tcl/stl.i deleted file mode 100755 index 04f86014..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/swigmove.i b/mac/bin/swig/share/swig/4.1.0/tcl/swigmove.i deleted file mode 100755 index 62ecca76..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/tcl8.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tcl8.swg deleted file mode 100755 index 5da1bc07..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tcl8.swg +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/tcl/tclapi.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclapi.swg deleted file mode 100755 index 2187de52..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclapi.swg +++ /dev/null @@ -1,108 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg deleted file mode 100755 index 889d3ad5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg +++ /dev/null @@ -1,76 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg deleted file mode 100755 index ba6398c7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg +++ /dev/null @@ -1,22 +0,0 @@ -/* - - 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/mac/bin/swig/share/swig/4.1.0/tcl/tclinit.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclinit.swg deleted file mode 100755 index cf14de88..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclinit.swg +++ /dev/null @@ -1,140 +0,0 @@ -/* ------------------------------------------------------------ - * 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.4" -#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 - if (Tcl_InitStubs(interp, 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/mac/bin/swig/share/swig/4.1.0/tcl/tclinterp.i b/mac/bin/swig/share/swig/4.1.0/tcl/tclinterp.i deleted file mode 100755 index 3b45b6d4..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclinterp.i +++ /dev/null @@ -1,17 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/tcl/tclkw.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclkw.swg deleted file mode 100755 index e96e885d..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclkw.swg +++ /dev/null @@ -1,10 +0,0 @@ -#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/mac/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg deleted file mode 100755 index ab7bace5..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg +++ /dev/null @@ -1,4 +0,0 @@ -%include - - - diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/tclopers.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclopers.swg deleted file mode 100755 index f113ccd1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclopers.swg +++ /dev/null @@ -1,43 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg deleted file mode 100755 index febbffb7..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg +++ /dev/null @@ -1,230 +0,0 @@ -/* ------------------------------------------------------------ - * 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) -{ - Tcl_WideInt v; - if (Tcl_GetWideIntFromObj(0, obj, &v) == TCL_OK) { - if (sizeof(v) > sizeof(*val) && (v < LLONG_MIN || v > LLONG_MAX)) { - return SWIG_OverflowError; - } - 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/mac/bin/swig/share/swig/4.1.0/tcl/tclresult.i b/mac/bin/swig/share/swig/4.1.0/tcl/tclresult.i deleted file mode 100755 index c63b3ee1..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclresult.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/tcl/tclrun.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclrun.swg deleted file mode 100755 index e8136051..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclrun.swg +++ /dev/null @@ -1,722 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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_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; - const char *cmd_name; - /* 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); - } - cmd_name = c; - - c++; - c = SWIG_UnpackData(c,ptr,sizeof(void *)); - - if (ty) { - tc = c ? SWIG_TypeCheck(c,ty) : 0; - if (tc) { - Tcl_CmdInfo info; - if (Tcl_GetCommandInfo(interp, cmd_name, &info)) { - swig_instance *inst = (swig_instance *)info.objClientData; - if (!inst->thisvalue) { - *ptr = 0; - } - assert(inst->thisvalue == *ptr); - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !SWIG_Thisown(inst->thisvalue)) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (flags & SWIG_POINTER_DISOWN) { - SWIG_Disown((void *) *ptr); - } - if (flags & SWIG_POINTER_CLEAR) { - inst->thisvalue = 0; - } - { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc,(void *) *ptr,&newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } - } - } - } else { - return SWIG_ERROR; - } - } - - 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; - int has_command; - char *name; - name = Tcl_GetStringFromObj(robj,NULL); - has_command = Tcl_GetCommandInfo(interp, name, &ci); - if (!has_command || 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); - } - } else { - swig_instance *inst = (swig_instance *)ci.objClientData; - /* Restore thisvalue as SWIG_POINTER_CLEAR may have been used to set it to zero. - Occurs when the C pointer is re-used by the memory allocator and the command has - been created and not destroyed - bug?? - see cpp11_std_unique_ptr_runme.tcl test. */ - if (inst->thisvalue != thisvalue) { - assert(inst->thisvalue == 0); - inst->thisvalue = 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/mac/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg deleted file mode 100755 index bb4edd74..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg +++ /dev/null @@ -1,15 +0,0 @@ -/* 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/mac/bin/swig/share/swig/4.1.0/tcl/tclsh.i b/mac/bin/swig/share/swig/4.1.0/tcl/tclsh.i deleted file mode 100755 index 21dc35af..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclsh.i +++ /dev/null @@ -1,57 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - - -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; - Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); - - return TCL_OK; -} - -int main(int argc, char **argv) { - Tcl_Main(argc, argv, Tcl_AppInit); - return(0); - -} - -%} - diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg deleted file mode 100755 index 540d6270..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg +++ /dev/null @@ -1,31 +0,0 @@ -/* ------------------------------------------------------------ - * 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/mac/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg deleted file mode 100755 index 66cce47e..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* ------------------------------------------------------------ - * 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(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/mac/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg deleted file mode 100755 index d5b41fb9..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg +++ /dev/null @@ -1,5 +0,0 @@ -/* ----------------------------------------------------------------------------- - * Special user directives - * ----------------------------------------------------------------------------- */ - - diff --git a/mac/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg b/mac/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg deleted file mode 100755 index 09374c54..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg +++ /dev/null @@ -1,68 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - - *cptr = (wchar_t*)dst; - 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/mac/bin/swig/share/swig/4.1.0/tcl/typemaps.i b/mac/bin/swig/share/swig/4.1.0/tcl/typemaps.i deleted file mode 100755 index 04a5c78f..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/typemaps.i +++ /dev/null @@ -1,464 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/mac/bin/swig/share/swig/4.1.0/tcl/wish.i b/mac/bin/swig/share/swig/4.1.0/tcl/wish.i deleted file mode 100755 index 42902850..00000000 --- a/mac/bin/swig/share/swig/4.1.0/tcl/wish.i +++ /dev/null @@ -1,113 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -/* - *---------------------------------------------------------------------- - * - * 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) -{ - Tk_Window main; - main = Tk_MainWindow(interp); - - /* - * 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; - } - - /* - * 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. - */ - - Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); - return TCL_OK; -} - -#if TK_MAJOR_VERSION >= 4 -int main(int argc, char **argv) { - Tk_Main(argc, argv, Tcl_AppInit); - return(0); -} -#else -extern int main(); -#endif - -%} - - - diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/README b/mac/bin/swig/share/swig/4.1.0/typemaps/README old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/attribute.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/attribute.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/carrays.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/carrays.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/cdata.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/cdata.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/cmalloc.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/cmalloc.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/cpointer.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/cpointer.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/cstring.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/cstring.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/cstrings.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/cstrings.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/cwstring.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/cwstring.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/enumint.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/enumint.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/exception.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/exception.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/factory.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/factory.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/fragments.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/fragments.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/implicit.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/implicit.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/inoutlist.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/inoutlist.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/misctypes.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/misctypes.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/primtypes.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/primtypes.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/ptrtypes.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/ptrtypes.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/std_except.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/std_except.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/std_string.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/std_string.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/std_strings.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/std_strings.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/std_wstring.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/std_wstring.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/string.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/string.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/strings.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/strings.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/swigmacros.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/swigmacros.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/swigmove.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/swigmove.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/swigobject.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/swigobject.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/swigtype.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/swigtype.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/swigtypemaps.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/swigtypemaps.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/typemaps.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/typemaps.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/valtypes.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/valtypes.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/void.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/void.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/typemaps/wstring.swg b/mac/bin/swig/share/swig/4.1.0/typemaps/wstring.swg old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/wchar.i b/mac/bin/swig/share/swig/4.1.0/wchar.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/windows.i b/mac/bin/swig/share/swig/4.1.0/windows.i old mode 100755 new mode 100644 diff --git a/mac/bin/swig/share/swig/4.1.0/xml/typemaps.i b/mac/bin/swig/share/swig/4.1.0/xml/typemaps.i deleted file mode 100755 index 29736135..00000000 --- a/mac/bin/swig/share/swig/4.1.0/xml/typemaps.i +++ /dev/null @@ -1,3 +0,0 @@ -// -------------------------------------------------------------------- -// Empty file for %include to work -// -------------------------------------------------------------------- diff --git a/mac/bin/swig/share/swig/4.1.0/xml/xml.swg b/mac/bin/swig/share/swig/4.1.0/xml/xml.swg deleted file mode 100755 index c7bdbad0..00000000 --- a/mac/bin/swig/share/swig/4.1.0/xml/xml.swg +++ /dev/null @@ -1 +0,0 @@ -/* nothing special */ \ No newline at end of file diff --git a/versions.txt b/versions.txt index 868a3028..58b29a39 100644 --- a/versions.txt +++ b/versions.txt @@ -131,3 +131,7 @@ glslang (Built using https://github.com/YunHsiao/glslang/tree/build) ios: 11.5.0 (commit: 1978c76) linux: 11.5.0 +swig (Built using https://github.com/dumganhar/swig/tree/cocos-se) + win64: cocos-v1.1.0 (commit: fac0dbb) + mac: cocos-v1.1.0 (commit: fac0dbb) + linux: cocos-v1.1.0 (commit: fac0dbb) diff --git a/win64/bin/swig/bin/swig.exe b/win64/bin/swig/bin/swig.exe old mode 100755 new mode 100644 index e67670a221b5245c4febf2a00d213eb5ba4d4d2a..470cf025ee48c56a31c5a1244bd7e19a0dc9ce82 GIT binary patch delta 191714 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%0AO2}X=FjsfL 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 delta 191461 zcmaHT2UrwI)9`l9AShu4B?u^>peU#)Dkc;VbWt#1&N-b~!82n371vdC&^G6sb=AQf zP=W}U!H9RJMo&fWRL;a-J+mP1`+eWh9{^ox3A=?v~&q6-o6)6{Zf= znEn-Ns%tF4rm9A?)M#dzDNr^{YDh*9QCdrCk;T#_;#gi&N2~G1#v{@nBmjniHmX9E5*jLpoY$bOvkv&k7n{ z0{$0df&W(=krw1ch%UkG;d8AP4*4kc7pcK#ny4B}Emsr@aB|MyY2l=P4KpZ!N+|KZF| zCD7sjAn@jyNey-i0X}?G+Bvg|8n&meB6>XU$rV-DNqK*a?*-4*=NSH+*GbxBRxNhe zD5d#D3HlyH3F?Xj-A@rdk~I&N_5|~a8l66m*0=OOe-#@eSa%U6g!*smlCxO zq^-1D8(c*+p#-WZUM7^cIYv^^k-(j7$=P-KKZ($l!Q(i#HiuStIP_OSb!)Xu&L4rWNf4)#@6 zXQ<@uD<}lC7ApDJ3~7RcJ&ejQE_65tus78hR;7*rKd3axHOcMOW!@>KLUJoKP(crj zE*$7E=hH&xxnsAQoCwhNH^o!YFa`TGuAn<0K(OCbv2#*g)Ya6X4A(DUN6j(T1Dry{7d-He^Es(C$7qaM4{IN(E ze=&N1PM^c#Mu>bMR{S|{m^7kE6XGsyY|;r9?=!w@(piA>6OBR5Qvp7YlPm%wV9z+I zM_>pfhDqxJ2a$TlZ-Ko5?u1A^f(F6l5Ggrm7hDTA4hp_5K=L`MUf4X#jS-?I*bqtB z+4aWLVP3?3TnAAT+N|!rty)dAtLotM*Gd1h?M{4*?b|gb@M(=SPq!B)M;d*@KM>MW zs@5TpRFV31aEGE*(wq*>;p{5ubcZmAStXH(#+bAMBHTzdsb_>I{F@}rj(EbcBmX2# zq}Cm45gTb_M^7kNX*6_n0?0{}c6UBYY^7mcYQXTLQbHFGQeE2LWgO`zRf&os<)yJv z6JgCV=}FWL_*!2&(sdEUFsWHLe^OBz*DV}A){~OE4TKZlr7GRq+l9X>)u#`tnC+b> z#dJSLx=Y?YYJp*tu}hEUU|X;lLr8xEqfE}Kpkdn%N*j9JvMpB%O}dWI3kRgw-rb3l z@osO4kZ#iGzWv}!ZDU&BR)Qlfb%tD%OzkFM#`ew~FT zxfuVY@CiVtCpx`_Eb_$4CPw)vC13)8y@^7wVb>NhF6rXPHsvZrJs|% zYeU8V?mz62g(e}?(>J{M`k7%UR>2?vvu#JI(-dzwsx?lZa+<&?gRybUP&9~f?bKuf z>z7Dfr`0B%jkBjMAjI29W;7*WTqL!aSsNBFl19vQgOQ7*MKgyG!T5TnE5OS*qs5%l zgw!#n#BMJK3uhTeEj%q$zBY|3STSc))tt%Gj7^s0nZcYlQpH4H97kZHJG_4<4NRO5 zW8O*666e9ALTSVbPq_BhxOBxbz!-N)>Ow4}aY;__K0;cQG#Dn1lU^saCLN?YtE!@p z>sA$Fu4%S9Ogo;>3HnUVs&B#Iv65l+bU69WXhBb6T6`~ET$5e--8*wc>EIrzzoHXz z!u9vqqj%D_wWl#5^j~)dhP{=X*Uy7L{*pGXk0X7J)i+!QNNR0-xoJ2ctB9?CLE%%W z`8En~nn<^|wFmuE$!&X(o%J6Un$wtD)#2u`Q~A=Q?F)U6=5ua&+>rjd7O7J!Y0vA5 z+481J@^hIxvv^>%eX#btRW&xVsZ?XfFei^+9jfVCq)qivIur*;n|J(HdGnJ}YA)LI z5oQ`TFF>lgvrnZ4zZ#H(l{s4)AT8M$2!A}5GIm~v+{Y5#H3X(SmcH%sgoH=Vtg&G> zE)p9Ai9yBsP?{he@}KDOMIo*eV5GGnv3=8cOE-DlW;H208d8S4=rsfV!v z+&?HK7;C`sgVG_RHvuWv=nGemN@mA{Tss`)@>N1#EsnxvXVu+}aFvB2uVd2>N`sHD zB~jA1<8GB2Zba6GFkFrbI(;tJUuUWA2~Ser77vzI6U%YtXNkiceO9 z!|NnB*}=TSZ3|5z3zJ&PbulsgCU=0$JV};Yfj&?AB9A97(um{JIO%8#PxsuDN z$3BT`P$+}hxrux!i40S8dY***ud~zCT%+}l_8f%zo7gvn4UlS_ZpcS@It51Fm0ZrW zgC*^xVP|?m)@te88CTeyEj>Il3~t_$g3pG-{GHO$v%Q_n+gfPeSWYjm(}z2;)vLG$ zI(V}WVbYJYE--PG; zCiA&K%DmtOMcbv17mip}f35nPA6t4uI&`r{;83Ol+*$t{=9=rcF4b{oaAzyO6c=Og zOerX74>Yy&HF)DuIG-kMlWZ>awy;k#*QAR68rsF(tdcbU(g;XOm0n+phIh-QL6@t$ zUt7+7xbTe-=KncDpQ=lkQZXDIDq*HmIIdYAU6r<7ZURS^OAjvBh3RQh`IKf=nqTD# zOHp!Z%609@%Q{1siu&||a#G(EU%0O(q(LcEsLes87{D3v1ER&hS=kxg+>~mF{9kmMdq5*LDIVnM@U)3n_%^Y z?SEY(uwkL}E>j0l3%M&2U#a``UhptpI(*#$&YY9du6Kq>@lutnK$NLxR%3KFLzWxP zL{jL<7U1LaGt#E) z(J*g;R6b`6R9>Js|GU#tQVyn~`O=e|st|u#`jO*Rsm^?^&LaQMJSSNnC2Zp=squ{& zq^fk}#$nt847xcj_Q+hs;d56C+n8KtyQfR&=V{TC@04`<`|Ow+IlWYWd+KMQ@h?V8 z_QGh=sj%w^Lx>I`O;yNg71ESPoC?{aLc9^;q(WAEs~{%?@kI`XNt_C?;B)G)C0QRS z_Ermfy94OkYIqJZMd6uPDd$$F%7^xswoEg%^pqOj?q}cXSHnb8!>c*c_S+L2rp__f z1bt5BvCem;$d3)3V@`uAm9H$dyi=3Zl!o33uy44pl(5d!|KV)u@SO`*J?@r-)WtK> zjJp$Uhs;vcU83yV<uyw`{_kcjc5#y)a8zRX2rL;$fh`Dj< zV^0Fdrbru})PaRlr1U5M!1c+}`TVA^WS_Ape+038H<2?aEMYJ-PMYw?64F=t`o{pP zvFRoB?;SD@`?EU1z~^YQbXGJ z;$r0?n1@Z8oogDVr8MVd3&{V#Y}JuO<>fTKK9f9R5vu`06?I%ytT59s?Jg{`*=TCveq4sM5r7wpQ zG0GWS+&PF(6S(C6vJx)6lpcR+gL@2*A}`#-wJS2irK}YBuNN+5r~Lbh5NE0HH!t|- zg*5-$Oft~;^V?hkPo7D0fA~PgGwI+DPuTuUy8UAx^8mqT5pk3(}d`(2*9z3s|1K%z_ZXGV88@ zrj6XquH2&QEXgF8-Ik}+j-)Q_XGQAO3JF8g&%2U`Rtz2(JRrD#aKC{A`u0y@k7x50 zK`#Ei&Th`8N3F2$jGNTcnk;~<+jOrr3bFe(&9Nr=ka~+AvBCE(x8!>^WIm}N-V`)^ z_47ST9#WCG5aLGX*pljSCx>pc#Zer{k+0d3YfvHmI!DZA7c=Bdm2o)mE`u(1L{jM) z^pGQY3^&tdgA-{6a4&_XI};Dkr_wjhh%h`=wsj#Dh4L*@_z1I^zg(vp!bwfq$(=kU zVX~hGIS8=79?h>ojPSWGP4XmBu&pj8T}O(BX-(SG)?Q=@>_0;@y|8Qi8H&zy3{IV< zJ8P19@NXUZxE-lxV;IU+u}JwlZ>Wq_#jYZ8r`>%}(O*x zb1$70fHIBWOD&orwob0wl-vL^kp65=D14bsX$ulhdeN#a(Q6vgHZ4gK#P6W@TM`}V zN~;GVv@X>Jk~m1*PO}5aOwyXRZ$*y6^lkJt;rEsvX$OxO=`pMTWN7?1b3mH zL1YG;-$J(pk+XKbw&t2-US~t+smRxK1L^o+QqSVKj_cxyPTmnr<`Ed#m)2@S>bQ;x zF~^EYbcC)rCDIV~DZ(e^G_TR}#OzMTwITDt5K2F^Aw!|an)V1KZmzl3YQ{~7d8JF} z|6a*6J(P;e+ctDXC<&=Bon!ElSwlJ?lsG!|D(NvhH`36S-~yWm@8mYrDvSh^7PMm+ z=?OXO>FzMp=ic=+D~zPU({*%pTYNvgj-G8xuEN8$bU{1PuG0AmzsBdt$M>PUVr=L5 z5I(^5@x{f7?9((pmmgOCjti0Pb*NktMO%cEny!6Y{+}bRNN0!Rh-bH=q&*pG$;?gT zC@<21p~S&8jRUaUlo0bChyJC^&>siVt?hB>qf5FhQHQQ8=`lOM%+QAfQr8YRbRT&@ z2hxMU#Uy$%0>`>8i9U)TKViN^A4QTL?R$v7#_Gn$njmliHh4beCYpC85kGzfKgNF5 zmRtw^v0Mj+$y^8Rl)q;3td7J-fIl>JZx=EGrfaBe6zO2^t1;IUJp55y9In5L{!+ww z^rMrah?_-W04Mc2Kwc9?{vkv|4c&;RyJZ7Kc|CN+sgZ_upCW}T5k9FVkI81|!s*R! zBnu9Gr(3!cH!yssm%5Wmu%{ut*Bx`g^zYQR2We71{u>rPa2QAEhkg|*Rc5Y@IIo7k zbFm|S<6>8kfA2v?64>{ZKJ7`uF^cN+BEv{4y1W;0g}V*t!Cu4<=wh1Ri?~C~Vwvj^Tn=+pDh{wUAK=4J<#4mL!INt*T;JC_TtCGx zT>mV1z(CaCw6#NW*JMLM-DFW7G?+XmuxA!+JCu0ClXrCD zP!a)&@96oV+mn7yAamho4?1lLIZhYL~NyI34+L^9SB!gg1XIhj#Rjpl&53Y;>7!)9o>LXIMR-$^3R3sXyIBCKq9I4I?|9h)4uC) z;Dv4J!gZuBTxv^Ctixly#ck=kbwuafs;$BuH^Nt*p2)2rl^3;+>eA z*ZNbhUAO|8bJyc9DLtvo-C#n{@MN-IOQF7;A%$ zu%S%_O~IB*n6eG_BQwgQHZz$U&EAc^Q5-t;5t-+0=^iVyo6dZH-^R zqv=f|{d*tL+l+6d5LAI(=+gaUDctd=&Ii!ed;MwH0Zh@0{OQO8=m{O^<^#lo_|i)U zh(i^7e^rzK8%30#sj4VH8`8o9#NPK+LuHhT62~kHlm8)N*lMbRUKJ=&S50bTzUMM#?L@E$C;73CalSWOa`l;ft=3^=!Uq+wL zakk^x&0v4)N_pHYrLYPwN_;ZC0X=k>czJ9s#R<4tUK5<`!>L?(UV=8i0sZGNsqd0e zUuBZYoBPF;VG=-F9U(4_TuSLQLpm(9lme7C1n~x+(uM**YB)k1U2dTKs+3bX!oSZ- zc*}nD0wTaBKbm(0qw}OUwKz(KLu@@d;V2m#>ss%ZdJ|itdS|O=l8_|mV(hzsQU%8o`%s4%4top}P6F_CoQNz$0K zqq|NLH&TnHovQ zbhb>!;WYe4CP99eYN=S4u?UD*AttPSCh&e0+` zdq=fFE^TX_B`X0wO_mGNiI+uyO*zx5qmT`~21+vf%H`K*v98K{43@jHnB(G~SmwoYdbUpg zj_pm8!*1fz#U@NaiT2_s3E6ZfZqbRSoNAkdq=RUeazGIxz7q<;H^s&S^i3ggv$A^$_>M*6LS`;I zd>~uQtwucIAQY&O^_4FdkvjlSUeGn)$N-l)FZe2xXPcyr7{`v2O5%9<3u^lv#-`!f=?DzlvXn>9lGSc$1o|(jXC5J)yk` z)Pk{3cX?zvSbYg0%s4) z)wPJ=bnhzH1TOa&o4LyLn8)TGln2;CLo?f!(>Tn&>K$uEUvH<$TOGg=NM-qy6ZnXv zm;AyN>XjRC|71pTnKv8EARHuJc=L1~ZB7qOA3Gd>$%#bKbYL?lFedb22bW^*i85_fra zORyJUUtc+?HDrSIxg^sd^4R=A^4JiFE(aT;=PPrN6BX6e*EAzW;-L~jKOe?;2Jh*D2%dl?+uz$?l?%+_8m=}4o=j4 z7@UTWgXBlU0PA{V2FcHc!$#uj+C(w94Od3u1a23Gi!lCnYyjOb5=D)mT}FXZMdNr= zV-feQyZzhjp>@W=5bMOzJTu_kgCZ6`nywuOYhY%G>^~m55I3DW zr;y1C!`08^f*-|^@t>o4(Uu|B_6aZx;BA!bF&UBp?e`!Wk_0#uN+(W(fi(e9b@Nwo{R&>+Gj!sdUXcWu2Qcb=c~lS z0u%-Pz=C&At4z&j!cwlenQ#r>h0{T^V3T#VKBd?xI%+u^j=|<2dSNzfhu7`susN^` z=G>-Mu~3Bs$Tef(7QjEf=+}8LnfS@$=EM5(5Emg=SPG$_&DJTj@JuVLVKJ7Z`Y(fB zq>3yq2iyVY?w8FI;e$2IYD2$n#O|(i+$QJ?2SVg)o50EjPA-%44j>!%Z|I#E=rvI2 z8+cX`u8;U)fi;ZcwD1L~7HqbG+8%;ho-O^kpIZ<28#f-u4X(_ zenx*DgH#yxR!%iSas}ArMCYCdC+j#TKFUm<5B_~ZcbZg`yr+j5kbOy+3I>E`J0S_s1Pm^pPw zg=#i?kQ6`jZHk}`_vDaN*Z~bc-{$nAF@I&V=6R~%QHfmeZ1(!T`W}MsL2+-R@#rX< znaNHW5JjpSv*Jw9_p_M!O@)S*Kaa_i7hHph;8(kXVnWWp+6~?wgWWUPkR0V1D~Fk^ zW_AhhOjd!`$imoZEazo`EWq0gdBsggA&@*u?r|IWIo(NBkR$j&M}diU5vxlt-hmCU zWfmQ97bMs{lm2}dnpEm~%#7z%ezb;%6tg@#^CG}K7zB^Z>85*t8RIDZc@Nyl0P2?m^uiVvajuMlU^tW-!Byet!rJNn2X~5j4jw z?Qf6ZFIe~o?e!QQz`CPyqbG1%fU5`P@_&Mz07v)9RbN0N7UbnaF9EOajMy!YVt}(m zbGrRCL|Px%ub7CZkDF=q$7^tdBRk}3Z=gEBtiNc;Tlfq+ZqVlMpfTw$PkaaN0M`%5 zD+?jijFgjeKS6FeQjZ?~4(%E=IZSY-DC7!$c!}U`y#+-zVutJDA8O;KD%loixCbgb z^elH)lh*nHz7;ao5!6o>n|F!!{{eNht5mPy-sjGe)9LCT;8XsL38@mj_5->hN4KBo zeF;zL)t``rC6zwKaJEt^CiMkH?%KGErpe~hy;Ze^A*9Qyr9v)DKPL|-!cS7S8PY~tFKXD|4|(lolnUI@k#*>!s%s$%wEW?ZTOyfucqrD4-(JqID# zrCur@AznGcV8%l|jQ-$cemRL5=1}4&^dg;TA4egLA00ReAuy_$JiEv2MEg1Sc zU0(~){+LRudJ6+!-c&lLO0xB9j=Yqy)l;lSz8Dp z-qfp(FaWg@R|h!+(Q|c#IhAd_%JE}-{ZdbNUbVm)Z!8`r`3M_f@d^6Q2YD{=qK>}8 zNUT7``U-8ZPMqQ^)P$6L`o>o{3WGf9rn-V3{5gu=;GaiEQK%!fxr6FW5Ggnm8t8v*JqxcVTX8>8 zef%2F8^tMx?tHDy=ea&KCsY_j0;yk^fai=fB20*acQV})CU{t{-!Ae@8;ZN6BQnhn z6Pi^pTc@5(X35mHEef?{Esbj{gj8$07Hhc~Oe%`h!6`usR$>s{hp!fK z>T4IuB85g!v`ntnQ5Y!@N4l_!a0ZK)AyL9K5<<^J37_CVd-+&bVIv{da_8;>?$vI$ zl{0$?tp&LChiuhHh$XmLTiREc3_m-b>?aUXWhUO?MptXk-D}{t@2C%4wiU5|+RD!T zg%p6|hcthnFbbC_xx^A3$x%vBYE#=Ar4^qIJy2^jAyiTu0r;a|TI{jQXI)0+ykH=%%CJG;MgDbC^jJk)LHRXfR zLLa~_fW_}ZMH04Sup(o_QW^iYQDxMt4ZnoHWonqLG?WoOtAgBrnoy%We6J$UpNBc2 zYULiBs5b5a4i9G&zR*S4+BU<;{9i&;B}XYJ0x$r^N7wlO&<4*n(wuMtE6c8{d()(aoOID)p=AQZr~V{*-nLP0rrJb>En5U%nf^A2Hr zP~YaN2EO7D^qH4litJo~qG)TpJ-s0HhVXa6Ii-nZFwPcXdxgS+y((-)0FB=%EJCYU z?-EAiE>`}1k3aT|^)1bR1`xL@179ciNE~$gm9R^1TVT<7P`QmTJl#}7;9aAA^*w=YI6Xca22QKx^&A`p~x|= zqT-#rxKaBlN5H@-WVj?s#Yt*;F4d+9_3ZPt%F>8^$@`9nrdY=*VzZvms5Bu653Qs$ zVG_Y(x^$tQUHEN{k|dX*RyePM+j3YsekTc{AJIM;LPuO6?#&Qt!*4g~oeUu!Zr`MR zuL*UqsDQowX-q||<_#_oUwh}UKI${By>nQ-Y!2t^{v2i}yJQJ?Af0)gPRT|+ z>*(EVp{I=>qTm>?_a3$*i#E>@QmW-&SGu|K1z(MuihQg^0#^#|GOtsY8$v>4I?fPk zTtpA&I`IBhT#Q75`SUEa0X{e8&z%)oF}RM)WO3?qRW8n`#eA@MCG8uV{eynEfy<)9 zcc|MknnN-<6>WT9)3WqWg=(|~*6Is*0CS4VuF)+wg_O{T81k7&>y1&DZ3~5Rk@-F6x~p_0GFB?ZTw78>B(Bs2Dt(+uk_3nJZwajt+FjkPN55P zg#egvgK92AWiB8Sb-q)YPzZy0rjp3D=% zt!FE3F(_0fYe22;3(at{YkOa4Yg2gX7oi=O=(_tD>q9Tmha9CBwSOSAB_6cj1EB`Y zzADdqfKxXbVeTU#4dT;j_+w!_`a$wzp`qu;^9p+hoJzFuk;)DkD?CWOz|r(F=sdM~ zA~@JuASSMyc!qz14#Jw!#!rNXHujj&R1IgcjI%W6i7>tOvaRRiO7-|^zW^8U6 zo%2jsOq$5%&xMJ^&g`Vp#K*Opk1OUhO?ZL1(1zB3DcrECikl4dFuwA_?dvOKw)`Wl z|4JCgH$<<5de*k6041R@mU@Why%Jnq_xz)Ln@UI(25L`sAULbVWyHMX7G8FOR%F6o zu;p+0CljiRcKr@1sMX3&Q!?!}QfS0Fa{|~}bGuZp5Z2v`AD-av`@K+&N zfa?$Ck3Z0oL^yF;3@QgR9?U=>c=m4ffur zS>|G0m~o$e=V;w!cMGwb2*YmB-)uxzn14e~vJ&qQn3$~smSxL}ZN#YrHW^M<6szE! zz$DqlRtz8>brQJD+PHx{ci=sYLzqufmGp{foiV+EPO%faK;9CXYA1f{^U#EjRYdMU z%yNbD$#=KCxIxa$S2WDul|Zzl{2h}QV{`Fnkw0RSj?Wl=*u-xdpdlH%9Y=51u6ldWiiAy50Kf;(8b{gEp-p z4#6ei`Wj+Bo;b|(6laPqbCUVOMmg%h>$S`=^tot< zUa2S6hk3{7r+T7C-vMQj!m%$We&YNu;(;avg}8Sq@tS4(*&>+7S@`f`RWUrX<2iPH zF$MR$js3(fUEUojBh3BV$meQ{x?$&j@yRkFD14F;K^@!4vi-J}f;S(LbN$47W{|c| zKHNl{YmTQ}eyzk=B0Sa6Lm^@g$)|JLh*4w*z1c==1Jl}3hfr}miKFqM;tH~hI);fl ztlSR@6B`goUKu9h7elAeZEeMMq%#d{Ctj;;P;SO&F@p=wpLa0ip3S8$I&mgm$)Gyy zeS$vKp%u%~`r+a!cy2Dg4i~orsZW>^mUU%^MtokvF-cNX0&-Ae)E z<$;~W@`N;!M|Tl%tyQ#)&WS>|e6Wmeh(go9nL;hQila#qjp-^*M9MF_ic9b^!lZ6u zO)NaD=_WRSDY(PxCN?HmOeQ_Vx>%vA-$Pu0bqHe*(VLW)AN3IJ3CWZ{_7p!8>|4-V z>(8wUp!!5FczJ@(2Jh# zFK)58HVSt=274nNG601*P7?-*)yP4*XMpHweq#(G=6cfG1H_}S_z_(=P`n0t)oIiq z@p!FjBb1Kj`~%g29ufy70TMO0L`QRJ-NE86csokIJ6Lol7WIcIy`1QeA!0qUmHG}9 z8(O5|ZEcj{FdZ=zfxYOeq2f^3(M8qzY{`T08^e8qp7S_danu**K^l!#Hha*K+qQe+M{Py3RC;)t zSjF)qf`S*ft-vy0|3b$jn*3>^OYGztih{iPYOP6i<=K@#SHK-D%Au^{S}D)kIK2I* zsLe*jtHs$iRQtQ|=X>h2mOu0UNC%}8_^W09H=Jw~w>_d@Y2#hd2s&?M_0$Bg;sAU< zf|gLbnzQ3oHN2GbxGLQ`U93*-(ks)&Mq~^9ce?09=2EX2;uJXUO4rT6#l!munl=OT z(OLR0|5!vyg!&Ex-@>+Mc@37UOI9*s0Sz&X@y>i*Z`j$K&A{ z7Pd*u$WSGL4W?ISqx8P?-`Ut5sLvd6qeFCfsR$X*OXQnCpUe>hs|WvTn~H6!csZF9F^pE3 zE7rDZk9Pq>4IPN~q**)KaV|!4Ren1VJqaPsbmm-fj_>w%rJ}C+^INf2w%&`75^r0D z&%w&9gFRMKuX$of<;M1$bzbm-A0)<}M=jo!p)==+ttxAko{@>nIfW1UDz;eAta;){ zSd&AW%om%*MkI{&#GAT#5&A!M`hqb3V!Y$Y*1Rb$#_!(`AA`SEfQzFo!Ro`*xl>SK7Galr-N8rNBU^b!+UQ*3vhnMlo z0NKp(9#2fyS^c{TB40jv@<+^OP5J&M?xC4RGeY@REk|2?pR?QGxh59*;Wxnecaa`O zH|EE`s0{o%%yl-kcX6?y6Mknsk3H*OlKAiA&3=AmZF&J`gZ-5;e~ymiJ#~EPhq8=) z$QutRYU8_5T)E!mp3zN#D;rZUG(^k>JgtaDcp!)K4flJb7NLLt2BV{-_rvIbNK{}$ zt}7Jk&t7HLE|H~TwK0kHjQyurt$E+({L6|c*1ZP`o9H?waZ>qvth!NlM0sAV=cgy> z?68U#GaN$~{Xh=vgYSvq|35n26AVj-@8laTB&NneZSb3&qN@YcQ5ggK$ClPOVclG>?P1 z!M>;l<60^;6X)!QoRt{m-m|`MiLO=zsk&;Q@-Af^%FWc;WF}9QI9FtBlIlZf6zwlb zxUKw5k`(d$gA>T)U$)}>kM=0T-?fy#or(Xkm%P{K=$1Nt35RTUP)TJ)C@~U@_CO|? zv1`@wN+vE?h`>F~8@BxxrZ}9lve0&HHNKP>aGla2hYe9XXyZqUssRUAR+j{?(RkdT z^KN1%%+?s`pRF(gAL@(ZFV1nqxNg@P#E z>t1T_I( z$p4r1vsn|AqtyCadzVN;Td9%+{FfwUte?f|m?S~#Cwa#5#LGj{o(rKQZb3 z59?<$xmy|j)l2z1nfNE;9H)zaTh{uh0Zs}z{IdQ{S}s;$zShJAt&iK-H*D_>)%v)h z&u1I(rNsJMl&ex$VN^S4O$M}l_6YROZ!P%%HReVSw06v;JWT{$6K zBsS&PBf>a#W-P~TQPRK~;1hSA@Ek-fN$l}HU)7moG3tt)55yO2@+-*}c>e+^WwBMa z|I>T^Gv9NJ1zk(Mr?97Lvsi=uOZ;LJcb|pNxOgS*^Ir*nx-#jMr0ib_f3N~CP5ARy zs}9tjgL(S+TTLJTneUtNWY9=Ce2&GGz}`lcv1TumWCr_=Cc)m}5}~YM|B>?lxTA0? zP5C$Z`!7HGxJni1w2Brp(v(Gf6z=}FV%em!%yE;(9Rfq)Rtr@tlR5J;Nq@45zUoC) z5Hr!lqL+z<8F~;OZ$5XL%7`#QLC9eNCWIh`H}h_V_8NiyfR@Z-EwYghUN*s(HyHNX z__|nCiD%}5QFnlkSb+yI_4ao@kj1&>LEKRhJE*6Jbb3tHj z{u)zNtxRm~R${aFC<1H#6oU=?-*OfMP`U+y?+5YDJr@LisY}4+B$EzY zCWf~D7tO%pDw&RH^H}+(Joaz!HK>i6cue z0%pNm4A#97z>F!D7ih8ar)u76U3iy2p%|aK>xleJnlLp zwf4v$nATV!dc@w*mn%^@S|X3>l<6Rc`6=vAi28})D&XxOzvbDfkC}V9oCA_Xczp>pow!9>zG43uM{i$CLx_tpbsK( zCR5V5jjyWGJ17=K3TZTPrC8gihDC`*?khY^KP;mD03dp!d1?D8`g|qo>I{Ah#l+%Y zwnXWpINI+c5^;bTC?y~IR?Gn0MD4lv*&&@-n|VWyq4Q7Hop&Dkp4gg)r{YoZ*jK97zdAJ}i51Cv zx+w|izM`j-#L=xrU*WFX7G0OmVH1?3gRW7;+`|;_bu)AXb{&69J79DbN46c+LCw_=|sN*W3^v;pRNS@DUg^x_(^ zLaWOc%MdkFh^4dHzlhm!Vh6vM5PMeit(cR_3^jxRJ3%ehiq&m~l%=tkHeHL>d4XS# zV};*J`c3_he!5F^>RLR<%BP3cij9P8DACp(SW5TX3nJC76KhoZ`sHVF!3)%XP*eYC z36Jj>qhaer@2WZFl&q>moic+JF;|Rf?w`Xh&?W1{aW%vKC(6oH73IPCZ^Z>?aGqf| zXw~(ii|wp<9(dX8>@|*%$#&52^(fePI&Zxg2=&g>i|fTYHrvjXQPN&ov|eng?N=7I z`6q3?L3D;iKWX0$SgL+YXKfJcL3=NH06%Sxoh{S<1Z5k&qmP?@Tx%n zjbdFJDBF0GuGuIybhvz`3=y**TyC@!-Leq{oL{yrgF0;z>y~eaFm&qZ8nojk(E$e4 zpd&VkO|6zGu9&GCTEw2weVecj`47#)4~PW%0TC_YPb>Y7QSD}QRcoLPHj57ChU#d~ zM1gkXz-p)I#LZ%oV^i|I*z_Aj*Hs_(f5@hsqApv+$>cCywncQ~Hr^rzL96$)aEs{S z>ZAE(KR&r(%uGY~;r6>o>uwdtRNaBO;8(s=Fg{#RF`6aQ6I(_6xeWSnt5~;QBg8ZX zA7-UOwj)_Z8!PiqT*sD1ATAz~X_IYY-Jt0>+wffrE^ho1aZ#Y&0OT&9#a^Z1<=~^H zf@=Y4D!`ixil4lu+qa4HgB_7d*|1-vaLi_%PX0&O2O$`j3Z=795V{{9>Ee@g#CEZD zomVG#s%&FQm9@Wcn-;RIO_We}R9pD`U+D|Y*)BTUZAW~>D3x+TRr+na=oQ| zCs*pSQ}oidH1XJ>w5Lg1N83vWcUGdc8sddNGdyV8DIRg${uMiOJBI7iwI^qi)HX!J z=KM=L?-G5=+Zq+hY%h)5B~En>LEK+Xg-fg=ww(Jp8Y7oF>=s8f@oR@$1^vH#qPAiZ zF5vOEd|efo@}qVQxNl+Yq9UpQf4<@(`oqA2en;uC-D1s3BBod!7UT>Oo)h_auN?nI zm!}Ig-SfEH@Vn<56#vO&za1^(WX-D3275$jq06ant5-pFI&lw9rkHy6h=I-OAtINq z?GgT|L_rJX(fUr9CGH6>Dwh!Rm;0Z&<<+BOJgWLT6;WA?Hp_lfGZcYb~Bm451v&Z|x zrjg6X)Ko5Yo+r}k`*3iB9?AGB~Eo?nhUL~HFAhhlQj?-yOmzc`3k275aPdSt)o<~Z&XzT(2S zZ^7SxD=Py2%TH`KeYs!kWw{JN*yvrb>K__@K-^gIXA4V>{--w13|9ut8e4?W&j-YS z*b4{L$uEb!2=*i>D~sG>)q z==tL~VZMm#J{d(%-=iGbc;ox3wsR;cg{EE}+)|MJ}lY3`E)pf0D zqr-SVBJL>db6E5OYnjeFEQZ8pf%{#i?vT?WxXk<5ByTyQiFTz{>Up1OVylLMdTGhFC7t`BW)GA zB0LA-PoV9@WR1Tg^QL7a)&+3nS?q5#C$G%#)hxcA`VXP{PdruLLplkVlUE$YQ}p_K=!K)APb?_Zt-B&VTA1DD z!Km(0sxt@PLvI~`ZNKu^A4)rJ5G0`V< z@@(GO`XRMRs|+)X$2CX*HwhRBZ&8 zyv5aM2gOuxB1-qgxMM!_jRs|dE1hT*8&p5z%;Pe85TBU`@&iwNvEWv3$SF1pY}10K z7{yw?AKxhfRDr8yDsHNINh6c}wUe{uGccMcUwO&q)7f#cCHY9Z9v9o|b~jfXn{S>y z_aipa$Gw~~qg7Vlm7^>L4L!ptyswkg1%oaaUPpte-`r^14NUqTuC&b3FS8j1i z4>3htc0x1YCT|$mTsodZVpWZ?IP~KPy;)#0MPJ91(qk4Ik5HC?UAgiM_W6JFK1#8p z8;?>P!UhY)<#`ka*HQw`8A+h_l+es$z6#y6p4j{3ccnLTR=Q>~*uhEUu&>+sC#r-W zmexJnl#hNaUTRBdoUA-Ydj@f5<xAPnRzLw}pJ!G-r_$nN2 z7@}z_hT^~s_D&zm;qmK~Jc|)J?Hsg4ChLKLXeulgvK4homV0j4Q@NU!#ymM2gZ;s2 ze88E^i$^Y>D_$uH=muwv7ce#KFM3H9LwpTiRmEJw7%Ht;ey?3Zc$)(!j5qsI*zyy! zezMp^aNMV?h8!qfovSUF?f6Dpf5#h2BTtFe^mejXz0!MorOK%a9iXV8I@0e_9NRJ=usCS6i_QSvZCSvpx9AjOz0a z{=8d#-ol^PtIr$w^YUNtH|9FM8AYIJwd=`40i&jpa&DN;8f{c3@SC_Y;OYw9gzfr5 zo`Wic@&x=3p8LEpV?SPSxOGRQq$CT>XhqC|haARJq0%XbG37Ip9dY8`&X9A>M%3wy zSYyahQ%eT2hhKsmDHcs(*e(n+D%#J8kAnU!@tnfpOA~tg$Mw`Lx z;uvl+lpu$VMhKUn%O<+=b-<`)_1^1Sv3DA;U4;Nw4;{* zq4yGcfItEXgf1$G3R0yAXiiX+LzAHAalk9$s)z-9LBI-%5Tqm+lA{ShML-4j2nZG+ z5J>*t@9dL<_x=C)e8TNBJ3Bi&J3Bi&yU#wD_y)4p&(x3KI68Z;)i81B55y~V{@q2G z&>zZZ6Aqf{3lev69!1_Q4z|c32+a-~Ulp6NNY7#9FHe65e@Iq9 zlv4ZVrOG=@nwh0{!K#=AQZ>m-l1P?h=J9TVw~=4aRBw)Z5hPZyl|oR)<1(-Xlty5`64;lB zlRmv(csCD6@PM)p8q!hvvdZ7?h`oPfM=%#~&pZc4GWLNN+SpGC6dSt=DZTa$Df<2q z;P|Wzlc_TZl^M`yJqDQA*k_sPvwY^~xsGbi4o6d0@yoX@Vd8#L>vlNWMIKY%?{G92 zf8|GtAO|-|$Z9`*7EZB*7uhH5%+Ypc-0hi9IE{zf&CaZPduH26)j!kG*H!KIsz?2( zp36i)q)nvSpNZpv->ZKz9etv1bQ`u?dE+YmE$FtI9yl zakEf~dV8m%Mby9&wI9C?t`{4$=WVpsM1$_56UQ5>ZN9^q*56d`?{K~*J#SLdeczT45R!P7?#dw;u4E7oCW&al_l zX782V4p&s$o9d(8j=oXW8Wq}&aI#j`9>?}_k*(4Dj#t$8dmN2w|NApl%!5$GL@2rF zGlu(mQqDilIceU?HlwBjZ6^KvV7?_Nh!Zz3Lb68eYAU5Wb@ zW|b&&XQ$(0KHr%{{%Hc#IHvOTA41+)UMd9YVI3=w9Nlm=T;@#FQ`ywxG(T1N!`0`m zBwtEQ`LRh)oqvO?x2AsU-^aj{(1f@yvg^K0?rx$`BxZ1t726?gJt8z%bPhDb{Qjz>JMy z%nzG}G2cVXYZC|*9)Pj6HSrMo7&tV%SLYVfModfzB=BS^f?IdsWNQ3;wISP4r)Rm9 zESJLD4%}XRVFWZ-=#)%!yllQKn}C5@yo$d-Ea(sJGS$s&M@;fZE2P%a(6F8@(!m@? zWX=-9FfL#)4O_z{H>lSjH`G~1jQc?-y^cvzv-UX#HLFn=Ho=f^A=b*Q6Ps+yV@^>% zC!a4;lcTXnJ-g4*&U+nX=rv7bx2DB?7y~J~(v$fFet!mQaOKtjN=<^X{83hvMt~Ir zOSat8Z-O*hKjls{W~QuR!E9Y0k^y*kno&itQ=t||ljk0iAKq^whZG1G>gR>cAbHsU zTIiUnQ|yN5vo8vj`XdeTav+YW+73_RP84QC-Y!<=zgjRBnjCQBgy@Cu9d&2FE6Sgv zx4(c~^dWA`%+m+iFq}KH^VTyD?EVt>`B)XXGK#UJEwJ<&=`XW! zL(eJJuKvjtYC(>}U9lFPxkkTlg<6&4=v!vfi?;+`vu0{tH0|r@cGFn?KWmh8KX&C_ zynGvQvb52JV2LzZ1RB&YgF`NZ7x?K=l;-E^&XS*}ACvr`ULY+&bW6`bDgj3wI96`o zZ!AHZNoj~+z8a%8fQbezzy$mG3fD>)Shm)%hjyuR`yIn8OcPn4Xj?w9N6 zHlz$jQMf~Xgf$7_m=m42Hvit1u@f24p1{$ zUV+*(Lq@mw8`zC>Zz&O_*YnNb2ksK!>Zg1v5Oj3$u7f(EXQ}Y-$S`hL(1i#3S$k5~vntBiX`ke8c#OCK_aX@#gkzk&H+d3yB0o+ehOI8sG1&-jQoGlIzb!{)ye!)*F02%9xo6fQbiVp4Ca^9LLqtNry11!v9;v-5YVb_X5tQL3Su zcMvnd&8alCu8cLbDE@}i8&cp1MQ0cb^Xn;N1Zs(CDr9>`!A6G?8D#An?m!RgJacpzcz#&9kH6i=wUziGj0@i3kc|ft089G8PEx zQ~2eXW*!>WhwTR*@e7T{F-g_tu%m0ImA8TQ(|8Ec2J82;O_v=NNggm-;3X` z0*4(j4Hkn{oJ@%K{{p$LSOStM{u2LTR(e3?9(J^d`#@|!Q2&(yNyytB1yxhR(Vsl+ zLw?Dw_&z^BN$aKV3lC}B@)A&;jyP(@e2&reKIvrw*NZ+xGtPyA+1WRJHqcdC>h;2|wZmmW5GJE5+6Vop(s-wb4o5=!IBl4yz{ zS4X1k?K8?>c$OI0Dcu64U=R~CN|rQ>H`ESeRNcbP)4PC;yNVLQ3yzoN>N2Q$AZCCh z|3zJxR#fs0Rg2XW;Gt9}ZY_*(xDW)eaus#R0uFIs-={hrMQorscGvV4VIn6hUBp6i zw9yX$m8v%Zzo8%HO7UEMB99Xmg0>LwPC?AokC8s?%x3#}-_s}rb6nN*>L9TD@@0 z(Icq|sCI=s?Y*yon?S;6RRYwGd7R>q#8`9DLZ$8QiNiyo%B&OX$WhRKUi{YyI#wee zuIUyPo9{^UHiaLGEQSN0xgyR9;>=C}ZR>hTN0ed|YB$C*kRiVu8T~keHYcVP!bn_g z@(fxkL-Z(Kx45pffLp!C5wVkOBrL%)?nw#E1lDGv=UJ`H!0_jj@tKRqZ9{!rZ6niPckZes-`fmuN?s$a2<5+;V z>t$GHhFFVCPYuR)s=%{G8z@1qUwMCYw5dMGuAq#~?=dsr-quf^HuDKhJ_t3}=Ov`>%rF@J@=O%nXFUOc-UtjV zK2nk9KYW9cBiy>XMm?c7o75pDpEZNUxmCC1IkogB9Q$92ZH{yu0-&3~H|6(CPgs<4zf>_-99*sAXxY z&It#;G>pwB*0Ahpm2|?*&0g;RG>*YK&uCmfSv&d9D^Fg|csF^}ebDm>)q z55E(&8j)e=8i|7R;_-)S%Z;+lBd;T80#H0p|?+QLERDgoZ^0wDK74g@N9-} z-XIGZPpsq^zMErs6sCjJ78ngpz(?5aJ&&dh56_xG{WG2mu=f$vO&3>3Ux{6>gZjBT zsJdAF@{6NmgOiW5SBF*AM@^!R&NYehdbetQ($OsDz^BB(H52dS*H=a_mBsd;s(PVG z)X@*^RP#?F2-0b(dhMj6MXjE+1)zxzJBaTnz|qlX0!6DYF0Z97opjWTJftd}ax|$j zU+nMUt`=!4tWsrof9*YQ-NInTd^?%AWR0%69@HLnNO-Mk9z|xAEy3$`0vz@Calot2w!JBuX2e42`D{ASPWYAM= z65UF%T?OgKa0=2za~_8{L%5U~{I&AbHT=EkRnPv0cfl8V)w{nr zqG#PH6&wo;Td9X33D0mz-FW{A7%$A&MisgeC9NRRa{*e5ZY>#P_J_Zb^-xgndPKw= zpSH)LuVN^PY*X8Tfy>wV(TmjD?1U4l)9;QtcyT`YcSnPyub?rks}|}CSG1mLbX!Fa z*%h_1E9xQ@9ozaOR46{}fY6HLw*3*Nwn5 z9)r<*2bpO_9X+t1x%ydPh=SqD3%u!CF;%3Wt(V#qW}1A@?*)s{Ra>z%iqPF?njTCm zYU7y-5_qR`P-!)(Be7Vikfx5Gan$bHPU@-Xsb4BSRB!r;`c%qvuKxEin@P`R+uD&#t$aeQJd4wak36A1I_v0E zx%0ym0i29N{jU1sEY2tXpvwQ@h#9pMp}Yb|JZ|OTXnmdwak^~qMWnBd0c2YyZH8(WwtuhPxgeb+-kQX7w-2=!av5 zw-4F7sC6$u=BG`_t~|enzD5?#b^tj~gc#Icmgc%L zhH;8`OE@f0daeinTd0?G6l#QDNMHQ z@qk}+-fKuf3($E-aAF8O7uOnRY}aE=Y((=XTC0zLX^W;%KP33537(Q&(^`O7cTmUM zkmDYyE499>apC|pkb~-|=^4G<nTgyki@Cuta}j7)Fbpjymzom6+e7 z(#|q{~K)MntG~Dk5F~fah!~LXI#dtfiboIxT-gaR)PnShuM8M9UbMzmv^C3gX zhvJ4%|1hB+&Wad*X$dh5lE~3fbk7dR7nu6JRJ-%=azDC<1L1S^Sb?L3_oh(D(TSjq zmE=(_T{w0J+8E(#tR1|P1zOi`Z7JD!hj-t$KAhtX&u$_yrWO0 zHd2%ku2X96c}IhOS!bk%ZTMkVy)6w2>hp6%g1}pk9F1?tFtp>zCeDFy-U^j<9_ykR zhQ?HzMuJUac^GdfY4j?kVP2I7=RHihZg#oKC>PFaX7Zx#yi4e=aGuNLRkriI96EaA zE9BU{G>V6gc8dke*N;PHJfVbl_uRE4M|_njBFbDn3>?Dn)ycdCIEUd!e+d&O z--d&c)%txgcy!HO>9OJ(xK98}{H1JteI^KFWzZQpv^%q4IPpvKYV0(4o=^qH-G&1Q z`x;~3yGoEu4&>`Xo&z}|jP;^m1@(y8MtcX#Z?5hqzx#D}`GwV;tup^~eAdP%V1s4eum#K zuc}`zI$C?zmEdEVrye9B=gUkVG3hl-XWs_jX3`miZ!&2g({JAff61huB7C_?Kgsk` zlYWfpRFn2FJ@Y~FjhqYkFwtbpWqOoJKge`~Nl#0q5FZU_j)EU%+`X z4nx#u%><_QBc6~HaHb<0pnC~gWI*G43yAdeGy|G$utpLz#(;)-4O%zC`Wsl1LF-IV zI|J%vuv!pQ*MK@0toj6%HK1k&RF$BAJ{HCbTL>2xL8lC;g2B3e1EAcGseb`ySp&OB z*w+TF$ea)RouKy&XlZ*PcATIW4Cp@wlt<802GqvznnTb-2DIxxQZSRCdkpApLw=8! zup|R}tdF35O;D@>ePW2MB&ewYJz`3x6XY_WnFchPpc@}ai>4XSGJ-+|)TXVFUrf+Z z0~&I|E3o;5?J}^wrsOn&HW7q#a7aT+ZIGka8LSott2VKoGoWS$)QzBp2GqcSS`#$Y zfSd-@h@jCQ72QGl_4u%cyJ9{o?>f>xrv2_&MHS(#p3^Wwb`5}& za-S)-k;S^ag)!l?K2wMOb@Z(H<0+Ksx;x32kqv*LD^EafRgEq?YDH$N*vnY0YRvjN zjcg$@1J5)`KgtJR;oVGY?gbuS7(+gd(F|J zYbG={$$#%lbbwyC&q$>&n2>0Ajy`C2+k@l_dWCa{bJhLV9Nk*_&>^Aw?2AX*p(MUh zx>PqqBCV*Rr>g1KZV#!iuQ?jGtbtl6xV6)TGToj|Hsx%9%yR3YIWJy!#9$~jzwYQ# zVUM&h7u(~Lt~=^?dy_(AMCV}%-PnD*7=zXpC87viUuElscES6nsg2hiwJP3aKlh)e zg4Z1l26q-p?3CLnRr)_Dm9tA;oEq+wP%a`fkivP@xyTV+HwR)VNr;&UAvX!VB%8og z=kz&hR*|ENdnvLZ4KR&3zghjwouM`tIT}Wdn4u07IokJWEGTX8B?WO5$1O$iN`S?0 z=Tbg|PgS7fa4pb1jP`oaP3|ZEsR&S>{z3J;fq^j-Oma_UzwRezIE~vW$58z4uE2#t z>#r$ActZbK1x z)j>`H>(O;&8(tr;1IxINi`V{uU>knb-xcviQv~?P^fzc4{ma#BiJhm5&@OwWFPk81 zB_AiBf;#$57RMpkcjd^?;~ZOQg|5^EX_+_D3L_uIjl@Bn0}Myionasgn&{rQ<*qQf+}DaGN)@1#q{K`lr(GZ- z8n`z2P4PduiZSdYe}X!A(^02+SIEOeaS&bfKM^y4%3eh%6DuDzuezeD6gwJK9|fqN zSMZek5fde3j}cw$XgIqG;DA;HH1wt1H0FNoFVoX6qDn+k+VTt&UOZy^79$Ij*#1i} z>pdouGklmjTepKaLoEzSPrLNp!noWTyc8;>3n#04OB_ua{w_MXA0}j!?uAar+bC@? zhTi}wy-ztx9L>9}7RtGpC6kc?ch!FYces5Ob-UkX-8)esq(fa`)J#tn;_a)iM{7W^ zMJd59lhmsvIFt|(rugL~q4+uvbo#Tg&>2^wn5vKfh6ZHeVp?cwMChcvf9O7V5p~tP zRo6P!^*JcuKInu9Z#2XWCZ_-ZTHtd5sDfk^NQPb&5-Bk=eF=eXA9J9b2NRHIYj*2= zlrg1SNa+J90cQ$Ia8gGm$Cd}1|ec;S9&G-`YcDO2OM!&2kG z>TAwhttQvGt%g?xoBWLtY}Swo>~Ia=@bcOqnmm9_#tV(3LJQ@HBwhtG3h=@Bu#`Ii zMRZYjkkRzV6^E=rUM z#}Cm58>-&ctyYOz5oOixUHby0`M}-bR?R}Ia85Hp7vGDn`N?B<=q5ZFVlNtEBde;D zQC4izMdvF@%tgPBdkSy2A1fhvnt`jTdl{>f_fAo_{dxolp?P4?Atb|+Sau_#h75FBJ#Ul%YU%nP^@T#3+MD6%(ZK1V!A^|5U->Mno%a)F zq&CwdTX0Uv*5z=sQR$Sh7Id&A(7$2oDHxR&_nhDk(amh!pX7szX8KrZ<9-EPzcme* z7z8|@6>x6L#Ztz58t-OV!vQbJ^jV4c)j#7qirA^o)>H98Lzt^nn7e#WXF`5OTVRKp zb4MPg7v2^Cxb*=^oZZo5?=ZT24+4~oUn5#GRy|qPYUqs;A%G9C|1J`do~BTz&fo~s#?t`k3mATwmx^U4I$QrThP5GfEx$SXPx-|O zHT+U*m>>E~j&k&Lw*egj&y6*G=0KmtZ-JA^(546H4=DT#Yb7%y9fkNDH%5&vXAST+ zlk*AKf;uE$SMQY+7+FrYc!|}^9z~@p5fNX5Am;_H(AGNHSvk6ya1_+_$;o9LxQO54 zG<_VFL2Lz)-~Dn~_ePkmQK)Su6g)V9EwE+1*Twm{tRIjVm<*iunzju`q{17R_&H#{u?*VoOlgz1qF+htJd+w!2vD@I&>(`5< zgm`66F;%(x9e|9VHVlvie->PR`ftPGP9PZ=_M!e&W|Cv@SO4_qMCl_cxq{U^@)I?$ zf)z8{XEOac_7dzdJcmYrfh51@SrV!xJXVngDruPB4`T+1%)&UAOoRo3N8Kzin9Gd&?@UhsDJtHmU-QBYvglzZJV6 zZLT>6W1jiv05gqVH9`GS$!aiTJxauHU&MC*^_SS+B%5|2dJ+0u$@FsQu*vOW=l*DN z=b`4Qq}=;fZ9#M?K{LXYIVY&em93gB?iyxtN?;G9JND}rY~*$}@_v0tt*va;^Zo&V zU3GU<%~|M8ti-hI1&Xpzm%}dv^u})@H$+O{8L=4=x}jk$kv!}~P56a*SZL~mkCO4d znGvQD`BVk7!gznE_?a&wPY#$kIjX0E2U6Lu;+PTM;{Ev=wwYUi|qvZ+neiXuIZ zw*REgW_@kL6~J8&>Kp1Wr&S}ld?_>)#~!(ZR*n>knx^hx5CdE7x%$j#R$r33%^;iw z{{_3rVYdDdf;LBDGS%=ZR&>LScHi}NtPbAY$ij*Vix^qck27{fUtkG= ztOg_j25kUNc*sPl|KoyC8#FZY=MfxSOYtW@3j=o$aS6c~&f|Kx6Os-?D{+?eI`JXh zgHLnT8UCz30X2cf zc(V295E&@Na=z=$$>A*kZcUxdQ4yi-8<9Ysjy=N>P^fQ${{lCzwY@zDGv88%8mAt~^;fch-|k=WGDXpgr{;F1VwRLD+=-~^c=4-_mwW_LB zr}k8^L4%f!VK5UY&o%;6J+jn}s#Z*!CRt!E5ZJ=8HFuv(wN_e5g(u#pK2?^IP#=^$ zrJU8QCXstp$7+}hHmPydtnQVnje>^tBo9~Bi`A^?vD3l(ZALi7KMjO}x+GEbU%w|) zgBYd0w*DOf$k?RE0kMbtH3TV4B*Z;hRj6*&ucgJ5BXR>)&ZAao#4**oI+*!FO{#7+ zsIp2>47XFqspqQ00?%rwKCW)XL=D)Z4pp~$M5PT;m1KB_G1= zza!=jDsmZ+VAe2X)wgG|Q^E$$?*e87*l3IzRnw{+lL2W%L0{5Oh}ie*R0CM5XA1z4 znMCEUX~j-|JJO1n7G*_jDPu+agTHDHE22IA#^Y~4{$^NK#LM`5x2zR$41bNvSrI+( zmx#Zm_#0W%isNN0LO+?T{!`0p*rgw27Rr!gQ_VbbX@6y)`*TA0G&RQb zQJ7QDEDZa>rl{_atWMRk>UV8|XNfD~b8seROoob*jJb93jRUyeN6}MP#isDiln%A6 z+7*u3k2}G=N-I?vbz=OwAvYg_fEOfk=a*+1zdgYHW20wVtG zKD#_)P@rn}Os0Ee9A=q4r;k;c?&+EI#uLnj3Y&t_QG3Mk*w&(^DlsKs@x`rc)ws2x+6^5j!BJvEGf zA~cNnm4Pn@T6Aj|nov`~IF)q)vq?4=olpjcX*@0?-Od1qZopQV3GQ!nedvM&Xe)YZ zp;$HKXIYDnR*dKj+7Tgm`i#RCLBB$Kk)|zrtsi?F22uYGF#7RZ)El9*)Zn^S>(Lu- zhpifH%fOQxT4>jrqbG>MIqRbqQke}6;)?Vo_-1Kwr+$Dl>Pn9hZ0xiTR+)9J#@*V7 zDTNOiU5B}%7FD;iT6u8%lk@s%WZ+cudR3#I727ElO~SV82?!#z3|gwwma&}HIUfGP z`(PCH6Z9vEy_l#L)w5!fm)g%WG2qSYeyH?tQ>@gRtLK6uCdcrbC!AUKftMuMnQHwx zi1Kvu5Ot=W)ui%^VnATG_v>#|_4-y*uSRKNY=SgHABbD(?2EQjBHK_Jlsl!x^*RD+ zEGh4|Vv*nt1wlO$q&Ni!+_{xFFXmyz2NKf_iAbBoV}`_}w74sWNuolM-@1&Hp^=l| zC7*~`$6?A4>kL!+eSlM$J6KJoTQ~uFDx|;zsd)LKtf}h|3;?J6>nIrFmCrCiFM>C+ zT~_LJWqfDA&)DFLXdylIj{pW5W$@~tfgr<9e^YSXQ^6Ye>3TswJxFp=TeGdx668gW zz_>^}fuA!NAxN>qh9;=g23GrVML@v;lDe+OOF;^`_G)GddLr#Yq~}j^+XCED*p2X8 zP%q2+@{kE^VM$^ihtAWVf)MW#4(d9C)RhKSGw)hpv0Viyh3;s@yp?26cuABL12MC| zl=#x`mv5Hf16v}JPG}E{ZZbvDlkGuFda^YVrWXc*g6YYf6^wK{!!Cz*NHd(5y>|6; z4UK!#;?5l`?aB~RhR6;|50CiJf1+T) zNV{WpVl1LxQai%MQneddjbdgM$6YF&^}JBVO@-26rKV%qwkZ_`o%qn{0O`tUVT2EebzmA)MvpI1^i1-sdI>s z$h6faU*AQEL5#2WQX`|S+T9{a0;4jupB^S$@+?uLq!8Ool_+o1O=bnP5AD*^uH00k zqOF=uv@?vqi>;BcNoXU(W{gwZ|F;T8TM6F3^0?8%=J#jHe=)(gEhZn7@ZA&rD#n_K z>@v2RVcf|0vxH&EFuzos$C2lE_Co25eV#VB?g<|)`I&7PA=T#itR~3Q5qR=Dt0M_f z)ZmZbosj3n!eOV+c_Ww4Sc-febAYXgDXn-VpIUgSZKc-~ivk`7HQp?R)$V?MCtAvn zB=DB#!&_UiNLS7RB})eZcbk%H z4T>Jb{ESSss;O1Sn+{&kkigv~nwGZDF4yukB->yK$)*SqeZP$~vqay4B);x*qK|%Z z7~kRBuRjI3Tdm8}>(N@g1atDqIN)icR$av{#=w>j+Cwq>=Nf=NOsLk!Ff;B zJjRL{F$~X~Y!@$v!TFx{eRDVRh%>HQ*Xm1tU>kDvM^G*14g$zPLV)Nyo?s7X_W9j< z$P-G%V7=psQ(I%KMv;3|evH-F`wnawND!wdz3L29K#Pi7j5lC0-Q|8c-N}#T+h!*D`FpZk~mG|7>=a6wl8X)mo2cS=2Xc1r_o5w|hxw=WXj^Df= zqmsP)q!MgO0G;IG?TUJZE6M^h%&E=!I$&+Xqivvq`ZqM;f2*2@s)&EJvtjunehteR zHlTHu*V0${fy7Jc6rXCBTC}>D2 z%mA*D%eo>Xmqb?U&oVBFEtk!rmN*U~&8F;keFU+*d#{mwJiGQ@oFGAiaHKR}R}XWr z1>$2fFJba46#=fg5NS^osyW&Lt|bp8C)yit*ZE_9F1l+HFz+s5hZnz*6 z-e#9br%j>z_bnQrmo2u&^XFj{I5|BkD+1Oh4Yqfj3GXxh$bcYajzV95h#+waAax`=H$_#98|Rz2ESefw^m#*(tM zD2|n8kp0zY87JDdV2mLL-0WdPt{JsJEAEd~8{1fQh9shxzYx(#^IFAWw7I&ivu%W8 z4g#gAb>YL{1XXq~BcDqh==p@UW1Yj77zgMQRi!PWPI$wpEzH@sFfIQ>^Eq1|*E8#q zo-KWs&32l1Fzj99=)C{bFmP3I$w=l`Yio?UQdSLJPI)%HFrIBh&VSn-3VfGeHH&e96o zc<@Scjvgz}j;S8fLd$Tl-QanCE|{EF*wG{J^R+jy)RBB&WvDd6#`?3M4;&JBU*{kw zIb>8&C9Sw!s+CsU+Us#(#nRP?s|X?uBu1tcw{j)!L1tiPiHn~_!8Ro1s0#lBO6dP8u8Ki!VvXl>Y7bF1tt@}@mb)_^nk(}9L{TfW1QZS}?v zUJC<_Bv(SdK5Psi;>+-mv2=OljQXa%)i?3X!=x|oG(IjU=zp9~6K@zHRaPXB;Wp$9 zY*sviq9VVuKISs%7E&}$9L4s4pze<&j6FnOCL=|DD3A-PeQ_oZLy6y#o%~O zh0NB?VY!MLa-Co!4D77-cd+VJ>~23d>Z~r|+54-ogLiDtmX!MWFcO9O713(EGzl^4 z4GTneTtEy&MPh7n^f6HvyaWc2X`5RVF{o+vA?vilrk+;%4Lndgpbky>vJ!jyRS21# zk?u8_c#CaNT47&LcSrecYn`}NMMNNu-!4_Ylhvo^f=oFS#(U=;l1%4afcQG-0W(?NnT#h? zu218>sFW$zKs=@dVw>$&i#u8IZ8Yqp_D?Mh-&UK<<*N1T4lF&l;KbQMBvz5Lo{y-r zove=TP6I5yF|#ZhzsY6tN>1Z|*bddEvo)eYU*O_f29e2A&x3d)&m9|}V?P9g5FmgK?%+XjNcCm(5bKo%<2EDZKziMX} zt8wEa-xABYhd*V0(hV1w726MUgyAn$Nf)bCRN!0Hx~tWx`aQr(#)MI3pJ8Cww`z7* zt4Wn;!1dz!rYMg5bhTR7_-h+H&O=E%e{<+A4>&MsSSQudu2##Y<=(>yE#7v5aa4op zbdwIgi)i#>Ty42cHST709yS#OGBUmSNiUISfBN2-8?K0gerbgcPc;;6PV^>enHc4f zk5&NS4g&DbvUM1P6PIKLtWP;ueO9vrYHc^Gd6oLO7jIc#D`I+oE8^k)DzBTh#+&>N zHs8BFP+a;dK{A%0;a3TG0e4zlXP`v5GI*+Fx@(@51){EM*6;f(B5-*Q|05SEKAY6@ z;nebQY8g_vtPFUW;ndeic@1z8l8q$$;c)5=q`11vvR(T3D-cRBpCd_` z;%>>zKy3N#>c#F>hw?qwi*)g=lkQfhsJqvz;_g;#qtSqdCLyXh)W0pS6?#nWHTwn? zqeJ$q(LJo_QG$^VVgx)kMw?{Ghz z+S$Wu(Ad=!gM5nfz!qxqEoy~LM3c9w8>l+6&Q}e4TDeh?*HuApt4HLos#zZ^B`Wa? zwV;pH(!2aMG|AWr-rk3$`#vt4Ad%?%cH!OSqC_jA@?a|>V~`bb8NVOn_Za@760C?8 z_#2A9hw%44{`TXqEb!alZyf%X;_oB;9mU@t_^XfdWAXPa{@%hLUS(+={tS%I*%USV zcb2N6Tm`QXBm+;akfT=lBi(gt=UkU7DYB_}FpyvM;1poZ%vKNewdz*C3^+VR^sb-b zcc1mUdbzLF%A3;wPY57XUfQ!&Qowmf=W-Dq3>T+sAzOb~4-@|jJ0bacRWlk+nWLJE zISuM>0Wy#&fY@Q69Q|%fVj>Rm{q>TqPjD{Evfj3GL_v_jc#=J8d&@ z$_TG%$5~ChC*V3qq_%`d9{n4=?;O1aN@3QbLw~`J(Z0GxC2|)Mq*5l{e;$}CezhWe zAIH1_xw61B;R5TBp79XB5(;lJ~XW&@J_SM{RoV&1NRSBbZP10Fhf_j?(kL-wj* zKdbhHvnMRP4}rVhgu$Th4ncx@?8dljkQV&*0pa|NL#e&6G(;bF9R;CRoML=?-2eWg zu*k`MPYa3!^Ryb!A3ng>@YX|>Gnu- z%`rgt$+}%Idd@z~zP{#8;(kV4c)&Bs&S9_v4#@T0kjd}6ITjA3%Bi+vs0i@p#4EUB zv+WKX56j}+=7`cTcLn;HEH1-uK{e_Yg!;A!9q-HzPK%oax)GjwX>p%1@m~n0kFn%? z=d2-&jqeCZe`s^aHr$4d4tBw#4W+HFj7{Z*;GYa*vT54^+%E*hxQ=h+H}Jq?wMZ|eV++o#Nl+9ZU zsIz}BMSXHSG@+{CT}gcyA!+WzP}3?yYDp4&#-L;^v!AD1m8YjXCodV)<=2V3pt505 zSFT}(O=4xZ)EKbF!$l6d9H+v7yVX$h$SKfEhH%&&d)BC-pn2oeRjc{k%A zSvpQ!W$VgLju*}y%M(D$XPqIy?|u|NiCy;rQ(i$pS^X0Z(87d6jEqso@NmAaErR!f zCQaBTh_O8K*_=Ps$w4?S62KiCfapE-K^;VHs;UWA-LYjs9v>D5@5zrDglb|t-G|^_ zqh5xMQ0fK`$KrAtgTpPYS?EZ7^)qxBRUx89qKIf+($CjaPb46;HuGkw%~&KxgP zEmAeDoHRUTtcDYIxY z(dnHbg->NnWb5ho%IKvYtet6i*ah9gW8X_&X}$j3JUi!_?B-&4v-R-1&832wM%}Ai zGT3EJC9VvP^Mt^Fa!^B1I|(JzL!~lTdVoc6!U?zey5H?*$mWUBl#hv2w@=C5pN)_8 zB5GYG8IvpIw+$~8;Fmr0A7LT~LwAUz!aF_huVJVuYwH>`U4L`{<{V>0zE+p3Z{*<- zbJ0b^=?OJ|Fb*B}w;zYprX*Y$)8Jy_6O}gK)yVe~6D2EsD6-_zhtg|*r$A>oFUx0; zFfoo}TQD3;Wsq(+GzQha7iSt8ti!I8Ii_mhu1GHxIR%`tnK-P8jV+M`+cr*8II3=T zv6dBBY#a90w?Qm&goEqQJndw|5T)mkfx$Q@7LrnL0ETo&_8*VC<>|NAQy(uSVf!Tg zEJIefkGO&`ouhk^FK9qeOl*1#>~rWFn$1?@X(Y9dmfusl4t}vfbIbCM3QkK} zqeF3tUxN(RRB>lk1>6_$j7qrI@j2&A(Q@oS1@*g_<$&$eEpQqr4xI9^Tr4+WS*3k5D0o33U7dJsBy<3oWB!1>72= zSf@#yoR8gy@%Ta&k<=1A??W~zOb%oGa|jp@8w^BH;4*l_%$ygjFfR>lUIvnvQ8q8- z!@O(<_EzSB?Z0uzNIt6z?L=#IQ()hwo{!|1hUB0K8>017Qk9J4I$xSJnl}e2lIaQ7 zTa8tXhQgyv$83i?(*Rj<)F{QL7;}sWzXFY5?>;ZTLH!(lO9w%k`EqjvUq4tbj+gfD zr15~G%qgt~f)`I?VXDWmkT330E>a<=!FWuIJBg3=N|cw^kQBkYPTDhHDe6sMujR(2&r}sKp#H)Bk1Mvh^SPZrQe^w7unZ zcjH$;66Xa!Y}6Y5Q9AI)LX@{zw6{S5Y&vZ=GH5TrHF}O*mF;1(m5yj;sc4WN973-0 z^dEN`t`Uo3v2458fV!$miq&n<5B=)cJq7pG5mHKvgh zZ5(}s^W+)<5!(dFbF^&j^E8_+-v#c?|LViT(f-!Gb4qGjRsn;M2cqAja z(5IRA8J;_?FtYGgS0jg8t?FO?iV>Ou{7-Jc$To~AHmYxR_55(FwRbbJLSsqXZ+(mO zw|FZN8hV+g6Yfg3-eg+&pMW8Jx{@@yjZNkdAN_e*R)$@Le&eD@f1i!8xf&2as~+n9 z!iKFQj1oJl?|+zY?&He-9H@k^eFCVEyC;YdaL1WSDcV^!otApjS2Att!f*NOeECc0 z{T#4?dE^X&+7QYzfVi0#X!x;ud4$y7C2UIZs1RZSxOz}^8)NmW``j6$$q$zk0d&n{4+Zrgr}B@n+E#ns z*dG))@+>I#sG+jPSm{xTd20Art3{Q%eem9qd{GA$^H=rMSS!YR7py|T6DaYCJ%Jxx zE+@*luzSXgK4cz$2ISfibu^yJ*sG9_3@XCP?gKzz=iiM%SJ0kct%?qRu4<=_vgqSv zGG^(QZJpB`o9MB9$dNB(Cf#9GEfZ5EtSpnfU!Votc|jN=M1wm3Mp&Ps_KNF>!<$B8 zvHOjd?xEg;sN62^o&H~T`6<{6R`(`w!0h@tWHwu`$FWKbum%9lGZ;z!BK-uBu&a-; z=h>8P7B^tE zEJqf|gEBc&@qp!)&OLh*T(~ms;B&y8Cz8xOgq!!@>StD ztARIKs>iX;3S?4dm2q)g^t#fsy0G74fH)Eg7w!@3K1=Q#1z&a zMHwPyqdH&LmzIlTJK!e5rhez~PsCo$5(3U$pWt*Bg^qspS=*7PTic{28&X`X?e$2d z{aHr*ILpR~BTm45r^(=X@&XQR^i4C9vu&Rgq1S!T&Z%H>USSSekSuzDCVXn=pNkZl zWA~c;XYCfQwzG4PjXq^j?xyHIDRd38_39{f&t2Th&oVA!)m}0yjr&d*(D5j4Z15m~ z;6_(Ck;DD?`lNfDFo~~q2!zLQ`q+>@fTZ9Uz)~`SyWwmw6y5gehT4$oHsVVN_z?56 zY*ve7&`v`@T7g>*Z1C?km@Oa!dkl6i!1M^ekT&9q4T_@l#{4(z2a?jO?FSLTGC|MN zOYrLjxh$y#A3dg(p+*&IM|ZPsg8ElCVpwmpGC}Ih(*sEn2av!D*9M255d)UNgOmW* zv`OA5D_GNJi@6}>a|TjI1d*5Gg}USe#8(YanFJflN0iDQQ!vHCa=%q3b2#*lOa^zF zbD;iGa^3DFhtwdLTW!oY1+yd-w>|`QH{6M38uFZJ2x+dYEUS^AUI^3zUb%f#v>~X= zN^|h4ZNUB3C8H68Fw8L!8Fg7Dpd9^%_%=DZ@Hc**gFgFfv1}+-8Q{SjhW(v-307l- zs~lY!Rq^yqbP{gvDJfAG$6H-vs!Ka_^?Ddi`T$2^jjQLfAXhmJ5Vynrd_9_o0s5CzP={nGoN3ffeBHV(Q$9 zof9zRF83k*hC`{<_=VPhvs*V*TxkeoW8s79t?#iqw|_YE|Es^FUEjiDQ{O!K&CxT8 z)id{4BfVe3kSy)F#8b{(G94u+OMM@(rhTb{^fAVi{LV!Lz>U*1J6YB=Jn|oOB9#JN zV2Gs7fMlM;!qx0Y&xX7T?!cPVy=mFbbHrbW4X=s|ZtoJS2+g+oeX1i)x}aPPE)}>+ED_C|$L@`tx3^S=8E0RpUNu$~_%ygSQ0cz=THLwjpz9Ah4ou2O_Onh^B)` zBjoDQL=IRl+Jh_L&PVh|_hA7@%9h>@b?`o%7uzF``0g`u83e-SrnBz5>=b^I4*$(J z*Ih$BxRo*;>tMYVO2yfcmju92;6i970&bs8%O}H%qh(=pRQz=j(NpQ@%#&p_#<)$v zXPewsz@wN(Nl9@doZ$#Y&KEZs>Tyg1R{>}2lSFlQ_f_oj~W<|{RFTp{&9O!M~x%>>r;8bOG1;SS*r1m)?Dh3e!aE7iLIdMJZNMk0ms z3^ns7uppgbctKN)lrp_y9jGQjai4B+C#mB)Yi-IGNU9{a$uR)A}d#OxD z**eBxv`fn9Ug9aQ@9coC_ZMQI*|sXEKcgWExKnI*@(zwAtodwmdsO)ctb4|KzB1G& za}0tdTIF{nf}O4BUKS>>VUVXIud?~@E)o9MdNoMcA>5~zQQ@J-&-lmJM*M0eb z^=MSpeyYP1tEYGG;hQCifgw>TzPM)VF@6H>1PoI=HRO{YA?Q%BQ{>2y{?QSfZ{IXctJ$bpHlD@61r*F z5V9FO3SGsc>S+cPCdA!@V2-m`6=TL9$&k*`A2CDbgw0#gDLAG!)v7hUxm*D$_wd$3 z5*`@tRppkL)AKE`ruX4E)|fN}Hkq(70=vYp(tAHhu!^>D5>-v%nR?~RXeEo0;jI{d zjx1Cgrs9mtv8!tKbgR8`OtacXZcv@3SzV&)-BeSjSxJ!x)CT;NJ^c+TIHZcES#{gg zxxpS=!Y^U2!yIR;LXMt~hQPLjpC=Wme$%bCQ8jLmeD_{{&4Udk|eKS>dMCtDws)K&E9Lj~AP zGTGb0*`JzhQ*{MYja^!OqBqvN?jiSbI9mr&$&d4~r)abCxLSeP%IBEI`_hS$Zwub!7smkQ;`ov5r7el>QMbcDlMeqI?m+6nGddU!{g(7q3v?Kp=(qHLuGkT15Wz zCGwY#tL{8ibrJ6JvT+Yc(8am+3v^{_0dbtpbuw65yV`u@sOoKQO@CZ9c7;Fpf zbYjVz5FedW*NV)KZv>LhIRa0zbwHUXua%Wpp*~HU5O8mAZHTW2A>-(NERdki6r+JC z%3<*{*4T)TNsZZhvs};S{PY!wJOi?UG>czD!_wkfpg#7iLKZ%G1OLXR*iVXfbCxsg zB?vfQw;~uXS>THU&hsdP^}kNYWye69Me0_r%ARFK$9#@lS8Kd5^tY>OMl_{^4|)Rj zx2sy>DpzaVKlt!f3i^SlDp%F~*;dbrnWNb}>@-EGPiMpQysqZWwmK`<9IO1j7B()x z-FI-9Kxg60tT|i1E_NYX9}{cr%zp{(`{;tSFJ>JI;IrWXQ6s)MPhl5wneZGC*z-@z z?|%LG1(iAn5#5$>nREwI#J(1L1Dy<8*{-|jRn;u(6VSpy=CLq-95mqmk6`8K3W6dp zKz?{lUD+hE>u#F_G2vyj6VW@fcr5q8M#!rdOCqHnge5cwd3FGC81YDx%cY3 z=wt-k&wj@CSEfsQMgFuw%~UYp^HzXabyFBpA>cO@v>}CpAehm{`Dhy zq^NSlAZ1D{Jq5!r;NCjdbm>9k7Cir{DY{-P1*`SELXU71P+t)`xq4YRFZD5i@0TLE zdY*teF{h4yp!79O?0ZTnoD*j@@`j+uXd4zMMbL@I^uTV?iLH&Vn__$CDfBM_?wgy* zRgQN4rFK4qcjL;P6L71Cgm-9-_AHP9T0?kykB<{?ubE`JKYpxYL?CI2-u)h}2)-QY z?2Qb4rVAY-F;6&zj?Z+QlaFXF=}fSD;~Hu&nsUfqcsq|bMxjkoC_kkUuJTwk9Btt; z^lk7)Wp#)v6x7TAR_o{CHn}fV);!#;mfar(+e$%9K-L0MhEOZ(a@_dzS(DbNM)R$@ z-Nv0Fe?h%LYz}T8l3#q&Cv=1g?YCmWCBNq08P5ByQL|C9VtFZN(&>_HHZ(tpeir0>Qaf77$Iq86u-a5SC_@X|E`O>gf#q#6%P3NZKc$~t=@-Cv*AkpWgpjHUGTu99rkLiI zfas=Y`B>@;Hz4RD#yky2k2bgY!iPRV&JQLB)TR*e>=~Ir=?kw#wwJy58BuU@4ihG6 z>^3NHhUp7m;h~uS_JzmN9%5zGg{e8d_U z`JU>RYITolwNyQtYRxJC9oGC=R`dtzT&guO^5|DXJXXiZ@hz5IFNsep!D|8Q@L3NG z;0&y!lc%7Tz7YdmJ6?5lx>+gWsiJYX#L<=hD5k0Sw8CPKTd!Dsov&5tr zaT$KfCevHlQ&T?582SN4@b)@#u}506oimotvn{#&l&oaej^**4)a*srq&|cuMS7|v zx^`?!Zd$%FUh*jM)*9aD-_-Y#(&oer7=?@_#mQ-ZMiqPt)+&ISw2DolgFL`hEdty} z3d_=_vXYcGRWeYvsj7hv2vr7GuoK#E42rk1t|j}})-gcvIYg*M22TIM@6jiqEx4ND zHKJnfe1j&^C3+5MHlVPco)Ia%tS698g`PS4VB14a{}Jlycb1r9sVD~Y@qF?*f8`HM z2fpVm0L%Lnes!v;$%C|ELCzZ72WYat9FW@~BlHOZqRIY|o50KYcTtZ^><(V0KS?ye zeU^j7YM;VH{FERMA@JgJD7;9XpP57r_gOy^G!3Ax(=zdx$H%+yh*_gINJ!j{ZEc9V z&T!DoXT=C-wONhM#$IT$f5@g#U7<<-EXihVc0-Q z!w;sl9~fcvSuX+wnEWAhhk-teM-jxzlZ=%(=M&3+fV&mLe`n)l1IU%pl+LK%IYH2m z>MoL3NTYYR{^B*xTiIL=)*~FiMtTws917w0R^iC)6+h0x#kND~&=pRecyqE2?PRvr zzp<8V9W7`;Dn}%FCliOoYM1o_3s))HSVb$vrA;r7!anN<#Ep=PP~Tys^lO5|MG)?O zGxr78e;KSHFul&0^(SmHsdovP@dy^MJlwDckVAH1wf^{xC&#SlBocRf$IrnpK5E}- z>tJ!nC)$fyJqho3F&fd?oW0tNUMy&i%G%X7GeA|lvLy2CYuK60;;kFu8Dl-kpR`Gz zZ^~V2fSa)aOO~6!md|Ry$BRE>$a?*rH$vlZ%ml}V0?q|*<6L=cOXjXWD!SK4=;0kz zXKSW>RvTts_LYY9U$14j`3z14I`HjhfCS~U^ru*7Vog&?>RgHNHI?KYWb0>7lzvrv z!mAeLFN?xQKtMXQ9yO&`>=dA;Hca;4wTUzHID{-fegw%QA~6_`1^x8vxSJTAOK;Ng zD~kgey#xOaJ6lA-jZitdE>b$xph^H57n&GuUC&fR{l3`3Wnk;KpV$I?;gr9=*na`T z&kyngcR1ALQ!18o6AYey<_BqQG}*x&m2aV+ea?!)Tz;~DWmRK2A_aaa= z!BhsE2l5-ohsSV=Aar=M&>v6wtqlF0s9YN5bACcT#29`o9C3sW+^V)ML0~s(FxAaj z110GhA3h??%^_aEefkv(tNUk!B{;Y~XG)mT&@iP_Fpp-MU-G8mFAtF6FkGPUhzYBIshor#ZIFjd2r3x))w1o2!i@PSpHBpP7-2B zv^gz9q9_4zT3*nManbQXbjeVKSWLkAoBG;|mw28Zr_Ouv!o(kVw^@I9SQl!V^eC=G0XO6^=~^>Ht~gCkJk(_8pii7-cro_mL? z_7qz6T^Y104pC(ohce(lRcz}=(nmN3+-D5 ze9UvQn}qAz^aPAJRQ4GO1l)JL1DON@5d%@r(p}VTS4tp*kLI(OqflD6M3KPANPQKz zD-6eE9dNJNL{VnzfEUp&&Z1u&L#QA#R0mZj`x^tJDhh&$!1Rg{rBzdnPGCf#_U@+k zW3XGOeE@4OgW6FiYUd*;9R0;~%!eq#+8^iL4$zH&yAEoHMbK3Xu6so}dz#wUZomz? zPhuho3@z5_8B$Yjya@G0A?7ZbCa+$x2Lef{y6Ovvnax5e-2z)00FTpv z7AqyQeFn1h`!vCFq}2PUpyGReKnX>Y)X&)YG*WutHZuAhB9!1{aI*h(QTTxKl}HG8 z_yN(KvxttOX&qU_=RCkC##l-%a25fgIPJrAmjN!W5ew>J!k(b225C6*gS{(&K(1&F z`zc5N0pn;G&NVRxZ5f0wUo{AO!w5@->7f1{VmHnBQE-C#5Fnv;w^|Sub%k_R=KPv3 zqRb6SK+{>)v}YvC`ka>#q5QA*{6T=UXLz{gW_CTZQBP^h1Gr-k0&f*Yy0VrG2lZee zp@H@PA7gI4ctCY5e z8afb4+n8xc=s;SfREK?qmKOg|;e`F zAza@gol};op)t-%0(`6xhD(cJot;lXBKVvSM)FLlnx}2|pLj#ZgBG5o0T%&K0Wn*c zZ**sY9La!%!*D_=+z(;61CQf2Ey!R`9=P?4%@oQ7SxCRT2RZOM|Im9uP%_&?{gnWb zLH7`ERcvlw1nnRuwiE%XYKD+*p>JTuoqz-b?$w4KIpu_-2A;U&0Y3}2&>lO($$bNG z-_<+63`!+Sc0OZkTU`F)ogW2=bl&CXKFTijge#>RQ~TWu&x76$db6BrZzd#_YcsF#vb{ahd@g2bT8L!OZ>D|PLyyITuIXt7qiid)2 zn9DR?_C+N2yUW_yyeYI~z&>>e;B!EZlA9xN+L9K`a&CFfX(bjb3qUU$<(X`2{CwO^ z&=-`Mbnh$_BNzGh-i)a8M9#IvKw>fF$>xM3l+J`!<0VfvYDd(P=eWf@;g7` zw3*kKhBx({#(70z+*g(|#yJ>oGI{OcK&l_(V25%pNT-1_(JW*ViGZ{30Ob-C^80EB z{VjYM=ZuJIKegyz#LL)4^1KQ#u6kY<$ozmh zVeDa#L9GoO1|ZKkIfErKp1&UiZzEoE%pkxWiBUdxt!HV04eVP1x6Vksss67^k2X~( zIvXRYI)h`Fh<-_^xeG`aieZ=2(}xgo33~BK+RLx7f#`MQjHg_ZWpUB2%uOcb+MY_O?kXhtap(bbv*nZ6ze{YoT6B7AQi>~n99Zj3?V>O$$;0G zPJk3@z3vDK1Fj9w5&}Fv=iR44yCCeUR<^4vS?w}B`3Xg5bss|{NS-F*d9giG(%u3- zjse(8m;@rO1tbum`TOD?_#3YIyE6@3_}z;^nl|6-yg&e@?lI2uQ8=84>;f6@p^xh# zJ8YdZK!UDo8BOIQO{Fk21TFKCSGP1s%vc4Z9v3;()qEsx{0|?6LwrPp z_*e_8s=K)rc2}|xkic&nZCAoWU*fA7pzC)oW*$%IJdRt(K zc6m3fx*pqe@KiSzOEbx7_p!I~(_v82q_RHusFtFl7k~|+tpr$Ip2w9|AyNzyRTJ5< z(WEkYe@N-vEqsR4GB3N0iib zOiE!rC+@h{nM8ok_+zTTd2Ovr1xmR}b1 zq#m9Kk#xMSi(7#trwB=76J)EK|I6!Iiq}7eUS+vl)`WHeF`L%cyzWuYfSwHLdKy=(XlR1Zf{e9rzvICqw+ zoS`b)2&IWo00^7s%uYbb*k= z_mYoWm6jUi%!QS}5I*3w)TmW^$7JNUOp>7YWD@)4+m(zcYcn$9xaCL6vf}`BrPKq_ ze`VSBqLscB`(-+vwyrM4t$&j`T1A%`^-O<7WOT!dS!Ogg2k?21m9)%g-Fnm{oZO8T zolUHaDKMUZR4p!mZ?3#5f1>TPB)<*rzx);*h2Zp7lM}6+Wky|RlNAtlYI;2Ek=kli zU2epcxIG!X|A`}7s2;XJe)oF0F`&XC!WRe}>f;={{87p)*45=kyYK>;R=pL*;ELZ* z0_HbsNP(EUsql6lPZY7%tuPvv^b=*ipok8rgj3efD~z@k+c2VeC~et%X_pqZV%{(s zm$*I=D8FO*84R)#aTCRyH;j%IR}sEU;P&Jp z8k!C8=vH2ZS70mQVq25X35d-l)rK6Q>rfd)F*k9B6V_OBb%$D+^Ik4m&>8IT%_$l* zG9$5#9SBe?Yw}9t@d{goQl=^bzosiU!>nS9pqhF!toK&pB9%1j=t_LPDif2y>Pgux zOhYtPa^q60lgrRvV>AKyJVtF;ZCditojKQVOte58Vces>m$m*aTi=jH0P z;rcQ=>OFhO{-6=SR{fx9Q5`{y5jklEFq4CuT|Mx`+twF<;MiB<4@~Hd_PKA`F!7=; zTC7;kKVwd44%H({(6dcSEjY4uSK6tC%LEUxp^SP0wip7Q5^`iX6Xi}l{hC$ZkKC#}!lG^)kz z)O6{_($(M+bTQG+2z3UNLV)X$=&gA=|7$W_%TnKdDP1c1hYXc%)mUv*Zg}G=Sed+6 zSShMm+4aYNSh@C6kd>>}Iaqhcs5bbPz3PZAMI0Ahn$rWibaE;bnVXIOS^>{Xwi84Pi7eHJT`O8a2V~p_ z8MAwd0SpT%g)||DCKL@q3DDa)prz_V{<=tirRX%RI7-AkhyD5w<_tNS0_Ej_naI`l zUNaCczXdYz{T5p~QM;|Y=< z!7h5=a&brAWAfrU`DUH`XDO1N?hu{uhKS7PldxD(bHgD*HxW^WDonDYG})&}cJFQ} zZ(mKe+E`8Z(O|7{h;E}0-J|H%sS}(UDhpaF6`S#O&E!B=*#tJQ=YN3XbMd~4X_$Ft zhdcbVH))SI2^|eP^T3i_(A|f5^?|N$`+xOD#?wCR+p68daVeI5W7C zR$Wt~GE5YMnW2X4V@b03kw_#uuIhx4^R#6oawi+PK9O-))wY=rtkY|aW<$S}*OLjp zhiX5qr^w|X!YViuSe9Uc?pm_$KvAy7lZk zM(Kv1A7;bFN79%MO}Z1MWy7L1Ep=0@5^H3G_5M3XXV0a-AK>E)c89QlVppdC!X48M zNb3Nj-M;E#8R`o$=jZWQbcPI!$>^cJE5z?aCQakTF1WBDF7-}(*Bi&w-bZBX{S@!h zgcF7E%$_8?N(eXZt0@=Ilt+PbyUwCq^dtevg&= zz2tK86u7k7=5@uUKJJqo@dfKG8FBvF^r#Pg+3DGkZ4t`+4dMa#p;v`_~no0>|s`bFY>og?5G?Yv@EhY$r*ntcs9Cmy< zV6l56=!$V(9G9tQs&i~ses{c$GFVfJmRAfsa#d$Sd^ftb&Pz&(_svvrsdAB^G%#4| zS~@|5yz-1e0p^t z=Upk!K-amTpP^1qgtGOf#qk?EX}6v^XuY$+sNL-d#+Bs#0UC5d>l;a9lVe7V;ACM{ z%tn-!C+gQ)8|^IHeYBB>`Ou{H!6p^OamRk^v5oKxZ!KWGQ8}(cVOZpYkZNE(t(4In z^x!ycO2>fzG(Q~H3IKKH0h5eNhsV;xhr?SinNn?=L!{oZNln!ibRVm{q`XI3e1_`1 z3k3Ye2$1zKE!I0AHq}k6BpXih9SH6w-Ws1D#Q$AsiY`568)V_m?(SJB_8ReZlPwF*lhJ7SRTf zPwW++rZawAF!`}xx)1L1==qQ<$LsgCp;S#r(~dx0?&?-}W3o>9BjT|bS`kybwB&G> z>wZFW!ba&zIZ0&MH=hpH)MBWvt9T=8*ZcU!RQvahl5PFhbxWHl*~n@J>}{5MOc=tn zK5j~cH%d@jfH={gp?(nvR;R3`?;91vGOZo&8}&RTKB1^GRo&;Y%_AM9xIPKAqm8PV zI_`w_=*vosQm6Kin7bHY(6Ns28ql&;>3>*=8#vs!P2zJ^Gqw(v=bTzCAlYQoL-~h^ zfL33V(zCOhF436H`(zZNd}mo(wIwxFRwkXMsp?GJOJaxMcR z%T|TNVrQs7KVtc3Uc#pWZvbh@aI4rRqx@svV8;#_-zU+=u;Es#O-5Ahr=Zmo{c6}O zM$bibS0ApC00F;y7TRJw zoQIJFMT(vvV;c6L9*7P8@@&3cUi-?;9jo|`ye^LPE`++Q7jIG*aTpRykI$4vuFqr zQg7KdDD|E%)3Q1Dp;@c&%_5UEm}Nyy#m9$aqD3;Da1qICd=inkz=>tq2Y6mO9H``n}qu_LxlSh00pOVq(VO;T)5xCC*eNsvwI$P z4u43MaKF$fQfdf`gR~SMKo7=I%G|s~s7&&jz#_;52pF}%ZeTq=Q3zJPnFs>gKM+>B zXjT?LH~z&+tq?0UhIoR!?1Lo)E2BcJ{D5TYJwP9^GTCNju|S2D8KTb_YKBJS<{NPI zw9VjXO|+LrLPRqX?F}fN=j;XBqjR9ZU4372B^~V7Wc2& z5qkK(;A=k{CHtlzeE@ixVled-P#OdaSb}dh>s2}OMOBwRjZvJRP``R)n5vWQ8XHU| z^OIj8N>85b(e%`we8|6q@~90tsJHV)#Rj9=?^LPz;Cn;xC2E`v_q0bDF27=D+Yo@Ntb%L^x+8Dj2oXZqL5d!}l={`}m7B#nN(~a*?T)Zt%fQ5e zFg2jT7VE$c+=()Ew=O_w$y2yqAhSdq-~U5SamOA0I$&ttmJRzSF3uA3I|iAlChxLkS_^12;RR~j@kKwe9Xs&D2}p0V zZPw0@47Vq(8vTxAXmLxlkv)rzR&2?Y=poyCL~)HRbe+%$4V|rxTU}&F=wDD_;6`Z* z=`U#Lj~dF2jgZ4po5E2IZKkqZ`V(=S55`>kaWoF$;}S>ZS0NFKZc|m6$B`1!8jK!yljG zsjIIAO^8g&ZDdS!%6qjPLvV0Oy{AoQk+`(SF#22Y(3PXt2u!0Bwmci0!J%qhZ`r_O=Zhph2qu`bwHtmg=BE z>j3)F1~t^6O#rnYqj{;ILD}G)d$c)8GXftZB=cd2k|N1D9Gt#){@EC^EH?~lNx@$^ ziUsrBOksDCG^Z?;i8d0bJq@!2?vcer&OYaAq>7!B%TxcToJ3NmB;^Bdi}0pSU>Qh% z6ngx5Yy55_-cvCXb>Vnh>f+6w5H+q~7%9G4BU%=56JH}-+{CGT5;xI_?Ah{m%>!%C zU}FX9^~@>I`t&WK)kD)d_?*yMg2Q5(R)Y|&dVKN-u>;#Ru@_0Kq$ZY1Vq-M1FimWV zCMK3i7`u#R1kKn_d=gqoHm!=Jb?jB_?-`D!$n8B_d&}nK?S!?pVVx`uTumT9W9aXe zr;-5+_yNI&w?m^*dn6o4)_}Gl>u#D6PrdKkHd$PyRw9>B`ko;D#)bj|G-$^Ew|V z!0)uMDuV(S4;A>Vk^2v{;bzB)Ot1#g5+xpEL`oIQf825A`8k#q)Kf1mTmZlJP5Q>m?~oUjr; zGb)vQ0tPD)ALm=ZR>v>cE?sBM{0tVj+MAMcKT@Ka-u{qF;8?3Owh};xg1V`_EU$AB zfS8+r3qdlf7INjhG<9XecXX-n1@({%>vs>rh)APzh@^6ZQAp43l2)olL!{mRv`(8H zL_qz0_&ZCsgm~P!u@5Ugsa>UJXGNKgyn|l%6uhbfJZ8d4FXszLz)7?nfarNW1MLFY zQ>kAHQT8pkL|XyZya93!hbdAqFal^(kdF2a%W8JOrFfN3AZ<>#?7V3U9gJpHy-y)%GM>ygtG{>FA3XDPOuFEXUo){pbLotQV9^HHcm&S z`<;H&lNxMEo!rFA1d=pnU*mP2#~am5?BrQ_xujkRQS!Un4reADQ5E+{Kb9|UDro39 zVYy|#sOq68>HR9^i|QJRlA#r+Dzs!5d?n=64GjNr;YSxRe(C}k-}$q4kUW0(EJ#*_ zk4p$RNr1J9Eqao;sD3r%74zIOZpZbBVu~qYAICnflsT}Ldf3-NXq{AZkupIpSB8^7 zgQtC%l8B}!0w3mCV1Pvrvit3XKvhox&6isDyC-N|d*UKPMKM zTM53I**Vc@RYmJT(OPVzl3v?e-w^q-qr(G%3G)EBvTj_`{$R zi8Sg**jkVopvm09x(1n;ht!-O_`+)VrBS~0TjwUur+jllh$qL@m8Sa^H!pP(3#x$DrY*b#g8tTw1~+ zK1s)19SlD*+MT77%2LGuP4HFZ`p2aqx{~k1MI9ZR?1@4tjwL3klh$MDIPH=lW*&DP zBHCVy&$U5&0D>$&s!dr)ZzPJap6?&73fAN@jm^w+Thr;! z#l#IYxKRiwvA)}C$1*8NJXTp?EPd{*S`?qNQ70aS6oEd0C@s*Yl1Xq%ZW5-ISlipt z5IFmo;E(x-H3&;Oh8@ai_}jWY-WU6ssZxL$w3*pb+3`D7yAay1HrjBF)(b7)?_M9o zD-*&yYvVNs9&G7!vA(?6_d1WML;{)=tA)rpwU{=l9 z4dl~!K}Srm@zVjtaOzFjCyQ@1;??Kw9*)H5T}$RG$mBunW)2~bc<(CdA5uv$y1`nU zMUy_|fy^#ts?Xu7d63gQeMs$38$1Z;su@^R_d10`unq;fKh{!3f>b*hPh$WB0qfA@Mq+?Y%zl#f- z1d2VS{Po8)8BE;=3%KG7g-=Ic>auDaHX3{USmXB^E@YJCRL9%VBpz4mU@P&}=tl-q zq;*v+Xr_8@Ifdy=ZjVMi5cFa2vN{pB*%E*tkQedeGjj4GLAe>|bG3UKl*>JUT;Os% z7+Yo&z2cq++&L%V5Etjmepp1fb26#;-KsyJUgvPUv3HX;H<(e-%^Ng@`UuV&^^rB~ z0$ML=zc1dd_%i!w8nLfr9=nL`cHa$yRd9A@aY~-Jo3v?%;KswD=+!oJRP8(ulD0BV@Wz@#cvA5=^r+ zyjtFClmM)Zx{GcBc<&O=8<&n)I;Ys_dla5*c9yQy8z2ca8`6PlmaSs@Q3HkV_nBNK zMiX(09qlYr^+T+x^av$cOgW4IeiNc&7GmKB>zSXYBca!rg*Q;n6J>W!z?=AvxOzdU zX&z*2w_Mr`8DWfuL%^LIMP#upQ%&h(o0fQA8Q7=9mdN5~X3?@!bWD{hcz7HY(Hjt& z2AsM7MpXle9Hhq)vP^ZB^w>0!ZVRvy3-cPj)9296TeSd*pP~ROjfYkwS_~r-86)f@ zLOGZwzM&0WgAWfD#k09(MISe+dd^6r&rok-QbGHNEo{hqKtOQ}NGD;luG4Cxx#Jk4 zOCRV;b2`@0A%2JGvty*3q28r+MQ3|hzb@CWw_tl2TToo_Z1GQCgIAs4vwk>^8r*|6 zul`2ErsMJq9T%~Le)sQ^uuQyfr<4FBwyh+eoa4sVYG587plX?lmtN2`H)sz@`Q6KU zOODi%=|~}Zkgawu=3@_T#d{Lw5^9S@BK5ilTyj%`-uC0nI>IJ>R&B_J^diXjYmd^s z|1}Bcs+yz{Ol)_TFb;TJ&l zc#Ygv5Uvm3(>bM_ONA1?;N|>TL)B+A(2#Tqz%l_7?K`Kwfr+Ha_qz|ENmEY_075Bj z2E%kJ*9+rW>P`H@B&F;84t;bPaGgLKZpB&R2Fb6-hk%^o7Fvd%0 z6Lc`{94A3frYcNpkJ-Jqv?0r&RmQiO`06ztV1b5-cWKjqhwC*b@Qfzeq3uJIp*1oH z2jY*2NrGAo-((*x2;gEf99>#okqk@#D+hq#NF1FUGe#bUBa<#)SJc9L0Zku5#=N%f zhNTJ3^;-)wjJCtS2EN$T<>FVnucG5o*Tvq_rVfR^sXtKfATT!CxK;t}ab&b{vL$|p zB7W-`okxbQ-1vXx@tft#z=ezhP8u#xOXdURTQZg+bk^Z3?hi)uQayBTDpfjQ=RD9> zL;NC!uOU&OZJ;Ie8ZRS;@~U7b=)aIv3Kz@xm}!2UKx5#ZVw=r7h^5XvL9+FH&W6MZ z*L0_oF0MEcf+Cd&^#POnoC{i7#ZDQO!k3J-o;ZbL0>4?k@aieV)YCvRIc98m$QqZ@ z-om1bEA_fq^@@w}BJ1E6bl>#n3lvO-szv*Y_EdZH67crD4SkHz;M6TldA7=f0NE6N zkam}$etLlF?FDIUy z+mYRD(sM(kFL9ZqBuLw;5TQ)I;1XRsNoms4>u4 z6ds?^h`*3zWzgEcitXvRI=MvJ|2h;Y4AFt^BRCs?-7P$HZ2Zv-pq2pn+@IhPmf%C& zzrk6djd)dmevQQb7)KA56LW)EYFr9gbDGS_m+N!;%i;lt>6?YdJ=aJ_29ke?`K9h) z@Qoj>jN<5mr(J+^GXA?}7!Id>!klYt zW)ghg1=CqPGQ<57=xXqRp4o`tsJNwvcG_#qAtFi`iEkc7<5^#Oe15fP`M0~+$(~e2 zfh%*Q^y7YB=Z555F3OK9i(@5d=7!7QUaTnrZ<2YJ1o5BGgSjO{-@iJMbXRzWBN9Nx~9A;^>d*}X=EtH=> zov+PiOKGtgDqgap+m&7|45bNru${00P>sh$?wXmh=~{{n zm?1AyNYV!z-*^&oikOEIVnl$>99uL`s_(^e9aoQ~vgFPZz=8b667?cLFj<43o6O8> z+-?Nuf*08&GSzJU;=W5EbW$w^GR@6q{07G89irYi$nI4;gPpKLaPd$uR|=2klUK}^ z*0h=MIM=G+~4sZM@HdNZoG&nd6xTm4Q09D*|} zYj6cc6+T5l<=WT2KB~~ay6bBGOw1u2y}>qQ6ClXMTheyU_cUZ%I{|kTu~0#Ej&s?iZ+tY;r3Ig-p`;=UpLqS0nP0p^RUypI6&8tHh0 zX2eQP&X4g%Rp($WTkV%7l%X~vVPFu(GAR0z60&-Nj~M)_H-abUvRDL=Z924(algR1)sw16vbFv!78;%>g57oAT%x+C9@uc$`QIDpV;{;w;IEGZ3DQ4=H+w) z;iU#<{*VoOUd_u+!iAUZeDcD1>a99SuClJ~2J?Z3mxylkAO<8;5e;LAruXw=Eua## z;C|=U3T#?P=rvjb!QSgy2akb);Hk+SZ_*~UyWT?-wIM#2;f=f0)psGmJ1!R&{U`E! zT+8C+xWy^83}%=2tR7{|%zWEXH=`BPRL?~U~+I5N9OXCo-tb4UaSvQX*1`Zle)5t>f<#A*0<8Ljq?2;wAYp+02}vN8+IwY zdisVsae~BPcfK$&XR!z8epug!Iubiml@|_ODVUd$_vv3_XE!zqf{z=x7og$y#^d!p z(g9)nHLWLNu$;xZoDISd^aQ*&+e&I#YWO^B;`cZ(oZXs!fM{$3lm(iLwsA$0pO#an zsD`GCxK;Mh-WYT>s!I%-D+(*$(#=wEf^t?bj)_aOEBtV+I%+)a(LJtkV4 zrK(64x$((4VM$7NOXWbC9$a%+UI=r#7-Bk@{)L>37kg~|eBLM#nGV%}*wkt3!Feo& z#Uh?IVm<5|C0h?^*2n0k;GYRTvA+~^T+%(V*7_j1;KP{VwXc57JEoo`0azx`fI47j zJ-+8B{AS=ppPB@8&J;Wal871W)4A4*#yj|3*G;G*<{)BJ9I)*U&h6IBV6QEWmAZ%C zlJ)wRb^b@A?9gA@=;}T#VCg?z!m%LfKq^48z8kT=Q`p-%Al7%mcZTJjB7CCxoKxM8 zf)-jx!%qH=VaR(bJtx2aQY;j{;TWse1>^B@=g=tp-NSs}x6Yig9XRboO|w+5xt8aG z@kEu9zl1*If!3U>egb)X&KzWl!>?19W?4IV(Bo2>FvI%uf>ET|vW|8GX5}BjG^pL0 zb5-`I)R=7AD$E~I*o$B{DgI2W;YFi#_`qZ<{-RMi+?^64TF~-dG>Ui@pnhmAdQYcx zvQ#{O;asM6gv?m#763rb5m#((*+jm9%v8_KOp(Ogrb}I7<}p_(v}L<8tE$%MRy99E zf*9HAju;DEO)?E#jt4y$K4l}Z_;v@P^kh;u8}bz(m=Y8hhsyJm)K(Ab$YSZ&j;RlX z-hdlqta}MMi{oDxN7zGdUy zX3ND5jQfpVl6JQT@3wKODOQFAivI!v89*iZ$-{MZOiz>!dP%g-bp}(yLGe2qFM#@= zvYx$!@3ss;ETt7|({+KG6YLPy05EWFOEgPeXNBQf&vrVxm=I)R#3m5mxxMw#si>}y zdd>$Zow^j#S$u~GDMfBLCRUt6>v2ggKTw{+=wji36v2{;y7;R0wy~8odFCcM;kU4~ z0c(Nv6IpUOAxCo-BY(AQ7E8l!$k7_F%MXY(Gi0d(4!|KKBxCHUpP8q7{%4RxI%=6p z@EU2r>4_b(_z8T|Q{TyRB@)w!&WDo1-L4RhL$qhlG@zN>aIi^Z{rZXVK>NUbshWh(|67gIpVwoNBgN`U0yQiq8=(QsbNJLWa&!PxNy;fKs4in_A zq1jCEw+~Y>uqddsxh>h4{O%X#;43d>LJ6+n3$B3PZq9vN?Za3$CoLS#wTa=xhCwUu zXDp-d+Ak%;v6_q>=(Za5U`yz=6Ypy?n)r1L5O7-shgPOMvB<~9xod3CDAc!O?1EeW1X5V z(vA>;Q)o_Vrw~Xy>5+T4N4X{v5 z3pWax%KG25?)b=>meQCMNXh*^5m0+~I^hU#g8}R~(ETV?b*5GHSJZZPOSZgMgr)ky ze4XX^A-JT$1tjt`tFN}Ya9;ja zOCMt`($2V24r|qZn!@y;>T1&Tw!Yy?{ZK~~gE62=6cdxoDs4(8U7xc`U8(alR@BED zOTC8FXk|lyR}^?m`7L3X(rv<5G4lrj>Ettf7p2t?OQtn(e;$s>!@W(>?5UNtW%5g% zXhg+!ua&eJ>UB*@e{3N`P3J3k{-g$$%A9IHD;vsMuqJ<Ejcg0ur?0aDGh4fBPpXnH#Yx&l|c#4II78C94M%ooM z?UkTS(R+=igdQ6x+POg5A}Zt`^&PCR7I)G%X|aBHD>jSI0S|8A@tsx|dwXCHfP`dA9nSqglCs`tr!<7;kZx`jm4GJMdBPh#H|AWOT= z&J;tCrILgTv7@gS3(7Ld6SQfCV66kg-j#|hX{&Kb^ev=}JwoK8)MpfKVlc(^*+@}W zrzk6#WT?wDp1^5LyO(bmdsnwrb%60WNWMMTFxsgdI!V$GdII{iU}mY~GLX+w6Z#8F zZ*S4EoC9pgQqL}&RtK%20bEA*r1V14(AwJM0{R3(X^F{DgFr5Lb4bE+PMdK<*MUz^ ztTu=Wtn6%`RgE^@!Ws_lcEW#G$~=If0%0ubsSW%DIQWOS6^Hy z3$?kKEn0~0UM7hI2Q;KSWTQ)4LikMtd^0ag6`v^bYW66;l8&b)R@)MF|3+=5qy`1&WRU^*x4pu*~F(x_YFFv?Z zUR;3@&-`7$@jG*&D-eSkJcg8=TrjR2a4c0@9N z!J?w6aAsw^4f;ug+5>dM2AveU>pXHl5+X{1MTC-bE9Wi((q9htN$+dzW%1WYiVT%J zj#66+!WTXZQK$iHf zvQ(f8{fDl=2k8H__BO1ii_~3=Z-#0Dd|QC8+NEuTC|hOUv)f2T4QlTJU#o3cVGW}M z%iBWzAFLw`BgMx-+A3SSFVSe?qw#l9*9FnV+jW0}@880>>AL?+V^a;qXhZL;mr(Wk zq5*wg#2WplQQR}jraMdMW~k9XgB!rAfk8v-M)idM5vraRIL_{K-~3jpXYMqqo@&TD zR6V1s>FT-I1J$#jy;M&Ln@A9?&q4n{p`BfN%WdJ}FG#e7f` z8>xxecC3eu+e1TbJ2usZwg41KTjDiPkmuL@&Qf?*KRqW!d$m+y2X|BKMGc1RCyO>1 z5xQst`6NZV1~c%eXrI;A+?>@=yJ)$h3OG3fs9Lkb>Uh(r?{WU}-vZXN(Ix}!Q32ft zG|AzBV*C`iD?)U(1+t3N48M!@8Sr}rO875+=MpYeF`G}q@8g=YD0qRC!7sHmb%zGq z3|F-|xeCQpN48TcXh^wg%R2O)H8{2JcYcA~ly`(ktg2>Uq-H>>S#%*h#DF8jz)H{r zmmWK-Q8oj!HJF>mz}CCco-))+WFYPl17E#OH!3TDpFGuoaKE#;;O44_&k8RVR%}2a zyMYKp^g(!;O1KCkiBI~FSrMJ9bdj)wHMKBq!!kUo)6zCCKLHx3i;P42Gb_5`_NND; zV)C66i`1~9fPuI1n88w`HDh^?i9x$T6~X1^0lb3G&N7Whi*|_ssiP^#$zItw4`AR3 zRs=w-8i|$D#6Ho)-qOV0*0kXtFE(93*jG19Vb8N)q; zOG0ApWR{VpZ`TCOUwylcwl1kCj?qOQM*C~qntd;$S2KFoqv*CU6M@PS%?nYI5sl$o z|E$Q+?HmiZ>i`mqQfsToM9pTKLt2swVvQ2?nfQ+Uv& z5bL!LZds;~)h)QJ^6j)Z!ME>Rd>S_d<8np8IJk!0inAUlu)Dy4`bSLgg8L#u+OCDz3z%OFa|(y06mC-jN*JedohF!Yz0TQ__T_R=YGN3n`<=i zd;v48F2jx0jMsWd#`WCIQ^*u4_KTrDuJ((sdmNCjndbA&Y*4P$rW)(0ZO&I}EOqf+ z-l6D9b?fM7?C7bCraS(iIaTktN4*bQr0qac;L!Vl&of6HWbAc^(FTY+2{V_D_vu|@fJvbBQG!3RlG|&J}tz11Mo~sQxg^)kArr`xr+BX zjemozU+x-xi_SxD5QqXt>aF*!4)=`OVXs?b?-^sm2Yz5>-!poYoqB@)lJoR<`b+N3 z*I|m9a0dBHtL;C=*m8d#m*@l?T_Y6Ty1aGhA7fDc!ia!Y%378AKJu#96g|gGFvi_a zrHZo3oS$EV1zoVg>U`fg9KH-6cYa{>3HNNUo_SzY3A=C2d0@0IoPLfH$WXP1Sw|lj z1H#T&6&@Nbn!h=eGVB$B**I0vMo9%M@aL0a1tTySgPq=JV`J0<`*!ZN@3=c;r@55K4GRie9Al4m@u$ zV3Zt6J~*)G2}rZ>JJz>hW_*EXzjFs6~JI6Pc44S>QxYo{d(GFY+FGvb_|{jE2H56VN81*He=-nSh!>7#mM$H z&L%6)FrO>gY>iMRYM==zS6^d&W|%$0Q~FtjO|ym>vj|Nq*J@^(!^69+wpN&CyNJlu z(sJ)x=S{Om*r!&VLgt|GVQ*S<3z;v3{cT+>WcCW%V6}=c+lN25%9;^jR_=EBBxdu& z@CgcgE)3@2rBe3#j`{^sw`WY$@!s-GhS2n6O)~^xf$Wl!~kM>=ZOeDXo zw>2!%oD-I3U5qrJ2s>>#3!4?gKDO!=Hp_)uE3Gbt&8VX846=ddtH!RhCKooF75?@s zUGr^vSsxcRd%J#k1D5B!R3_TzQR}fHW-WZgIJ$_rF1)}S)_J@}PCKE~{A?8|YEG#< zbcM)JZ#0o%-uH7kvpER+__6uNT36I8Tlmm%ou*z7>rhd%W!Poweo?b|>n+RK)NF$f zJ5x7VQto8RCy<0!0pqcnJi3%G0d44ZRjAO!<<>Z-SvLC4F(Tpo7h{eyrqh2&9u{VV z%n2X|HV~=ua_dW{8QXgXAfr3E#wS#t5a`8-jAbkgu)$OR>JxMm9heWR4zb|}Lj~Fkm5+Op2^~vloIsxuD5s}~RrmB(eGwCK7cx{w zB32YcY$kH9SPtd>31tZs1WbGg=l)c#b`IL9juCz>O6(OEpg#B=H3%=IroF`R!BE~V z^4Km~d1trpVJqJ#pp`PP8>yf@o(IL*GapwKq11tQg;Ztk$ieLz&bvjBcR_4xL$}e@ zi+PPf5xhtQ2i`D^|f4Fe*3*F%JXmjoh5`knknpNd*+Z7*)tDu3(~8RYLl0*LJHIf$%NxO}B?n{}hO z*`@QY!oc3yS^V;6bszjLL2nBvF!%MmkR&ChX6I-&fSdQKNNqDK-PYGinIRyPWm12MD%~<_yNfa)eCNI}0(F z5}?2~-CN&$GdQpW$Vgp+k+&EACvvimd=O!@b*SwB#tzi6ha-@5-+v>cb>t_ET)WU} zRMLFhvz;$<{)?GcK{y!B$Wi}|{8>lNU}P6Naxg}^M>PCp!W-s;Z`1INtmo4IAyzN& zhK}vdRQG)UDeS8{vK1pQST{&_{eKbaLget?)_u2G z-Lro?Y@*-kmNlbX<&S|(ea@QnhyCs~1vv3hNUWE$u5Cg#g(Pp-;qBTTIN zLzr+16Zv+5zDl^vzD(hhFj6$c$QHB%GIEbOV+WYcNNc?6A?9VDM)+PJq+5}Q)9rMJ zY>u~f0LN}{Y%Qs1RNHs2uJhlKi+T5>MVaq?yR| zn4-{8TGeD?fvfvB=tShocxAj!`D>Ww=L`(6%+xx&PbK7>s{FbLPnYoPSn$&ZNqYDU zjFg?nth!~)C&SiT!^)V=!&iH)6=lq*0{#1$R+(~UgRpGt*D_|!@W_7FE9K0FR-3YB zyT@YtgT(pAgZ*UBq1M8(W~1;ieXTFbn$5za7g)E;no(gH*5gPLKDD3KrJPwK?6@_q zoH;)1l69e+S!eK+&)7rC9S-PG7aU}9PJ^9FePFyI=VMZ*Q}t)DsN@LLbh8ya`dCz( zf2HghN_nd{Qf66Cmp4m$j`8{9dHJYhl_C|I$E}Q8nLqB6P}~m0(c9^*l7K*g4JIGF za4E1%uw3dNZdb|YsCAbf1J`O}7z5K!>YkRt)U?13ka;!`_(`THM>BpeNs#!X=&uk> zOTYF%)c+9EjxG8^y%AHNPtC^~`VL3HuW6TK>~IjUCRZ@aR*B#e^%@{kdQ$mxE7(8% z!S%{Hsn)g%=Gb~E=|S1Q)ClMx8VaKf9mCT{xV|QC6E1T5|E?r_ctjiCKQdaLuX0b9V z6I*Qpe`CuMhP`llST+6rg;GGRm}{-BY_=_wPTv7L7=Nm4PAT0k0bI@jmt(*H5;eqo z;FY|URm?`E9DHs8_@n6S*3Kxid8seDBj!5B4Ub~BTK5oBb_QdxYM3wPMS_-Cc~Rz* z?pAyr@~`Mx-L1t{%x2}vjK^#sHYDUrX%KY(0huYcy&F;Rx?YP zBk`_|S}#;JpMBhk=bTlKa36HV`vPlyWwS-mlXzAovEG;*bJ&WiX7(sCow4sd!XDez z@>DY$mum-j;OT!!pguv}wSXSPSl{lUohr`E{wj1&bifk3NdA;GiKJm zV#W|ORtqSa&p11jub4ICtsB)Lpu8@Ky815(TqEe*BMI!syV_yRs$mXq@*sG^4Z5Z;vVO9H2=JkQZ+)C{XwO|zU?n+SQ<6E)59X0=xkanb5k(`?|$?hN?W z>Dmn7YYUD5W)IXk(bbhARQiw~8WE6n46A_8GE;T6F<9@9oRKPXHQ3vWb;>|n0PGp{ zNbCm+w8A^?*%lhyU~uaKfHeSAKVYh<2X0BkoeO^z1P%^WUs6deY36g)DOq37R!8JF zSAC9Oy@Yt)bBoy6h<-!8+LlnBqsi1jHCiA?0r}8|^aq4}OB=Au!Z(%QOjV!1xW&!M z;ZUY}(1OvYxjpnRc|4BIvwC>`aWr$`*QiEe8hWHBf+ebqv}bRU6ZtXkFAS!z?10_MvXY_mv7iYj}2o%AqN|*Hl_iO38FUJl&se{e% zKVm)h?R6k}74Lc;*4-VvFrOF1MRB)BN-BYx$|O34yr)ULbIgyRjJ4$Fz;OEQg4h6t z%>&Snz8J73{w<^sbCKS?8!05|kGOypS$J5o15%t!jOeG@W#r*TnA7-9`n*EBFcjnb z_4|1_ye+(Lh~z?&JOme}YjQj6ttbOkLPl3x(a2`1d##~D1p!m(PqRMUuYLI+3ADNA zVR`f(8At$>f)co4O8_9GY>$*$0(iGmXbDJ?;6988@Hv_DlYrWDH{fSFG*Uf;K0_p( zCDrB4Qg}Ff<<&H8YrRxf3N~Y1MV42Wn2#d0sth(eE0)e4bJU;4tN50letn)BLWAqeTWHQiHE6b z{XM!MkY^KF$hlItG6tJ|h=rY8#0u{SJNrEzBKZIh#rP04l!KOJY~{ljXwy&KhYY^Q zYGvSQB;u$Mz&HSL)@L?H4fV{5MeY^CoVRPx*Xqqgt64qs$s#}hVoius9_A(fn@CC6zIW^)d+4Ofp|}5{Dnz zLPyoRr!U|X$*3dWWB5`TDN(Q!f1(J!&5&usOVu zX88)p2C_p~^V@Oq88a+gfDIvaCDJEAqCZpt>wAIq@#I$7sVjChB7X~(HXx8+k zUPVp8AWo!V$G5D+fJmqC3?ZqQ$~VsZk2t)tB*7JzuBK4&al5=mRV}1Tpu3*5Be0i! zLK0>&v7Re4vwn9q$>GuDUkfBhEXQ(zxN)N~OW9fQxwMrVU``rWxqz7SvZ}4A*<-)6 zf}v-MfEg$T0+cQmOb}z!)$?Up&5*vnz4sFcYXVlgMrP?^&7mq%WoWFe4qKxdneD^U zt@j$4b;8zJS&huHrB6o}btDyubA7o#HY%d1BPX&89wT;Id5z3%o*^lQ<1tKJjX-E? z|Ms+h$K!WB!d`^m5nh`2C{)Cl%8B>>2vhUH^W*&gc=r5@=zkL|AmIgu!|yd5*AS|` zZaC^7=?l499tdv^NaLErjHihU0sL8kXVMvI-d^GN z4ab`Zhi*a9Zev~sVF*I76z|&4eBYk$IhbMaH$M~q*Jlq1O}b+^79gxecFMNP*%gd+$~;xkuRb8)mShIIpkT!c}s zf8(ve`-cdvikptT2?s5$6J{zC!pPLWQ#UP!2**gb4^M5w;;5M)(~8V>w4@1lDP7{Pskko{YlpH2XQIOYi1; z-)%o<;8OTK0-uI%h>(ErBEmd`4G8H77Z7eEI4eW(5V|0YLYRX<;O2;%*U=PI7sKtSjZw|Y6k zcL-0`H64D0V+cXy|I=?+J<~BCArqlYebezA!iNZV5ZX6Dh6r~NVxB-tLAZhdPsuSA z;UI#?*~oMZLRgRR2f~OaO~+h>4G4!3{z4erSWAe~nStkp_WOGL4r_u85%vXtn?h>M z@Q!d2;Q~T#aMGf*}~scg79F?|g*!5%weeiQsC1 zR)EkRAq9a_JB8oB5Jt8%9jOS%5zZmxARKLt`p>Tz!RPpB(=i%h0s=E$hu@Fv=Z~RG z3_*qt0{%Nf(N?gG2n`To?PtOXV;F)EjAL5j9Q6DragfM=6B3zm!Cw*>hj;$^@Jor% zhcLldGlYH!QxKLT5Qhw(%=Z_ce64nZ@2ljdcU`Xex8df(qrAK4F78b^kyOripp!3U zt|K0evB1IDyi0p<5FK|P9448bxQ);Op)bO-2(Q@BGb-YN zNUIPs5tvu&g@Io< zXBd7kUR?R9717>oTXGS z8Oxuvnz81F0@c3Rp|KoMGm1Lq+|7d&T`AT*Tv@uiOIT-Q3v$;wnX%#HcUTSM%=$<_ zEY4hmpWHZeK;d57gUPKyoz0p6&+2T>s_|h@bZiJ;cSAEzFdYy2n2v||y#v_H?xy3h z-e~Stl`iJh@TDJG&Umv@!*!WO9S1HIDsV7@X9+y9Vu9_ z_zvvF`4%qxn@CvD9jGd3(Tea&4=lq{TGKke7S=FI{T zW@aIjydpN73^Vsdc05&xyF%NXvL-xZwu)F1z^yGlTve6w+IQK^UDY24~fUM zo6oT$K1_{6LAZ!)lsYDJ(7Rw`pd-!c|6&ha~*%vHaQ3HQ&ny zjSASE5*D=rRt2hG)Osq_tXd+fSusa^fdlacPUm##h`V)! znpeUG{5T4|Ai}g4Ovm4&;r$>ie;ysoi;u#lv8IE8u)oK^pFlY9lIbXg&~P5Q{P}Q9 z7MPAnUei$oztGwRrtdMe1cniz^itS0geGa9FEBqb!t0N=CM_}tMwVG49M5-HXBL@R zk55~T-V0$0!rKVZ2*0kjb}u&l;X_7QaZAjRu1|4EW2|pQ@<#l2E%1%?RN097h0@vb z%S2gMmzd=vBi_~+1+8LB%`z-*?WJY~XIUhugAk3--s-c|>{npQTc-6`p(4@NrKK2L zZ+H%}$0y50nBk+=3YEE?tm4behG?JrO1&L?aOHa9ATYnB%OB4Q5lT%Q~}O!@B+NLf!XQpN+U! zU!ap~ca3e{LNMaFoqT`A`);~+r^m{)H?n%Gc9gY#omsQo{_SLCVd^^kb}eu!@3L!m z0mLsv{N;7#Kyci0z4=PvF*`Kcvpdpo@$ZtbO1nRVvx?9e;bnxy2!jv^&&OIbBOHWF zTgFDSMcAgan2qM^g-d=H2h~MgIX3++RA(ptZvC*`oKhmejtH-yBw}ts>$x4~?_oZx z+fK7?WbYQxWxvs9wl#C7Ss}bYCu_}4GwQL+9Z_Xz3p?~hv@2~zhyH0Ncbc6Ggf&eo z`KfukV3{BHVdlz(FVbS7w0xYuv%#5fzxz~L)L!$o@bIB~)7I=WuZ0c%?qhspv)ykU`FHW#A2L4* z5BtaZ>j*aCeP~rVYPKkUfAjxC*>}K2b$t8ZdtteAFD#2?5s?)XQ0yoc6j4yrML|)6 zVz03q8(3l#6;N>@c1NSeUSo-gdhJp~v12c>V2Lhbi^f7U?*BXYE@<+8@BiN0&*$vS zoH=u5?vyiUI_8i=-hX#KJjqtdkUp;rCiw+)Si!$!G(>J^@d?S5u0t?XtHqr{Y zPC@(+v_me!+vwC>rySX>Kr5>2RweqR(;eQgUmp>7XGK{qMOZSC3qBDRcBNd8YN&%D zx$zY&$#ec}Ks%gv^5S!q5vQG63PSWIW!G7!54;e!LD_NM>7kP#SEP%sI@Kpbz#NK5 zgpzmFDMDB8RHhTxArE!w0c1-ShJ}Eqz*UDCdJO3}fbk354d9Le&6J0<^)08~?r)Dk zMFgCJe}#k4_zr>YC_Qis3;vUjI&ln=>|lY(V8|KBvxo45`4eCs-~fQr>2$n+zv3Uy zEckP9oc96#{|Rj1!+0@Rbyfpre|W~J2m335Zt!F<(hk#MGH7@aW8W)IT+7=SHC}V# z;%-65h5OoFBoy{wfB{hLDn!m@3{~K_^Df{@O>w)EnpI$2cREd7+@S=1|aeg zK8o%tO}wc89rSoz-Y7%vIQ18>J@a(F(?EU?4ZP>Hg-@b4?>U_-J8%K23#M075BUYO zQK$6#$0~>Jqdo`=Uec!zoEFL^H>fixwTZlv`p{`T?>x$tb#lNg;+5b>PGwx&I|{%I zIEi|mChg-zCbCnv@wDG7r#!=O>_o+Bw3KVAv^qwo|LNpWQB?=-mnb$ZO0o#Sgy{P^C68R5(V5t1jGCEt>p zbT2Uz-*5qqGFJP5vXRJv#rIaxPVb@jBvwupIel~# zM$}MpKRGQCgl4a4UtaW<%03oZW7+pRoz08O4U=BIXH(3Ey*#9en~zdY5SR1(dF7mg zctls-t?<2FGi&i#)zVb8&zWmUW0|{G5?f(2%122IsrB^}77PkXxIGk9&2(djVr)rJ zHKa077Rx(S_kR4ph{|CRi)xcztjJ%Z$MxdKszV>yqbgR7!W}d{utYal=&LD>Ib-#ZAh6A$9nN|_Xaax#KC|Q~J z#H9R0hg_yFn@g&dC2clXH!me_;dd(qrNr{Q@WVaoSVrs;*y0{a_W!_T)0{FQFO<%w zX=TL=Li4*yAEP+@ze(sFcd-p0IN{d+Ee0jlLww2$J#H#3J;h}_Rt0WX5R-(a*OmTW z;u>C9c2&_;6srot=*zUWkN6$`ivHvyHg?%}Ni7&?&4(V-mp-DYG|RmfmSp~Cn5`|l z`TS|ryOJ2m$0@5f*&e3{R#J0gc=jbU10dXHIXyvn{jf z6PiK`{gG*$jB6`P@^r=(1CQz8y1R zkS}jS#cy02?|qN)54=t%9h#9x$21d1Rq!cbGAu3017@VdY1=(82tZ9r&9xJ6sInH_~_ED50spP@fiJ*C792-rJI_v1VI# zWU4m?a4C?5tYFHsENo%fR-R>PcS7_ zq6o33Pe~I;3t|<$qzNINi!Aq6DXm(G-FW^JUDX0%iU?kflw8Js`x| z>F~zM3-c7eHez*NXuplFZY>4~e%t7`X0g`ii2n-@6fleUgjuZ03p=*b7&Btt`o9U4 zze*Y0mW6WNLSIIT)#(0qV%_3VEC!7KPOTP`no>)0Ql3&KN*v7#V#(16Sq3*wUXrIA8ZO52TDO}o z77Oi?04NQ{wa!Sf)Bm3c#k}epu`}=g-zJYSVzFA1XXYv8MvGhdD*s(FwOAQ((xI7o z^zj&RjI^|niI|$Ps)M<2^GSgs&X$FhS}j16RE}y@KTRq6iRS~k5_t46+aT8p9aB=`wAhZ**xDI zO_+2DW|M(Tz@Yz}k7;Jqz<#%N3sCcQ6hn3dQ}osfWJ+L z;#G_z9Tp(vK1$>Qv5Z#ncw@^`7j{X@ zh<%hNi^O0D;oF{y-%@eAL(S81$VnynvudN&+7k5yxjaX$JIRpXe=kQT`AJ!|Lj0Pq zxwOmwA!Oi>;#8!3=a1qx2O+$Z(rc~gs}sDU>5NTcZN8_nYm+!iCw$jNsk~jx5cmVi zgPp9ud!qchOZ-L@BUoxf_yKC!%VcfUA<7h)T$LH>8rRF!Cp4~j{=klcuR z9u~*_@4~54c<*6xl)N6L&wAGtFO)h*#DRRU)Zj~%>Hi>DPahTM@UCrw{vlWgWQt39 zevR@mOMK1qIRA1?{2=YB&1lk+9O<7q;uR_CrIv&Udhxh8N#1RDZhNW3o)E`6@K#sdjNd;!z@0|OP ze&`++%%e@uiQl?B@@L`$ZIsRBWt|gKoMVAeJE<9EX{Ynze5B^#dGUcG8eQ&Xaf49D zn~u67vgzm*SH$}K8G7N0SP8DzSHx|Y)Lng5tXy83C%h4Uyp7qpU;?(_gyW%_bW^s8 zdR-F(zVvn|XjtMsL-Pi&R@cN@?u-fJ;8Ji5vIH|pNTiz&oqbKLUgGChko=`z?lrNh ze{ncNVcX(Bc1~`EA;lP4_Bw=-kJ9wI=p`g#?7(@f6}g2QL~bwO6ySUVk*nTFDq`@Dvldcv$=Zs{scAHvz2x4wXUVBXR+iL@p0z z9LyxZX23X>tcRi6~@TDJfvv@~@ z)9>$!{hdaHGq-B57iku`{($v>M}YE?BG(Qu#tt3Zirh57WdNf+7)g)Z7W?;}(q7~m zc0eh0M2+YKeqV{)+gRjLR}IE=7rDX6w|BinE^C~~wTKtFBMIO=LFBS0B4fW5xgC== zxG@F!l_+w%rXdW%HR`6u(faCek!wE^`3k7}jmUim;75sE+5RF|Wq`=d2Q2V5>S3r)W(4rm=dR^(;?vH${08ej&X8(6m){h1|W zP2o0-LGl2L0e=8;kzCyrEs2vXBDXwEUlqBz0LR}{NG!Jek0uLvW{b!*+bVKv0gnKKe?r{= zJOemyLsR-5 z61fQg^zNMe3mO~X=x%&DT4+5mJ+c=x3M%M6FbDj!U*tXlMjb?WK!d{&FMxVS5IzIA zOp#lV4M~wBa@9_t;-3_`v8U0f%b!JYokOiYj|5y6xsHH`0JPAn_r?2(9af{Z0*cM* zurnA1I12d94*VL_Qb4hrnZ>wpB)kh?IA9uJF<>j;$6F%z#16$p-0@cw4`4Uo#;>9? zrw8E@r1ng%R`&*7f)E942Al*u0XSbq&fOKc96J;<>v=)s_5qq)gpdW40_`j0R?b~b zBry6{`&4^%6LRX!QIS)SQ&W&rEs;}YkyCXLH-lctt%5VCOXujF-=Uk{QI0+miJ)*em%h2eQ%s)hf z9M}9Wk?RDQ2$%y{0{9wGys{rw@h;6!jm#r6dGEkoSekY z6rGp@%)1+KPW3NjB<&X|0Ut5xAdI|DC;bhr`wl(&x0okfcBb<`iRXkrooPRtSW^mg zAxynWE=!l##6Hb572rKC6%S6zdXV&2qX~hkg0eT+@w%PzGR#PaGi;Tpjjd_MSObQ; zSS?ES$*;dSh=g~0FX3c>tO0?^z|9UGFmvs27AAv>cDM$U!8x2P_yp4xW<5YfKx;ts z;AcXW>9lr#vz!IYz&5y48x3224<=;WZ2Z=MJQ8jp=&A?E?G; zumLK&60WNqc!ZAtoP>M2E1^eki+yRfBk^Nv=8h!BIPk?gEGvdVCu$Zp%{D&4#jscR zh(_y3f2n>2H4W2!=sq2(FPy1BpX*2)s8kJ|NEH~poX7zF7R_`b6Uq#H_6|#YU-^ZF z8TOuF84ne(ok%8@zVY-Oo6Sm-;=CBQMX7Ge6_HHgb7}&WPX0dZX=B21) zli-c9=OXaK*mJm*2Dy+Z*#s<0m-I7Dbs=@g!^dEoK7T3Aa3Sr<_nIq>y6Z`(6sfw( zrc9$f^`tWYGfmVJPZ&SwNd*#L*A)i|jQRAio>T(zuAaEVc&jHhgvpPnuPfLszBCXQ8tq2B6JLPnOXv+^ z1`IbHW||#hVKOLoGqV`C1t()t0qlg#NkFx-gp&Zj83`8($c8-e{#1*H^76v&@RIEcsff z#M+nTAM@xPiYHDWMCL;FEq5nzthu~#C$oh!zBI8M8ETy3O}JW>36}zMqYvS>z+RpH zU5<>Z^$1o5&+Sm`<`6T3Vn1ebbeRXKN+y+Jdm%zG>hd7TQnEkcEQ@Bv`_tI+q#@c$ zT6t1lx~^d_`_moei91{RKVF_xgzxX=Ngcx>Kf;{>+yXrCBee5;r;ZLre@(I|KYNmO z4sL(QPI##!gGp2zebAkv11h3LuBAU!Bvpmd3cXyB92T6f(1qS4P=73g!c7Tq6 zu7DoOno8s_U%uG|t#t{>!R*6lc)&pVs$Nhg_>$wi)aN{;j5_3M?N6%6fp9XRfFam; zf6__5d`|O5j$HI78*BT)4Sx*L)J-C}1#>^Ly-eW_P2J*eH8mvM!Xy$`LPIxJA=Q1l zJFtBM=ds+Bl<{NId*=yFa0Ej+tJWIJBJ9g~S%pk-aISNz7}HakSe+#E^6K1@#5mO? z0m1q8*~XOIg12v3oRRERjUF0_mYzt56U;js-tY?h9C}bq(kam=kZ=^RzY%IxT?l5t zS^x*=23${=Ie?~sXMk}4V?DxksZY3Mn0*=|48l(Xl&?d$kF^Om8|EFDCxQC`JRSgU z0XUu)c;3PObHoy`18r1`EKckJMhxQYQ0yK6H-ln7W-@nv0}ZS&85Fx4ATbP>yBN>h zObZB$?b0>;tMJ(HuGr!?1oyJ7+az-4pkp{9Lfh3Q{rMMkM{UyB7}HX1tuv0bu=ix> zU~W--)-e8zGPn*}hw#3ovMP{_7lc`vO1U6%j^~5vqxz(^F#0I1-2h!BCOab=kP1TL zA}|@;1Z_2(aD{+Z0B_)Y0UZE~!w5GExPE{*&{c-n0x&Oxa2Eg-Vc!Y!8lV~Mk6}Il zhydD*aFYQQLLto%_9DOyH0j_w3ig*xh%@H~!U2G#E$H(`WNTuVri5DtSPeK2xCF2P zSVI2|fp)x;-DK|eNHBvwpl49*?gAWxVn1dwcd`D(u6OZ>?IN+v4@BnYC_atJG#)o^ zt!Y9k{Cmwg%&uLAwQ^WA5AyJ46Ot%ce%RC_gz!S8XG*W8#M7~f|L%7-hpcGJORN;< zC)UWyEW$hx*2tAbk^fR*!i(iACXWuK-d{y`g^@S>Te>NnRAaL^;UwT66ZTBkED3|% z9cbIT5lo#unm&)B^zI1DcTtCyq?#~#7p>hA(yYxc+O;L|5&U=2Ni9im@qB*q*1{5Y zkXizJ;( z77~h6SF*lkPOq5`b$)SM(z5oq9SO%^AK)C|9^g4(ZYRR6062FhTohm|fOe)%?a&f( z>6LcG8_~RJM~({uSRHN;U1T-A-kz9*^*!mk_M{_}#>ft6NO^Qx2Qm=G?;S`d&xbwL zhL>^+rhNld3$`Sfl1DqnkbWThHHNf;Q51ttD35w{BsD{OcPHFHz%syYz;VDez$-g! z?t!#|;VGChOfz51xB*I;8{K z)`TaGahWP}k5t|9wd-XR1`RTd(slE}DY&Fu+iOFj?r#i-act8Gbj-<2I1Mn4>u$i0 z|Cz^rVV@q^`*FAn*PYN8Uy-tJ3WxaP*mVVki7L*WrKBlf`H&F|FEsfYt#mI$M; zqV`m3(8=)hj=aq%m0`rGx|%!bsV*ec^9|+@Y{sL9Sqk*|aIiDXPBvruVOpsx@e{-p z+NLY15z~DU=CX6GuUo3w-N`x@Wl>xpxDZu;Ao;z`da^x_`;Df+_8a@#2pqz6=mPAw zzZBV$GvamDOfy_*$uz4g2^Kmf(~n(Ai_U{EtAR2$B>SQcU=w)T6S@vSu?m52e|Z$C z!&nlAH5pOhE9HG`KXbtijbN5WV8y3dZOHNyx>DQe{5aBFNIpU@#*r3+$298RjVw$Y zaFBf{vau5^He*lKnR`HTK&a7E& z>}rIhW5L;H&ft6KrtZWivDX3hYY0*vXvtMSM?fUjF)UIb1CYi77Arm{!2UUtnA@Ve z$c$87OQiUOt{VQeFYqn-f?9T4aiZ84_ydPwV4yj*EEFewqjUF=Fg#|U?apVtmJjQ) z!q8@H##H37*>dnbOG`R#Siyl>D7QA_r2TYC57Ho{t?J*?ZwS6BtPeixOjzeGpMzIW zy?2O8!KWP55q?%A$7<#>AY|&kYgk9_FK+rG^t& zJD#P{J&6}Tjt=Wdh6#-((W^a46ZaKpB;iT9d_<~lKCFczHfGP>L96s4b?d|eaYDCl zqE?C#sruEh8V)=zYe<@p6airY0-ODC*^4Q8BAwZb)U4eFsH9wi+lgUew-Y0OVGDno z?Sr|ET%QxVns73al&Y&fk>>XzUV+ZQgr%Bz7-maPzW{bSW;}8@>6n|ECqWsFbrBhe zdvQi~l7Gr}TC+C>tygJ>-lV25W-p!6n|KI)_EOp#jikz6dc8O4BnW$H%|682C36pJ zZ&7|>HscQ3wGXLM>il=_ZE7Yx4G21EGsf(p-}fP33Dx(|hkeNC$ax7!#=&}P@77vY z1H~4Soe*zM`q~3bqCITJ`@30*w(>BiwsNx>&%lKnQtLANKFyvU?W4I@)0KTmlSDmZ zhp#f5-{qmQy^V(xjk8zwJ}!*oSWQmXXJXD2jkP;Cs5LvlYP$^aoJ9PrkDRd{n?wYJ z3CKRfa^g>LFf7WzHF>&fn95{kdDTSKBdqTDVEtIUt`63?>joUpDQ&hmFlh=&_>!*a zN6OLf`VqayZ`kID0o`R7Uy|%*By~J{BANtmuySCD!=779MOKM*^?#yI`jO`Rue5r9 z;_G#H9LoDWKZ#K$ZP6$lG|Js{XnztUgl(Ze_J`KAf#&unUc%^`^ih9OSr~Yn$^%Fx zq1sJaYXGSzR60(h2apQb8Z#759$V}Npt|B@3}QjodU61Yd^&wP024bssRT;$XH7Lh znY8{uARp3h13?);r@*K)!i=P#)P1bAapNehmiP6m#|0%PB#+Dp#F44b2_fe z0E)MshLFc=CEMu9A0bAY2B=zF!GOB zuhbn%@*ITWEvUmt@)Q4@?i@+{^!G4xZGRmuG>7JoB;{&t2P&bQMQ2)tZWoug7-3?9 zDpj|L(XuvY?foYru!JV978mCKT8@T%LwZ*|xEX0lHI=m!nXTtuGa@|Uf}3Yqe)j3z zE8BXQW_&{`dmYGO#17`vc4%_#!T@GK3<@po82$7O8vfKA>M@E`_IZUp7xNe!wM3%u z`U;YR5pr9s+(o783TgLI#ItH1OQXejff=|Ms*Kqpm5+}T#o8aAz~r*pvMlUYj5OMKG!*LBbk1l@kZqycMk5*XHqzsxp(y`KJ;#tb!t#N% z-56Ay2XyQhOpEQJ>&K8w4f^cF*QnL94lW2%FOW_epiU(GdV`5-heCnfzUm$J_BbCe zYn1oswz1@aU|LS+k3(~sw@x`ej%?zE34Q6P1o8*}r_ygc>Ea-)TuJv&LOpq;*d~#9 zp1-HWPbS!$l=1_;@Es}dFzg3`-iwjSESZAz{HD~Kf?6u{?nC=dCHsY>1X>{x{Q{j! zXC;!_!YWF)k0#}WnUv-wk|si1>~NY!`gG{G2qFqS(Sg+lR5P3ZAIuH2?mtY_FmqDq zida<9_^LMJWq6`HPlp=~@6PuyY$tKo_;<1Nz%&eI-qIJ-AhBC6qAjPB4Z@0r^vQJ6 zSQxsH`p+O;1-FHC>J0LeFkk_#kwn7yB4tDp5qV)=Mxi8Gp7Y_j@$SsRd2kc-Z*`v2m4$Q2bwLQ5 zs*Fs>*9(oO)0J~cIgCQ~%q63Qz*$O_dE`0o7M8-w?<+qaRqdLQMEw?!2q7Yg4qHIl z39FK+^FrcDFD!sI*iLoK6Zn2~i%1_{ z2uM`UEhg0kw!M&I!qy(T)IQpLDKXV4ae}G2MxLd`$4gdoYG;z#(#x<{PP%7kYdDfz zs)UMKmXeueFEvHRv+0XghA2zy1XSdLJ+#^nWH3!zhI#o@v~U@zUiN&*zo}Z`isK*1 zJ!~CxUQT>`#&mmUi%JbAQ5Lqloc!0w+JWke1jql=xpFxP`@;9pa#HaNr+&phob^|b znqT;a<`9$o#b?d?C$%MqR8p?5AY~i`kA}*#RpbiqJ82tqjd;9@t{)AXwL&LVTXa3Z z6jQV1tj*YM8~uF^X(}unr}(ZV(Y!EXBpthsH20WO4^l0GJ+jSiEVmgyj6q+oPpC&v zu7hChT#pv6gLH0GkBaL_^$O0Q#>H@ETqMpq%cwpW>z&8Y2!Uv+9gbyapY=pv^?Y5% z(-HSl*032{stgYUg?o~I2|@sNE0oO`G=?r*PwIGo3!fzHXk#zBxsCu;uJtESp(A%a zp&K)T-dj&hrJFILB3rzR)mjhN0O@PhRoph9&I>Kt)1DiNsW|sg?`CWy{$DtM-bku{ z;e4=>oY9+xqVN%ckIneQDCN*5%z5Z53@*Vf9jP4ILN+=I)2b?ic97AI{5SO4FC>ng zVEC1!;hMw4zY>pPru;tT&adQ{;PF?eI{(P3in+L6&PhXEKCqYg1hQJnTri?)VD%>q zbs76O2{zt(*(=yTL&*v`&kv_J6*5im?4|VFM;`KMC*cQ3ESB5o0kr(Cjg>YB3E{n> zgWq9`ehm5CDvDDl?W4mFk&0^cXqOU;zqlzyrp6%purJ!u=TOT2Lu8jD_TUZABt>4q z^`NIY#D2lQvAxwb-bbfpVU6jtvoMQ9f8h+zCWnNsovAIGEc0><1fSH7U-04W0r`D& z_c7AaYeSv?4@DW&{9@J!fOb;SsNh61G09)>Lpy28)Uh1m<(G@QU|9cJ+;0{S9nhTv zuMQnHDC9Wl#tZG*D+5lDNI~GD=#G*!rAjQ zsq=+1<1}%nTTc`HXPg4uL;(k<8lNNU%4GPzvoS%YB^|Trs8KJ@k=G88RSzzbM&2_j zK@?do;PmwulBm2rIgXx|x91+%=&V-m%8bkLST5ea(aUY?O*%n8P`(YDwt0$FW2*jS2RG zoWKLTT#5r%|ANtuNR^YOGpUSjr+^U~^n=k!*pZ}DFswyTgZ{r znS8~VID(0_J&PXqSE-?$BP_>l#zuAqt3rf@)4EhtTHhcUyoLqeJt_R-sZ|YP?5$6F&w*l@}}UD19j6Z<%WhT;|56C$J~f zIlv}kQbVu6!EX1u?P;ex!zkNmlo^athk3@r1hb{koZjHtpSZsuy}>>hk?HLNi}gS2 z<4WLc(ai%rGI$cQfGYRMAfe8m)cZcE-1I{o7K@9swNn+9uuyY5n3FOCZN`!HSV3oF zYU+bW!UZUZXW(sZgA|#Q{EyNp_epoR+jW_K3361=8?e)zr6o_wKY-S?>Xp*w0a@uN zaL<)TkBN%|KSz1}guLYWWy-^+q?`-?hw||~nXeN%^rdq@Vdxp&mu~+A0j1nzpJNIu zPoICna_Ki$m5DZtE`_#N_NqGWLt8oMZOoTVQGVWmXpyGpx-#N%h;H`8jq_{d#p!GCifnI`=1gFve#(UkbZdcuos~6n=kMar2Qb z@$%Sl*j<2yillM$StZG@tmWccn>q85fVGVMqv40$1AS@Vs*+J@Qdx>}5Zuqx+5S>v zp3p3RX_nCW9Bo%c`c?Sx?2@XI*O%O?RF$ffjXC>Yxhdc_!+{()`PODho=ub|)g@<# zQk#yy#X4l#K9(LNXP=rJQ-#Le(6rO_W8wRsQ`Nb)WD`hRtW&DYy4RKR`BMEe|IMsj z5WcMz(EsM5Bn6?kN&mxk1}z#%?iGZzB-*``w2^Nm{i4+P9bVwp!~YZ*6l*1=%9zoWcR{2+OsW zO%{0us#MHYA2vhEZZt-k-&ZQHEbT3w7rYuQe9PwfqAWLBS@K#nN%J(b05Y>h(GUHk zaC)qtRKe@;f`5?(mym@iAhXFri@%kRBcu&3Ld%}Yx=9jF%Y?k7zkVxqcW>7d71t57 zAbzRA)+LFoN|}OsQs2o^J;9+T?K)Yi$ls;oCrdT>gLLg==|`qpeJ7m~B7dOzDbfr+ zht8WKwHBr>qt~ZMAwu{vYMd%{=AY7`QzdVR#nh?DkR5c>RB1%z@TF?+_PaUc@39pk zYdnt(c{UznZXDu18)-RaGgexvG)R=(`9!h+^N5C&Rmc$ap!_Ud;e1qG3vVHqLaz@g zGa(kohH=8PIfn0-m|sX9hVMaH=1aM1-^u3kvX?-3r0ZR9Z9}08=HL_9o-B8`tkrxu z4zmLeNx>YOGBKW{D&<-j)=Yn{5`y8m6BVa0+zx-H$hRbn-u1X{*nCj`aN{9M=2Z}(yYe<$ zqA2@N{aT{9$OshM+~ zI6SLy=~QG8CK-(r<|@}_NQ-!3Qb#&6S=uK|7)7h5NL7SI3u%WG>41>8P;s6qMew{E zjhQ7qOx!z9;tm6j0Zs!h0&W2E0gnOC0dD{w0S@yeP6m_$cmT!%rUT{yRsnVZ4gih= zE&}cVo&eqggas1k3h)F}0n`H=SRggwGGWODoCjP5+y*=Z6aroWiU8a~i4y^?03*N) z;7gy)mV7a3SSnTO?m6AUuFyi?Ir>f{DN>Jj*HE&l?qF{C*bA znjNU#QfFFV}J^ z&!tXwD|EB42`e*+wBXxnPgMezN#6@T$H(J%{ysH6u+p2qAJ4Ijl=Vok^%sGzAD1;SZ$Uo#wdH-evK5w-=_|1rP?ii4MN_YLf+QMoP$>=MDwL{ z<{(_tfjQl};TBv8Yn;z0aJ02~4bA_&Ip{C51@pe&68Me_qT|*|-v|yt^ub!J`I_Qc zwbN~+&DTlogzoid+B&HP)+f%dle$BOR$njms{oVcHPZH-3F2;C@r{0J>0 zN{yo1*GmC{p)S3)UTU4#2BiZn?4==-#}qpz<1PC7KtWz#!Hrwykkc6TPsZFYiq{MH z;sswdi!J&B6rZ&x^Tx}@tSFQGufX7}W(_y#8x?m_#nsnvBQ;zv7}yTu!;ne-am=MM z#|i|bRZ%Whq0{xRPB?M}3Fk1o<`ciOa*2LPw0C7dA*`6HjO~8K7b1UT~DrojGIC zT^)%V_s*p1Ld^GY3780H}3F<@AIzjO){vuvq{tp;7{!vPlXSCXA-aCh2^=y(7`IQ*{$?^N!89OLL5cqc}Izg@te+ z*eZ-_(wHW)2hH0o#R{VWY1J)~AAgcYZIK#>?P!S0rV_p~TNbeSBxK;Z5hx)3AuAwV z7VKurY;~b9RUc8CxlkSTonW(=NvghIZJM)1>S%1w2-6!F7zJBvM7%9WC^fc9(|BR% z5W4**X_)Z!F1ri5*i=CR3<3)`hR5G_4-NH2tCRcQ21X{j(cLwUSY8pfA* zILZn%y05j%8a5y{B+ph8X#AiI+a=X-2-tZ*y?~uvjf=LcTYnJbu=`khvxb>oYcBku z|Iem}cS~^R0%2sE;QcjUD-Cf0`WbBjHLQCIG2Of~ZguW)a@qpB| zO!M7Hj^%v2bjN{ai({6}*t#cmJ17kiyeiUf4@wh-DsdDyNBf0wamdR|yBJE>z3Iw| z4OQ3b5X#CR%)>r}EZYP795`z&%(czahOkio(v4SW+##q&kLZL$Qq{!o5t_{npvpPN zebMDxOzXQr`CyX>!$I=pB*KTTxXw+V0&nd3xLe#>&zJ{fg3&YtX!4ooQP8sb&ywdH zsaBUm%olA5F)r)s25(fMEevP#U(gjdd(4%}D&dEvY65>!8GaO5hExA#GNr1#(7&_N zG)r3SSo7dkR&vYOs=PUsx4&Ph^WUyw)m}4oIymFQbn}$Ik4qkcP$yC;cTy_L3llrh zTBoF%i3fM!Hf7&DLvmY;h@(Pu%i%U8r!$8|KM0N}Unsn~G}u`2$3%tbV^k98K9E_) z;i}^-L<$^?-jF;EV^Rce3hB@JbFFI@SE`!2nHGIG`I=8A-OD~e`RocAC1R2eRb{O7v-z(0OOUR zXJ}QBL|(WT?T{Ijn(Q|X)qjxTtI!L;B1oEwh|ILs9Aqdox~Q=f>K$QXhU72|RF30{ zBQCu$)Cv8b&OI&FA3Euo8q`!uW1+vHM%3-*D?_(afGkA%1g!I48RAU0Rlhj>28{+d zl`fb0?b7`I2JRNzrvc{?u2wbR5pCr+wB{M9O7$nm8IXK}_X+lqFtcG=@fEt-ta#b( z2(z!Q@^<>&8EI7Fy(5giRD@p`LcM3NHifaoZw1;gt1RYem}?tz&3J_R@XGM$F?NK9 z;C6S6AM1Z|#FnE+XApsLv&yL3g+Yd?_sl0Unj`0YGx2fwz;62Gs;66Cjoi#4CnV_t z;3`6$a>t+UoaSrVsG0s#kI-pnrHb{=ZDVPRGtJak7r^e{U9&T;Hvqq58xYVeN3uio z=``=G6pAs6>p7`)Jr4voBxR{Z*hMEFW_6$o>S5u*LG!{bCvmR?zD@V)Cr6wbXn7+d z#B`0$Jcm|-&79|?hGClz6$dB?MV%hReg^Mkuw#|cGzs2O&UkpP;04wdRNsI2pQL{0 zC7;9qutzQ!eN@x!39F8~(f9^M8m8tAGK{-Ye~{s?T5I8pjC@nD=Yx%1j#wOvap;!f zD&HJ7!`w*Bc%dbHtD&PUH_@eUha>XRlc*ZTpBT;TD=0OzyDo5;hx%r*w%0cj8f%Dg z1yG5#(ZH6gK?=k~)1cBC zY9_6jC)F34ZlV42B>&cXtn9PhOug`_F!lbb`DLxwYJ4pfAE$o}=f6Z3-rPN`hNYYlk$ey%_I zZYl};kPfgJk{dIb9%95U`ioNe#38^%KquUQ7X-FlLtezFNtvcqalKR$*aiwia)Da& z^`06!z7`lYQ@I90YsJ(%^7Ru45!qu#pVkeL6+k2A*w^7(_5;g4OcmkVHaM2%;=2RA z5NP1chE}@GH1?9zKycqc(=JJ#p6yuxLxhf*@rO_@DX<_!?+rBLl2oPh+x1$m7$Qv0 zjMT!4sS>j}>zXi9^dW{;*9|G5?6X;x<|1?+LPa_2%Y#5m%26QfS^AJRzKrRP)%5Gj zQl-Q$#r#{DhQnG|t)yv22mJ<44U7FFOzmL(LO_&6<_kO`8)2smF_wnS9$6#i=bIO8 zXm!JovK5)j#xt!9-VxYRWzp|i=L+u>lMJc|Lo5AOTIPz>(tXLg;$)}6X6Lkvj<_Ou z30~{yoGVgw{!hB+id3mldq!%AxDj6!MG~$#PDf*v#MfB3mU*>;>k?eIHP;Q~aJ_Yo zbk!Bf=sO2EYwTr|V9`694Q)6N096nF*e`4 z)0$KCmF`=7QE`X;%^DhbT^iaY=vRhAH;u0eb%Mh%D<8F+xd?O3_=UMXsNFPu$-crg z4^PM-AI==R|HomS1Bh~pzUZTKUU$=fqA#vXUcLVK#SuqtPO`M>-oPHBZ;pS}`4*N4 zLwn7y2oCe~OdE1h^;F%N_v)(-FC-c{lXWa}a<`hKkWhg~c&YNx!vxKqZL=w^V*-YE~>Mc>_k_@7D3-IPMZgG)jbm{9C$zx!Fb~?hyi*huOPj z^vQJ?ndOw)E!R+kXx;Jz6eHSzPYFuxmdCKr_HOwKi#quQ6Kx^J4At>Ulh8fj&>Bw1 zm2~BAl2>97!=PV-q4kTEVbg?%zKu$4@7G{ABsT(>5|)0eM}{tzAaU#;0mAk z`Vh8yW(h$?M8JZIiM?U`9ZZ8>$NiF0rOr!!(6R>|~7&khR$N z7k7}OnUAx6KMXBz`@m+;+hn@zj#MKt448sb?AC2>PU{Pu?9_%PW2J0)kFQWtRN-fH@hFklD zrm)#r^;<>{-^Kju8G7TcRKsQcQWWyIQz(&?BARhUa&Pnrn38_;56xlkH=nQ^x|`M6u}0JE}4T20T@5I`M=e4>U%)KBhG&Y z=wZibERGSH?!X^mm#gSFFE$usL#FIOhT6JQ@H5Qfm;{CE*jC40oMC1b8^{;}t`9=s zDr%@l4=^gZj6lY%2*8GRY(xhd3`yNgKWYiM4u3F@GYMJ(Fy4&IEExhK1#Jtd-+d`P zR8)D4zWy9cOi!T4L;sz6(`-2KsyW);1t1JbY(D|`hrVFmhJe$6*WjnmrqAz7H8EXO z;enJbjNPo{Kajfcq9=50>(|F=$H!6`8uPm}f?rAx|Bm^**o~BbB-IoBp`coan60;+@m7FARDV~c-N5TbM5;(wlL6|cLU$$8Mtv=DZLjA2Y3p!jkg^t^$7 z70N+vT_XGpvy3P{=9rOK0JDWs4ugg9=-BmU2ldg3dlvgrtYvG zyI-`$lv8YpQ-gHN{<74_LprEHS{3rEs+geEkO0#Xror4R`dn&LfG{LAL8;-}pG6>w z(>a&i3Ugk^>Bp|6VNWDq*P)C-VYdr8H{$$9uBBt1NXMKjFeRaARGzhe2Ho{sDx-8R zl(yk&t5uYLCN&d`t7!N$l-}>?K&$~rR1%v0Oxi7$VVLfRHB67^k`W8&W1dTmoqj>j zWBr5jFHo$h{Ai$^LZh3+bWI(4WqJDUBDLe&73t)Sl<}Dji-)Qw5>iJ>~qL(mP&g{g~#y zm4=(@dSePMwN-vporgkqiD##p1MX6% zBB`Y~&I@aY`U^CsNb<+h;`kz|l8}0bE-S(!K%YA_y9l$#x2d%V)z0M(b^i;);-|F1 zUs5I1$*zA%)i7e2{+AR%-eJ!KwC>yV>|c_fU!B|71CVseX6*va8S9CU59FdpRJZY1 z8$se*^!nS>_(2N5=HzA{Fi+gilYad{swI4Xi!S;g)eh~Ax1zK?g?PIOdkUlBwv|kI z7w?4DP4>i>V=khx5bti8z8P_(=o&qwwhvN8_cnME=HGq}4{6Xxskh+)atx1ksyk6^ z#_e?VN2y+ywLoIKWO=qQno!P~I2CG$<+{yy(F32BYgMM$Y}loyEr4QP6jK$~*<0Ty zEo|}E9Hf&g*jEp7*)FP+m=p~}rqIB{k_Qd@TXGeaT&FRAOXd9bAk_zu3#^r;Vg!pd zKtzgHr7imYV2L^Rg`U*%w-n-e_3azHM|UsMVvVvqX=h3MG`g}I>usH`)BL}sICJ18 zZNt~O;tgLvm17Hm*I5_U!Djp#F1F#TMS9%Nm=BM@4!d-t6|KT*z`<&iOEnGkJDv7P zDsSka1!fz-vDM}c-TXi>_jS*KhEOZ(F?e>yeSs zX2jQvvgmG7XPXot?*difJ|uZF4Yf(_%C1L)-;a0RF+9*Mf*lE(PgmF^@8-)8(LR5H z%P7ubHuH?3&<3llHnOGfzEPIbSa7vm z#Wn$V+JKik8zWc%R5TVi5O##Ci*q)-TrP1n`+QbEQ1mWkdG3qNXGRtZ$}J1UYoP=f z*8Q0G_}AvM?q6`ZQ-;mKf5GQAh6?IwO7J-eJ7PZt!#W0hD*lU6=`R?~EW^|3*GZWM zn?bE@V`H2k$61Ojj74Rz_;MTDaeM*W#?~4^*ZhbsYNsH3lt}=omcav?I{KN+kC&z2hKP zu6+pp`^#vYH#6FF;}#g!+3W_Be`Qoa8Cu&>_He9S8qKv?dETA&b(CF7&j!8a52S2@ z7JlN7bgH9V5xZGeI?ByT^9-w2wHJ`<;Qx|7bCi1vQfb`mBG<$5p=mm~YT`)dscyX( z0NZ}N-p)R@1M3RzV1C1%7TI#mW}Hz9pP;jj+XBgegDC9unNJ^eeTX#!=-H|OMdVggEyTKF9CNW(XrBO#S>Jgx}dloZmrFpkz-qD(OC)kU( zN;cEHn=|j)n)gr4n{DDlQmE#=lzAI8@Ab@^ZAO9jyhP2PrP%rsLI;trWd5$2f2!s^ zhk0Mnyq7RiYrF+99?GJ`E3*8>T%7Z2N_V-1~WK=+caTjmBM|^mjSZb0LVu@bN%lAFL>RQK>Sjw0zJ3?|PLd}I!LIbJB*&J!=gb&d&FN+w z+AiY9J7YhI&3KUZm*u9yk0Mp^~2f94QSEK(7x@a@*rpuh=8A5qCYI2c3 z3FQrnNiWaf1(T?(ag}H4gh_LiYGvio4nn&lba^?sed0KaDtSl4FsH`e1w2Nc#H!9# zM%_=Dm5Fs08$%yuYf zfbLauVZE!{TY9CE+?Rhx8&;OjU=y!{uUrckP}KF6%`9SH`5cZNM*7L$@;8)YezF@6 zwe*U=Og%F2prs+{doVR)$B@MqnQ3!^zOjWSSCPYo!GF*bRpe~kYGbL2v?sl!KUI}~ z<}c8m0rF^}?+bb^KtAU6!*ggO7RSsM!SOGHr;N1k6~kxQj99CxCf9O4`ILQZg160h zjXtU-x8cvz+STO%Oc!*mE?*E9J)zZW$h(Xk@ha!IZ`clh%WHGyC#R_NTFsu)mo?;@ z)lXq^9~=xeqt(hf4l8!G+X}HEIs)faS^dYZic6@jO$zCsHRT?{;?1;UE!kVBc>)hD z%XI|j0=ll2{I#$MhdFD@zhVvUNNxFyP&$XE)sc@Ob2}=dRm3vs$GUQD;lMf?7$p1PG)Z(lIo>o5bZ9uG*%Bt- z#xW#&tic@eX6*7p?DoD(@6?lHz_?D3TnRUIbqta%Lfn0NCrI|h&gh~bIaXM*hQ`zf zI}F(BBlZ`xbpyGQ5SvejHjuwHMm|F34F5;wG`!C;$4K=J-MNv7qs8lmu)RkMFBQr>AN(okvtVod^iWowQ*Lk zNwEB#^VHjFeoHpvN17QdcNRSEQuoGkcWhuA(^yUv{C=db8q43~0L1hr@;9!bI9on0 z#*8(VbY0!s^zSBe8js2T5V^JYt?MeMtvHd4djl-jE$6MV(Co0a612^4(H9}|F_+XU ztP1^M9#Ct-6?(L(Y!wo&DqBM3YdBywkj`i>H{jpUea(?Mx9AOKWYfQz%fARqFVG!f za;S8#zoWXd<%05Om`r#+L-{*gp6%fF0(zyUoG~F(=>lEcO5P*&m9n8_}re%V#O=+RNcQ1~KU!WN)L}37m5O z4YjeNHMIuoo1y(9mpaI8T`QgWoDaramJcmxj~IDExnGW{hkK!`+Ki8K)Ep^|^MxsWt&3bu|2hXr8-V%)rTsB& z-9>IEgk;c#UF0@Gr%a79hraJ32MUgvw0c*lCg*9du5#;Ar4Do4+cv>`d|7N>u^HvV zbaz*Iqy8cu_Z>G(;|GZqhvrlE2t5!d_jh$;Ue$474N~EFRH@!guE7g~4=P=|%cC5H ziW8LF-ZHjy<|+EVaw#V7y!**t3H|oagnsfs!8xA()=&0!u8uv&$mFs(u&(I(qf~`9 z`>A1oyb-%`_70Gj;HY!-K)GMb!+7GDOZxCBq4Wve4%pd{$z}}x1%+r#`tWx`*%LZi zf-VoV<$7Vcqz@ml4HYdl;Dm0HLjM>jkK;GfufLZ23f`mXiLYgUyn6QRYx%Yyv`C<5 zhRAh=h7+i5h}>FeGn%#;iYj=P4jC%97rMmLeM99gG5zo|6qgVM;rZtnR&4rEAkgF< z;i+>V&yQwET_8iI>dV8h=FU}h5fkiDmW*Hc{TQv-to87JTvz57+IyH>o_|Is4nrpr zIh?K>24T>9EX^1u*JbZE4MPF;*-D!amsd0_6^a?n@@BjT$t-TLyl4uG2+JK<%&9Yd zpl%lmmcrC;NP#n=X>98CGc7d&1(QcZN60B&)mZ?rFqLN(urLuj3)4I0&IlR1wwyN6 zzTZHmrfjCuzmc=BT`XdhJe?d}hxCUuz>_;O*Gk8U6g1rObb34h9PA-$T0-9#;SfVkzwuD(U8%ycZcfmxAwy3%P32O zim-!wf@DrQYb&^f$iTi7kO?)^v3jKCjP-!UW>Zg=6s<)-KLiBLGuY#?H@3kox@EMy zU8ud5#*KkcyQus+Mjjwka9RgeDH(|NtIbG`U0KG?!ideZZak#p8`?J>*`G}p;Lx-1 z?OJ*(UT)xesV`3M*tfur+C;q*~AYKB2G+&0mf3G!B<=Q~<&yd2@>z7fOT z@=zUg%!0%Ip)SmVcjQA0>4NccRiQ>7dT_ivy429O4!Bh`A1|D=f}qs*e@mNAKz*3i zoA#N2QHFx;=;5}!LRXAg*xO^qjmpjmat@!!^~M+Lta#81a;lvV7P{W{QZaQjOaL%X zHH=Ba1Ojtk!#Hc0U|_Cmn4%dfpDc2JCz;Z%KII7JW@3kIz{C6 zuIiULVFm`@O2B2EhWYb572^iXG7WQI!^8n|Uc=;Rn7+V33?@RFmFcRqnV)=Wg2SBJ8oO(Co|=_4x2~Es4%V+?m0>gF);fL#-8BpHqf4|hZ#L7o{-kSC z<;_C74z%4Ic>vBG?3^P%#ycz2B99RwBr2!LHH2~!ZIp%@_K*(!f9#!Ud{jmD_p6tL zPG_l3LdXJvW=RNp0|CO`Xn?TVEMh>^W;G~agFz!Qc8iE%4=z+x)aWoXQPBwwny9G3 z!7(amaKMR*PCKF#M%17<6CIc5cW#~A>15{lKhMkO#dGsHIrTktYPogqt-IB&-ihnu z$JP0r&ZQX2ciApywxw0A*@bKIsngZpcfsd)ZRT!gx)r}lG_(R|Ov_ufS@$@tmaz?e zaHq0tCiR|j3ms9oJ?V1>`wvF{m%VH}(YXw!o@`p7P2*tNr>?lyxz^faQtj*a;){8e8d{kL%TnN@t#RoLjw6 z>HG>O>c{VQ{@yxplUnouu9X&#RofpxFTeX%6@CEcoXNMUeh)e~TIXb|-#qA?W!<<@ zU3?JDl{#Aec|WcFE-W6;xxGF9_1a=qc^+Fu@a##(T_7h8o%vaZ9J1$4&Ws_Uwpb5iyu&@IN+ zN;J_g_+h%lbq;l+%DJiQ*bO-2O%B^PWEO5)5&k0eb%fE$;1h}sYWbtiG1l1|RMn%- z&Nu@-`>6BE?u$!}+Kt{Zt9j>hO^q-;kEZZ=6ud#UB9k& z<^kseR{YGw-+$}GZ|dzCq^_uTR#;BgHdi|_1>ffN%Ke0MLdGTQV?>`={LHQ_Jc?Ow zh6ABI>uYa%!ileB3V*8I`Xny1tkd19^Ha_|Pv8dZnZ_q6s4IrfFE_a5!Y{v&Y>O!- z-W9WOIPJhOb8k?qpK|6{XB5`n^OQ5qf(yIHpLV`xP0Fhc{NB04W;v&Rd*6Cx_{O6tdas27i<{Q=C=bd?-KOOVke}1iW;(6yhn|0GD)$1kfrVcg#CFcd} z6(iNumz~3+GT8jGGq>}_5&tEFBQHC%ZRlk`IO-f|anyEt)%lWj$nnW^V!|cGixlXD zz!L}*?YPg2iyzE2)I1hv7Ht0bFCIqRR`u;M=jcR%qx;5OT#8`Nxu{0J=Df-BS#8a0 z&Y?Ez@ENtAHlT~O#!ahDc+2@RhM&$*$B#SbT9anfx=%R2u~|3IRGm*c@3Y=9rS{2_ zPK(W2GD$ss$~ikNV-g+>;5Ha{9vg-iEt9x7%f3`4pLTW~Ug0(FPhR@X&%c~I_wz6K zs2ktze+VP0HV0pL7}5BSem@+FmZc-*+v=LrIIRwzs6wZmmsqd6r1scp+9H2eAH3(x zPmaY{#iAXJx~yN)9+{we{Kff)_&0~y#f_cm^;m=Y=r7J8c&D1!`$FN zYL}mNjurG4CYjQ^ebsoCjHd#9)I#*9XK4!Xw(4;i#W4Lj%T9jpc7om@?d^8lcvI6gkgQip_t;evf$ujnS_* zBd;$K|4nIjB_96FMn$~&%_Q>`CEnZ}Ma0#bYi@r&0&5E>1|?|-X5kJ z_Tt13jmk!b0vdx~|8Cff*P1-|)ir3I_DhV{nqDfNL+LI%22rQI*WW0tGscO!a;%v> z)#d+i4#{;Gu8U(_Iy;QNq!*c2<87%cCqY+lP@i7viGMhIO={FWgPL{rc;mY8Z;*E( z6#fU&q^)*SDaD_m=+D6;W`dC?UZ8%M-KY}3a84+kW4J6%n`US|{`09GaKo$5w(*~D zA=ViGc>x!vD=Rj1M{bF^aKj{A*Ys3-zHp`u&(k;=^=Tf6Bl3&>ZR1Ug#>RZ#9U}qK z5eQS@ZM@*`)I@csL`ywrevcu4-Y-sEk@BPhYyb(Qi^hUfAg<%CH{dVC|dPBL2d@)99 zC^Wqo%`W1=pueJ6G)~yC_A=ZS0!}{PaO`iNJbxS+B+fMI?;5lP`q6CAY;~P-nh!c1=8e0Ug&J-~V(ot^^)e z_OG2I3hsgFm$Wb8wxbCh@pb5kb8*+$8oS{dTuyI@N-!-4S>ba?4_zqiRO`NWX7}6* zU$VK;5xs*ao+xSnlHfD^q8+DyNelL^{r%TC)8RqRCoOnn_lo+t1y9@>YfoIj(;b{} zn!j;oSZw>nceS>Q&igFZ{XNwK-#P2@tUZm7jkwn=+O<6ot8?z~pT47M-|*Rl=01N? z8~^FN?UF68v30Hd`!9b@jro`JlDPrck+&OZ@RT^?oWC9C zo%6Nhf^*(>Ty)OUj*HK^kEyr+>SH5(W1J7xu%Pbg2T zGb8x`k{YYFV>`}8;@mN{uoV{}Ni8bWic?;#+Sls5)Vi!mec0;E4i=t|G(<6Z=eMzs zxKA6G5TE*U#GeX2clOl?8x3-}Ej~c;$J*kJ{0_Hq81bp+4zwAJ0`7fPZT}t@pT0k< zr@wb*rOY?ucjzru_^SE<@tA}Dr|+Fzd*#0yDZhxyyLdFhMt%Bxp~n2+?AQPO_pm|k zpsDusR;Ng88TYx0W@Ae+XPj$PyM93NYmTZzKRCytm@j{D4hU|!>7VBQ;-zA?yc%I+ zwMyIAP4Uay*r>+*Ha6n(+w$|1f9EUzW#(_h7ydfJUc{%KySOM~@WXJ<{;GQ7-?-)- zd|J7Fbh_src?GMXcUohIJJ^o%&h2l<1?P6Q$nzFjV4YP_rMR$2F?v3_YpjvJ9m=#rz z;U8C}Q zN!&$GBWIfKZdc3%3hs&-GFXV|+w3SmW*|rIn$vR0w)vJH5&Jw%vA8X!m*Jb(6{`8Y zvY#-`9_5OyvI>@Sp;f5guEdXM9m}so7!~^>7gw{1Z#ih)5{?%AQjc6#U~uj)X&5wN z3{${Kq!eq2a%aJgQ<8K23A3{JCfHH?Q*6A=qTHS0tAb50(!L?Y$49mPk=c1fb1&9o zSTAM0k@a@g53{aeeT?a*Wy5^d0oGes?_*uV`cJISu>L3OgqOL( zti7y#to^KSV!hSSK_M#HaDa6k>o-|9v2JGF%G&;lE-;0)n{|KI1+1sDUch=e>y4yQ zz9?tIKGp|WA7S0V`UBSIS+}yb*XxROVV%pmfOQe;t67(_-U2o-|9 zu|CiG2i8vBXSyhhGd}&2nT!iqFJ--n^*+`$tY2mQHtVmBst26$-FsG8;=Q;w#+ShD zHC2@spL*XJ|44rMQcPF~^e)r7Vu{wp=e6G7>@?y7&uU#!=k%(RF4?EEt2WMv@%^A< zc7EwFV!Az-5Z~akc+?x+;)i5b_m_rO_zhub&%0XZspRbVi8z%(rCUP-)pgnN-Lo8n zw0A`Z@5({yvF!M(Eg8zvJ-%;dK!%sjEMZ@jXG^3^wet?&$M=QbEtBKFwuB6-t(X$uG}t0)S8a%Yy{jd!cIe*tyByZWF|{w; zAOE=>KcD^R!|`8ty{qPhct}ER%?pX1K!SIMZVn$bZL4m`Ep9+kkGM#L8VdXmzk#aa z=cL%$-2;;5+T)tW>ecG3&J9U=XQ*$S#*W*u@qc44Rwq44>CX*KDz^r`z9geXmQ$l+ z@iVW`C<4sun9G@QH)$+Y%srXwm}!&dxriB$d5y)->|_ow-@;tZj5|GJsbDVS@`>Gj7ZU;_<5qNR*EWDrhZ z%)er;WWJ5LnmK{Fj`?=xM&?z_Vdj9*{xG((fqF_>T$k%L+N@FJG4EvdGT+Hu%uGX3 zXenXds!@cP?_#cC4q~=#W2t6CALe>y8VyEEn7NlmfuH>}`VDghGMKkGjxPc)ac$3)bn5R~*-;0?(UT z2PWwFahr5}c~I*EtZPD=3pQ(A^LL%D^)AicJGEY1uJyg!w6@=2=mDZx2gHFbI--^J zPR_V^qOL$-lX`Pv(%`H@wwrnrvp-au;!S$mf}heoIw|Q|i?wB<>VIicZqTz-Zwj-+ z@-mxUbWw-+VrH{TE@3tg-?9!|&TQ`7mF?39#Q`>$hhI&52T|XF8=1`tHZhwOXl6F| zz19xt#|+Y!O?pe?Ah$2mEnxPLF14gEsmG)YHk*fiw+`%PHV?W!9pdxU(ZZx5mVxR5 za>GSa@?=oHnlu?ypq5NddL(&Vhb+7*c}mg{Ra2Pco;R~YcD@cgzXKOD+jtLN+=2be zlGN}iNrO~iN|GaJZoLqDnOwnaHf|-exp!1En_XRfhxkTj^ZeP&Z1%m5Jc>SahT2KUR=*?Hf$rad1Vu3Hj5Q2^-gHEgPS>r*Q1Ep>|q0%gTi#E zWQPHqpn=&epqbfh7}vGBK(k9OU^Xv2N|^g|ewEDTg-e~m=)lbbyMZ0dE1fX2c^tMs z?u2OR;O{8W6*3FRV>WjsFSFS~eq#07w4@o9aVmLwQjg@0J7cJJ()6U8W0Pw*WeaOh z?Hj(NYhA&!zt{IUyoUI>-}ZbeMc@B8Quz)k&1#&rDp((UUHiKlvZWczt4|*0S*fUl-FIBq$KS!;a3|NhgS}*jwpVnpx7@Am zGjZTuBPP{OU6!;hCm8s(u0<*9GS-_|hgff6UCw$Z>w8&Ov94xa$NCuSM%HIohqdl6 z&a$DI^?BAUtS_=|Rin2h^$ofX==x@`?!$T@YcqL1^ElRptbMHgtV>vzvEIVEoOK23 zDy;{LIyRVRoCfAb)=jL#q}8D9NxgBayJUM(`p}}^=&Ji!2UwT0u3%lsx=P)@J?XMw zE2HbTI=P#5HQPPRUe-R=e%58I%UM^kKFsju_g){fs9k8J5tldxQ_z>$x*6xFbJxdhmfbg;Qv#zc^wFY98~0oLWLt5`R%4zq4$?Rdt>Prag&Mo+8IAZl1Q zux2OG!YuxvE0MuEkF}SzPfe;!N}psVD`&IG)y(y*n^?E9b{*E)J8B=VO!~bovzWPr zbs6h&wQfIlvVs@1`(!a&T#hc&*MZAAa8(pff`1+JY%x<@0&a+k$9Z0anHPy7{NeU5 zil@;%WD6TEMf5y4h!=H*%mjJNX1p&d9vO(TsQCHdDrU1n^~~l9Hb?O!;~w%zTMNuY z2JR@PH7JN;T0?&n8x@G+>4>k4;zi(^D5ez*NAY~R12Ockz*Vp^ewD5eTDGZ*6dYLK>}<7Hg|GEfGdD5eaGqnI)%W2Pph7N}&NCgvNP zu#S1QxC~XqLyivI+Qva-fhK=NSHOo1sEK{dlaZZKU=&k)WfW5d>!SEFa5#!-g&g%} z3(pgUU~hzj^TZSw{1L-EU&cLU2nIF92t}stcSa78om3z)YKzTCk9rHW{tZOy)TAuqakX ztCD)m@w5GMq@s!jn5Sa9P`yITbTrb6Rz!G_(Qs8A{A*OtM{&tR2O~9nn4^ot45J#Y z%(Kx5v>{!8)T?1~2D4e5rvn!;`%pP*XFoGF!whgha}e22GTNnr9cJ*ZSh;xup+Z&aGC0vDpPCg4<;3L z54tbt+$fTkJZ76l;bAuKl?#~7r-en#=53IV*}R`DW;X99{mgMX|DY&ggLyX}U^ed} z%9sQ!7Ae{+lakF8CMv-SaFngFS+z}KoTbYZPZOp~YcII-v28>}Y(eXhM%Z4&e z(8)}|>|m~Bj$?N79YQ>FHOFH>xUtkRCo(rMCowk}jP{poXl4f&b1QQ)vw2mU!famE zrZPJ&>PAm$3@A8{W0^h76PUe0HcVuLkJ-!YXP(3yV7`<& z#9YW+$vm04nt2Ly9rIM?U;`Vbv7w21I&(Ag4CYqmnaqxV=@yvHoWXnCgn1Ej8S@I}a^~xqE16d_S2N$vT*quNu1IkFHL$_Xmni04YbWL= zj*nw*W_B{SGAA%QT6K%Km@}ADne&)C6Vvfuz=kgDP{f?YT+E!!9AF;E9AX~JT**9v zxtjS><~ruo{+E@$q65FZx=U?aYoJ zbPIH1&R~vX&SQ2m7ceI<7cplA*-*@evCIKx3tvTsnB$l$n4Qd3%n8gj%vsF!%ww6G zn1dF+%4}vs9CItPliBfay~bJ08O&puJWR7ziD16LLX20g37|Vu$nL!_& zAY^91Tw!LwT*W+=xyDSNr_6shN^vq#{vHdLrb%GW%0kil~ud$Qa#cc6te>Za+ zv&Zyj_L~0r+TUmTGy92Y|8ue-U?wQg2|~}Jkl_SBAkKdEm*oO!KyiMss+?!-g!`lW+8 zCdkeAGhB$M;P@ssR55?RT*G{bxt_U-xsiDfbC~%Z&3N9&hSTgI5_E;$Wp*(?&g^D> zp4r2EjM>Y4hS|q#-VOMfj~ns0tqZW>6;2RhZcuZmfhrguzVWTV!tPIJ;yII zIghX1CoxxY{0?S6 zSD+Iy9fQ^EVBUX~u!DmW)N%Z;nH!i-FgGzDWNv1DgSnOYZe~Z4Zs8ZeRKCby!)xr2 z$9$N%fcZV^ zCd%3HF*{T;zt3FF{3qrDJ}i4P*Kzy`wS{H3{rR;A$IOA&?QO)tcr+6x) zjt%BRjtVX?kuzxE_{*66Twoq^6USf2?B@6$%*`CXgt?OQPXb>>wpMm9cd;sVketAg ztT)kp%o)scn5)^}#hl0SbJbqj#R?eLo9%<_zve zCo-3?|2EA*QO1UOW(Hh=Va(+me+zRF$LBCta{RT-UXJg>T+Q(-nd_K$8?0_Rk(3f_ zVA~q@X=1*E*}*F@p1GOhw=$cL(#D$1@mrXyxK18sM~dEN4`~jH3^v@%4tdNQm|%#TuJK6ba*n@^xq&n2%v{Ow3(WK! zpT=Cx@mDa{F;^1Pan`_wo$S!W{0MV1bF~@I1$1F<<@jReFvq7eJ5qI%FJud%yncd8{G8eOdU*-ZM9__!14Mm*b1~UP(jk$#RZ_H)P70l(# zk1|&>Kf_$j`~-6yF`c}pu%V%L@3%=^v%B2oylEMk=seqk(vNthIFeWUs!JwWEcn&N zWOzuen1bKj68y9@x$CDdQ4i4V&(+) z;{)fVXawTRB&1XR&eERJ9FlkR1dQ)fFA2WJT5wu2$MKGI7 zv3jGk?29qN7dp!xG1ZhnJ=!^{F7;8)VT5&_MqT`AG6NHxA!XP2=JRN@L5Ln?G=L{t z+PfBk%_V?vyX2Xw1<7M54Y#5HD=F%Ml{yP*L)jFSMav+m9_ft64|G97^5ldCUrON} zEJeoPNaL%SU8Kv37XP@5?61nZ$ZqkKls&xgofmJ~q$Z%bG!Isb(q*o4q)V5oNXMEL zsGgZJm0C>Ir%QX9Z%CWB3*ly@4v!RGl2s`qzb3-srq`T~@{N1p6Rm0WBZZg+~YN{DoGE*JtCKGt2 zb5%n(>B8!`VyclWq?6Gxky#Hmmu7@JWL=Vttxjq5R*!4Jx)hAShQl|CGTl7LlYKCm zO9{e0bvj!Pz#a>)u1VEVv2`O<|L)lPD%9=SGBw$aRP^j5Z~;Y+#35 zv=4H_Xf6SAh+civs}i<$b)Jejnc{lLzBxv%&7{y4NF{`dt4DFoNLjCry0JZt;sQOS zeW)1KR$MW{|5rs0p>}BMf!(rMP3nzZJL4Plyhx3&CTZ8K$&xXNQ5iRmQkS^V2I#7K zz}pLNcYzeG+M6nqS^zeeVuV8lQvH&Rt=i;9F>ZCiE&JN43y^)9(ap;Gs08dx2W3Kh z2)T>V*f+_U&jcA@bMYXI3O(EtX9Du$4PAs5s=#(DR$um%y*pJSCNw&dgRGCrp=q>H zw=`AUi*}Ys9`Sx^2CCN>slFbZlpT)=e}r!gj)pOjoKi}_<`P14#-ZJegw($!W&q74Pu<@K-9%9z^yC%j$;uFi&qpIoToL74jWD|YE;(2& z^dLF1hYI(RZezDgca3k$)Pt~gMn-9>CI{zMZw^Wbql6G5i^m%!(CVjGMkTCkpRgd8 z)`jAAUtNTCaZJF$L&=T4S{Yrw8#Z$(LbyYh-+*jzG<}kbp0*Ov_`-|UuPRT*xS~=v zAna2k`pN+|c+r-|DUr@7j)`sAdl2rBeNA6v-=gN^%C2!Ow3*;itd{h}IWA8oWLHL| zZb0}ya_FIo@@PHD&sfhm2TrLOxT0z?a#7wcG9kqSHkTrVu_2zz!-mLEpXABZOSZs7 zUHN`!H#ELx!?ZORc4CPa9$UQdL+T;Ih07pxAtBtG9-HnE^@yK|b5>Q78re_w8Y#YZ ziovBT%1ZmJF)pJ+i1#8Z)7Ho1G17!_Rj6%cNL#zRpM1`eNJBjauV22TbO}tF*%mD#TYa=`zTvl4G_*5nM_id2-RI!a)yA{6Q&HRp88w+{5Z`B!P7{W$ zIDpEP>GdmkR*K_PS%dqOQ3dR3&On*kKjV45Ee5Y5*FMJmk_WbGE8MlsxFcwKv3B=B zx!#iOpDaaBr1yA*I0*5pW6IR%A+mSMLG}*euIgpT!6|C(5ZSALi($t}3KbXm4&hlM#N`le z$GS#Xy)Z;(^`!Rgi8csePpE?s>*A&etA~pFZiw8Ia(1eA^Oa)aImp?mYM)1TPtGV} zJD$m`g=DDLJm_`{)t4SQF~@9R*S$jA1<_2c5-TD$HD{>on{tXX3ghX~MaZclwSB0} zO-`7m3#hmY?-C#h>gZ6pXJj>*W2_?PqFwwJ53SyT)U#_xZo%UlvQx;m{@@k#p<|2L$1y1II} z969|w+iUO?%ZeLLgQ=oeWe=W;6hX{3Z_m0}+H9ErTn@|Yha6i8wa()Sh=$f5pA=?T1D(!t0%Kp zC($`STXeQ`5spA7e=NGFd#`qgnX{yL3_E7tz z)_BqX%o>OAj%-A5aG3tJ&_980cd(28x$*BQYuSD^W2DT9Y-j&Fn3Eb(q;4N6Q%9Sd zzaFO3WX6U}PKXr=`SBuQn64R>@12eEr{UiMh~0T+jXE(>_DH2Fm%%cZs(d>F<+If< zBV}eEN>c?ccnbe&AoUQt!-W>H)*)z34tdnLQPS-u&$F=PeTjcRLt>qw2J{0H%Jw_Z z-|bhMM#*uO1oiwV*<)(LWqK=x@!TotWgHjaOw7b;zeEViXcO3fJN{Wmie!m-nesac zIV?Uvag{LVJ&J$Tm#H2FGBb^g_27~>@b4XnH3`MdDv&+KQq)CQ3M@V;vLFK>2~L5E z`NmN7e4c{axPlI0wcBHR!2v53wy56~$U(g*gT*iz>%R(tGK$B_uOn><`EBZ-1#;xH z3LtevzITPV2BH~`%VXQycrR}`g}wH)*{7g`Gg)mIjpMVGv-7+s#5_o=Pdz2V(lSvHA-B%M3dgSs~-a?;z%Z)sESx<^yy_5VPxx=1eLVWzxY% z&2n}Qw$Zsc>e?|fJ4l9vxx5Y15U>uj8b>HPjtUnFhC~XEW-izTTi+<3XpY`70%jSv zP#N8<$yrX3Rhq19V`Z|jBkYGg?>G2&2x6xlq2E~9V>s2X5f)<~c^?7mMr*RfkE1Nd zj)j#ncdm^s6wNy+tW zylDJXh%=B<&aNZ75Jxt@8a+;qO*zGGHJ=O7{qH!R%u`#($?ijGH3rT{6-VIT6%bca zRZP6dOA6Efm5un1L(L&xsBb}DBU@tB>2b1e7A4z4$#&u2!;sh{m)&qxUB=5?qjiqK zY_!e^1gtq$?7O1lCT})Lz5Q+>6mnHw1|49F@}tJ#SAshD)8o zJJurBK(r0LmC0(=L^(D`T)`W^zeUU*U=f;;biP9bOq+URB5w1kcB|o@w*mh)sc$CA zF_LVD$@UWd9lJt}^~%Xcn%mHiCkK{8UV z&laoUljP+i&%>aPtxjV5&q6#3X(bzS?8qU+k?nl3dU=u@V<}eOPm*0nFJGwLZ@GxB z2cp@IO9u#cR}X9ySImA9RfF`Vhqe%=xUHmZ*=k?W0<&l%JH83N}Qsb!bS5k`VOS4wd=B^ZQ2zIx(P zIm}2DH)^`&x-5pf)h-|-T8rxEz{N;R)gu1j_-*6Zu-Wf7+#4t2Uv_Qr+Y z_l0u6$PmRktio~8CC=Vy5d*eb#J!xNBUd1vY@x+!(PWuB^bGs8V4B*!do6<4g2Cu< z>tpI|eyc}crX+~QZ5Hu9q_a9SS*EXYUxgy6Z#X5zCoq4r!y@uc+r?OeV|H4^OtNA1 zDL$Ipr9nJpO*SK6a9eRhr^p`00e1#jeM1fN83JEGtVupqGDYU)T;xK0H5PFlggCQD zj7YR(iP#oAQqOs| z{KX=MV7lu1Yt;H8*=yKEwpaZVd&$4hQeb@=iN|TgDdc*6jpFsAoN4&CK>evm<`(Ny zAN4u7j_zg^%OHlWGk!l#`gk7Nh0`2VR>!Misa5SrHrpcZuVU$LD zihsOSJO~N<)!ox%|K!d~wB7Z-MeO^KcEA(U@1#VSm00h0}WD`&~>##td@1@?tB{OhIe zo+bCCgb<`^)||J9_lwD1kv(_MRb1)KRU_o5mw2U;eoKe5!8ENXpmK$f|xgl5mr~hb!3=w zpte05Bc@HUic-i$&b1@gOtu<6;g#xz%kWeeo98l_KDp>xGmAKpJ<%$LLY9*a>)nyB zpI|j?MjFJs!DJh!#{1;Flx9xW*k}=tpR|bPYt>^u**~XG31x>BIvXpz_@$U`r_dW2 zHqplFf=_lGQA%cG*Xtxs&$WuLAe-2=BiAF2Y^7?_9NE=+tVCTsM|SUZoZS~)W)*uN zCVLSk8~h%ggQLy8O0T4MzE%7I;#Tj^!HLGLewriGXBS@O5CvF8qcXUbs=CrD>LDRY zW$cnJgRj5JD)w_u6d%oPY1GoWGS}F}T-RY2%fvso+BX-^2>KvMP3_rg6%!zR)aki$ zcyckDE7n`ZGmv7HIZsYBE;7QD!#VtGxlUa>PmUhi%D&+{tfF#@RS;VoHsM%`^8s#h zja5L87g}i*&5(R`a-K}h_Fj*Yji*m`k$fsf#2kwi|3dV>Ypr6wvdqWBy%KUk<;av( zVilVC+5<@W_F!`{SM9P2vUMh=Jn^8xx5FwnK#cy`IFC7u^BdWAL&`X9M{bvn^1?YFw9_gc z-)Y52sp+}`Y|uG+6cJY27sy^C z64s&yv|lgpE;>Ji(;K84*|6C;6R$!o5^Q2Wc4_d{&?Anq2h$mb54Qgqz9G3DU`-vk~ zkqG(m2KC!wxhQ#YK-a)`8k_k&D{f1Y7s>&_d&!K`r~P8Axak9{xEoSMHrlGE90nhS zt)7!pd^ER9gZA|!o@_?G_}Vd%FEi?!tm18m*+(!_C-KrkzLD{-L!++3Kisb^lv7f+ zAV}M+@nduZkS*)fghjH~?0U9`uzHU{G}EO^oNeL9vj| zrMi|8Rxd4%uaX0j zeQfrn*u+tYPvJMy`$lfetGe05%a9^9>1vren9gd&*gK4-nxBZiD@pi!*~BA|W1LeP ztIb!VXRzO-3$EyH6VF2o=C-MK+r*rnZ5u1X>iw(b#N-lA+LB`v-EwWBMD@Ey_MUT) z%#_3YSh2qkezOL0gk3vw2ytYiG#1=WI4xcEu~(WU!g)6FGsLbQx(2;s!p*v(WXkVn z6DGI0y?>3o)KaRl{jzJYl)Uk&aRT4t)C@%>AjZ89RSuhz_%CGVoI7%K8e><_kF%y? zpNI`$S4UI3U3f4#W<0~rM0-kPqHpESp{^qrm+3Y0 zjj)Mwh{4=|HC~%=PO^zpbkBxO+s10l5_w5V6Q`}1Y!h!mn#$DfB{Fx6>lW?bvcM+# zUttplo1G6m3Y~8gD~0N)T`pZ)h0S^vY{&+y^KzOY_3>t6Bi(waXQ4&*Je}Om&xuU5^hBn zboR*aDwZ#^i6<;ZXCln^4$M?WZygjZ$&R5&SK=s*j9N#6T`AV$YVmgF+u8^ti>YIP3 zP22=Iz^)zHjX1I;s8uWEkd*W6Cid7w0p$E9^~4I9g(obpt-zJ%%wOqxc(&Ta)sUGg z4nOW>-T5muW~J<&vXi5$w%Np+5ZJFyF!k>AEFJr1&7(H)9whRdA;RkA zYh|yT~YJ4AH-+}nmeI=-KMo7EY ze`ph9KcZ9337Gr&3^UH0I75o%al-Rgo7f1^c3jDutg=_(!DnUJcGTC_^$ zjyywl<9els7=PL()+z+eAIPwr3n0|Ha3JG~{>qcJ62Fn&8#_D-WDnO*Vz>~2S6Y`r~T z^I1KGYT9b_n{|}JSabBngY9Azq>*#!$Sng=L&VqJp&nQ*2j_I#LZzWaPQ?o!CUn>f z(Kfs~GFg4O8pmkBaK+cJWV0H}%OHIowjF($?aNt4xhvizE4nkpL}%=^G9~ zj@+p>u9e+K{>XMe<`}pMVlXuW4xP{xyVwUYecD*Py%vX#Z>w%(59SxR9O6@!8*nXd z9>3nncA+3Xm2-paaaA>W)4R)32kso=gdHOoc42CSM&>AFi-h)k0pCbzkrzCn(~Sv@%*(|c}W?=Iuv4Kdk;Fxg7g zw16Bk<`lVMnh@8quEJ5;OU%af5aTc<#92<>k-dl~+o`+MGXeA%`Q_Y7nA6~zEA687Ka6gI(AH`1vyS@5o`qldW!>+Pz-pj(2V6 z^tfw@Io3%W-Dnr@LAsHhc68X=+c0Vf@npj=*7b58)^GBSa#YH3BLyxsP`kGv$G5B9 zH=B8XLd1gm##sC)h8R| z@J!FEc5x466Gul_4Z2BA%yNHf7cW4Lb95W4tvAWRnZ9@J;wOk>x6VDn>cma5M`q*8 zXpUE~ejFWP6?3!fJ1G37T}(f2=cgH{erc>|Z^L*F(?>15Sq{joc>_Q72{E70L|8p^ zvrLbx|GQm$3URBKfSD28qpKHT_2td7cc$x{U95!!I6A_rUzxnd*jE~`5sY3N13BD1 zV?;H?yv>QQI#h!(dXkV;Tsquet{gObhOu=bs7Bhpcv7>c~N{D)8zmz_LsLyyV5vaMQ3Kg zZwuyOCyF)i8L9Or#R%^uG3~cVI~%r06lV^=N?B?gcxmOK$9sk9r(4hzp+W{s~ZixICvTz4Zmohxv4L+rjKMsy<^PBR@j zl16>DQTCoxwKhgPjNi8{VfS`ybXc--`T=%X0YrhfPHJsKLLIy|Mz=!yi&(HLhhG=wdJ|74?sf%N!Id zx>?RSI)#mQuRc0QxTfN`cj1>{U8g>GI72Z8 z9l2c^ssQp5$V=om|7U&|KXaT$Uh*rv`sDmhf7v72fGx%uL^4*txlQ)S4i&|UlaRc9 zs0VEfJoh6$H!T*|-JjehQ{y5o>ZjXe-`vo>u_En0T!B#vqiOJE-YI6tDUqBACS9``jfkQdkmicvp z`1;u8&QF&waQ3iV;WX~28*$-`?xavX8j_bG=L;b@6>9YD#vscjx6AY_cYlXC3OQb> zYtzQ+?%QQp+TCeFha%fu@}jK}kvtRKSQnkGL^)J(z9 zuBjNF!C6FD_1rAejmKABWT7t);*lglRE);BF~|Y4)CjAUn`N)j^)oQ;Wu`+kb9^*s z4oDE)mUkB2=BJ8ocv9W%nT(b$;m(aI^{zmnI=Wd-To5?u5V&>`SNa{|Ge|CRXANZ4g8xoGNT5yNlZVZAdc@WQU*Wq6o z#7d+5zPm$?olV0w>L}_c{(TNfN}#ca{*had-{5=c-vRn}nEoB3f2Z)zdN2t^XU3v| zhgm(8$B#(rx2W5;7{h-b+JXxN8qrgVVX;Oo z)$qtWgnzXVYtn2g>K|CkWP95C4ka`ur|x&z&;SXqi3_!Fdq=4To5h&UR9V?vz9N(pr_k;$K5%Z@W5#U^42k z?IG1^tIVMzWUHLf#oUMsA4FP+-4PG1c5jtSX; zrh7_k>kPc%dAGC2^tHjSH{=0i*IV6rmz+A3qHJirjZN59-p9y>cns=DqaR|gJmU~^ksaxy zA2>vJ=#qGKTe<9h3FU{bODsjN^c3V;CkCcM6Zbpq5c|NiJdW`1A!fYE`<&|IayfgI zSue{U9Ae~QeIx{+7eGkUkwH2x(`KOOKLc|(M)fB)*(her~Pk) zUI-yg=}E__y<25!8o86{37FiqIy_SC-6qo`oA7#=KjEl<)vAANGoD<9BU!nex9lSa8z*QW@QAcovj1wbWapJe^GZEow zQLNLnKkA=F{FTXZqMp+%NBGV*R=@0!X(?tUoO#j+AfW)xMp0O;)I0+KC}iX7sliaUwI5qV=|o9*k@HEJyqehL7sLOJivt+l90CAA@}7NhJ#+;Y<1f7ORtI(WsqKK*KT9GJ+<37AN{mjPDGyL_sAYAD(;FC zUqBB2mQOTMZ0UjgYZKzdmC(9{+OOrE@YxNSrH<~w zW2{1T8YMz~w?_`R+RW&055$QX4@NZ?z3t3*iIiuO!U=(Rzv&l(Pu~7Gu^9!@^4|)) z8u8aduov7`A%{iE_(N5kcp37DnYN1qE0!p_%uQ)=g_G)|%bERHocJ}Q&h+iD;?`fs zi3~_%f=b#er$jb;%t16hWR{su()jK64KfMwGss76+bc(*C64aJgD5n}UOciWRGD|< zg{Zl{H$EFDo`ih$LAO`{^8fLBSC0qF?6z3 z{qb(uFWGc>ssRlFnWcWZTlO`s87kpxNw8HdV+eX{o~D#+g% z&F;Vu&ZYl-*FQ1YDH5kR#qIx_x>rqginky=)eCuB#^JadN5O6D8;?m2B&yEQO&*|L!ih%fCo$etwIae zViVp#TlS&*W!K4+1zigyZFY*|kTAE-ggcyK0mS70metyjQ*41?-@hN@r>Rt2qvBew z?Rx;ThHq3l#fK1!TKIsm*=~7&pVhgsUm0Uc^Lt`kX?J11%?u+a%`w{N_)`AY6Mhvv4|IeV@ZO>5dVTDD=A*Ae;V&hu(%a2d8u37`=D`u@%)4GN>JK< zd2OWOzxaz&q%=82uG+QVI0byPA8&69RnLcvB-0);%3tx29FlIX(^a@Us(^%06tsHs zA(MPawfN`{@m@%a&O?9azyA^GvH5GIx(stH#OmzTKOVs+?)%p|)Q1nF3iU|K zRR|+k2H`5;(^RhUuJF7jZ5^Fv|IOmF#S5Vn16&oi4JISsN?5|Nm(A|2sdLT|51N92u+fQZWMte&oVl z>pCbKWiT(8;H7gO9gg^#Qh1o@PKUUl9b?!bv%Xlc2p@B@pjHRjDifxL@{NV!AxfmszM%f0+LgP1yM`|R@DxDNsh7(y?DEx zC$?pi*55Ew8tS{rmliYLV*CJ!I{1pbm>l34*jqw6ZB6Z=dby{Qr9n+HK4<8 zP($C8oz+tfxTtPWN3{tKm`S8Tc7`eW4Z{m2%yaREbiuUb4I}+t9Rr2I1aBDWKZ$a7 zziBuldn#cZYMaz3XWGT+kWu%a4lddsN6UTs=;LUvbwc?%;?8PTRP2b z&b%!X%K$BsH>lg+!9zN($(eVkyxI%z$aHIv1~GZDTi*ns za1He59BzTm#r%L|_du`Ya0zrdhpV6)IZWD(LxKhZ4TPQvp|qq|bGQ+Dc&hfPNyUt2 zx8TyR83{tr!_stw7y3a+E9_O!dk15Oo{TW`P+Uy85e`8Q@ZzNg!XD^@5E`CAy6+@B zY(SXwGRPM4hpvRsC-0>DT`KUQAI5o5U^S%M6lv%+2zwB2`+i=w`_`Vmxqr)tPt%bR z>5n0&5GMUs$XSHL(BtReC_*^$@jUXRkLZ71jJH1slYS+575WdrE6^t)6$q0~!}s%K zcSEm-P)oFZS1*n4>*JT8AAt|)97q`9wr}aB@s0fhu>S}<=}#e@u{lV81sRBNumyp= zOZ6tGg8mXh+ph(B;4&TdL9bXY#3m$&{wSY5&i^~45O&gELy8e@fgZ4e(?Wj^8AoYX z;>lPERuW+s^!+8+{s#e7fN`tzT6&>B>~VJ+l=4K|tFC2GW?wpwk9? z+K0rXJ3|~r@PRfaGeDU1AxIyDNgst2ARM>}dp;(nr15Oy^ic@y zn2pfEZntPBH}oZtA}S0z3@JsJbOXKw4I$hJeIsV5qgDw)2kyiG7b+O~LkQW!&`n!8 z46P?lkcPhIF60Y;(%T?E7RjKfK){$qVH!UEMmW73O^-0?K9GEbJk@XnKYfd$9da!D+=FtPP|YVbXPw zR)ia&jrkZbqM!70ccXF$ll~*50O3aHVfS!TLw^gQ?H!p-0!>XbP1x?koGe&-(&>;I zgwulvOn}q_ywD#*Xq!c5d_Vy-^FubKd6kXz!jb785T0}B$9UJGeNH~{?_gqpntdj5mDq7~2| zL1>NJCW?^8q!I@)u|(bsbji>!K*k|Vx&bm1;l}+q{w)vbjJ(jRAe2!E`ga_Tp0$Ez zuXqt+M`F_5AHn88*bkjlrSow?kAfJ79Q5OCuYtY@p*>$biZAdXVZ1`a_YFe)8A2@) zhF5Y&Agh`h}iVzOAAn?i)IMxC6(1V}U1$dx`9@GVRq3?%K!Bx<^pTd5C3ROUN zeOmVuZs>6kS{X0&P6+u|K%a&ftqVQm_nbfUi@(SAr%t0DP+X&TEL?g8GMZNi4&>y~p!yYf7!Y|?YH>au~ zJ^vM42Oxs9A2JSM(kmg05e`7#QjfhFZ>B=fi;rS^qY{2-?;ml-oQ1WA-UTt%9{MC{6FN*f8G=e+MpXp#WG&Lro56>X zfb_2+4G2e1(n1rsoQ0f+owRrdf`UmWKwJoWpf7_MD*(L#LSvFhKR|Z)kgk3wh(ild z4>%1WC(=Ja>{tWRjz%2&2)m#MK`2un^d1OJF;D>=I*DT%K2^}!@3IfHIco^%6OjEr zOcDeAHlzmOw}S|rg46@T(0@CH9SPyc)FJ4tXiAXZA2O=nN4&p|b^w$s%!Y$A%{-W0=0A0=D8t8>h z+U|#blf#YBSH7?Ji4gQ&2<>Q9(1$o&51sLWw!1&T@qZPAANo-aN6%0~GnaJv5ZCvp z5b0ba{haYn0a`Ye24?|iIu7Z9ALY1qBe*OZs|0!e?zJSB& z8ype{S3ti7G5T%joNsm51Fbk*1^oqwTcCSh6gWh%Pe7Y9Ttv@;(E|IE-(hnsl!pEW z;Yx(R`7Vge0o4G~mVaXBLYQkNHh~NJ2F#+e6KNx}sh}{L zX(eeOW-36KbRS6G73lvdPy{JJ1nK`()%n0zJum+My|!vwe|91aVKNnR&ArLE!$CAu z4w6wfM-7Y0saCC|&v9ECrVf@?tsFJlYI0}@Vb{&q_!Xn5h=$2rafiB6aevR(=l$8) zxji1Qp0CgQyg#4M`}6+1Kkv`k+1cxJ&Drh?CID0Zl4Sg&*(glEAjw3u132J9yR#g4 zKItw|dM=*w!j!D^m+^T?rjGie@1i8rsCD55XgA&u*9_;Gh?VRhHk?3{k)$B7p)44_ zg>J&f!%ld6uF#W{Mzb->#XqBL?HJY|jfog+L>ep2aQRru8PrkO>sDJQ3*I}9-s6f0 zJD6A@-Nk}9Jg(esAWJ9U1NDPWLxWW4acfijy1!~8FEJt-?SR1%k!)Wu^ z43`o7ZoIe{?ZZdmi%1)7fNwv`l|mz$;oS8c8E?ztIWp8&o=jijXY%mkP!z;_u{4gG zOLG^6_dK6u3@?bYQEz-0wkOYsi{42xb0`;=p(s8Iliy7;6K~~8ffJB>_k+8TdL8Ck-O0I!Hm@SXW$8!E8I+5I zw$bP!<^$NCTOpqOF_RnR;(8Roi=U%HhlOU$YoFMzYk;5bu)ZUwCd19E`Hjq)CXQ0< zxr@Xid^`Z=Ha?{MjP;ti-tl5N^5Y}$l&_d4#?wQv5k)B%onOCZnq)y7`(2XRjt|0T z_HiS*oskc1pb3Af|3i}b231ln&iRpb@nLw|9@DykgkJEk4^$>!=YgevNkG6Z3E45jpHY zQ8{&d$F~qK{(Ru>tufSk$gb8coeZm+4y(_Qa-1ZvJX%d<>DUX#8_y?oJ~|vfODS%ry_SU zfo_Bl^hco0FGGvH{Xuz&R}fI zBrIdo@nns#LKFPt#7-uQ7nH?Tsvk$M%LCeIAU=l2x5o&H;WL$a z!D)j3cNUo!c=2mA5Z?xe475ELf(qc#fyIM(cxSADo}-9*s-baWzQcc;SjdMrq9%M| z7L>B1IumnL%8`kGMOAolqUXh#sGjn8ED{Hk7@4FfrOdx@$|x77qA1>x(HCoDEQps8 zMwG|V#Dj@wkOGQ6Lz#GSFUrBU!L!b{rzQYrc|Hug<=UR`!E(<>;Ggoy)uEv|kW?$j zJvSZkRvB*0RT@b_ZB!CZMkyL-&`l6xx=l^i{;@QcI${uQ#*4+b5?3{W`9F-Q3{sJIs8LvWTPODiiI9lYU1l7u zM(!K{rxg+d!-m3e%EMN{ld4 zl+jF7N*ytRD)HiPs0J@~p1>)?i+@8+c=0aOj1R%*Le!z5G1!VUxwSc%_Nbr4NFPQ0 ztVUUrGF;Z+2jRsHXb8RmcA9E?#Rp4~rtNqV6gyKQRR8kxr=j8$RE-zspn9Eq zNIH}I$8+L5(x5g^Wd4_V9POl1VnkG8e3W9OYL_rps3ZQpk~AT__$VsUy3mbO;?yL@ zEh%`BmIvU6o^OW7*V+-D1#k9z5H9t66rR48^RGeVU)#ydMedspc>OxMh#hyNFYz-y zW$j5#;=m0|Ecft519%Q@;bG)R0E9l^)Lrl_ybsoAe_hs2AOXb@ifC(6e+!NbU%&^CGTQ4TLC zN9s%z(^#@sO+#^S{!vuHV6XH!6uAp;CM^e03+6O+KxL?eSJ(#V&e? zqY)RQ9DEdx`qb_qF(xZ9LMt&|OEFsqKj-{!XJ-dLr>nluyv*eUr=Wv)F@{pvfvBu3 z&D$NBS*%OhkY?@;)DZ(Hh8IVCX=lmA_$tL%6}8Y%da=mCl%p0FBJhh=cEY{C8Gi5s zlT0x?gT2~pH)g@uFLW#A;>v^c96ky+bV@dUd;?sOLfDa}cKB)+5?@pfGg1jHVV-CY z#d4IArF5*L$+F7EizlOed}79xvaXVQ5JE+{crI$jcZ5%IU!bf#s7m~=>ab(+P|swu zA1`*#pmEb_L`Je>6RKEHQdM)WWKxkidiWFa;|)<&mm|#$@#reb6=C)M(Zt-~#V);x zWWmStx@cTtmX|WV4yz93;#2}9DyA|2yM~2oUWmaR@|@#lcr^)K8rAW1E{;H{U9X@% zc=1h?gKvPT$9vri+mpb=#i)(#i_1|8_1(BKhXs9WNjYY}qWz2mancEFj1@xg8>CsX z4NgAM`Vd?}T30zo98d1Ln(qZscKbyj0WH%uq?~&IG)=@qm}1%X_$6}RLP0k%jB;_u0D{%<;uok2AJ6rg$&ccc zwP$_}I>RBL>C9x4#S7v@l!q6K(J*`%{-9;N`1RSzrW7w;dk$TV55TL5{~99?E07wO z82gnN38tv90e>dq$zcVVn^7xXT!9Yaqp%6NM+vX~i#HhIuSjFU3}UB9S4R+T_k1(# zb)Hurwr7EfGY2y+N_ayHoe2Mxu@Hmf&Zj5v5tw!Xm!Cc~h6|7eP6QTS$iSpd2*!|h zoR~?bY_dmDE_KA)^5{i;7!JJ1ZYKvi*7N=!)AwR~G&%5Yq@9J}I?p%3g?_I~VS9?1 zcsHtK2jT;$4j+LnNR4ZQ4`1dT0KE2cyRQJedI;xV-53~>Y#zCS5zo!0BmRu<_feKP zl#Q`baUe3Y=oMIw++Km-dA?{OAUD21LfJ1UpE{zsk%-J1m)tJ zZ({z>E3il4heuGOHhOb=A{;-j<3Aov&rmLYgHk!NHt5Ej&EcDJV+d6H8*@8e{1R2* z+n}3}h8O#f=kmsjSD}JA%>VI_wtJZaC~OaO6Q>n&&M6lkMt;0ljsp0OaJURNIBw7# zT!J)CycV_M#oy3Dy#LN*Gi3q;mUSE8{mxysyCQJr-Cj4s-;mC0JSvVA6d8B)6ec3P zScuB-A^6{^$?kpKOiMPqP$4^OhWRtOBB;}mA;+nttUX`OkvVlXcPA=|$J|So(M961 zs1H61DltzDiYMo>110EHq6)nDJgUPtz%}>TgNeZwr16v(+^0al;ST5D&k7jRFPv;f z;&WjB{dQ*onDcjgS&D8<+}sS8x6NY;#f!_4A0LHB%};iFBA#W(fhFeLDgW-M2a?T3 z4(zB0*l}MLwy+?chIZrQk#_g-R+_Q}3m7bT@i8<9ABB%TXdBm&amOu&!`Xe{qUW~8JPGccwD8O zs?`ExhxZt`;_1p zUB!$>xws$Y;LU2r4AS5V!UM>?YO1+Jk$e;mSYv0#92i6@w~2oaqn%GO75!IP%aqGT z#nq@#jetGY+7*1T2_=gHz@YfWC%jv|pKrHA{|-(8UTj7K@M3hQ*VS+j(&=c1 zSMRdr0r(2i9j^gi`Khf#ilSp<6nQhLIK^#fKSwFv_Zj1W#)aW4Nark`uSmIa7LRy*+T<$Ft9yjQJm1sJ0!}*&8P$~Zby+YJ8Q;_{*udYRE7z{TUxnBDG$P5kdCG! z2a*ka$7%V2x7E}U7o#osc$Ol)l9;ooyv2uqW;{_YzJp5e;)f3Zm8l!yeFyAh5{AV` z7?6~QVdvlNIqpbTWJ;#2J)KcJ!K9eo)ECc6A|(+oj_#DgSDkq44W}TLi&If=%AGLA zjb>y)?9rKgJG^)k8i^NsbxARW_$+vCDv@M(@q#q+)bQdsRE_V5aMaI`?1<>bEtHG> zQ8V6)b9Bga%y4rZcl9KwY#zTLft?}W{I#*(NynogOL=EZ*}G&w4s=+M`4kPqi+fQJ9}kJdD=cz) zUwQy9K7^|99f^_rs-3bgPb1usa`6D#jyKuup^wb}`0f43ww%u|qo8w6f4Yf<9H_WV zWn{)B!FH zS2L95oS$O$(<|b|=X3tMvqDE|Bi~fwh4zF;(d5zU1#~0qk9wE!1`-}d+4y*1By|$Q zBo!)YNUyBWx-bLP;l;ja6F$em+>W-ekQjHF7=@{b%+gB;fP8>28o(%O!HYkm{dnUi zMDel|Q^0oOd6)RpDQnNd6!)TR%EeBXbN+K#khuZn0>>|Xi<}& zV#eUbZm1aVgGY@Z9*|Se5ueGY9+d6AF~u}cF8+pE@ZyQ1=q=TUSKP!^b`|q>05jkg zE-hZjfo@7CUNmF4Eb(F=6x7P_Zsh*_2IqS|0@t7@brORs6=2!9D8)>CnBNb<{wR$1 z!z~W~={M4CaP|b-rSY)O2l59xrbiCcf@z{TTjZ`qdvtD+DRR8 zK5D~@uOagg^M3;-V=67mr%R#D$Nb+cO=W6kO(&<7R*R$27QDC zoSlhlQ4PK$1(ctxDXT5v{O_a{7_$}`HWZHp#VZ>0@GN$Y7f&Q$G!LHzmmv539dv_7 z*-m08sRB#Cx;Mq-QZAlwA4!*Z@kCUJ&$`c{I~Q_YvJileEMairBk!|A8{gX(&uzsrjD;A0`KB1u@`xvCors zXIbz&q#d-u>!MzR;DV>@4JHDktC-LpVQzrKR@*@ufOC+xABM+Od)tIgG5@(Qz%M=D z1}|DeSJOB@EJ5y63eT?b8VZY$dlkShyz*w4S!>I)V1eg@u+sBU__g(1|Cr!f?`Yss zqy|Od8%R57fcLEPb_Rb!s$=R>%$X#tHqg+-v{j|9E<_cSi_f4sd<=fGo*N!xs10_H zIkqc&u@v(Wa({w>|9GCkNH-=%yDAEH)eBs%Y)E_-O~i}uqB-~`IJcfLf)B%)FR@K| zcmU~O%**sH(gFA#%sQkOayF)z39s5lgkTkNdjdYUiOXyuM*w@hk>XyiS@1oi0T|D2 zrH(RPC!j*S_$VsDN8$Je$~mwQT#Vem|BYgn{KIZ23j4ifPe(j%mK793d(+#@l6bKM zMez~X>s`v(K^A-#sTbqXuUGS2I?D3j<1R`aaTM|`;$HI}*Z&R{G^*oKvaF!k*)mkk z3gSiyFSdGK?7!8Pi`RNye8ThM8=e>UdR{#CeXYymPvD))u`iD%t^n?$-jrwp3nxLY6 zHCEygztmCm@6WrqtK!A+pE6J2L-3fdQ%sC?osP_4{x*-oi(1$aFNhDJgF45s^Eb>^ zc=3DW$BTpZaz)_%@GGQ&+y-C!){dums4wSR*}vztvK_qmM=R&w&jQAzf5$w4kH`Gt z75{7g#hVDcI0{wagK#NwuMW7!^UZMh_jUjV;9=CLb@wsnBljwUH~+x9U~T6IhpzaU z$$^C|_zQA>Z2pDD9OgQ{lS**l?{?)d{4040+OZ#=cxq?Us&!#|_^>!*0QtBP-Z8@+ zXOI$$Z-%qZ?Cfqo4ELY`&ZE458A3+zASxwB04L@KD?j+bb2^*d)Dc&qHoW*4(Z+`D zh)<(Td_3NmI*L6$oqXdlc<~Yx!Ykw0X%9UXFaK+26X6B17**rLaHGGo`;l5R+;u7C zoa1KLo<%GkxRL{4$71Ht&L$r(7Narv2z(l8-5C7XddD46<^L zm3Q1LNcZB!Q;=Z?i9xi90k#UVoj@3I@5M~9a4yQhiw^SR#dRovj|Ugu!QX#THk3r* zYPLVr!HhziSV&9;R%CF}oivV?iW#T{?}N!jB<}KIg%3W3^r!WSiN8t%zV|N1R7Hl% z$)xrc;ycoNc^WHacTc3Tjl3Z90NRa@!1+WB>lAcE4f7U_vh#>--cKXM$540bi%+6# zd}55V;+?xs>ukatnE3t7&ZYw22CpYA+P!p3Iy>BPurMM*D5gIGa4kL==nyr>-G z0(@egv2u-HL?tvrJcP>eVjUsPQG8-Rvx1xZ67pRAIP<^EX=oEimYDXe6zE@3m~!zT zs=yn@%oL;^ibrQNZWO8Al1JV!UTnFN#{%KopaOn1^5a3jPwoM^rE$=MyJ9 zyt0d_V4GqAis79gre-NCu|fWgzxGhSSV z+VD}hW?dKed!8|P?{gev0S$un-x23b9UqC!_w4K9*q?k8;+qp=nibz%gQ~cM#EmG1 z7Zu0cfKQBNRy=cdQdhH&a`8@NH~{g?PF;-;p94Sa+?A&VGl_L}x|-y!UEM#g^TEec zS(!>vI5VxQdjt`<2WiAM!=C9~-A4Ohs9RSvppqVf{+|$D{M&)9?pw4V%}CDkOhcFqdo zGSqt+rvMg>qNVr{yqttOof;+8-G+2I6~Z@BK6RSlk0^jQV^hrtRDch_a-+E zQ%#Wa-tdxJ9s7cxg;_`&ode%STA>l%5VU?I+=oh7S@hjz%f$;kp9g1nz635p+GYd> z$ECV+hFFGFUglsfCIDJH^TPnr3*rRNPlT-mLPy!LcnGP^5twtkU03XM2c9}9@HnJ8 znXn%1q+C4pPPT>5hKrH2pM{N>ok)MDEzX*dN)!sMhM(QVk>Xq6;JfWc^Wkcw8L%1# zCZ?J!>J-6wNIQzV)eVKPGYgF;kfCxP9c1BMyd(3vkLg(%v3&jpb_xsS%jLcU{u5G+4M{m=NQ(YN__8oi7-ah z)Gvp5a~RBcM<#^SQgJy_gR0<^`VEVtj(W&m_XY3+r0q04MC-12*e>M5chE?VvJIY9ZjWXlJYx~# zgYr7~%%faV_y)M(u~gHDkHQ#gQaKD%F#7R97(&hXFg&n~ZpWuACxsiifB&0>c?7lb zLIwOMQtMjbh$?$D0XPn+dkf(V&zHczd%hI*TEXSIlJgBOK-x|o+>Np+7tdZv594#7 zb3gxWVxbi7&&1uCK!gm{xT{2Z7^zK_Ohvm|9Q{)gYcZKoIe_o12=!by&o@L+++_xL82p(4yG86 z-NszP!31H99Qjo0=kDP8e{+Ye)BxL%&b>H$7ZU_4%z@)}^X36x2oK5Ay+`18pEGz% zn8IQ47q&cS59b?YQQtIkNhAGrT_Ze%bZU;kzkI3vI^1e8MaZn8Ti_Iwf)B&{Q7V2D zO#hnlEBI*!UWasKBjGa7SHZ75-vZBTu?Le2mm-ao7;Hm6wrRdeHD@~fm&rm79EGy* zLAVADz&F5)_Hv)c`{8Fu8)}0$f6FCG`55@N=NsX{uy>-y-!^D?H~%TR$Jp z|B>^*pB2hjxS@>!gC7YGA@>}^hkoKNcNKRnnDw*u;yTo%M#EEoq2c&!c-?*m7`_3X zeZZcA9QYy9J!L!m*RM1v$hi5H>;FH$*@c6!=#XuxxZCsM+{3m!3&k97kZkbSlwx z1K?XoUA-B8(=E+ZvY}S^dUxv^;P@WolT%&@Z|<4qz9$$1zeU3+PvKDoLy@) zDD2K-2=?Q}ACY@`!!2#juOs6VZ6BR1iRxpc;Lh|GlcSkaLP$( zrVrl7g9xrgb@%|RN4h%1u~|Gbfw>_FzeLs4X@TiHm_Uu_4h#D_bQdoavaszmdj#9z z3#VIO4}b7{8$6?*EguNCoxu}5pQeZ4;Iq<9K0X(2%xA-Rmsin?_>M;&@XqR*G!qz3 z&rlw4FiTMu3svy65%vg1!iCpyN+^%OAq7101}{z>ZOe<{3Z!n2!goEt1zyVo6m*mU z_yTHV-FmnO>D)KNr93>r*~betm=R;s%*1C{0shDH2jTcT(@ZJlg>cyf9^`#B?3P(!)COB;>2Z1k!$4|4q&$Ki?|1Y+qbSHdkMw>TSe;rmGM1DfD<_u2B1FnzA|-Qi-?s`)=J zoMyg4y3Dfv&d8r4d)f!R?g!x@gX?y5q3r$aRySOOW-!or!J&x zks1+%Z!KbAvhHR$F2d!l?Z7|+BeQNXmme?G!*NeAGmYYW!@na9u2Q(c^Y!pB z(hiQmTb9^HjDfFueiJ-Y$)(ITkH8C;S)T{*Kw7s5KDLbWuZ0R0-a_ie&2a2;&L1lW zp}&et3NMCHGhX~0mE)V?Ei3Gp7z5WJ^-2sLyV4#&CS3R=kMyYFYJ!ua^e8?Q<@(>s z!T=VU;LT6j4Hd$LNJk%muX=tH-0S&PxM3CD%etH4FGxGy4+pGf&Zk^lTW!Zv9lYlm zJJ>^TD{|-mCd{ZBj+hk+;AZ6Z1bnYH&HaAB7T9AgR|2QT2fsu$)Ng@*AoZeImu5~t z@_pbDpz7;yB)iF7+p=@|7+J_H9-+DHr&jDe-=j_cX7fwYD)Tx3kXe0h0 zJTd0&7!LHjI030wiebIy#f<0O`sDv$Zng_%9}K);yGwiosV5@vO{61hfWLd*Y~W~+ zuaX9KJsm;#F4B>0fe*cEcU%r9zrp!u-4Og3<>Pn4S#L7U!3*MucX)ITz5vccI^uFzhq7q3xF2c9zD91xNWKs{NcAIdD+*G-2~PfhGy)%j zn~)zbevjPW|L((_xW%sA2afQ30Iv9mUSWkO?7PkOL^iw!>C}Ya(?~n6f#0Bd>bJti z?e=OC3qR%{)CicgkM|CE-#)JYPYzLug`MzEhwX;);mt?b0p+FtO*3C3_lQlpIfX}_ zbYI6*4R1xc_#j+?s_{|y4H|=Qg+qCaN*JFHk4a891MrzJ7j0R<{4aBMO1jD6g&ep9 z>BuVK#LnsN8w&C0E<90#^4=oS8x8UJuI!kj?*lLPydO?Ms$UGB_IwRIiAS@jJPZEK z;Xi%%s|+TkrJMaUA_ab$p6>pzu^XP*&8{#I-hs5UA~>Xbx@n@mxC^!5cf;%+w!V0m z=O@A!JYNqx_p}G;q+%XI8sX*e2k(V8cwL4)%8_s_QmgA=AD^u+9z<${nBU88RGfj- z&=UC3QPyvVop}OHBlT0^RY#}u`#&~1jD_D(W*xIw?{wowDi_Z_hI2`I4$R~6H2UmT zoQd)%FM%78PMLV@adzEISdnQPR|PLPA>EWvKMw|wruM)IPP%#hBwEA^4RHC%-U@JX zR=SB%9)cTArF-%9aBtsqa|GWCv$NAp6<)0Cmu|}N;zvkFzYo6F-!^U&Jb--9(pzxc z8F)t@hhXy0?x>&)6Y&f<IdQ5 zNE>Pv|CVlcQor}ubh8erP90o(D@V^vS_iKS+8!MVtC75ozS(FM9977OWxy7|tw=j)fs^mBS4RlWDq`HQojEZ1E~Z)Taw+hrNtAPA>jN*G z%z&j%-ej)-|J;*KIw+R}oF1~LpaiB)u`Lz9pUMtcVIN#yoNl(`W3XsCmmOYgL~4-O z;(2jJ38#iSQFzR(boX7;K=>BQU&j2u8T0mRdjyTJ^*-(e{8S`voy+OCg_{$c#8}Z! zJRw+)w6jW>8MXsc9Eo%lh)YqB1FM4XA-$j22XC6kyg_*Z+~M$_&fiYBsno74{@;8C zppFI}eux>1_xwj-(ZlwBAqEyQQ-+wuU=7j@N!`W|w+}7CwZ(hvo zNV(IB8N0+DSs8o->4ww_BbD|j#Xry{RxnF>N*K~n7Qr6Nm;+wmUJmyll{dqZ<<^Vi zR&tQ6TL?!y$?2wk03ILZ{41@#Pn3~}2Ju1|9{&^rhfl-%Kxef#yTPJrt^(?a=RIwA zkPF}Ud=osOhHj@$ADCUsy&qo;`>ti&u&-?Rf#;jna{jJeM>pO~i{Sgua$9AECV2ky z95Fr@X1`!ZzPMro=X?VL3KqRcBd8OC&B#x=nDR2C9WO50$Uwtyhnrqu&cKVYSGlqr zZo4vHBKLBFC%wiFhw}yjKCy|FW;4*>wXfSc1@OW*?9u1JNlocy4jT=@50JLg1iO7m zZ&6NG>A%O`f^r@}&{pX0?1NR{g0!X5042_yn<*vX(`LnGlg zpQgK?a<#&rcQXywbF+ajeok-j@!CfC!52(o)Ng{F_Sh*o1%Ce(ciIii|K@AD77bwK z0DN{Y-H4CD3%=!2#OFcNN(1q!unOq|OK}5o8w#)a7jN09GYrm0Dlda$zPG1Xd>g5E z8)57BoPXUUvi7B$zy84eTRVeKp&EQO9Q&iaY=UsXzd3J|m%-QCtZ#+?_?e@jd^2o8 zx}?Q(f3bcLEcJX~KbQ1x^dj|-IG7QK?5r1n6Omdio_W}I`#@NE#9k5NDZkq{DOvCx zq@6Xw!GBoqhe4zR6aRybu(QB_8N4XE@VY zJKF_6yu7o)0Q7 z>iM7Yj!cucAnJjfdcl1#C(jd<*8?{7)JS>pLeGmgcwW@AA5}-xlN#kkJ$F%Fe8=-5 z&nM*j|Gc0F6(;c{K6z0O0F>_sXQ6^=+!tWfD;IYlT`A4*xD4yF;Derzz%@u$hj;*$ zUB?#`VT!MtslxkwPB+t^1yvHKqrB_+77Hvz0el3mLGFg&0hCF(n9_?Y1@D7*Bh{G* z*CI8p4w|F7nN9rSArp>5A#QB(e=k40HshKk=a0uz&0*BPg5RFP6xbVOqx~!ogsI4n za*#njl!e-OJzr%B|JJiyv6x?qz*FEdp zgKk4NpexY1=p>Ye4m`mx!YfnFlju=24^2n6q2cHPbUNy^j00PmYJNa_(1+-s=tZ;! zEk%4Io=+HjNiX-j*!M}7ftx94Sk<_ybyezW-|C#zxvLx2G_EPB3D;ECL~CklVl^9U z8fqGAnre2|ED2ogTbvQ-Nt!1?{n5n|f+nQ)?>N?-L%yl{I z{7Zhj!neHBNV8<}HNN~y?Z!-~ry0Y#zS^wXoZ8%4e{FtkpthhkSX)$EQX8%fuxzu;6k1=U_lS~?mZj3fW8>35x4fTy!l0L*& zu*5&YH{gj&eP=F-T<+_U66)$Q6+FzYt9jK00$Cf;t?{ktHYMPexxXQ;P z=9_z(IyTn2>foxEhg{{`lC&iEO5e@=g$@sQoOF$ETGA;di@TK$mIe=S8`VU!n%yS( O)@Ht(Jlywt%KryhaYpU{ diff --git a/win64/bin/swig/share/swig/4.1.0/allkw.swg b/win64/bin/swig/share/swig/4.1.0/allkw.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/attribute.i b/win64/bin/swig/share/swig/4.1.0/attribute.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/carrays.i b/win64/bin/swig/share/swig/4.1.0/carrays.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/cdata.i b/win64/bin/swig/share/swig/4.1.0/cdata.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/cmalloc.i b/win64/bin/swig/share/swig/4.1.0/cmalloc.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/constraints.i b/win64/bin/swig/share/swig/4.1.0/constraints.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/cpointer.i b/win64/bin/swig/share/swig/4.1.0/cpointer.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i b/win64/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i deleted file mode 100755 index b33277b3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/arrays_csharp.i +++ /dev/null @@ -1,179 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) - -// By default C# will marshal bools as 4 bytes -// UnmanagedType.I1 will change this to 1 byte -// FIXME - When running on mono ArraySubType appears to be ignored and bools will be marshalled as 4-byte -// https://github.com/mono/mono/issues/15592 - -// input only arrays -%typemap(ctype) bool INPUT[] "bool*" -%typemap(cstype) bool INPUT[] "bool[]" -%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray,ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]") bool INPUT[] "bool[]" -%typemap(csin) bool INPUT[] "$csinput" - -%typemap(in) bool INPUT[] %{ -$1 = $input; -%} -%typemap(freearg) bool INPUT[] "" -%typemap(argout) bool INPUT[] "" - -// output only arrays -%typemap(ctype) bool OUTPUT[] "bool*" -%typemap(cstype) bool OUTPUT[] "bool[]" -%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray,ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]") bool OUTPUT[] "bool[]" -%typemap(csin) bool OUTPUT[] "$csinput" - -%typemap(in) bool OUTPUT[] %{ -$1 = $input; -%} -%typemap(freearg) bool OUTPUT[] "" -%typemap(argout) bool OUTPUT[] "" - -// inout arrays -%typemap(ctype) bool INOUT[] "bool*" -%typemap(cstype) bool INOUT[] "bool[]" -%typemap(imtype, inattributes="[global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray,ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]") bool INOUT[] "bool[]" -%typemap(csin) bool INOUT[] "$csinput" - -%typemap(in) bool INOUT[] %{ -$1 = $input; -%} -%typemap(freearg) bool INOUT[] "" -%typemap(argout) bool INOUT[] "" - - -%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/win64/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i b/win64/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i deleted file mode 100755 index ec2fee93..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/boost_intrusive_ptr.i +++ /dev/null @@ -1,517 +0,0 @@ -// 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); - 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)); %} - -// 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/win64/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i deleted file mode 100755 index d53dd3c0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/boost_shared_ptr.i +++ /dev/null @@ -1,323 +0,0 @@ -// 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)); %} - -%typemap(directorin) CONST TYPE -%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (new $1_ltype(SWIG_STD_MOVE($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) : 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/win64/bin/swig/share/swig/4.1.0/csharp/complex.i b/win64/bin/swig/share/swig/4.1.0/csharp/complex.i deleted file mode 100755 index f978f72e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/complex.i +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __cplusplus -%include -#else -#error C# module only supports complex in C++ mode. -#endif diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/csharp.swg b/win64/bin/swig/share/swig/4.1.0/csharp/csharp.swg deleted file mode 100755 index ede9a28f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/csharp.swg +++ /dev/null @@ -1,1120 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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($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(SWIG_STD_MOVE($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 is null", 0); - return $null; - } %} -%typemap(in, canthrow=1, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ $1 = ($1_ltype)$input; - if (!$1) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "$1_type is null", 0); - return $null; - } - rvrdeleter.reset($1); %} -%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 [] "$csclassname.getCPtr($csinput)" -%typemap(csin) SWIGTYPE && "$csclassname.swigRelease($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(csvarin, excode=SWIGEXCODE2) void *VOID_INT_PTR %{ - set { - $imcall;$excode - } %} -%typemap(csvarout, excode=SWIGEXCODE2) void *VOID_INT_PTR %{ - get { - 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::*) "" -%typemap(csinterfacemodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "public interface" - - -// 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; - } - - CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef swigRelease($csclassname obj) { - if (obj != null) { - if (!obj.swigCMemOwn) - throw new global::System.ApplicationException("Cannot release ownership as memory is not owned"); - global::System.Runtime.InteropServices.HandleRef ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.Dispose(); - return ptr; - } else { - return new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); - } - } -%} - -// 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; - } - - CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef swigRelease($csclassname obj) { - if (obj != null) { - if (!obj.swigCMemOwn) - throw new global::System.ApplicationException("Cannot release ownership as memory is not owned"); - global::System.Runtime.InteropServices.HandleRef ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.Dispose(); - return ptr; - } else { - return new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); - } - } -%} -%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; - } - - CPTR_VISIBILITY static global::System.Runtime.InteropServices.HandleRef swigRelease($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/win64/bin/swig/share/swig/4.1.0/csharp/csharphead.swg b/win64/bin/swig/share/swig/4.1.0/csharp/csharphead.swg deleted file mode 100755 index cd9da813..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/csharphead.swg +++ /dev/null @@ -1,339 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) do { if (!(expr)) {SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, msg, ""); return nullreturn; } } while (0) -%} diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg b/win64/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg deleted file mode 100755 index ef20cd1a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/csharpkw.swg +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef CSHARP_CSHARPKW_SWG_ -#define CSHARP_CSHARPKW_SWG_ - -/* Warnings for C# keywords */ -#define CSHARPKW(x) %keywordwarn("'" `x` "' is a C# keyword",rename="%s_") `x` - -#define CSHARPCLASSKW(x) %keywordwarn("'" `x` "' is a special method name used in the C# wrapper classes",%$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/win64/bin/swig/share/swig/4.1.0/csharp/director.swg b/win64/bin/swig/share/swig/4.1.0/csharp/director.swg deleted file mode 100755 index fe74c283..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/director.swg +++ /dev/null @@ -1,50 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/enums.swg b/win64/bin/swig/share/swig/4.1.0/csharp/enums.swg deleted file mode 100755 index c06c5f0c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/enums.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg b/win64/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg deleted file mode 100755 index 8da95f2c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/enumsimple.swg +++ /dev/null @@ -1,88 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg b/win64/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg deleted file mode 100755 index e169492b..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/enumtypesafe.swg +++ /dev/null @@ -1,130 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/std_array.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_array.i deleted file mode 100755 index 6c5bc19b..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_array.i +++ /dev/null @@ -1,227 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i deleted file mode 100755 index 59a47b62..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_auto_ptr.i +++ /dev/null @@ -1,38 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap (ctype) std::auto_ptr< TYPE > "void *" -%typemap (imtype, out="System.IntPtr") std::auto_ptr< TYPE > "global::System.Runtime.InteropServices.HandleRef" -%typemap (cstype) std::auto_ptr< TYPE > "$typemap(cstype, TYPE)" - -%typemap(in) std::auto_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(csin) std::auto_ptr< TYPE > "$typemap(cstype, TYPE).swigRelease($csinput)" - -%typemap (out) std::auto_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(csout, excode=SWIGEXCODE) std::auto_ptr< TYPE > { - System.IntPtr cPtr = $imcall; - $typemap(cstype, TYPE) ret = (cPtr == System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode - return ret; - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::auto_ptr< TYPE > "" - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/std_common.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_common.i deleted file mode 100755 index c80263ae..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/std_complex.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_complex.i deleted file mode 100755 index 919d379b..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_complex.i +++ /dev/null @@ -1,95 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/std_deque.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/std_except.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_except.i deleted file mode 100755 index b989d413..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_except.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/std_list.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_list.i deleted file mode 100755 index f8c632df..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_list.i +++ /dev/null @@ -1,519 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/std_map.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_map.i deleted file mode 100755 index b6369c7a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_map.i +++ /dev/null @@ -1,312 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/std_pair.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_pair.i deleted file mode 100755 index 539130ff..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/std_set.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_set.i deleted file mode 100755 index f21e3073..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_set.i +++ /dev/null @@ -1,311 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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($typemap(cstype, T) 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 object 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 ($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 = 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/win64/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i deleted file mode 100755 index 01a0e9dd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/std_string.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_string.i deleted file mode 100755 index d61ffba4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_string.i +++ /dev/null @@ -1,111 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 "const 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 = $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 & "const 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 = $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/win64/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i deleted file mode 100755 index fcf5797d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_unique_ptr.i +++ /dev/null @@ -1,38 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap (ctype) std::unique_ptr< TYPE > "void *" -%typemap (imtype, out="System.IntPtr") std::unique_ptr< TYPE > "global::System.Runtime.InteropServices.HandleRef" -%typemap (cstype) std::unique_ptr< TYPE > "$typemap(cstype, TYPE)" - -%typemap(in) std::unique_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(csin) std::unique_ptr< TYPE > "$typemap(cstype, TYPE).swigRelease($csinput)" - -%typemap (out) std::unique_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(csout, excode=SWIGEXCODE) std::unique_ptr< TYPE > { - System.IntPtr cPtr = $imcall; - $typemap(cstype, TYPE) ret = (cPtr == System.IntPtr.Zero) ? null : new $typemap(cstype, TYPE)(cPtr, true);$excode - return ret; - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::unique_ptr< TYPE > "" - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/std_vector.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_vector.i deleted file mode 100755 index 4fdd26aa..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_vector.i +++ /dev/null @@ -1,418 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 < 0 || ($typemap(cstype, size_t))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/win64/bin/swig/share/swig/4.1.0/csharp/std_wstring.i b/win64/bin/swig/share/swig/4.1.0/csharp/std_wstring.i deleted file mode 100755 index b65f7323..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/std_wstring.i +++ /dev/null @@ -1,146 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_wstring.i - * - * Typemaps for std::wstring and const std::wstring& - * std::wstring is mapped to a C# Unicode string (UTF16) and is passed around by value. - * std::wstring support includes wchar_t as a 2 byte type (Windows) and a 4 byte type - * (most Unix systems). - * - * 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 -%} - -%fragment("Swig_csharp_UTF16ToWString", "header") %{ -/* For converting from .NET UTF16 (2 byte unicode) strings. wchar_t is 2 bytes on Windows, 4 bytes on Linux. */ -static std::wstring Swig_csharp_UTF16ToWString(const unsigned short *str) { - if (sizeof(wchar_t) == 2) { - return std::wstring((wchar_t *)str); - } else { - const unsigned short *pBegin(str); - const unsigned short *ptr(pBegin); - - while (*ptr != 0) - ++ptr; - - std::wstring result; - result.reserve(ptr - pBegin); - while(pBegin != ptr) - result.push_back(*pBegin++); - - return result; - } -} -%} - -namespace std { - -%naturalvar wstring; - -class wstring; - -// wstring -%typemap(ctype, out="void *") wstring "unsigned short *" -%typemap(imtype, - inattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - outattributes="[return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directorinattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directoroutattributes="[return: 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, fragment="Swig_csharp_UTF16ToWString") wstring -%{ if (!$input) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); - return $null; - } - $1 = Swig_csharp_UTF16ToWString($input); %} -%typemap(out) wstring %{ $result = SWIG_csharp_wstring_with_length_callback($1.c_str(), (int)$1.size()); %} - -%typemap(directorout, canthrow=1) wstring -%{ if (!$input) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); - return $null; - } - $result = Swig_csharp_UTF16ToWString($input); %} - -%typemap(directorin) wstring %{ $input = SWIG_csharp_wstring_with_length_callback($1.c_str(), (int)$1.size()); %} - -%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 -%{ SWIG_csharp_ApplicationException_callback($1.c_str(), (int)$1.size()); - return $null; %} - -// const wstring & -%typemap(ctype, out="void *") const wstring & "unsigned short *" -%typemap(imtype, - inattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - outattributes="[return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directorinattributes="[global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPWStr)]", - directoroutattributes="[return: 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, fragment="Swig_csharp_UTF16ToWString") const wstring & -%{ if (!$input) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null wstring", 0); - return $null; - } - std::wstring $1_str(Swig_csharp_UTF16ToWString($input)); - $1 = &$1_str; %} -%typemap(out) const wstring & %{ $result = SWIG_csharp_wstring_with_length_callback($1->c_str(), (int)$1->size()); %} - -%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 = Swig_csharp_UTF16ToWString($input); - $result = &$1_str; %} - -%typemap(directorin) const wstring & %{ $input = SWIG_csharp_wstring_with_length_callback($1.c_str(), (int)$1.size()); %} - -%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 & -%{ SWIG_csharp_ApplicationException_callback($1.c_str(), (int)$1.size()); - return $null; %} - -} - diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/stl.i b/win64/bin/swig/share/swig/4.1.0/csharp/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/swiginterface.i b/win64/bin/swig/share/swig/4.1.0/csharp/swiginterface.i deleted file mode 100755 index 8b0b880d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/swiginterface.i +++ /dev/null @@ -1,63 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/swigmove.i b/win64/bin/swig/share/swig/4.1.0/csharp/swigmove.i deleted file mode 100755 index 564c47fa..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/swigmove.i +++ /dev/null @@ -1,16 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, canthrow=1, fragment="") SWIGTYPE MOVE ($&1_type argp) -%{ argp = ($&1_ltype)$input; - if (!argp) { - SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null $1_type", 0); - return $null; - } - SwigValueWrapper< $1_ltype >::reset($1, argp); %} - -%typemap(csin) SWIGTYPE MOVE "$&csclassname.swigRelease($csinput)" diff --git a/win64/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i b/win64/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i deleted file mode 100755 index 9a30d4b6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/swigtype_inout.i +++ /dev/null @@ -1,34 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/typemaps.i b/win64/bin/swig/share/swig/4.1.0/csharp/typemaps.i deleted file mode 100755 index 9cbb752f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/typemaps.i +++ /dev/null @@ -1,253 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/csharp/wchar.i b/win64/bin/swig/share/swig/4.1.0/csharp/wchar.i deleted file mode 100755 index 5616ab9f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/csharp/wchar.i +++ /dev/null @@ -1,335 +0,0 @@ -/* ----------------------------------------------------------------------------- - * wchar.i - * - * Typemaps for the wchar_t type - * wchar_t * is mapped to a C# Unicode string (UTF16) and is passed around by value. - * wchar_t * support includes wchar_t as a 2 byte type (Windows) and a 4 byte type - * (most Unix systems). - * - * 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_ - -%fragment(""); // TODO: %fragment("") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) (new wchar_t[wcslen((const wchar_t *)$input)+1]); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,fragment="") wchar_t * { - delete [] $1; - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) (new wchar_t[wcslen((const wchar_t *)$input)+1]); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,warning=SWIGWARN_TYPEMAP_WCHARLEAK_MSG,fragment="") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) (new wchar_t[wcslen((const wchar_t *)$input)+1]); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -#else -%typemap(memberin,fragment="") wchar_t * { - free($1); - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(memberin,warning=SWIGWARN_TYPEMAP_WCHARLEAK_MSG,fragment="") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,fragment="") wchar_t * { - free($1); - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} -%typemap(globalin,warning=SWIGWARN_TYPEMAP_WCHARLEAK_MSG,fragment="") const wchar_t * { - if ($input && sizeof(wchar_t) == 2) { - $1 = ($1_type) malloc(wcslen((const wchar_t *)$input)+1); - wcscpy((wchar_t *)$1, (const wchar_t *)$input); - } else { - $1 = $input; - $input = 0; - } -} - -#endif diff --git a/win64/bin/swig/share/swig/4.1.0/cstring.i b/win64/bin/swig/share/swig/4.1.0/cstring.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/cwstring.i b/win64/bin/swig/share/swig/4.1.0/cwstring.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i deleted file mode 100755 index 9a664157..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/boost_shared_ptr.i +++ /dev/null @@ -1,293 +0,0 @@ -%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)); %} - -%typemap(directorin) CONST TYPE -%{ $input = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (new $1_ltype(SWIG_STD_MOVE($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) : 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/win64/bin/swig/share/swig/4.1.0/d/carrays.i b/win64/bin/swig/share/swig/4.1.0/d/carrays.i deleted file mode 100755 index 2f96fe2a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/carrays.i +++ /dev/null @@ -1,111 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/cpointer.i b/win64/bin/swig/share/swig/4.1.0/d/cpointer.i deleted file mode 100755 index af53feed..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/cpointer.i +++ /dev/null @@ -1,171 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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() { - delete self; -} -#else -NAME() { - return (TYPE *) calloc(1,sizeof(TYPE)); -} -~NAME() { - 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 -%{ delete self; %} -#else -%{ 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/win64/bin/swig/share/swig/4.1.0/d/d.swg b/win64/bin/swig/share/swig/4.1.0/d/d.swg deleted file mode 100755 index 4d218279..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/d.swg +++ /dev/null @@ -1,46 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/dclassgen.swg b/win64/bin/swig/share/swig/4.1.0/d/dclassgen.swg deleted file mode 100755 index 7b419b89..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/dclassgen.swg +++ /dev/null @@ -1,172 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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; -} - -public static void* swigRelease(typeof(this) obj) { - if (obj !is null) { - if (!obj.swigCMemOwn) - throw new Exception("Cannot release ownership as memory is not owned"); - void* ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.dispose(); - return ptr; - } else { - return null; - } -} - -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; -} - -public static void* swigRelease(typeof(this) obj) { - if (obj !is null) { - if (!obj.swigCMemOwn) - throw new Exception("Cannot release ownership as memory is not owned"); - void* ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.dispose(); - return ptr; - } else { - return null; - } -} - -mixin $imdmodule.SwigOperatorDefinitions; -%} - - -/* - * Type wrapper classes. - */ - -%typemap(dbody) SWIGTYPE *, 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; -} - -public static void* swigRelease(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/win64/bin/swig/share/swig/4.1.0/d/ddirectives.swg b/win64/bin/swig/share/swig/4.1.0/d/ddirectives.swg deleted file mode 100755 index 3dfc5071..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/ddirectives.swg +++ /dev/null @@ -1,11 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/denums.swg b/win64/bin/swig/share/swig/4.1.0/d/denums.swg deleted file mode 100755 index 90792484..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/denums.swg +++ /dev/null @@ -1,60 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/dexception.swg b/win64/bin/swig/share/swig/4.1.0/d/dexception.swg deleted file mode 100755 index c3f364a6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/dexception.swg +++ /dev/null @@ -1,30 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/dhead.swg b/win64/bin/swig/share/swig/4.1.0/d/dhead.swg deleted file mode 100755 index eb9a88dd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/dhead.swg +++ /dev/null @@ -1,298 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) do { if (!(expr)) {SWIG_DSetPendingException(SWIG_DException, msg); return nullreturn; } } while (0) -%} - - -/* - * 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/win64/bin/swig/share/swig/4.1.0/d/director.swg b/win64/bin/swig/share/swig/4.1.0/d/director.swg deleted file mode 100755 index c35be8d2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/director.swg +++ /dev/null @@ -1,49 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/dkw.swg b/win64/bin/swig/share/swig/4.1.0/d/dkw.swg deleted file mode 100755 index e8c67e52..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/dkw.swg +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef D_DKW_SWG_ -#define D_DKW_SWG_ - -/* Warnings for D keywords */ -#define DKEYWORD(x) %keywordwarn("'" `x` "' is a D keyword",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/win64/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg b/win64/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg deleted file mode 100755 index 0a34fc35..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/dmemberfunctionpointers.swg +++ /dev/null @@ -1,94 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/doperators.swg b/win64/bin/swig/share/swig/4.1.0/d/doperators.swg deleted file mode 100755 index 9578ae2c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/doperators.swg +++ /dev/null @@ -1,259 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 overridable 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 overridable 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 overridable 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/win64/bin/swig/share/swig/4.1.0/d/dprimitives.swg b/win64/bin/swig/share/swig/4.1.0/d/dprimitives.swg deleted file mode 100755 index 1bfdca50..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/dprimitives.swg +++ /dev/null @@ -1,171 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/dstrings.swg b/win64/bin/swig/share/swig/4.1.0/d/dstrings.swg deleted file mode 100755 index 99ad32fe..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/dstrings.swg +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/dswigtype.swg b/win64/bin/swig/share/swig/4.1.0/d/dswigtype.swg deleted file mode 100755 index 7ff9f20a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/dswigtype.swg +++ /dev/null @@ -1,241 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 && "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 [], - 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($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(SWIG_STD_MOVE($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 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; -} - - -/* - * Rvalue reference conversion typemaps. - */ - -%typemap(in, canthrow=1, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ $1 = ($1_ltype)$input; - if (!$1) { - SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "$1_type is null"); - return $null; - } - rvrdeleter.reset($1); %} -%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.swigRelease($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]) } -%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/win64/bin/swig/share/swig/4.1.0/d/dvoid.swg b/win64/bin/swig/share/swig/4.1.0/d/dvoid.swg deleted file mode 100755 index 32bb8e20..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/dvoid.swg +++ /dev/null @@ -1,18 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i deleted file mode 100755 index 84c819fa..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_auto_ptr.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap (ctype) std::auto_ptr< TYPE > "void *" -%typemap (imtype) std::auto_ptr< TYPE > "void*" -%typemap (dtype) std::auto_ptr< TYPE > "$typemap(dtype, TYPE)" - -%typemap(in) std::auto_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(din, - nativepointer="cast(void*)$dinput" -) std::auto_ptr< TYPE > "$typemap(dtype, TYPE).swigRelease($dinput)" - -%typemap (out) std::auto_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(dout, excode=SWIGEXCODE, - nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}" -) std::auto_ptr< TYPE > { - void* cPtr = $imcall; - $typemap(dtype, TYPE) ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode - return ret; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::auto_ptr< TYPE > "" - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/d/std_common.i b/win64/bin/swig/share/swig/4.1.0/d/std_common.i deleted file mode 100755 index c80263ae..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/win64/bin/swig/share/swig/4.1.0/d/std_deque.i b/win64/bin/swig/share/swig/4.1.0/d/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/d/std_except.i b/win64/bin/swig/share/swig/4.1.0/d/std_except.i deleted file mode 100755 index 209a27b6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_except.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/std_map.i b/win64/bin/swig/share/swig/4.1.0/d/std_map.i deleted file mode 100755 index f077b983..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_map.i +++ /dev/null @@ -1,62 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/std_pair.i b/win64/bin/swig/share/swig/4.1.0/d/std_pair.i deleted file mode 100755 index 539130ff..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i deleted file mode 100755 index 01a0e9dd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/win64/bin/swig/share/swig/4.1.0/d/std_string.i b/win64/bin/swig/share/swig/4.1.0/d/std_string.i deleted file mode 100755 index 5795391d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_string.i +++ /dev/null @@ -1,98 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i deleted file mode 100755 index 908258bc..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_unique_ptr.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap (ctype) std::unique_ptr< TYPE > "void *" -%typemap (imtype) std::unique_ptr< TYPE > "void*" -%typemap (dtype) std::unique_ptr< TYPE > "$typemap(dtype, TYPE)" - -%typemap(in) std::unique_ptr< TYPE > -%{ $1.reset((TYPE *)$input); %} - -%typemap(din, - nativepointer="cast(void*)$dinput" -) std::unique_ptr< TYPE > "$typemap(dtype, TYPE).swigRelease($dinput)" - -%typemap (out) std::unique_ptr< TYPE > %{ - $result = (void *)$1.release(); -%} - -%typemap(dout, excode=SWIGEXCODE, - nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}" -) std::unique_ptr< TYPE > { - void* cPtr = $imcall; - $typemap(dtype, TYPE) ret = (cPtr is null) ? null : new $typemap(dtype, TYPE)(cPtr, true);$excode - return ret; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::unique_ptr< TYPE > "" - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/d/std_vector.i b/win64/bin/swig/share/swig/4.1.0/d/std_vector.i deleted file mode 100755 index 5dbef93b..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/std_vector.i +++ /dev/null @@ -1,605 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/stl.i b/win64/bin/swig/share/swig/4.1.0/d/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/d/swigmove.i b/win64/bin/swig/share/swig/4.1.0/d/swigmove.i deleted file mode 100755 index 897b0795..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/swigmove.i +++ /dev/null @@ -1,16 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, canthrow=1) SWIGTYPE MOVE ($&1_type argp) -%{ argp = ($&1_ltype)$input; - if (!argp) { - SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Attempt to dereference null $1_type"); - return $null; - } - SwigValueWrapper< $1_ltype >::reset($1, argp); %} - -%typemap(din) SWIGTYPE MOVE "$dclassname.swigRelease($dinput)" diff --git a/win64/bin/swig/share/swig/4.1.0/d/typemaps.i b/win64/bin/swig/share/swig/4.1.0/d/typemaps.i deleted file mode 100755 index f23db022..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/typemaps.i +++ /dev/null @@ -1,261 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/d/wrapperloader.swg b/win64/bin/swig/share/swig/4.1.0/d/wrapperloader.swg deleted file mode 100755 index 81445b09..00000000 --- a/win64/bin/swig/share/swig/4.1.0/d/wrapperloader.swg +++ /dev/null @@ -1,309 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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; - } else { - static import std.c.string; - } - static import std.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 core.sys.posix.dlfcn; - } 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/win64/bin/swig/share/swig/4.1.0/director_common.swg b/win64/bin/swig/share/swig/4.1.0/director_common.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/exception.i b/win64/bin/swig/share/swig/4.1.0/exception.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/go/cdata.i b/win64/bin/swig/share/swig/4.1.0/go/cdata.i deleted file mode 100755 index 9ed0ef14..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/cdata.i +++ /dev/null @@ -1,97 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/go/director.swg b/win64/bin/swig/share/swig/4.1.0/go/director.swg deleted file mode 100755 index cc369df5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/director.swg +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/go/exception.i b/win64/bin/swig/share/swig/4.1.0/go/exception.i deleted file mode 100755 index b0d9151f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/exception.i +++ /dev/null @@ -1,7 +0,0 @@ -%typemap(throws,noblock=1) (...) { - SWIG_exception(SWIG_RuntimeError,"unknown exception"); -} - -%insert("runtime") %{ -#define SWIG_exception(code, msg) _swig_gopanic(msg) -%} diff --git a/win64/bin/swig/share/swig/4.1.0/go/go.swg b/win64/bin/swig/share/swig/4.1.0/go/go.swg deleted file mode 100755 index 67f49c7f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/go.swg +++ /dev/null @@ -1,744 +0,0 @@ -/* ------------------------------------------------------------ - * 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, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) -%{ $1 = *($&1_ltype)&$input; -rvrdeleter.reset($1); %} - -%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[ANY], char[] -%{ free($1); %} - -%typemap(freearg) char *& -%{ free(temp$argnum); %} - -%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; -%} - -/* The int & type needs to convert to intgo. */ - -%typemap(gotype) int & "*int" - -%typemap(in) int & (int e) -%{ - e = (int)*$input; - $1 = &e; -%} - -%typemap(out) int & -%{ $result = new intgo(*$1); %} - -%typemap(argout) int & -%{ *$input = (intgo)e$argnum; %} - -%typemap(goout) int & "" - -%typemap(directorin) int & (intgo e) -%{ - e = (intgo)$1; - $input = &e; -%} - -%typemap(godirectorin) int & "" - -%typemap(directorout) int & -%{ - $*1_ltype f = ($*1_ltype)*$input; - $result = ($1_ltype)&f; -%} - -%typemap(directorargout) int & -%{ $1 = (int)*$input; %} - -%typemap(argout) const int & "" -%typemap(directorargout) const int & "" - -/* 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 & -%{ $result = $input; %} - -/* 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(SWIG_STD_MOVE($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/win64/bin/swig/share/swig/4.1.0/go/gokw.swg b/win64/bin/swig/share/swig/4.1.0/go/gokw.swg deleted file mode 100755 index 3cc77d1e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/gokw.swg +++ /dev/null @@ -1,33 +0,0 @@ -/* Rename keywords. */ - -#define GOKW(x) %keywordwarn("'" `x` "' is a Go keyword",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/win64/bin/swig/share/swig/4.1.0/go/goruntime.swg b/win64/bin/swig/share/swig/4.1.0/go/goruntime.swg deleted file mode 100755 index b6574c6a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/goruntime.swg +++ /dev/null @@ -1,217 +0,0 @@ -/* ------------------------------------------------------------ - * 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 - -%} - -%insert(cgo_comment_typedefs) %{ -#include -#include -%} - -#if SWIGGO_INTGO_SIZE == 32 -%insert(runtime) %{ -typedef int intgo; -typedef unsigned int uintgo; -%} -%insert(cgo_comment_typedefs) %{ -typedef int intgo; -typedef unsigned int uintgo; -%} -#elif SWIGGO_INTGO_SIZE == 64 -%insert(runtime) %{ -typedef long long intgo; -typedef unsigned long long uintgo; -%} -%insert(cgo_comment_typedefs) %{ -typedef long long intgo; -typedef unsigned long long uintgo; -%} -#else -%insert(runtime) %{ -typedef ptrdiff_t intgo; -typedef size_t uintgo; -%} -%insert(cgo_comment_typedefs) %{ -typedef ptrdiff_t intgo; -typedef size_t uintgo; -%} -#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_; - -%} - -%insert(cgo_comment_typedefs) %{ - -typedef struct { char *p; intgo n; } _gostring_; -typedef struct { void* array; intgo len; intgo cap; } _goslice_; - -%} - -#ifdef SWIGGO_GCCGO - -/* 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 -%} - -#endif - -#ifndef SWIGGO_GCCGO - -%go_import("unsafe", _ "runtime/cgo") - -#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 -%} - -/* Convert a Go interface value into a C++ pointer. */ - -%insert(go_header) %{ -func getSwigcptr(v interface { Swigcptr() uintptr }) uintptr { - if v == nil { - return 0 - } - return v.Swigcptr() -} -%} - -/* 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/win64/bin/swig/share/swig/4.1.0/go/gostring.swg b/win64/bin/swig/share/swig/4.1.0/go/gostring.swg deleted file mode 100755 index 48351634..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/gostring.swg +++ /dev/null @@ -1,29 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/go/std_array.i b/win64/bin/swig/share/swig/4.1.0/go/std_array.i deleted file mode 100755 index b3c84714..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/std_array.i +++ /dev/null @@ -1,43 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; diff --git a/win64/bin/swig/share/swig/4.1.0/go/std_deque.i b/win64/bin/swig/share/swig/4.1.0/go/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/go/std_except.i b/win64/bin/swig/share/swig/4.1.0/go/std_except.i deleted file mode 100755 index 6de13ee0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/std_except.i +++ /dev/null @@ -1,31 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/go/std_list.i b/win64/bin/swig/share/swig/4.1.0/go/std_list.i deleted file mode 100755 index 1245c089..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/std_list.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/go/std_map.i b/win64/bin/swig/share/swig/4.1.0/go/std_map.i deleted file mode 100755 index a639a47a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/std_map.i +++ /dev/null @@ -1,66 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/go/std_pair.i b/win64/bin/swig/share/swig/4.1.0/go/std_pair.i deleted file mode 100755 index 539130ff..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/go/std_string.i b/win64/bin/swig/share/swig/4.1.0/go/std_string.i deleted file mode 100755 index 9ee86ef9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/std_string.i +++ /dev/null @@ -1,162 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(throws) string -%{ _swig_gopanic($1.c_str()); %} - -%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) %} - -%typemap(throws) const string & -%{ _swig_gopanic($1.c_str()); %} - - -%typemap(gotype) string * "*string" - -%typemap(in) string * (string temp) -%{ - if ($input) { - temp.assign($input->p, $input->n); - $1 = &temp; - } else - $1 = 0; -%} - -%typemap(godirectorout) string * -%{ - if $input != nil { - p := Swig_malloc(len(*$input)) - s := (*[1<<30]byte)(unsafe.Pointer(p))[:len(*$input)] - copy(s, *$input) - $result = (*string)(unsafe.Pointer(&s)) - } else { - $result = nil - } -%} - -%typemap(directorout) string * (string temp) -%{ - temp.assign($input->p, $input->n); - $result = &temp; - free($input.p); -%} - -%typemap(out,fragment="AllocateString") string * (_gostring_ temp) -%{ - temp = Swig_AllocateString($1->data(), $1->length()); - $result = &temp; -%} - -%typemap(goout,fragment="CopyString") string * -%{ *$result = swigCopyString(*$1) %} - -%typemap(directorin,fragment="AllocateString") string * (_gostring_ temp) -%{ - if ($1) { - temp = Swig_AllocateString($1->data(), $1->length()); - $input = &temp; - } else - $input = 0; -%} - -%typemap(godirectorin,fragment="CopyString") string * -%{ *$result = swigCopyString(*$input); %} - -%typemap(argout,fragment="AllocateString") string * -%{ - if ($1) - *$input = Swig_AllocateString($1->data(), $1->length()); -%} - -%typemap(goargout,fragment="CopyString") string * -%{ - if $input != nil { - *$1 = swigCopyString(*$input) - } -%} - -} diff --git a/win64/bin/swig/share/swig/4.1.0/go/std_vector.i b/win64/bin/swig/share/swig/4.1.0/go/std_vector.i deleted file mode 100755 index 34998d97..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/std_vector.i +++ /dev/null @@ -1,92 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/go/swigmove.i b/win64/bin/swig/share/swig/4.1.0/go/swigmove.i deleted file mode 100755 index ef2f65e3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/swigmove.i +++ /dev/null @@ -1,15 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in) SWIGTYPE MOVE ($&1_type argp) -%{ - argp = ($&1_ltype)$input; - if (argp == NULL) { - _swig_gopanic("Attempt to dereference null $1_type"); - } - SwigValueWrapper< $1_ltype >::reset($1, argp); -%} diff --git a/win64/bin/swig/share/swig/4.1.0/go/typemaps.i b/win64/bin/swig/share/swig/4.1.0/go/typemaps.i deleted file mode 100755 index f1546cff..00000000 --- a/win64/bin/swig/share/swig/4.1.0/go/typemaps.i +++ /dev/null @@ -1,298 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/Makefile b/win64/bin/swig/share/swig/4.1.0/guile/Makefile deleted file mode 100755 index c18c4dc2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/Makefile +++ /dev/null @@ -1,3 +0,0 @@ - -co: - co RCS/*.i* RCS/*.swg* diff --git a/win64/bin/swig/share/swig/4.1.0/guile/common.scm b/win64/bin/swig/share/swig/4.1.0/guile/common.scm deleted file mode 100755 index a6bf7999..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/common.scm +++ /dev/null @@ -1,70 +0,0 @@ -;;;************************************************************************ -;;;*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/win64/bin/swig/share/swig/4.1.0/guile/cplusplus.i b/win64/bin/swig/share/swig/4.1.0/guile/cplusplus.i deleted file mode 100755 index 0908e30d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/cplusplus.i +++ /dev/null @@ -1,22 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/extra-install.list b/win64/bin/swig/share/swig/4.1.0/guile/extra-install.list deleted file mode 100755 index d9420291..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/extra-install.list +++ /dev/null @@ -1,2 +0,0 @@ -# see top-level Makefile.in -common.scm diff --git a/win64/bin/swig/share/swig/4.1.0/guile/guile.i b/win64/bin/swig/share/swig/4.1.0/guile/guile.i deleted file mode 100755 index ecf9c241..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/guile.i +++ /dev/null @@ -1,33 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/guile_scm.swg b/win64/bin/swig/share/swig/4.1.0/guile/guile_scm.swg deleted file mode 100755 index cad47f92..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/guile_scm.swg +++ /dev/null @@ -1,46 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg b/win64/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg deleted file mode 100755 index 0ed17ee6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/guile_scm_run.swg +++ /dev/null @@ -1,532 +0,0 @@ -/* ----------------------------------------------------------------------------- - * guile_scm_run.swg - * ----------------------------------------------------------------------------- */ - -#if __GNUC__ >= 10 -#if defined(__cplusplus) -#pragma GCC diagnostic ignored "-Wvolatile" /* For 'volatile SCM *' in at least Guile 3.0 and earlier */ -#endif -#endif - -#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) \ - do { \ - if (!(expr)) \ - scm_error(scm_from_locale_symbol("swig-contract-assertion-failed"), \ - (char *) FUNC_NAME, (char *) msg, \ - SCM_EOL, SCM_BOOL_F); \ - } while (0) - -/* 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 void SWIG_Guile_MarkPointerNoncollectable(SCM s); - -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_is_null(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_is_null(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_is_null(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); - int ret = SWIG_ERROR; - - if (scm_is_null(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 ((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) { - if ((SCM_CELL_TYPE(smob) == swig_collectable_tag && SCM_CELL_WORD_1(smob) == 0) || SCM_CELL_TYPE(smob) == swig_tag) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - } - - 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 */ - ret = SWIG_OK; - } else { - return SWIG_ERROR; - } - } else { - *result = (void *) SCM_CELL_WORD_1(smob); - ret = SWIG_OK; - } - - if (flags & SWIG_POINTER_DISOWN) { - SWIG_Guile_MarkPointerNoncollectable(smob); - } - if (flags & SWIG_POINTER_CLEAR) { - SCM_SET_CELL_WORD_1(smob, 0); - } - } - return ret; -} - -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_is_null(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_is_null(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/win64/bin/swig/share/swig/4.1.0/guile/interpreter.i b/win64/bin/swig/share/swig/4.1.0/guile/interpreter.i deleted file mode 100755 index d43871db..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/interpreter.i +++ /dev/null @@ -1,59 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/list-vector.i b/win64/bin/swig/share/swig/4.1.0/guile/list-vector.i deleted file mode 100755 index 963bacf5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/list-vector.i +++ /dev/null @@ -1,488 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) - {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) - { - 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++) { - 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++) - 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 - {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 - { - 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++) - 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++) - free((*$1)[i]); - free(*$1); - } -} diff --git a/win64/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i b/win64/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i deleted file mode 100755 index 3a70d5ce..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/pointer-in-out.i +++ /dev/null @@ -1,102 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/ports.i b/win64/bin/swig/share/swig/4.1.0/guile/ports.i deleted file mode 100755 index e5c813db..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/ports.i +++ /dev/null @@ -1,50 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i deleted file mode 100755 index 7b2d5eef..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scm_misc_error(FUNC_NAME, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'", SCM_EOL); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/guile/std_common.i b/win64/bin/swig/share/swig/4.1.0/guile/std_common.i deleted file mode 100755 index 8a94e574..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/std_common.i +++ /dev/null @@ -1,25 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - SWIG_free(temp); - return s; -} -%} diff --git a/win64/bin/swig/share/swig/4.1.0/guile/std_deque.i b/win64/bin/swig/share/swig/4.1.0/guile/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/guile/std_except.i b/win64/bin/swig/share/swig/4.1.0/guile/std_except.i deleted file mode 100755 index db55dcb9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/std_except.i +++ /dev/null @@ -1,13 +0,0 @@ -// 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/win64/bin/swig/share/swig/4.1.0/guile/std_map.i b/win64/bin/swig/share/swig/4.1.0/guile/std_map.i deleted file mode 100755 index bd48657c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/std_map.i +++ /dev/null @@ -1,1370 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/std_pair.i b/win64/bin/swig/share/swig/4.1.0/guile/std_pair.i deleted file mode 100755 index 53491552..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/std_pair.i +++ /dev/null @@ -1,867 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/std_string.i b/win64/bin/swig/share/swig/4.1.0/guile/std_string.i deleted file mode 100755 index 33f42822..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/std_string.i +++ /dev/null @@ -1,95 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - 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); - 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); - 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); - SWIG_free(tempptr); - } else { - SWIG_exception(SWIG_TypeError, "string expected"); - } - } - - %typemap(varout) string { - $result = SWIG_str02scm($1.c_str()); - } - - %typemap(throws) string { - scm_throw(scm_from_locale_symbol((char *) "swig-exception"), - scm_list_n(SWIG_str02scm($1.c_str()), SCM_UNDEFINED)); - } - - %typemap(throws) const string & { - scm_throw(scm_from_locale_symbol((char *) "swig-exception"), - scm_list_n(SWIG_str02scm($1.c_str()), SCM_UNDEFINED)); - } -} diff --git a/win64/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i deleted file mode 100755 index cc517682..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scm_misc_error(FUNC_NAME, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'", SCM_EOL); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/guile/std_vector.i b/win64/bin/swig/share/swig/4.1.0/guile/std_vector.i deleted file mode 100755 index 180fc66d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/std_vector.i +++ /dev/null @@ -1,424 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/guile/swigmove.i b/win64/bin/swig/share/swig/4.1.0/guile/swigmove.i deleted file mode 100755 index 72848b60..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/swigmove.i +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "$1_type", $symname, $argnum); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/win64/bin/swig/share/swig/4.1.0/guile/swigrun.i b/win64/bin/swig/share/swig/4.1.0/guile/swigrun.i deleted file mode 100755 index 309dc408..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/swigrun.i +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- mode: c -*- */ - -%module swigrun - -#ifdef SWIGGUILE_SCM - -%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/win64/bin/swig/share/swig/4.1.0/guile/typemaps.i b/win64/bin/swig/share/swig/4.1.0/guile/typemaps.i deleted file mode 100755 index 5ef1081d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/guile/typemaps.i +++ /dev/null @@ -1,501 +0,0 @@ -/* ----------------------------------------------------------------------------- - * typemaps.i - * - * Guile-specific typemaps - * ----------------------------------------------------------------------------- */ - -/* These are defined with a view to eventually merging with those defined for other target languages in swigtypemaps.swg and exception.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) -#define %argument_nullref(_type, _name, _argn) scm_misc_error(FUNC_NAME, "invalid null reference for argument " #_argn " of type '" _type "'", SCM_EOL) -#define %releasenotowned_fail(_code, _type, _name, _argn) scm_misc_error(FUNC_NAME, "cannot release ownership as memory is not owned for argument " #_argn " of type '" _type "'", SCM_EOL) - -/* Pointers */ - -%typemap(in) SWIGTYPE *, SWIGTYPE [] { - $1 = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, $argnum, 0); -} -%typemap(in) SWIGTYPE & ($1_ltype argp) { - argp = ($1_ltype)SWIG_MustGetPtr($input, $descriptor, $argnum, 0); - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - $1 = argp; -} -%typemap(in, noblock=1, fragment="") SWIGTYPE && (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) { - res = SWIG_ConvertPtr($input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "$1_type", $symname, $argnum); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -} -%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); - if (!argp) { %argument_nullref("$1_type", $symname, $argnum); } - $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); - $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 = ($&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) SWIG_free($1);" -%typemap (freearg) char **INPUT, char **BOTH "if (must_free$argnum) 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 * { - 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 - * ------------------------------------------------------------ */ - -%typemap(in) SWIGTYPE (CLASS::*) { - int res = SWIG_ConvertMember($input, %as_voidptr(&$1), sizeof($1), $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($1), $descriptor)); -} - -%typemap(varin) SWIGTYPE (CLASS::*) { - int res = SWIG_ConvertMember($input,%as_voidptr(&$1), sizeof($1), $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($1), $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_is_bool($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/win64/bin/swig/share/swig/4.1.0/intrusive_ptr.i b/win64/bin/swig/share/swig/4.1.0/intrusive_ptr.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/inttypes.i b/win64/bin/swig/share/swig/4.1.0/inttypes.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/java/arrays_java.i b/win64/bin/swig/share/swig/4.1.0/java/arrays_java.i deleted file mode 100755 index 7a417b07..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/arrays_java.i +++ /dev/null @@ -1,392 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - 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)); %} - -// 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/win64/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i deleted file mode 100755 index 70dcfc2a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/boost_shared_ptr.i +++ /dev/null @@ -1,337 +0,0 @@ -// 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)); %} - -%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(SWIG_STD_MOVE($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/win64/bin/swig/share/swig/4.1.0/java/director.swg b/win64/bin/swig/share/swig/4.1.0/java/director.swg deleted file mode 100755 index f87c6f7c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/director.swg +++ /dev/null @@ -1,541 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) -#include -#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; - } - } - } - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) - static void detach(void *jvm) { - static_cast(jvm)->DetachCurrentThread(); - } - - static void make_detach_key() { - pthread_key_create(&detach_key_, detach); - } - - /* thread-local key to register a destructor */ - static pthread_key_t detach_key_; -#endif - - private: - /* pointer to Java object */ - jobject jthis_; - /* Local or global reference flag */ - bool weak_global_; - }; - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) - pthread_key_t JObjectWrapper::detach_key_; -#endif - - /* 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 - -#if defined(SWIG_JAVA_DETACH_ON_THREAD_END) - // At least on Android 6, detaching after every call causes a memory leak. - // Instead, register a thread desructor and detach only when the thread ends. - // See https://developer.android.com/training/articles/perf-jni#threads - static pthread_once_t once = PTHREAD_ONCE_INIT; - - pthread_once(&once, JObjectWrapper::make_detach_key); - pthread_setspecific(JObjectWrapper::detach_key_, director->swig_jvm_); -#endif - } - ~JNIEnvWrapper() { -#if !defined(SWIG_JAVA_DETACH_ON_THREAD_END) && !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_; - } - }; - - struct SwigDirectorMethod { - const char *name; - const char *desc; - jmethodID methid; - SwigDirectorMethod(JNIEnv *jenv, jclass baseclass, const char *name, const char *desc) : name(name), desc(desc) { - methid = jenv->GetMethodID(baseclass, name, desc); - } - }; - - /* 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); - } - } - } - - jclass swig_new_global_ref(JNIEnv *jenv, const char *classname) { - jclass clz = jenv->FindClass(classname); - return clz ? (jclass)jenv->NewGlobalRef(clz) : 0; - } - - 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/win64/bin/swig/share/swig/4.1.0/java/enums.swg b/win64/bin/swig/share/swig/4.1.0/java/enums.swg deleted file mode 100755 index b3d3df8e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/enums.swg +++ /dev/null @@ -1,116 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/enumsimple.swg b/win64/bin/swig/share/swig/4.1.0/java/enumsimple.swg deleted file mode 100755 index 31505f75..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/enumsimple.swg +++ /dev/null @@ -1,71 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg b/win64/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg deleted file mode 100755 index 62af9502..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/enumtypesafe.swg +++ /dev/null @@ -1,117 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg b/win64/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg deleted file mode 100755 index 4af5ed7e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/enumtypeunsafe.swg +++ /dev/null @@ -1,72 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/java.swg b/win64/bin/swig/share/swig/4.1.0/java/java.swg deleted file mode 100755 index 08a1d032..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/java.swg +++ /dev/null @@ -1,1458 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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($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(SWIG_STD_MOVE($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 is null"); - return $null; - } %} -%typemap(in, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ $1 = *($&1_ltype)&$input; - if (!$1) { - SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type is null"); - return $null; - } - rvrdeleter.reset($1); %} -%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 [] "$javaclassname.getCPtr($javainput)" -%typemap(javain) SWIGTYPE && "$javaclassname.swigRelease($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::*) "" -%typemap(javainterfacemodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [], SWIGTYPE (CLASS::*) "public interface" - -/* 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; - } - - CPTR_VISIBILITY static long swigRelease($javaclassname obj) { - long ptr = 0; - if (obj != null) { - if (!obj.swigCMemOwn) - throw new RuntimeException("Cannot release ownership as memory is not owned"); - ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.delete(); - } - return ptr; - } -%} - -// 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; - } - - CPTR_VISIBILITY static long swigRelease($javaclassname obj) { - long ptr = 0; - if (obj != null) { - if (!obj.swigCMemOwn) - throw new RuntimeException("Cannot release ownership as memory is not owned"); - ptr = obj.swigCPtr; - obj.swigCMemOwn = false; - obj.delete(); - } - return ptr; - } -%} -%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; - } - - CPTR_VISIBILITY static long swigRelease($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/win64/bin/swig/share/swig/4.1.0/java/javahead.swg b/win64/bin/swig/share/swig/4.1.0/java/javahead.swg deleted file mode 100755 index c482a970..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/javahead.swg +++ /dev/null @@ -1,91 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) %{ -#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_JavaIllegalStateException, -} 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_JavaIllegalStateException, "java/lang/IllegalStateException" }, - { (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) do { if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } } while (0) -%} diff --git a/win64/bin/swig/share/swig/4.1.0/java/javakw.swg b/win64/bin/swig/share/swig/4.1.0/java/javakw.swg deleted file mode 100755 index 02557bf4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/javakw.swg +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef JAVA_JAVAKW_SWG_ -#define JAVA_JAVAKW_SWG_ - -/* Warnings for Java keywords */ -#define JAVAKW(x) %keywordwarn("'" `x` "' is a java keyword",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/win64/bin/swig/share/swig/4.1.0/java/std_array.i b/win64/bin/swig/share/swig/4.1.0/java/std_array.i deleted file mode 100755 index 10113a26..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_array.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 "jlong" -%typemap (jtype) std::auto_ptr< TYPE > "long" -%typemap (jstype) std::auto_ptr< TYPE > "$typemap(jstype, TYPE)" - -%typemap(in) std::auto_ptr< TYPE > (TYPE *auto_temp) -%{ auto_temp = *(TYPE **)&$input; - $1.reset(auto_temp); %} - -%typemap(javain) std::auto_ptr< TYPE > "$typemap(jstype, TYPE).swigRelease($javainput)" - -%typemap (out) std::auto_ptr< TYPE > %{ - jlong lpp = 0; - *(TYPE **) &lpp = $1.release(); - $result = lpp; -%} - -%typemap(javaout) std::auto_ptr< TYPE > { - long cPtr = $jnicall; - return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::auto_ptr< TYPE > "" - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/java/std_common.i b/win64/bin/swig/share/swig/4.1.0/java/std_common.i deleted file mode 100755 index c80263ae..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/win64/bin/swig/share/swig/4.1.0/java/std_deque.i b/win64/bin/swig/share/swig/4.1.0/java/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/java/std_except.i b/win64/bin/swig/share/swig/4.1.0/java/std_except.i deleted file mode 100755 index d25e13d6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_except.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/std_list.i b/win64/bin/swig/share/swig/4.1.0/java/std_list.i deleted file mode 100755 index 865b55d2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_list.i +++ /dev/null @@ -1,225 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/std_map.i b/win64/bin/swig/share/swig/4.1.0/java/std_map.i deleted file mode 100755 index b9617eaf..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_map.i +++ /dev/null @@ -1,224 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/std_pair.i b/win64/bin/swig/share/swig/4.1.0/java/std_pair.i deleted file mode 100755 index eb5e17ac..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_pair.i +++ /dev/null @@ -1,37 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/std_set.i b/win64/bin/swig/share/swig/4.1.0/java/std_set.i deleted file mode 100755 index 6326cd00..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_set.i +++ /dev/null @@ -1,207 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 add($typemap(jboxtype, T) key) { - return addImpl(key); - } - - 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); - } - - public void remove() { - throw new java.lang.UnsupportedOperationException(); - } - }.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 addImpl(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/win64/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i deleted file mode 100755 index 01a0e9dd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/win64/bin/swig/share/swig/4.1.0/java/std_string.i b/win64/bin/swig/share/swig/4.1.0/java/std_string.i deleted file mode 100755 index 5e50f3d6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_string.i +++ /dev/null @@ -1,121 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i deleted file mode 100755 index debfc179..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_unique_ptr.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) - -%typemap (jni) std::unique_ptr< TYPE > "jlong" -%typemap (jtype) std::unique_ptr< TYPE > "long" -%typemap (jstype) std::unique_ptr< TYPE > "$typemap(jstype, TYPE)" - -%typemap(in) std::unique_ptr< TYPE > (TYPE *unique_temp) -%{ unique_temp = *(TYPE **)&$input; - $1.reset(unique_temp); %} - -%typemap(javain) std::unique_ptr< TYPE > "$typemap(jstype, TYPE).swigRelease($javainput)" - -%typemap (out) std::unique_ptr< TYPE > %{ - jlong lpp = 0; - *(TYPE **) &lpp = $1.release(); - $result = lpp; -%} - -%typemap(javaout) std::unique_ptr< TYPE > { - long cPtr = $jnicall; - return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true); - } - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") std::unique_ptr< TYPE > "" - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/java/std_unordered_map.i b/win64/bin/swig/share/swig/4.1.0/java/std_unordered_map.i deleted file mode 100755 index c5e2b784..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_unordered_map.i +++ /dev/null @@ -1,211 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/java/std_unordered_set.i b/win64/bin/swig/share/swig/4.1.0/java/std_unordered_set.i deleted file mode 100755 index 97250ada..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_unordered_set.i +++ /dev/null @@ -1,203 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - } - - public void remove() { - throw new java.lang.UnsupportedOperationException(); - } - }.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/win64/bin/swig/share/swig/4.1.0/java/std_vector.i b/win64/bin/swig/share/swig/4.1.0/java/std_vector.i deleted file mode 100755 index 40775012..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_vector.i +++ /dev/null @@ -1,185 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(); - reserve(initialElements.length); - - 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/win64/bin/swig/share/swig/4.1.0/java/std_wstring.i b/win64/bin/swig/share/swig/4.1.0/java/std_wstring.i deleted file mode 100755 index c24baaa3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/std_wstring.i +++ /dev/null @@ -1,180 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 = (jsize)$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 = (jsize)$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.size(), '\0'); - for (size_t i = 0; i < $1.size(); ++i) { - message[i] = (char)$1[i]; - } - 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 = (jsize)$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 = (jsize)$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.size(), '\0'); - for (size_t i = 0; i < $1.size(); ++i) { - message[i] = (char)$1[i]; - } - SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, message.c_str()); - return $null; %} - -} - diff --git a/win64/bin/swig/share/swig/4.1.0/java/stl.i b/win64/bin/swig/share/swig/4.1.0/java/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/java/swiginterface.i b/win64/bin/swig/share/swig/4.1.0/java/swiginterface.i deleted file mode 100755 index 81dd6d62..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/swiginterface.i +++ /dev/null @@ -1,74 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(SWIG_STD_MOVE($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/win64/bin/swig/share/swig/4.1.0/java/swigmove.i b/win64/bin/swig/share/swig/4.1.0/java/swigmove.i deleted file mode 100755 index 28897eee..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/swigmove.i +++ /dev/null @@ -1,16 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in) SWIGTYPE MOVE ($&1_type argp) -%{ argp = *($&1_ltype*)&$input; - if (!argp) { - SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type"); - return $null; - } - SwigValueWrapper< $1_ltype >::reset($1, argp); %} - -%typemap(javain) SWIGTYPE MOVE "$&javaclassname.swigRelease($javainput)" diff --git a/win64/bin/swig/share/swig/4.1.0/java/typemaps.i b/win64/bin/swig/share/swig/4.1.0/java/typemaps.i deleted file mode 100755 index 0f46e197..00000000 --- a/win64/bin/swig/share/swig/4.1.0/java/typemaps.i +++ /dev/null @@ -1,529 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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; igetPrivateObject()->tryAllowDestroyInGC(); %} \ No newline at end of file diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_common.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_common.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_complex.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_complex.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_deque.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_deque.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_except.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_except.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_map.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_map.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_pair.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_pair.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_string.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_string.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_vector.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/std_vector.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/stl.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/stl.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/typemaps.i b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/typemaps.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i deleted file mode 100755 index 471d3933..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/arrays_javascript.i +++ /dev/null @@ -1,94 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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)) {} -%fragment("SWIG_JSCOutInt", "header", fragment=SWIG_From_frag(int)) {} -%fragment("SWIG_JSCOutNumber", "header", fragment=SWIG_From_frag(double)) {} - -%define JAVASCRIPT_ARRAYS_IN_DECL(NAME, CTYPE, ANY, ANYLENGTH) - -%typemap(in, fragment=NAME) CTYPE[ANY] { - if (JSValueIsObject(context, $input)) - { - int i; - // Convert into Array - JSObjectRef array = JSValueToObject(context, $input, NULL); - - int length = ANYLENGTH; - - $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); - - // Get each element from array - for (i = 0; i < length; i++) - { - JSValueRef jsvalue = JSObjectGetPropertyAtIndex(context, array, i, NULL); - $*1_ltype temp; - - // Get primitive value from JSObject - int res = SWIG_AsVal(CTYPE)(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) CTYPE[ANY] { - free($1); -} - -%enddef - -%define JAVASCRIPT_ARRAYS_OUT_DECL(NAME, CTYPE) - -%typemap(out, fragment=NAME) CTYPE[ANY] { - int length = $1_dim0; - JSValueRef values[length]; - int i; - - for (i = 0; i < length; i++) - { - values[i] = SWIG_From(CTYPE)($1[i]); - } - - $result = JSObjectMakeArray(context, length, values, NULL); -} - -%enddef - -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, , SWIGJSC_ArrayLength(context, array)) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, ANY, $1_dim0) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, , SWIGJSC_ArrayLength(context, array)) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, ANY, $1_dim0) - -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutInt", int) -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutNumber", double) - diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i deleted file mode 100755 index 7eaae0e7..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/ccomplex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ccomplex.i - * - * C complex typemaps - * ISO C99: 7.3 Complex arithmetic - * ----------------------------------------------------------------------------- */ - - -%include - -%{ -#include -%} - -#define complex _Complex - -/* 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i deleted file mode 100755 index 1c6de446..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i deleted file mode 100755 index ee3e1d3c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/complex.i +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef __cplusplus -%include -#else -%include -#endif - diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i deleted file mode 100755 index 1aa231df..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/exception.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg deleted file mode 100755 index 652410e2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascript.swg +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * javascript.swg - * - * Javascript typemaps - * ----------------------------------------------------------------------------- */ - -%include - -%include - -%include - -%include - -%include - -%include - -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg deleted file mode 100755 index f9f8e47d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcode.swg +++ /dev/null @@ -1,429 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg deleted file mode 100755 index 47dcfc13..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptcomplex.swg +++ /dev/null @@ -1,146 +0,0 @@ -/* - 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.0f); - 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg deleted file mode 100755 index 1680e765..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg deleted file mode 100755 index bffec9a6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascripthelpers.swg +++ /dev/null @@ -1,69 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg deleted file mode 100755 index e90f9438..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptinit.swg +++ /dev/null @@ -1,112 +0,0 @@ -%insert(init) %{ -SWIGRUNTIME void -SWIG_JSC_SetModule(JSGlobalContextRef context, swig_module_info *swig_module) { - JSObjectRef globalObject; - JSStringRef moduleName; - JSClassDefinition classDef; - JSClassRef classRef; - JSObjectRef object; - - if(context == 0){ - return; - } - - globalObject = JSContextGetGlobalObject(context); - moduleName = JSStringCreateWithUTF8CString("swig_module_info_data"); - - classDef = kJSClassDefinitionEmpty; - classRef = JSClassCreate(&classDef); - - object = JSObjectMake(context, classRef, NULL); - JSObjectSetPrivate(object, (void*)swig_module); - - JSObjectSetProperty(context, globalObject, moduleName, object, kJSPropertyAttributeNone, NULL); - - JSClassRelease(classRef); - JSStringRelease(moduleName); -} -SWIGRUNTIME swig_module_info * -SWIG_JSC_GetModule(JSGlobalContextRef context) { - JSObjectRef globalObject; - JSStringRef moduleName; - JSValueRef value; - JSObjectRef object; - - if(context == 0){ - return 0; - } - - globalObject = JSContextGetGlobalObject(context); - moduleName = JSStringCreateWithUTF8CString("swig_module_info_data"); - - if(JSObjectHasProperty(context, globalObject, moduleName) == false) { - JSStringRelease(moduleName); - return 0; - } - - value = JSObjectGetProperty(context, globalObject, moduleName, NULL); - object = JSValueToObject(context, value, NULL); - JSStringRelease(moduleName); - - return (swig_module_info*)JSObjectGetPrivate(object); -} - -#define SWIG_GetModule(clientdata) SWIG_JSC_GetModule(clientdata) -#define SWIG_SetModule(clientdata, pointer) SWIG_JSC_SetModule(clientdata, pointer) -#define SWIG_INIT_CLIENT_DATA_TYPE JSGlobalContextRef -%} - -%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(context); -%} - -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg deleted file mode 100755 index 57a1aeb8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptkw.swg +++ /dev/null @@ -1,40 +0,0 @@ -#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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg deleted file mode 100755 index 874137a4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptprimtypes.swg +++ /dev/null @@ -1,192 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg deleted file mode 100755 index 2a212890..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptrun.swg +++ /dev/null @@ -1,369 +0,0 @@ -/* ---------------------------------------------------------------------------- - * 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_ValueRef(JSContextRef context, JSValueRef *exception, JSValueRef valRef) { - JSValueRef error_arguments[1]; - JSObjectRef exception_object; - /* 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] = valRef; - exception_object = JSObjectMakeError(context, 1, error_arguments, NULL); - - /* Return the exception_object */ - *exception = exception_object; -} - -SWIGRUNTIME void SWIG_Javascript_Raise(JSContextRef context, JSValueRef *exception, const char* msg) { - JSStringRef message = JSStringCreateWithUTF8CString(msg); - JSValueRef exception_value = JSValueMakeString(context, message); - - SWIG_Javascript_Raise_ValueRef(context, exception, exception_value); - - 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; - } - assert(ptr); - *ptr = NULL; - if (!info || cdata->info == info) { - *ptr = cdata->swigCObject; - } else { - swig_cast_info *tc = SWIG_TypeCheckStruct(cdata->info, info); - if (tc) { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc, cdata->swigCObject, &newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } else { - return SWIG_ERROR; - } - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !cdata->swigCMemOwn) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (flags & SWIG_POINTER_DISOWN) { - cdata->swigCMemOwn = false; - } - if (flags & SWIG_POINTER_CLEAR) { - cdata->swigCObject = 0; - } - } - - 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 -bool SWIGJSC_ValueIsArray(JSContextRef context, JSValueRef value) { - if (JSValueIsObject(context, value)) { - static JSStringRef ArrayString = NULL; - static JSStringRef isArrayString = NULL; - JSObjectRef array = NULL; - JSObjectRef isArray = NULL; - JSValueRef retval = NULL; - - if (!ArrayString) - ArrayString = JSStringCreateWithUTF8CString("Array"); - if (!isArrayString) - isArrayString = JSStringCreateWithUTF8CString("isArray"); - - array = (JSObjectRef)JSObjectGetProperty(context, JSContextGetGlobalObject(context), ArrayString, NULL); - isArray = (JSObjectRef)JSObjectGetProperty(context, array, isArrayString, NULL); - retval = JSObjectCallAsFunction(context, isArray, NULL, 1, &value, NULL); - - if (JSValueIsBoolean(context, retval)) - return JSValueToBoolean(context, retval); - } - return false; -} - -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 if (!SWIGJSC_ValueIsArray(context, value)) { - arr = JSObjectMakeArray(context, 1, &value, 0); - } else { - arr = JSValueToObject(context, value, 0); - } - - length = SWIGJSC_ArrayLength(context, arr); - JSObjectSetPropertyAtIndex(context, arr, length, obj, 0); - return arr; -} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg deleted file mode 100755 index 41f8e2f6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptruntime.swg +++ /dev/null @@ -1,20 +0,0 @@ -/* ----------------------------------------------------------------------------- - * javascriptruntime.swg - * - * Javascript support code - * ----------------------------------------------------------------------------- */ - -%insert(runtime) %{ -#include -#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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg deleted file mode 100755 index 87a6e7ce..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/javascriptstrings.swg +++ /dev/null @@ -1,187 +0,0 @@ -/* ------------------------------------------------------------ - * 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_ValueRef(context, exception, obj) - -%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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i deleted file mode 100755 index 304f1fc9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i deleted file mode 100755 index c80263ae..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i deleted file mode 100755 index 464e6f31..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_complex.i +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i deleted file mode 100755 index 3e056e7d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i deleted file mode 100755 index 626942eb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_map.i +++ /dev/null @@ -1,81 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i deleted file mode 100755 index 539130ff..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i deleted file mode 100755 index 0afc2468..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i deleted file mode 100755 index 79320de6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i deleted file mode 100755 index dca90ff3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/std_vector.i +++ /dev/null @@ -1,99 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i deleted file mode 100755 index 03e87fa2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i b/win64/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i deleted file mode 100755 index 0ad6ce85..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/jsc/typemaps.i +++ /dev/null @@ -1,148 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/win64/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i deleted file mode 100755 index d70c983f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/arrays_javascript.i +++ /dev/null @@ -1,86 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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)) {} -%fragment("SWIG_JSCOutInt", "header", fragment=SWIG_From_frag(int)) {} -%fragment("SWIG_JSCOutNumber", "header", fragment=SWIG_From_frag(double)) {} - -%define JAVASCRIPT_ARRAYS_IN_DECL(NAME, CTYPE, ANY, ANYLENGTH) - -%typemap(in, fragment=NAME) CTYPE[ANY] { - if ($input->IsArray()) { - // Convert into Array - v8::Local array = v8::Local::Cast($input); - - int length = ANYLENGTH; - - $1 = ($*1_ltype *)malloc(sizeof($*1_ltype) * length); - - // Get each element from array - for (int i = 0; i < length; i++) { - v8::Local jsvalue = SWIGV8_ARRAY_GET(array, i); - $*1_ltype temp; - - // Get primitive value from JSObject - int res = SWIG_AsVal(CTYPE)(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 an array"); - } -} - -%typemap(freearg) CTYPE[ANY] { - free($1); -} - -%enddef - -%define JAVASCRIPT_ARRAYS_OUT_DECL(NAME, CTYPE) - -%typemap(out, fragment=NAME) CTYPE[ANY] { - int length = $1_dim0; - v8::Local array = SWIGV8_ARRAY_NEW(length); - - for (int i = 0; i < length; i++) { - SWIGV8_ARRAY_SET(array, i, SWIG_From(CTYPE)($1[i])); - } - - $result = array; -} - -%enddef - -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, , array->Length()) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetIntProperty", int, ANY, $1_dim0) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, , array->Length()) -JAVASCRIPT_ARRAYS_IN_DECL("SWIG_JSCGetNumberProperty", double, ANY, $1_dim0) - -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutInt", int) -JAVASCRIPT_ARRAYS_OUT_DECL("SWIG_JSCOutNumber", double) - diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i deleted file mode 100755 index 7eaae0e7..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/ccomplex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ccomplex.i - * - * C complex typemaps - * ISO C99: 7.3 Complex arithmetic - * ----------------------------------------------------------------------------- */ - - -%include - -%{ -#include -%} - -#define complex _Complex - -/* 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/win64/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i deleted file mode 100755 index 1c6de446..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/complex.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/complex.i deleted file mode 100755 index ee3e1d3c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/complex.i +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef __cplusplus -%include -#else -%include -#endif - diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/exception.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/exception.i deleted file mode 100755 index 1aa231df..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/exception.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg deleted file mode 100755 index 652410e2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascript.swg +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * javascript.swg - * - * Javascript typemaps - * ----------------------------------------------------------------------------- */ - -%include - -%include - -%include - -%include - -%include - -%include - -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg deleted file mode 100755 index 5daf6dfb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcode.swg +++ /dev/null @@ -1,435 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(); - - SWIGV8_OBJECT self = args.Holder(); - $jslocals - if(self->InternalFieldCount() < 1) SWIG_exception_fail(SWIG_ERROR, "Illegal call of constructor $jswrapper."); - 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; - SWIGV8_VALUE 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(); - - SWIGV8_OBJECT self = args.Holder(); - $jslocals - if(self->InternalFieldCount() < 1) SWIG_exception_fail(SWIG_ERROR, "Illegal call of constructor $jswrapper."); - 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(); - $jswrapper(args, errorHandler); - if(errorHandler.err.IsEmpty()) { - return; - } - } -%} - -/* ----------------------------------------------------------------------------- - * js_dtor: template for a destructor wrapper - * - $jsmangledname: mangled class name - * - $jstype: class type - * ----------------------------------------------------------------------------- */ -%fragment ("js_dtor", "templates") -%{ - -static void $jswrapper(const v8::WeakCallbackInfo &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - - if(proxy->swigCMemOwn && proxy->swigCObject) { -#ifdef SWIGRUNTIME_DEBUG - printf("Deleting wrapped instance: %s\n", proxy->info->name); -#endif - $jsfree proxy->swigCObject; - } - delete proxy; -} -%} - -/* ----------------------------------------------------------------------------- - * 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") -%{ -static void $jswrapper(const v8::WeakCallbackInfo &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - - if(proxy->swigCMemOwn && proxy->swigCObject) { - $jstype arg1 = ($jstype)proxy->swigCObject; - ${destructor_action} - } - delete proxy; -} -%} - -/* ----------------------------------------------------------------------------- - * 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 SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { - SWIGV8_HANDLESCOPE(); - - SWIGV8_VALUE 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") -%{ -static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { - 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(); - - SWIGV8_VALUE 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(); - - SWIGV8_VALUE 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(); - - SWIGV8_VALUE 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(); - $jswrapper(args, errorHandler); - if(errorHandler.err.IsEmpty()) { - return; - } - } -%} - -/* ----------------------------------------------------------------------------- - * 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 */ - SWIGV8_FUNCTION_TEMPLATE $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())) - { - $jsmangledname_class->Inherit( - v8::Local::New( - v8::Isolate::GetCurrent(), - static_cast(SWIGTYPE_p$jsbaseclass->clientdata)->class_templ) - ); - -#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) */ - SWIGV8_FUNCTION_TEMPLATE $jsmangledname_class_0 = SWIGV8_CreateClassTemplate("$jsname"); - $jsmangledname_class_0->SetCallHandler($jsctor); - $jsmangledname_class_0->Inherit($jsmangledname_class); -#if (SWIG_V8_VERSION < 0x0704) - $jsmangledname_class_0->SetHiddenPrototype(true); - v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(); -#else - v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(context).ToLocalChecked(); -#endif -%} - -/* ----------------------------------------------------------------------------- - * 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") -%{ - SWIGV8_MAYBE_CHECK($jsparent_obj->Set(context, 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") -%{ - SWIGV8_OBJECT $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") -%{ - SWIGV8_MAYBE_CHECK($jsparent_obj->Set(context, 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, context); -%} - -/* ----------------------------------------------------------------------------- - * 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, context); -%} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg deleted file mode 100755 index 25bc1606..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptcomplex.swg +++ /dev/null @@ -1,124 +0,0 @@ -/* - 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 SWIGV8_VALUE -SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) -{ - SWIGV8_HANDLESCOPE_ESC(); - - v8::Local vals = SWIGV8_ARRAY_NEW(0); - - SWIGV8_ARRAY_SET(vals, 0, SWIG_From(double)(Real(c))); - SWIGV8_ARRAY_SET(vals, 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) (SWIGV8_VALUE o, Type* val) -{ - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { - SWIGV8_ARRAY array = SWIGV8_ARRAY::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)(SWIGV8_ARRAY_GET(array, 0), &re); - if (!SWIG_IsOK(res)) { - return SWIG_TypeError; - } - - res = SWIG_AsVal(double)(SWIGV8_ARRAY_GET(array, 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) (SWIGV8_VALUE o, Type* val) -{ - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { - SWIGV8_ARRAY array = SWIGV8_ARRAY::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)(SWIGV8_ARRAY_GET(array, 0), &re); - if (!SWIG_IsOK(res)) { - return SWIG_TypeError; - } - - res = SWIG_AsVal(double)(SWIGV8_ARRAY_GET(array, 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/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg deleted file mode 100755 index 1680e765..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg deleted file mode 100755 index 36c8c681..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascripthelpers.swg +++ /dev/null @@ -1,87 +0,0 @@ -%insert(runtime) %{ - -typedef v8::FunctionCallback SwigV8FunctionCallback; -typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; -typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; -typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; - -/** - * Creates a class template for a class with specified initialization function. - */ -SWIGRUNTIME SWIGV8_FUNCTION_TEMPLATE SWIGV8_CreateClassTemplate(const char* symbol) { - SWIGV8_HANDLESCOPE_ESC(); - - v8::Local class_templ = SWIGV8_FUNCTEMPLATE_NEW_VOID(); - class_templ->SetClassName(SWIGV8_SYMBOL_NEW(symbol)); - - SWIGV8_OBJECT_TEMPLATE inst_templ = class_templ->InstanceTemplate(); - inst_templ->SetInternalFieldCount(1); - - SWIGV8_OBJECT_TEMPLATE equals_templ = class_templ->PrototypeTemplate(); - equals_templ->Set(SWIGV8_SYMBOL_NEW("equals"), SWIGV8_FUNCTEMPLATE_NEW(_SWIGV8_wrap_equals)); - - SWIGV8_OBJECT_TEMPLATE 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(SWIGV8_FUNCTION_TEMPLATE class_templ, const char* symbol, - SwigV8FunctionCallback _func) { - SWIGV8_OBJECT_TEMPLATE 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(SWIGV8_FUNCTION_TEMPLATE class_templ, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { - SWIGV8_OBJECT_TEMPLATE 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(SWIGV8_OBJECT obj, const char* symbol, - const SwigV8FunctionCallback& _func, v8::Local context) { - SWIGV8_MAYBE_CHECK(obj->Set(context, SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction(context).ToLocalChecked())); -} - -/** - * Registers a class method with given name for a given object. - */ -SWIGRUNTIME void SWIGV8_AddStaticVariable(SWIGV8_OBJECT obj, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter, - v8::Local context) { - SWIGV8_MAYBE_CHECK(obj->SetAccessor(context, SWIGV8_SYMBOL_NEW(symbol), getter, setter)); -} - -SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) -{ - char buffer[256]; - char msg[512]; - int res; - - 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; - } - - 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/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg deleted file mode 100755 index 631d1444..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptinit.swg +++ /dev/null @@ -1,126 +0,0 @@ -%insert(header) %{ -#include -%} - -%insert(init) %{ - -SWIGRUNTIME void -SWIG_V8_SetModule(v8::Local context, swig_module_info *swig_module) { - v8::Local global_obj = context->Global(); - v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); - assert(!mod.IsEmpty()); - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); - global_obj->SetPrivate(context, privateKey, mod); -} - -SWIGRUNTIME swig_module_info * -SWIG_V8_GetModule(v8::Local context) { - v8::Local global_obj = context->Global(); - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); - v8::Local moduleinfo; - if (!global_obj->GetPrivate(context, privateKey).ToLocal(&moduleinfo)) - return 0; - - 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) -#define SWIG_INIT_CLIENT_DATA_TYPE v8::Local - -%} - -%insert(init) "swiginit.swg" - -// Open the initializer function definition here - -%fragment ("js_initializer_define", "templates") %{ -#define SWIGV8_INIT $jsname_initialize -%} - -%insert(init) %{ -#if !defined(NODE_MODULE_VERSION) || (NODE_MODULE_VERSION < 12) -// Note: 'extern "C"'' disables name mangling which makes it easier to load the symbol manually -extern "C" void SWIGV8_INIT (SWIGV8_OBJECT exports_obj) -#elif (NODE_MODULE_VERSION < 64) -void SWIGV8_INIT (SWIGV8_OBJECT exports_obj, SWIGV8_VALUE /*module*/, void*) -#else -void SWIGV8_INIT (SWIGV8_OBJECT exports_obj, SWIGV8_VALUE /*module*/, v8::Local context, void*) -#endif -{ -#if !defined(NODE_MODULE_VERSION) || NODE_MODULE_VERSION < 64 - v8::Local context = SWIGV8_CURRENT_CONTEXT(); -#endif - - SWIG_InitializeModule(context); -%} - - -/* ----------------------------------------------------------------------------- - * 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) -#if (NODE_MODULE_VERSION < 64) -NODE_MODULE($jsname, $jsname_initialize) -#else -NODE_MODULE_CONTEXT_AWARE($jsname, $jsname_initialize) -#endif -#endif -%} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg deleted file mode 100755 index 57a1aeb8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptkw.swg +++ /dev/null @@ -1,40 +0,0 @@ -#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/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg deleted file mode 100755 index fd8e46e8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptprimtypes.swg +++ /dev/null @@ -1,203 +0,0 @@ -/* ------------------------------------------------------------ - * Primitive Types - * ------------------------------------------------------------ */ - -/* boolean */ - -%fragment(SWIG_From_frag(bool),"header") { -SWIGINTERNINLINE -SWIGV8_VALUE -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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(int)(int value) -{ - return SWIGV8_INT32_NEW(value); -} -} - -%fragment(SWIG_AsVal_frag(int),"header") { -SWIGINTERN -int SWIG_AsVal_dec(int)(SWIGV8_VALUE 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 -SWIGV8_VALUE 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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(unsigned long)(unsigned long value) -{ - return value <= UINT32_MAX ? (SWIGV8_VALUE)SWIGV8_INTEGER_NEW_UNS(value) : (SWIGV8_VALUE)SWIGV8_NUMBER_NEW(static_cast(value)); -} -} - -%fragment(SWIG_AsVal_frag(unsigned long),"header", - fragment="SWIG_CanCastAsInteger") { -SWIGINTERN -int SWIG_AsVal_dec(unsigned long)(SWIGV8_VALUE 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 -SWIGV8_VALUE 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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(unsigned long long)(unsigned long long value) -{ - return value <= UINT32_MAX ? (SWIGV8_VALUE)SWIGV8_INTEGER_NEW_UNS(value) : (SWIGV8_VALUE)SWIGV8_NUMBER_NEW(static_cast(value)); -} -%#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)(SWIGV8_VALUE 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 -SWIGV8_VALUE SWIG_From_dec(double) (double val) -{ - return SWIGV8_NUMBER_NEW(val); -} -} - -%fragment(SWIG_AsVal_frag(double),"header") { -SWIGINTERN -int SWIG_AsVal_dec(double)(SWIGV8_VALUE obj, double *val) -{ - if(!obj->IsNumber()) { - return SWIG_TypeError; - } - if(val) *val = SWIGV8_NUMBER_VALUE(obj); - - return SWIG_OK; -} -} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg deleted file mode 100755 index 4c3d9983..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptrun.swg +++ /dev/null @@ -1,487 +0,0 @@ -/* --------------------------------------------------------------------------- - * These typedefs and defines are used to deal with v8 API changes - * - * Useful table of versions: https://nodejs.org/en/download/releases/ - * ---------------------------------------------------------------------------*/ - -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_STRING_NEW2(cstr, len) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::String::kNormalString, len) -#else -#define SWIGV8_STRING_NEW2(cstr, len) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::NewStringType::kNormal, len)).ToLocalChecked() -#endif - -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 - -#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) - -#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) - -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_STRING_NEW(str) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::String::kNormalString) -#define SWIGV8_SYMBOL_NEW(sym) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::String::kNormalString) -#else -#define SWIGV8_STRING_NEW(str) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::NewStringType::kNormal)).ToLocalChecked() -#define SWIGV8_SYMBOL_NEW(sym) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::NewStringType::kNormal)).ToLocalChecked() -#endif - -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_MAYBE_CHECK(maybe) maybe.FromJust() -#else -#define SWIGV8_MAYBE_CHECK(maybe) maybe.Check() -#endif - -#define SWIGV8_ARRAY_NEW(size) v8::Array::New(v8::Isolate::GetCurrent(), size) -#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_ARRAY v8::Local -#define SWIGV8_FUNCTION_TEMPLATE v8::Local -#define SWIGV8_OBJECT v8::Local -#define SWIGV8_OBJECT_TEMPLATE v8::Local -#define SWIGV8_VALUE v8::Local -#define SWIGV8_NULL() v8::Null(v8::Isolate::GetCurrent()) -#define SWIGV8_ARRAY_GET(array, index) (array)->Get(SWIGV8_CURRENT_CONTEXT(), index).ToLocalChecked() -#define SWIGV8_ARRAY_SET(array, index, value) SWIGV8_MAYBE_CHECK((array)->Set(SWIGV8_CURRENT_CONTEXT(), index, value)) - -#define SWIGV8_SET_CLASS_TEMPL(class_templ, class) class_templ.Reset(v8::Isolate::GetCurrent(), class); - -#if SWIG_V8_VERSION < 0x0608 -#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_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(v8::Isolate::GetCurrent(), buffer, len) -#define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length(v8::Isolate::GetCurrent()) -#if (SWIG_V8_VERSION < 0x0704) -#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() -#else -#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(v8::Isolate::GetCurrent()) -#endif -#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))); -} - -SWIGINTERN void SWIG_V8_Raise(SWIGV8_VALUE obj, const char *msg) { - SWIGV8_THROW_EXCEPTION(v8::Exception::Error(SWIGV8_TO_STRING(obj))); -} - - -/* - 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); - } - } - SWIGV8_VALUE 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() { - handle.ClearWeak(); - handle.Reset(); - - 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; - - void (*dtor) (const v8::WeakCallbackInfo &data); -}; - -SWIGRUNTIME v8::Persistent SWIGV8_SWIGTYPE_Proxy_class_templ; - -SWIGRUNTIME int SWIG_V8_ConvertInstancePtr(SWIGV8_OBJECT objRef, void **ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE(); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - - SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); - - if(cdata == NULL) { - return SWIG_ERROR; - } - if(info && 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; - } - int newmemory = 0; - *ptr = SWIG_TypeCast(tc, cdata->swigCObject, &newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } else { - *ptr = cdata->swigCObject; - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !cdata->swigCMemOwn) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (flags & SWIG_POINTER_DISOWN) { - cdata->swigCMemOwn = false; - } - if (flags & SWIG_POINTER_CLEAR) { - cdata->swigCObject = 0; - } - } - return SWIG_OK; -} - - -SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - delete proxy; -} - -SWIGRUNTIME int SWIG_V8_GetInstancePtr(SWIGV8_VALUE valRef, void **ptr) { - if(!valRef->IsObject()) { - return SWIG_TypeError; - } - SWIGV8_OBJECT objRef = SWIGV8_OBJECT::Cast(valRef); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - - SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); - - if(cdata == NULL) { - return SWIG_ERROR; - } - - *ptr = cdata->swigCObject; - - return SWIG_OK; -} - -SWIGRUNTIME void SWIGV8_SetPrivateData(SWIGV8_OBJECT 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; - - obj->SetAlignedPointerInInternalField(0, cdata); - - cdata->handle.Reset(v8::Isolate::GetCurrent(), obj); - - 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); - } - -#if (SWIG_V8_VERSION < 0x0704) - cdata->handle.MarkIndependent(); -// Looks like future versions do not require that anymore: -// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 -#endif -} - -SWIGRUNTIME int SWIG_V8_ConvertPtr(SWIGV8_VALUE 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; - } - SWIGV8_OBJECT objRef = SWIGV8_OBJECT::Cast(valRef); - return SWIG_V8_ConvertInstancePtr(objRef, ptr, info, flags); -} - -SWIGRUNTIME SWIGV8_VALUE SWIG_V8_NewPointerObj(void *ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE_ESC(); - - SWIGV8_FUNCTION_TEMPLATE class_templ; - - if (ptr == NULL) { - v8::Local result = SWIGV8_NULL(); - SWIGV8_ESCAPE(result); - } - - 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); - } - - v8::Local result = class_templ->InstanceTemplate()->NewInstance(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked(); - - 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(); - - SWIGV8_VALUE 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(); - - SWIGV8_VALUE 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(SWIGV8_VALUE valRef) { - SWIGV8_HANDLESCOPE(); - - SWIGV8_OBJECT objRef = SWIGV8_TO_OBJECT(valRef); - if(objRef->InternalFieldCount() < 1) return false; - 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; - return (flag->IsBoolean() && SWIGV8_BOOLEAN_VALUE(flag)); -} - -SWIGRUNTIME -swig_type_info *SwigV8Packed_UnpackData(SWIGV8_VALUE valRef, void *ptr, size_t size) { - if (SwigV8Packed_Check(valRef)) { - SWIGV8_HANDLESCOPE(); - - SwigV8PackedData *sobj; - - SWIGV8_OBJECT objRef = SWIGV8_TO_OBJECT(valRef); - - sobj = static_cast(objRef->GetAlignedPointerFromInternalField(0)); - if (sobj == NULL || sobj->size != size) return 0; - memcpy(ptr, sobj->data, size); - return sobj->type; - } else { - return 0; - } -} - -SWIGRUNTIME -int SWIGV8_ConvertPacked(SWIGV8_VALUE 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; -} - -SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo &data) { - SwigV8PackedData *cdata = data.GetParameter(); - delete cdata; -} - -SWIGRUNTIME -SWIGV8_VALUE 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(); - - 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)); - - obj->SetAlignedPointerInInternalField(0, cdata); - - cdata->handle.Reset(v8::Isolate::GetCurrent(), obj); - - cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter); - -#if (SWIG_V8_VERSION < 0x0704) - cdata->handle.MarkIndependent(); -// Looks like future versions do not require that anymore: -// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 -#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 - -SWIGV8_VALUE SWIGV8_AppendOutput(SWIGV8_VALUE result, SWIGV8_VALUE obj) { - SWIGV8_HANDLESCOPE_ESC(); - - if (result->IsUndefined()) { - result = SWIGV8_ARRAY_NEW(0); - } else if (!result->IsArray()) { - SWIGV8_ARRAY tmparr = SWIGV8_ARRAY_NEW(0); - SWIGV8_ARRAY_SET(tmparr, 0, result); - result = tmparr; - } - - SWIGV8_ARRAY arr = SWIGV8_ARRAY::Cast(result); - SWIGV8_ARRAY_SET(arr, arr->Length(), obj); - SWIGV8_ESCAPE(arr); -} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg deleted file mode 100755 index c986eef0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptruntime.swg +++ /dev/null @@ -1,47 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 doesn't support anything that -// old so SWIG generated code can rely on these. - -// 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 - -#undef SWIG_V8_VERSION -#define SWIG_V8_VERSION ((V8_MAJOR_VERSION / 10) * 4096 + \ - (V8_MAJOR_VERSION % 10) * 256 + \ - (V8_MINOR_VERSION / 10) * 16 + \ - (V8_MINOR_VERSION % 10)) - -#include -#include -#include -#include -%} - -%insert(runtime) "swigrun.swg"; /* SWIG API */ -%insert(runtime) "swigerrors.swg"; /* SWIG errors */ - -%insert(runtime) "javascriptrun.swg" - diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg deleted file mode 100755 index 08613772..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascriptstrings.swg +++ /dev/null @@ -1,59 +0,0 @@ - -/* ------------------------------------------------------------ - * utility methods for char strings - * ------------------------------------------------------------ */ -%fragment("SWIG_AsCharPtrAndSize", "header", fragment="SWIG_pchar_descriptor") { -SWIGINTERN int -SWIG_AsCharPtrAndSize(SWIGV8_VALUE valRef, char** cptr, size_t* psize, int *alloc) -{ - if(valRef->IsString()) { - v8::Local js_str = v8::Local::Cast(valRef); - - size_t len = SWIGV8_UTF8_LENGTH(js_str) + 1; - char* cstr = (char*) %new_array(len, char); - 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()) { - SWIGV8_OBJECT obj = SWIGV8_OBJECT::Cast(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 SWIGV8_VALUE -SWIG_FromCharPtrAndSize(const char* carray, size_t size) -{ - if (carray) { - if (size > INT_MAX) { - // TODO: handle extra long strings - return SWIGV8_UNDEFINED(); - } else { - v8::Local js_str = SWIGV8_STRING_NEW2(carray, size); - return js_str; - } - } else { - return SWIGV8_UNDEFINED(); - } -} -} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg b/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg deleted file mode 100755 index 34764730..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/javascripttypemaps.swg +++ /dev/null @@ -1,43 +0,0 @@ -/* ------------------------------------------------------------ - * 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 SWIGV8_VALUE -#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(obj, type) - -/* Include the unified typemap library */ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i deleted file mode 100755 index 304f1fc9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i deleted file mode 100755 index c80263ae..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i deleted file mode 100755 index 464e6f31..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_complex.i +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i deleted file mode 100755 index 3e056e7d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i deleted file mode 100755 index 7803006c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_map.i +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i deleted file mode 100755 index 7b04d637..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_pair.i +++ /dev/null @@ -1,35 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i deleted file mode 100755 index 0afc2468..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i deleted file mode 100755 index 79320de6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i deleted file mode 100755 index dca90ff3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/std_vector.i +++ /dev/null @@ -1,99 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i deleted file mode 100755 index 03e87fa2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i b/win64/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i deleted file mode 100755 index 223a535a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/javascript/v8/typemaps.i +++ /dev/null @@ -1,148 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/win64/bin/swig/share/swig/4.1.0/linkruntime.c b/win64/bin/swig/share/swig/4.1.0/linkruntime.c old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/lua/_std_common.i b/win64/bin/swig/share/swig/4.1.0/lua/_std_common.i deleted file mode 100755 index eea67e45..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/_std_common.i +++ /dev/null @@ -1,93 +0,0 @@ -/* ----------------------------------------------------------------------------- - * _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/win64/bin/swig/share/swig/4.1.0/lua/argcargv.i b/win64/bin/swig/share/swig/4.1.0/lua/argcargv.i deleted file mode 100755 index dc96d215..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/argcargv.i +++ /dev/null @@ -1,57 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - - Use it as follows: - - %apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) } - extern int mainApp(size_t argc, const char **argv); - - then from lua: - - args = { "arg0", "arg1" } - mainApp(args) - - * ------------------------------------------------------------ */ - -%{ -SWIGINTERN int SWIG_argv_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; -} -%} - -%typemap(in) (int ARGC, char **ARGV) { - if (lua_istable(L,$input)) { - int i, size = SWIG_argv_size(L,$input); - $1 = ($1_ltype) size; - $2 = (char **) malloc((size+1)*sizeof(char *)); - for (i = 0; i < size; i++) { - lua_rawgeti(L,$input,i+1); - if (lua_isnil(L,-1)) - break; - $2[i] = (char *)lua_tostring(L, -1); - lua_pop(L,1); - } - $2[i]=NULL; - } else { - $1 = 0; $2 = 0; - lua_pushstring(L,"Expecting argv array"); - lua_error(L); - } -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - $1 = lua_istable(L,$input); -} - -%typemap(freearg) (int ARGC, char **ARGV) { - free((char *) $2); -} diff --git a/win64/bin/swig/share/swig/4.1.0/lua/carrays.i b/win64/bin/swig/share/swig/4.1.0/lua/carrays.i deleted file mode 100755 index 5b4fc21e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/carrays.i +++ /dev/null @@ -1,8 +0,0 @@ -/* 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/win64/bin/swig/share/swig/4.1.0/lua/factory.i b/win64/bin/swig/share/swig/4.1.0/lua/factory.i deleted file mode 100755 index 53e56623..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/factory.i +++ /dev/null @@ -1,23 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/lua/lua.swg b/win64/bin/swig/share/swig/4.1.0/lua/lua.swg deleted file mode 100755 index 2cd5a224..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/lua.swg +++ /dev/null @@ -1,236 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 it's 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 it's 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),$&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 -// it's 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/win64/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i b/win64/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i deleted file mode 100755 index 52f15b84..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/lua_fnptr.i +++ /dev/null @@ -1,124 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 it's 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/win64/bin/swig/share/swig/4.1.0/lua/luakw.swg b/win64/bin/swig/share/swig/4.1.0/lua/luakw.swg deleted file mode 100755 index 36ee44d9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/luakw.swg +++ /dev/null @@ -1,67 +0,0 @@ -/* - Warnings for Lua keywords, built-in names and bad names. -*/ - -#define LUAKW(x) %keywordwarn("'" `x` "' is a Lua keyword", 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/win64/bin/swig/share/swig/4.1.0/lua/luarun.swg b/win64/bin/swig/share/swig/4.1.0/lua/luarun.swg deleted file mode 100755 index dd64a13d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/luarun.swg +++ /dev/null @@ -1,1950 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) \ - do { if (!(expr)) { SWIG_Lua_pusherrstring(L, (char *) msg); goto fail; } } while (0) - - -/* 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 it's 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) */ - swig_lua_userdata* userData; - assert(lua_isuserdata(L,1)); /* just in case */ - userData = (swig_lua_userdata*)lua_touserdata(L,1); /* get the userdata address */ - - lua_pushfstring(L, "", userData->type->str, userData->ptr); - 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 its bases (recursively) for first instance of something that is - * not equal to SWIG_Lua_resolve_metamethod. (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 skipping searching metamethod in the given class and immediately going to searching in bases. skip_check - * is not carried 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 metamethods 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) -{ - int ret = SWIG_ERROR; - 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; - } - if (lua_islightuserdata(L,index)) - { - *ptr=lua_touserdata(L,index); - 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_RELEASE) == SWIG_POINTER_RELEASE) && !usr->own) - { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - if (flags & SWIG_POINTER_DISOWN) /* must disown the object */ - { - usr->own = 0; - } - if (!type) /* special cast void*, no casting fn */ - { - *ptr=usr->ptr; - ret = SWIG_OK; - } - else - { - cast=SWIG_TypeCheck(usr->type->name,type); /* performs normal type checking */ - if (cast) - { - int newmemory = 0; - *ptr=SWIG_TypeCast(cast,usr->ptr,&newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - ret = SWIG_OK; - } - } - if ((ret == SWIG_OK) && (flags & SWIG_POINTER_CLEAR)) - { - usr->ptr = 0; - } - } - return ret; -} - -SWIGRUNTIME void* SWIG_Lua_MustGetPtr(lua_State *L,int index,swig_type_info *type,int flags, - int argnum,const char *func_name){ - void *result = 0; - 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/win64/bin/swig/share/swig/4.1.0/lua/luaruntime.swg b/win64/bin/swig/share/swig/4.1.0/lua/luaruntime.swg deleted file mode 100755 index 18b4fdcf..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/luaruntime.swg +++ /dev/null @@ -1,104 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg b/win64/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg deleted file mode 100755 index ce963a20..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/luatypemaps.swg +++ /dev/null @@ -1,418 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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&($*1_ltype temp) -%{ temp=($*1_ltype)lua_tonumber(L,$input); $1=&temp;%} - -%typemap(in,checkfn="lua_isnumber") const unsigned int&($*1_ltype temp) -%{SWIG_contract_assert((lua_tonumber(L,$input)>=0),"number must not be negative"); -temp=($*1_ltype)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",fragment="") SWIGTYPE&& (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) %{ - res = SWIG_ConvertPtr(L, $input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type '$1_type' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $descriptor); - } - } - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -%} - -// 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($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($1),$descriptor))) - SWIG_fail_ptr("$symname",$argnum,$descriptor); -%} - -%typemap(out) SWIGTYPE (CLASS::*) -%{ - SWIG_NewMemberObj(L,(void*)(&$1),sizeof($1),$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 it's 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 it's 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 it's 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/win64/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i deleted file mode 100755 index b7ee2936..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, checkfn="SWIG_isptrtype", noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(L, $input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $descriptor(TYPE *)); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - SWIG_NewPointerObj(L, $1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); SWIG_arg++; -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(L, $input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/lua/std_common.i b/win64/bin/swig/share/swig/4.1.0/lua/std_common.i deleted file mode 100755 index c80263ae..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/std_common.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%apply size_t { std::size_t }; -%apply const size_t& { const std::size_t& }; - diff --git a/win64/bin/swig/share/swig/4.1.0/lua/std_deque.i b/win64/bin/swig/share/swig/4.1.0/lua/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/lua/std_except.i b/win64/bin/swig/share/swig/4.1.0/lua/std_except.i deleted file mode 100755 index 1700f677..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/std_except.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/lua/std_map.i b/win64/bin/swig/share/swig/4.1.0/lua/std_map.i deleted file mode 100755 index a639a47a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/std_map.i +++ /dev/null @@ -1,66 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/lua/std_pair.i b/win64/bin/swig/share/swig/4.1.0/lua/std_pair.i deleted file mode 100755 index 8ba27498..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/std_pair.i +++ /dev/null @@ -1,26 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/lua/std_string.i b/win64/bin/swig/share/swig/4.1.0/lua/std_string.i deleted file mode 100755 index 01fa12db..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/std_string.i +++ /dev/null @@ -1,125 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i deleted file mode 100755 index 424a53c2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, checkfn="SWIG_isptrtype", noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(L, $input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $descriptor(TYPE *)); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - SWIG_NewPointerObj(L, $1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); SWIG_arg++; -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(L, $input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/lua/std_vector.i b/win64/bin/swig/share/swig/4.1.0/lua/std_vector.i deleted file mode 100755 index ccb2dbf8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/std_vector.i +++ /dev/null @@ -1,140 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/lua/stl.i b/win64/bin/swig/share/swig/4.1.0/lua/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/lua/swigmove.i b/win64/bin/swig/share/swig/4.1.0/lua/swigmove.i deleted file mode 100755 index 25cf4739..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/swigmove.i +++ /dev/null @@ -1,18 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, checkfn="lua_isuserdata", noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(L, $input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - lua_pushfstring(L, "Cannot release ownership as memory is not owned for argument $argnum of type '$1_type' in $symname"); SWIG_fail; - } else { - SWIG_fail_ptr("$symname", $argnum, $&1_descriptor); - } - } - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/win64/bin/swig/share/swig/4.1.0/lua/typemaps.i b/win64/bin/swig/share/swig/4.1.0/lua/typemaps.i deleted file mode 100755 index cdabb05e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/typemaps.i +++ /dev/null @@ -1,554 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 it's 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 don't 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); - -*/ - -%{ -#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/win64/bin/swig/share/swig/4.1.0/lua/wchar.i b/win64/bin/swig/share/swig/4.1.0/lua/wchar.i deleted file mode 100755 index 33b804a5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/lua/wchar.i +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/math.i b/win64/bin/swig/share/swig/4.1.0/math.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/mzscheme/Makefile b/win64/bin/swig/share/swig/4.1.0/mzscheme/Makefile deleted file mode 100755 index c18c4dc2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/Makefile +++ /dev/null @@ -1,3 +0,0 @@ - -co: - co RCS/*.i* RCS/*.swg* diff --git a/win64/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg b/win64/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg deleted file mode 100755 index d8fc6cb5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/mzrun.swg +++ /dev/null @@ -1,521 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) \ - do { \ - 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); \ - } \ - } while (0) - -/* 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; - int own; -}; - -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 && proxy->own) { - ((Scheme_Prim *)proxy->type->clientdata)(1, (Scheme_Object **)&proxy); - } - } -} - -static Scheme_Object * -SWIG_MzScheme_NewPointerObj(void *ptr, swig_type_info *type, int owner) { - if (ptr) { - 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; - new_proxy->own = owner & SWIG_POINTER_OWN; - if (new_proxy->own) { - scheme_add_finalizer(new_proxy, mz_free_swig, NULL); - } - return (Scheme_Object *) new_proxy; - } else { - return scheme_make_null(); - } -} - -static int -SWIG_MzScheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type, int flags) { - swig_cast_info *cast; - int ret = SWIG_ERROR; - - 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 ((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE && !proxy->own) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - - 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 */ - ret = SWIG_OK; - } else { - return SWIG_ERROR; - } - } else { - *result = proxy->object; - ret = SWIG_OK; - } - - if (flags & SWIG_POINTER_DISOWN) { - scheme_subtract_finalizer(proxy, mz_free_swig, NULL); - proxy->own = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - proxy->object = 0; - } - } - return ret; -} - -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/win64/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg b/win64/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg deleted file mode 100755 index 33c685a5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/mzscheme.swg +++ /dev/null @@ -1,56 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i deleted file mode 100755 index f702b703..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'"); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_common.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/std_common.i deleted file mode 100755 index 39508921..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_common.i +++ /dev/null @@ -1,23 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_map.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/std_map.i deleted file mode 100755 index 1907e84a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_map.i +++ /dev/null @@ -1,1388 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i deleted file mode 100755 index b9d0b95e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_pair.i +++ /dev/null @@ -1,874 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/mzscheme/std_string.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/std_string.i deleted file mode 100755 index 73f995e1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_string.i +++ /dev/null @@ -1,64 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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()); - } - - %typemap(throws) string { - scheme_signal_error("%s: %s", FUNC_NAME, $1.c_str()); - } - - %typemap(throws) const string & { - scheme_signal_error("%s: %s", FUNC_NAME, $1.c_str()); - } -} - - diff --git a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i deleted file mode 100755 index 0d721b23..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type 'TYPE *'"); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i deleted file mode 100755 index b99c770d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/std_vector.i +++ /dev/null @@ -1,451 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i deleted file mode 100755 index baf5c1c7..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/swigmove.i +++ /dev/null @@ -1,19 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type '$1_type'"); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (argp == NULL) scheme_signal_error(FUNC_NAME ": swig-type-error (null reference)"); - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/win64/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i b/win64/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i deleted file mode 100755 index f1ddca87..00000000 --- a/win64/bin/swig/share/swig/4.1.0/mzscheme/typemaps.i +++ /dev/null @@ -1,399 +0,0 @@ -/* ----------------------------------------------------------------------------- - * typemaps.i - * ----------------------------------------------------------------------------- */ - -#define %set_output(obj) $result = obj -#define %set_varoutput(obj) $result = obj -#define %argument_fail(code, type, name, argn) scheme_wrong_type(FUNC_NAME, type, argn, argc, argv) -#define %as_voidptr(ptr) (void*)(ptr) - - -/* 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 & { - $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum, 0); - if ($1 == NULL) scheme_signal_error(FUNC_NAME ": swig-type-error (null reference)"); -} - -%typemap(in, noblock=1, fragment="") SWIGTYPE && (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) { - res = SWIG_ConvertPtr($input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - scheme_signal_error(FUNC_NAME ": cannot release ownership as memory is not owned for argument $argnum of type '$1_type'"); - } else { - %argument_fail(res, "$1_type", $symname, $argnum); - } - } - if (argp == NULL) scheme_signal_error(FUNC_NAME ": swig-type-error (null reference)"); - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -} - -%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); - $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); - $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); - -%typemap(throws) char * { - scheme_signal_error("%s: %s", FUNC_NAME, $1); -} - -/* 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/win64/bin/swig/share/swig/4.1.0/ocaml/carray.i b/win64/bin/swig/share/swig/4.1.0/ocaml/carray.i deleted file mode 100755 index b0f31f01..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/carray.i +++ /dev/null @@ -1,131 +0,0 @@ -%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; - const 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/win64/bin/swig/share/swig/4.1.0/ocaml/class.swg b/win64/bin/swig/share/swig/4.1.0/ocaml/class.swg deleted file mode 100755 index b177747f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/class.swg +++ /dev/null @@ -1,67 +0,0 @@ -(*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/win64/bin/swig/share/swig/4.1.0/ocaml/cstring.i b/win64/bin/swig/share/swig/4.1.0/ocaml/cstring.i deleted file mode 100755 index 1a7343fa..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/cstring.i +++ /dev/null @@ -1,268 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ocaml/director.swg b/win64/bin/swig/share/swig/4.1.0/ocaml/director.swg deleted file mode 100755 index 5b83221e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/director.swg +++ /dev/null @@ -1,101 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ocaml/extra-install.list b/win64/bin/swig/share/swig/4.1.0/ocaml/extra-install.list deleted file mode 100755 index e2702db3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/extra-install.list +++ /dev/null @@ -1,4 +0,0 @@ -# see top-level Makefile.in -swigp4.ml -swig.mli -swig.ml diff --git a/win64/bin/swig/share/swig/4.1.0/ocaml/ocaml.i b/win64/bin/swig/share/swig/4.1.0/ocaml/ocaml.i deleted file mode 100755 index bcf9ea2a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/ocaml.i +++ /dev/null @@ -1,50 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ocaml.i - * - * SWIG Configuration File for Ocaml - * ----------------------------------------------------------------------------- */ - -/* Insert common stuff */ -%insert(runtime) "swigrun.swg" - -/* Include headers */ -%insert(runtime) "ocamlrundec.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) "ocamlrun.swg" -/*#endif*/ - -%insert(classtemplate) "class.swg" - -/* 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/win64/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg b/win64/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg deleted file mode 100755 index bb8c89ae..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/ocaml.swg +++ /dev/null @@ -1,320 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ocaml.swg - * - * 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, fragment="") SWIGTYPE && (std::unique_ptr<$*1_ltype> rvrdeleter) %{ - $1 = ($ltype) caml_ptr_val($input,$1_descriptor); - rvrdeleter.reset($1); -%} - -%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 & { - const 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 && { - const 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)) ; -} - -%typemap(varout) SWIGTYPE { - $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)&$1, $&1_descriptor); -} - -#ifdef __cplusplus - -%typemap(out) SWIGTYPE { - $&1_ltype temp = new $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(varout) SWIGTYPE * { - $result = SWIG_Ocaml_ptr_to_val("create_$ntype_from_ptr", (void *)$1, $1_descriptor); -} - -%typemap(directorin) SWIGTYPE { - $<ype temp = new $1_ltype(SWIG_STD_MOVE($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); -} -/* 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(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/win64/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg b/win64/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg deleted file mode 100755 index 70bea56c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/ocamlkw.swg +++ /dev/null @@ -1,72 +0,0 @@ -#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/win64/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg b/win64/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg deleted file mode 100755 index 82506eba..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/ocamlrun.swg +++ /dev/null @@ -1,607 +0,0 @@ -/* -*-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(Bp_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); - const 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 const 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); - - const 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/win64/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg b/win64/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg deleted file mode 100755 index 96e5d8fa..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/ocamlrundec.swg +++ /dev/null @@ -1,212 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ocamlrundec.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) do { if(!(expr)) {SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, msg);} } while (0) - - 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/win64/bin/swig/share/swig/4.1.0/ocaml/preamble.swg b/win64/bin/swig/share/swig/4.1.0/ocaml/preamble.swg deleted file mode 100755 index 597c2c6e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/preamble.swg +++ /dev/null @@ -1,17 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/ocaml/std_common.i b/win64/bin/swig/share/swig/4.1.0/ocaml/std_common.i deleted file mode 100755 index 39c0dbed..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/std_common.i +++ /dev/null @@ -1,23 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ocaml/std_complex.i b/win64/bin/swig/share/swig/4.1.0/ocaml/std_complex.i deleted file mode 100755 index 1d7e9543..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/std_complex.i +++ /dev/null @@ -1,65 +0,0 @@ -// -*- 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/win64/bin/swig/share/swig/4.1.0/ocaml/std_deque.i b/win64/bin/swig/share/swig/4.1.0/ocaml/std_deque.i deleted file mode 100755 index d83fd576..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/std_deque.i +++ /dev/null @@ -1,28 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ocaml/std_except.i b/win64/bin/swig/share/swig/4.1.0/ocaml/std_except.i deleted file mode 100755 index c382af46..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/std_except.i +++ /dev/null @@ -1,23 +0,0 @@ -%{ -#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/win64/bin/swig/share/swig/4.1.0/ocaml/std_list.i b/win64/bin/swig/share/swig/4.1.0/ocaml/std_list.i deleted file mode 100755 index af572611..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/std_list.i +++ /dev/null @@ -1,217 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ocaml/std_map.i b/win64/bin/swig/share/swig/4.1.0/ocaml/std_map.i deleted file mode 100755 index 71a5d2e6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/std_map.i +++ /dev/null @@ -1,79 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ocaml/std_pair.i b/win64/bin/swig/share/swig/4.1.0/ocaml/std_pair.i deleted file mode 100755 index 539130ff..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ocaml/std_string.i b/win64/bin/swig/share/swig/4.1.0/ocaml/std_string.i deleted file mode 100755 index 56423ccd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/std_string.i +++ /dev/null @@ -1,136 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(varout) 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(varout) string * { - $result = caml_val_string_len((*$1).c_str(),(*$1).size()); -} - -%typemap(typecheck) string, const string & = char *; - -%typemap(throws) string, const string & "SWIG_OCamlThrowException(SWIG_OCamlRuntimeException, $1.c_str());" - -} - -#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/win64/bin/swig/share/swig/4.1.0/ocaml/std_vector.i b/win64/bin/swig/share/swig/4.1.0/ocaml/std_vector.i deleted file mode 100755 index 31283270..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/std_vector.i +++ /dev/null @@ -1,98 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ocaml/stl.i b/win64/bin/swig/share/swig/4.1.0/ocaml/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/ocaml/swig.ml b/win64/bin/swig/share/swig/4.1.0/ocaml/swig.ml deleted file mode 100755 index fa949369..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/swig.ml +++ /dev/null @@ -1,166 +0,0 @@ -(* -*- 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/win64/bin/swig/share/swig/4.1.0/ocaml/swig.mli b/win64/bin/swig/share/swig/4.1.0/ocaml/swig.mli deleted file mode 100755 index 64c8bf71..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/swig.mli +++ /dev/null @@ -1,62 +0,0 @@ -(* -*- 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/win64/bin/swig/share/swig/4.1.0/ocaml/swigmove.i b/win64/bin/swig/share/swig/4.1.0/ocaml/swigmove.i deleted file mode 100755 index 11db3298..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/swigmove.i +++ /dev/null @@ -1,11 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0) { - argp1 = ($&1_ltype) caml_ptr_val($input,$&1_descriptor); - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/win64/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml b/win64/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml deleted file mode 100755 index 87145042..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/swigp4.ml +++ /dev/null @@ -1,135 +0,0 @@ -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/win64/bin/swig/share/swig/4.1.0/ocaml/typecheck.i b/win64/bin/swig/share/swig/4.1.0/ocaml/typecheck.i deleted file mode 100755 index 8010958c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/typecheck.i +++ /dev/null @@ -1,197 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ocaml/typemaps.i b/win64/bin/swig/share/swig/4.1.0/ocaml/typemaps.i deleted file mode 100755 index 83fa2101..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/typemaps.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ---------------------------------------------------------------------------- - * typemaps.i - * - * These typemaps provide support for input/output arguments for C/C++ pointers - * and C++ references. -* ---------------------------------------------------------------------------- */ - -%define INPUT_OUTPUT_INOUT_TYPEMAPS(type, c_to_ocaml, ocaml_to_c) -%typemap(in) type *INPUT(type temp), type &INPUT(type temp) { - temp = (type)ocaml_to_c($input); - $1 = &temp; -} -%typemap(typecheck) type *INPUT = type; -%typemap(typecheck) type &INPUT = type; - -%typemap(in, numinputs=0) type *OUTPUT($*1_ltype temp), type &OUTPUT($*1_ltype temp) "$1 = &temp;" -%typemap(argout) type *OUTPUT, type &OUTPUT { - swig_result = caml_list_append(swig_result, c_to_ocaml(*$1)); -} -%typemap(in) type *INOUT = type *INPUT; -%typemap(in) type &INOUT = type &INPUT; - -%typemap(argout) type *INOUT = type *OUTPUT; -%typemap(argout) type &INOUT = type &OUTPUT; - -%typemap(typecheck) type *INOUT = type; -%typemap(typecheck) type &INOUT = type; -%enddef - -INPUT_OUTPUT_INOUT_TYPEMAPS(bool, caml_val_bool, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(int, caml_val_int, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(long, caml_val_long, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(short, caml_val_int, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(char, caml_val_char, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(signed char, caml_val_char, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(float, caml_val_float, caml_double_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(double, caml_val_double, caml_double_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned int, caml_val_uint, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long, caml_val_ulong, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned short, caml_val_ushort, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned char, caml_val_uchar, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(long long, caml_val_long, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long long, caml_val_ulong, caml_long_val); -#undef INPUT_OUTPUT_INOUT_TYPEMAPS diff --git a/win64/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg b/win64/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg deleted file mode 100755 index eb8e5b06..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ocaml/typeregister.swg +++ /dev/null @@ -1,2 +0,0 @@ -SWIGEXT void SWIG_init() { - SWIG_InitializeModule(0); diff --git a/win64/bin/swig/share/swig/4.1.0/octave/argcargv.i b/win64/bin/swig/share/swig/4.1.0/octave/argcargv.i deleted file mode 100755 index 6d6ba0fa..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/argcargv.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - if ($input.is_scalar_type()) { - $1 = 0; $2 = NULL; - %argument_fail(SWIG_TypeError, "'int ARGC, char **ARGV' is not a list", $symname, $argnum); - } - octave_value_list list = $input.list_value(); - int i, len = list.length(); - $1 = ($1_ltype) len; - $2 = (char **) malloc((len+1)*sizeof(char *)); - for (i = 0; i < len; i++) { - if (!list(i).is_string()) { - $1 = 0; - %argument_fail(SWIG_TypeError, "'int ARGC, char **ARGV' use a non-string", $symname, $argnum); - } - $2[i] = (char *)list(i).string_value().c_str(); - } - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - $1 = 0; - const octave_value& ov = $input; - if (!ov.is_scalar_type()) { - octave_value_list list = ov.list_value(); - int i, len = list.length(); - $1 = 1; - for (i = 0; i < len; i++) { - if (!list(i).is_string()) { - $1 = 0; - break; - } - } - } -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/win64/bin/swig/share/swig/4.1.0/octave/attribute.i b/win64/bin/swig/share/swig/4.1.0/octave/attribute.i deleted file mode 100755 index b18f9ae8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i deleted file mode 100755 index 96cadd42..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/boost_shared_ptr.i +++ /dev/null @@ -1,401 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/win64/bin/swig/share/swig/4.1.0/octave/carrays.i b/win64/bin/swig/share/swig/4.1.0/octave/carrays.i deleted file mode 100755 index eb4fd683..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/carrays.i +++ /dev/null @@ -1,5 +0,0 @@ -%define %array_class(TYPE,NAME) - %array_class_wrap(TYPE,NAME,__paren__,__paren_asgn__) -%enddef - -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/cdata.i b/win64/bin/swig/share/swig/4.1.0/octave/cdata.i deleted file mode 100755 index 1c6de446..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/cmalloc.i b/win64/bin/swig/share/swig/4.1.0/octave/cmalloc.i deleted file mode 100755 index d3a1222e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/director.swg b/win64/bin/swig/share/swig/4.1.0/octave/director.swg deleted file mode 100755 index 6b6ca91d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/director.swg +++ /dev/null @@ -1,146 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) - -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/win64/bin/swig/share/swig/4.1.0/octave/exception.i b/win64/bin/swig/share/swig/4.1.0/octave/exception.i deleted file mode 100755 index 73b14b72..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/exception.i +++ /dev/null @@ -1,14 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/octave/extra-install.list b/win64/bin/swig/share/swig/4.1.0/octave/extra-install.list deleted file mode 100755 index 0b9ddb3d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/extra-install.list +++ /dev/null @@ -1,2 +0,0 @@ -# see top-level Makefile.in -octheaders.hpp diff --git a/win64/bin/swig/share/swig/4.1.0/octave/factory.i b/win64/bin/swig/share/swig/4.1.0/octave/factory.i deleted file mode 100755 index 377f0080..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/implicit.i b/win64/bin/swig/share/swig/4.1.0/octave/implicit.i deleted file mode 100755 index 292f65f1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/implicit.i +++ /dev/null @@ -1,7 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/octave/octave.swg b/win64/bin/swig/share/swig/4.1.0/octave/octave.swg deleted file mode 100755 index 2f458aa8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octave.swg +++ /dev/null @@ -1,8 +0,0 @@ -%include -%include -%include -%include -%include -%include - -%define %docstring %feature("docstring") %enddef diff --git a/win64/bin/swig/share/swig/4.1.0/octave/octcomplex.swg b/win64/bin/swig/share/swig/4.1.0/octave/octcomplex.swg deleted file mode 100755 index 296f9926..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octcomplex.swg +++ /dev/null @@ -1,92 +0,0 @@ -/* - 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 - accessor 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.0f); - 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/win64/bin/swig/share/swig/4.1.0/octave/octcontainer.swg b/win64/bin/swig/share/swig/4.1.0/octave/octcontainer.swg deleted file mode 100755 index 43994add..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octcontainer.swg +++ /dev/null @@ -1,623 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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. - * ----------------------------------------------------------------------------- */ - -#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="") -{ - -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() 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)) - 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; - } - } -%#if SWIG_OCTAVE_PREREQ(6,0,0) - catch (octave::execution_exception& exec) { - } -%#endif - catch (std::exception& e) { -%#if SWIG_OCTAVE_PREREQ(6,0,0) - if (seq) // Know that octave is not in an error state -%#else - if (seq&&!error_state) -%#endif - 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/win64/bin/swig/share/swig/4.1.0/octave/octfragments.swg b/win64/bin/swig/share/swig/4.1.0/octave/octfragments.swg deleted file mode 100755 index d3f5a12f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octfragments.swg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win64/bin/swig/share/swig/4.1.0/octave/octheaders.hpp b/win64/bin/swig/share/swig/4.1.0/octave/octheaders.hpp deleted file mode 100755 index a103ebb8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octheaders.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// -// This header includes all C++ headers required for generated Octave wrapper code. -// Using a single header file allows pre-compilation of Octave headers, as follows: -// * Check out this header file: -// swig -octave -co octheaders.hpp -// * Pre-compile header file into octheaders.hpp.gch: -// g++ -c ... octheaders.hpp -// * Use pre-compiled header file: -// g++ -c -include octheaders.hpp ... -// - -#if !defined(SWIG_OCTAVE_OCTHEADERS_HPP) -#define SWIG_OCTAVE_OCTHEADERS_HPP - -// Required C++ headers -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Minimal headers to define Octave version -#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) - -// Required Octave headers -#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 - -#endif // !defined(SWIG_OCTAVE_OCTHEADERS_HPP) diff --git a/win64/bin/swig/share/swig/4.1.0/octave/octiterators.swg b/win64/bin/swig/share/swig/4.1.0/octave/octiterators.swg deleted file mode 100755 index 10bbe97d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octiterators.swg +++ /dev/null @@ -1,357 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/octave/octopers.swg b/win64/bin/swig/share/swig/4.1.0/octave/octopers.swg deleted file mode 100755 index 812a3d58..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octopers.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg b/win64/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg deleted file mode 100755 index d56413cb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octprimtypes.swg +++ /dev/null @@ -1,254 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/octave/octrun.swg b/win64/bin/swig/share/swig/4.1.0/octave/octrun.swg deleted file mode 100755 index aab557cd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octrun.swg +++ /dev/null @@ -1,1669 +0,0 @@ -#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 - -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; } - -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { - return execute(tw,nargout,args); - } -#endif -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave_value_list execute(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -#else - octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -#endif - 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; - - }; -#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 thisown; // 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), thisown(_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 (thisown) { - ++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; - try { - a = out.int_vector_value(); - } - catch (octave::execution_exception& oee) { - return dim_vector(1,1); - } -#else - Array a = out.int_vector_value(); - if (error_state) return dim_vector(1,1); -#endif - 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.thisown = 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; - int clear_pointer = 0; - - if (own) - *own = 0; - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !thisown) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (own) - *own = *own | thisown; - if (flags & SWIG_POINTER_DISOWN) { - thisown = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - clear_pointer = 1; - } - } - - if (!type && types.size()) { - if (vptr) { - *vptr = types[0].second.ptr; - if (clear_pointer) - types[0].second.ptr = 0; - } - return SWIG_OK; - } - for (unsigned int j = 0; j < types.size(); ++j) - if (type == types[j].first) { - if (vptr) { - *vptr = types[j].second.ptr; - if (clear_pointer) - types[j].second.ptr = 0; - } - 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; - } - if (clear_pointer) - types[j].second.ptr = 0; - } - res = SWIG_OK; - break; - } - return res; - } - - bool is_owned() const { - return thisown; - } - -#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; - } - -#if SWIG_OCTAVE_PREREQ(6,0,0) - virtual bool isstruct() const { -#else - virtual bool is_map() const { -#endif - 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(); - } - -#if SWIG_OCTAVE_PREREQ(4,4,0) - virtual bool isobject() const { -#else - virtual bool is_object() const { -#endif - 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, -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::mach_info::float_format fmt) { -#else - oct_mach_info::float_format fmt) { -#endif - 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) - { - // Ensure type_id() is set correctly - if (t_id == -1) { - t_id = octave_swig_ref::static_type_id(); - } - } - - ~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(); } - -#if SWIG_OCTAVE_PREREQ(6,0,0) - virtual bool isstruct() const - { return ptr->isstruct(); } -#else - virtual bool is_map() const - { return ptr->is_map(); } -#endif - - 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); } - -#if SWIG_OCTAVE_PREREQ(4,4,0) - virtual bool isobject() const - { return ptr->isobject(); } -#else - virtual bool is_object() const - { return ptr->is_object(); } -#endif - - 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, -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::mach_info::float_format fmt) -#else - oct_mach_info::float_format fmt) -#endif - { 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); } - -#if SWIG_OCTAVE_PREREQ(4,4,0) - static void set_type_id(int type_id) { t_id=type_id; } -#endif - - 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) - { - // Ensure type_id() is set correctly - if (t_id == -1) { - t_id = octave_swig_packed::static_type_id(); - } - } - - 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, -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::mach_info::float_format fmt) { -#else - oct_mach_info::float_format fmt) { -#endif - 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 - -#if SWIG_OCTAVE_PREREQ(4,4,0) - static void set_type_id(int type_id) { t_id=type_id; } -#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; - - if (ptr) { -#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)); - } - return octave_value(Matrix()); // null matrix -} - -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(6,0,0) - octave::interpreter *interp = octave::interpreter::the_interpreter (); - return interp->global_varval(name); -#else -#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 -#endif -} - -SWIGRUNTIME void SWIG_Octave_SetGlobalValue(std::string name, const octave_value& value) { -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::interpreter *interp = octave::interpreter::the_interpreter (); - interp->global_assign(name, value); -#elif 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_scope symscope = octave::interpreter::the_interpreter()->get_current_scope(); -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::interpreter *interp = octave::interpreter::the_interpreter (); - interp->assign(name, interp->global_varval(name)); - octave::tree_evaluator& tree_eval = interp->get_evaluator(); - octave::call_stack& callStack = tree_eval.get_call_stack(); - std::shared_ptr stackFrame = callStack.get_current_stack_frame(); - octave::symbol_record sym=symscope.lookup_symbol(name); - stackFrame->mark_global(sym); -#else - octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); - symscope.assign(name, symtab.global_varval(name)); - symscope.mark_global(name); -#endif -#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/win64/bin/swig/share/swig/4.1.0/octave/octruntime.swg b/win64/bin/swig/share/swig/4.1.0/octave/octruntime.swg deleted file mode 100755 index 14ad3a6a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octruntime.swg +++ /dev/null @@ -1,425 +0,0 @@ -#ifdef SWIG_OCTAVE_EXTERNAL_OCTHEADERS -%insert(runtime) %{ -#include "octheaders.hpp" -%} -#else -%insert(runtime) "octheaders.hpp"; -#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(6,0,0) -#elif 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(6,0,0) -#elif 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_exit_usage = "-*- texinfo -*- \n\ -@deftypefn {Loadable Function} {} swig_exit([@var{exit_status}])\n\ -Exit Octave without performing any memory cleanup.\n\ -@end deftypefn"; - -DEFUN_DLD( swig_exit, args, nargout, swig_exit_usage ) { - if (args.length() > 1) { - error("swig_exit: must be called with at most one arguments"); - return octave_value_list(); - } - int exit_status = 0; - if (args.length() == 1) { - exit_status = args(0).int_value(); - } - ::_Exit(exit_status); - return octave_value(); -} - -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"; - -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.*, reappeared in 4.2.*, hack not possible in 4.4.* or later due to - // removal of octave_exit, so turn on for all versions between 3.2.*. and 4.4.*. - // can be turned off with macro definition. -#ifndef SWIG_OCTAVE_NO_SEGFAULT_HACK -#if !SWIG_OCTAVE_PREREQ(4,4,0) -#if SWIG_OCTAVE_PREREQ(3,2,0) - octave_exit = ::_Exit; -#endif -#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; - for (int i = 0; i < types.numel(); ++i) { - if (types(i) == octave_swig_ref::static_type_name()) { - register_octave_swig_ref = false; - octave_swig_ref::set_type_id(i); - } - if (types(i) == octave_swig_packed::static_type_name()) { - register_octave_swig_packed = false; - octave_swig_packed::set_type_id(i); - } - } - if (register_octave_swig_ref) { - octave_swig_ref::register_type(); - } - if (register_octave_swig_packed) { - octave_swig_packed::register_type(); - } - } -#else - octave_swig_ref::register_type(); - octave_swig_packed::register_type(); -#endif - SWIG_InitializeModule(0); - SWIG_PropagateClientData(); - -#if SWIG_OCTAVE_PREREQ(6,0,0) - octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); - octave::call_stack& stack = tree_eval.get_call_stack(); - octave_function *me = stack.current_function(); -#elif 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(); - } - if (!SWIG_Octave_InstallFunction(me, "swig_exit")) { - 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/win64/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg b/win64/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg deleted file mode 100755 index e5770fae..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octstdcommon.swg +++ /dev/null @@ -1,222 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg b/win64/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg deleted file mode 100755 index 2321f378..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octtypemaps.swg +++ /dev/null @@ -1,99 +0,0 @@ - -// 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 -%runtime %{ -SWIGINTERN void SWIG_Octave_Raise(const octave_value &obj, const char *type) { - if (obj.is_string()) - error("%s", obj.string_value().c_str()); - else - error("C++ side threw an exception of type %s", type); -} -%} -#define SWIG_Raise(obj, type, desc) SWIG_Octave_Raise(obj, type) - -// 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/win64/bin/swig/share/swig/4.1.0/octave/octuserdir.swg b/win64/bin/swig/share/swig/4.1.0/octave/octuserdir.swg deleted file mode 100755 index e611d09c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/octuserdir.swg +++ /dev/null @@ -1,72 +0,0 @@ -/* ------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/octave/std_alloc.i b/win64/bin/swig/share/swig/4.1.0/octave/std_alloc.i deleted file mode 100755 index 2b9342fb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i deleted file mode 100755 index 304f1fc9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/octave/std_basic_string.i b/win64/bin/swig/share/swig/4.1.0/octave/std_basic_string.i deleted file mode 100755 index 7aed125d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_basic_string.i +++ /dev/null @@ -1,64 +0,0 @@ -#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/win64/bin/swig/share/swig/4.1.0/octave/std_carray.i b/win64/bin/swig/share/swig/4.1.0/octave/std_carray.i deleted file mode 100755 index e69de29b..00000000 diff --git a/win64/bin/swig/share/swig/4.1.0/octave/std_char_traits.i b/win64/bin/swig/share/swig/4.1.0/octave/std_char_traits.i deleted file mode 100755 index e60261f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/std_common.i b/win64/bin/swig/share/swig/4.1.0/octave/std_common.i deleted file mode 100755 index 73b79be7..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_common.i +++ /dev/null @@ -1,72 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/octave/std_complex.i b/win64/bin/swig/share/swig/4.1.0/octave/std_complex.i deleted file mode 100755 index cf10e1d4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_complex.i +++ /dev/null @@ -1,25 +0,0 @@ -/* - * STD C++ complex typemaps - */ - -%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/win64/bin/swig/share/swig/4.1.0/octave/std_container.i b/win64/bin/swig/share/swig/4.1.0/octave/std_container.i deleted file mode 100755 index accdb130..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/std_deque.i b/win64/bin/swig/share/swig/4.1.0/octave/std_deque.i deleted file mode 100755 index 75c9a883..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_deque.i +++ /dev/null @@ -1,25 +0,0 @@ -// 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/win64/bin/swig/share/swig/4.1.0/octave/std_except.i b/win64/bin/swig/share/swig/4.1.0/octave/std_except.i deleted file mode 100755 index 3e056e7d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/std_list.i b/win64/bin/swig/share/swig/4.1.0/octave/std_list.i deleted file mode 100755 index a38e8f89..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_list.i +++ /dev/null @@ -1,26 +0,0 @@ -// 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/win64/bin/swig/share/swig/4.1.0/octave/std_map.i b/win64/bin/swig/share/swig/4.1.0/octave/std_map.i deleted file mode 100755 index cb4a20c3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_map.i +++ /dev/null @@ -1,157 +0,0 @@ -// 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/win64/bin/swig/share/swig/4.1.0/octave/std_pair.i b/win64/bin/swig/share/swig/4.1.0/octave/std_pair.i deleted file mode 100755 index 30202407..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_pair.i +++ /dev/null @@ -1,147 +0,0 @@ -// 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/win64/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i deleted file mode 100755 index 01a0e9dd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/std_string.i b/win64/bin/swig/share/swig/4.1.0/octave/std_string.i deleted file mode 100755 index 0afc2468..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i deleted file mode 100755 index 79320de6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/octave/std_vector.i b/win64/bin/swig/share/swig/4.1.0/octave/std_vector.i deleted file mode 100755 index ba0372ea..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_vector.i +++ /dev/null @@ -1,26 +0,0 @@ -// 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/win64/bin/swig/share/swig/4.1.0/octave/std_wstring.i b/win64/bin/swig/share/swig/4.1.0/octave/std_wstring.i deleted file mode 100755 index 0afc2468..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/std_wstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/stl.i b/win64/bin/swig/share/swig/4.1.0/octave/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/octave/swigmove.i b/win64/bin/swig/share/swig/4.1.0/octave/swigmove.i deleted file mode 100755 index 03e87fa2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/octave/typemaps.i b/win64/bin/swig/share/swig/4.1.0/octave/typemaps.i deleted file mode 100755 index da64f2d0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/octave/typemaps.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/Makefile.in b/win64/bin/swig/share/swig/4.1.0/perl5/Makefile.in deleted file mode 100755 index 648c032d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/Makefile.in +++ /dev/null @@ -1,120 +0,0 @@ -# --------------------------------------------------------------- -# SWIG Perl5 Makefile -# -# This file can be used to build various Perl5 extensions with SWIG. -# By default this file is set up for dynamic loading, but it can -# be easily customized for static extensions by modifying various -# portions of the file. -# -# SRCS = C source files -# CXXSRCS = C++ source files -# OBJCSRCS = Objective-C source files -# OBJS = Additional .o files (compiled previously) -# INTERFACE = SWIG interface file -# TARGET = Name of target module or executable -# -# Many portions of this file were created by the SWIG configure -# script and should already reflect your machine. -#---------------------------------------------------------------- - -SRCS = -CXXSRCS = -OBJCSRCS = -OBJS = -INTERFACE = -WRAPFILE = $(INTERFACE:.i=_wrap.c) -WRAPOBJ = $(INTERFACE:.i=_wrap.o) -TARGET = module@SO@ # Use this kind of target for dynamic loading -#TARGET = myperl # Use this target for static linking - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -CC = @CC@ -CXX = @CXX@ -OBJC = @CC@ -Wno-import # -Wno-import needed for gcc -CFLAGS = -INCLUDES = -LIBS = - -# SWIG Options -# SWIG = location of the SWIG executable -# SWIGOPT = SWIG compiler options -# SWIGCC = Compiler used to compile the wrapper file - -SWIG = $(exec_prefix)/bin/swig -SWIGOPT = -perl5 -SWIGCC = $(CC) - -# SWIG Library files. Uncomment this to statically rebuild Perl -#SWIGLIBS = -static -lperlmain.i - -# Rules for creating .o files from source. - -COBJS = $(SRCS:.c=.o) -CXXOBJS = $(CXXSRCS:.cxx=.o) -OBJCOBJS = $(OBJCSRCS:.m=.o) -ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) - -# Command that will be used to build the final extension. -BUILD = $(SWIGCC) - -# Uncomment the following if you are using dynamic loading -CCSHARED = @CCSHARED@ -BUILD = @LDSHARED@ - -# Uncomment the following if you are using dynamic loading with C++ and -# need to provide additional link libraries (this is not always required). - -#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ - -L/usr/local/lib -lg++ -lstdc++ -lgcc - -# Perl installation - -PERL_INCLUDE = -I@PERL5EXT@ -PERL_LIB = -L@PERL5EXT@ -lperl -PERL_FLAGS = -Dbool=char -Dexplicit= - -# Build libraries (needed for static builds) - -LIBM = @LIBM@ -LIBC = @LIBC@ -SYSLIBS = $(LIBM) $(LIBC) @LIBS@ - -# Build options - -BUILD_LIBS = $(LIBS) # Dynamic loading - -# Compilation rules for non-SWIG components - -.SUFFIXES: .c .cxx .m - -.c.o: - $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - -.cxx.o: - $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< - -.m.o: - $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - - -# ---------------------------------------------------------------------- -# Rules for building the extension -# ---------------------------------------------------------------------- - -all: $(TARGET) - -# Convert the wrapper file into an object file - -$(WRAPOBJ) : $(WRAPFILE) - $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(PERL_INCLUDE) $(PERL_FLAGS) $(WRAPFILE) - -$(WRAPFILE) : $(INTERFACE) - $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) - -$(TARGET): $(WRAPOBJ) $(ALLOBJS) - $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) - -clean: - rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/Makefile.pl b/win64/bin/swig/share/swig/4.1.0/perl5/Makefile.pl deleted file mode 100755 index b7eb4053..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/Makefile.pl +++ /dev/null @@ -1,19 +0,0 @@ -# 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/win64/bin/swig/share/swig/4.1.0/perl5/argcargv.i b/win64/bin/swig/share/swig/4.1.0/perl5/argcargv.i deleted file mode 100755 index e558a6c5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/argcargv.i +++ /dev/null @@ -1,32 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - int i; - I32 len; - AV *av = (AV *)SvRV($input); - if (SvTYPE(av) != SVt_PVAV) { - SWIG_croak("in method '$symname', Expecting reference to argv array"); - goto fail; - } - len = av_len(av) + 1; - $1 = ($1_ltype) len; - $2 = (char **) malloc((len+1)*sizeof(char *)); - for (i = 0; i < len; i++) { - SV **tv = av_fetch(av, i, 0); - $2[i] = SvPV_nolen(*tv); - } - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - AV *av = (AV *)SvRV($input); - $1 = SvTYPE(av) == SVt_PVAV; -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/attribute.i b/win64/bin/swig/share/swig/4.1.0/perl5/attribute.i deleted file mode 100755 index b18f9ae8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/carrays.i b/win64/bin/swig/share/swig/4.1.0/perl5/carrays.i deleted file mode 100755 index 4b0f2369..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/carrays.i +++ /dev/null @@ -1,2 +0,0 @@ -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/cdata.i b/win64/bin/swig/share/swig/4.1.0/perl5/cdata.i deleted file mode 100755 index 1c6de446..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/cmalloc.i b/win64/bin/swig/share/swig/4.1.0/perl5/cmalloc.i deleted file mode 100755 index d3a1222e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/cpointer.i b/win64/bin/swig/share/swig/4.1.0/perl5/cpointer.i deleted file mode 100755 index 0e75cbcd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/cstring.i b/win64/bin/swig/share/swig/4.1.0/perl5/cstring.i deleted file mode 100755 index 033677b3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/director.swg b/win64/bin/swig/share/swig/4.1.0/perl5/director.swg deleted file mode 100755 index 9526915e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/director.swg +++ /dev/null @@ -1,317 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/perl5/exception.i b/win64/bin/swig/share/swig/4.1.0/perl5/exception.i deleted file mode 100755 index a367fef5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/exception.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) -} diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/extra-install.list b/win64/bin/swig/share/swig/4.1.0/perl5/extra-install.list deleted file mode 100755 index db5e1c76..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/extra-install.list +++ /dev/null @@ -1,2 +0,0 @@ -# see top-level Makefile.in -Makefile.pl noembed.h diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/factory.i b/win64/bin/swig/share/swig/4.1.0/perl5/factory.i deleted file mode 100755 index 377f0080..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/noembed.h b/win64/bin/swig/share/swig/4.1.0/perl5/noembed.h deleted file mode 100755 index 655e6826..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/noembed.h +++ /dev/null @@ -1,116 +0,0 @@ -/* 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/win64/bin/swig/share/swig/4.1.0/perl5/perl5.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perl5.swg deleted file mode 100755 index 157302fd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perl5.swg +++ /dev/null @@ -1,42 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg deleted file mode 100755 index 8b6d8efb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlerrors.swg +++ /dev/null @@ -1,34 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg deleted file mode 100755 index 3a0bcbe1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/win64/bin/swig/share/swig/4.1.0/perl5/perlhead.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlhead.swg deleted file mode 100755 index ee355265..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlhead.swg +++ /dev/null @@ -1,91 +0,0 @@ -#ifdef __cplusplus -/* Needed on some windows machines---since MS plays funny games with the header files under C++ */ -#include -#include -extern "C" { -#endif - -#if __GNUC__ >= 10 -#if defined(__cplusplus) -#pragma GCC diagnostic ignored "-Wvolatile" -#endif -#endif - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#if __GNUC__ >= 10 -#pragma GCC diagnostic pop -#endif - -/* PERL_REVISION was added in Perl 5.6. */ -#if !defined PERL_REVISION || (PERL_REVISION-0 == 5 && PERL_VERSION-0 < 8) -# error SWIG requires Perl >= 5.8.0 -#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 - -#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/win64/bin/swig/share/swig/4.1.0/perl5/perlinit.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlinit.swg deleted file mode 100755 index 2a5e15c0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlinit.swg +++ /dev/null @@ -1,78 +0,0 @@ - -/* Export the SWIG initialization function */ -%header %{ -#ifdef __cplusplus -extern "C" -#endif -#ifndef MULTIPLICITY -SWIGEXPORT void SWIG_init (CV* cv); -#else -SWIGEXPORT void SWIG_init (pTHXo_ CV* cv); -#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/win64/bin/swig/share/swig/4.1.0/perl5/perlkw.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlkw.swg deleted file mode 100755 index 45deac6c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlkw.swg +++ /dev/null @@ -1,251 +0,0 @@ -/* 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/win64/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg deleted file mode 100755 index b14854ba..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlmacros.swg +++ /dev/null @@ -1,2 +0,0 @@ -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/perlmain.i b/win64/bin/swig/share/swig/4.1.0/perl5/perlmain.i deleted file mode 100755 index cc0a1200..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlmain.i +++ /dev/null @@ -1,82 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/perl5/perlopers.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlopers.swg deleted file mode 100755 index b65e1963..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlopers.swg +++ /dev/null @@ -1,54 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg deleted file mode 100755 index e04b7439..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlprimtypes.swg +++ /dev/null @@ -1,364 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/perl5/perlrun.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlrun.swg deleted file mode 100755 index 2c8c4466..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlrun.swg +++ /dev/null @@ -1,493 +0,0 @@ -/* ----------------------------------------------------------------------------- - * perlrun.swg - * - * This file contains the runtime support for Perl modules - * and includes code for managing global variables and pointer - * type checking. - * ----------------------------------------------------------------------------- */ - -#define SWIG_PERL_OBJECT_DECL -#define SWIG_PERL_OBJECT_CALL - -/* 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 */ -#ifndef MULTIPLICITY -# define SWIG_CALLXS(_name) _name(cv) -#else -# define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) -#endif - -#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 */ - -static void SWIGUNUSED SWIG_croak_null() -{ - SV *err = get_sv("@", GV_ADD); - if (sv_isobject(err)) - croak(0); - else - croak("%s", SvPV_nolen(err)); -} - - -/* - 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; - int check_owned_pointer_release = (flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE; - - 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) || check_owned_pointer_release)) { - /* - * 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); - int owned = 0; - 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)) { - owned = 1; - if (flags & SWIG_POINTER_DISOWN) { - hv_delete_ent(hv, obj, 0, 0); - } - } - } - if (check_owned_pointer_release && !owned) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - } - - if (tsv && (flags & SWIG_POINTER_CLEAR)) { - SvIV_set(tsv, 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 */ -#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 -{ - 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/win64/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg deleted file mode 100755 index 43ff5a71..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlruntime.swg +++ /dev/null @@ -1,8 +0,0 @@ - -%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/win64/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg deleted file mode 100755 index b418a04c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perlstrings.swg +++ /dev/null @@ -1,59 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg deleted file mode 100755 index d45b86e8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perltypemaps.swg +++ /dev/null @@ -1,104 +0,0 @@ -/* ------------------------------------------------------------ - * 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), $1_descriptor); -} - -%typemap(varout) SWIGTYPE *const = SWIGTYPE *; - diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg b/win64/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg deleted file mode 100755 index 45bd1dc6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/perluserdir.swg +++ /dev/null @@ -1,2 +0,0 @@ -#define %perlcode %insert("perl") - diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/reference.i b/win64/bin/swig/share/swig/4.1.0/perl5/reference.i deleted file mode 100755 index 604d2105..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/reference.i +++ /dev/null @@ -1,261 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i deleted file mode 100755 index 304f1fc9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/std_common.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_common.i deleted file mode 100755 index e577e347..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_common.i +++ /dev/null @@ -1,28 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/perl5/std_deque.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/std_except.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_except.i deleted file mode 100755 index 3e056e7d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/std_list.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_list.i deleted file mode 100755 index 0e27201d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_list.i +++ /dev/null @@ -1,377 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/perl5/std_map.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_map.i deleted file mode 100755 index 1f029c83..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_map.i +++ /dev/null @@ -1,80 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/perl5/std_pair.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_pair.i deleted file mode 100755 index 539130ff..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/perl5/std_string.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_string.i deleted file mode 100755 index 013b834f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_string.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i deleted file mode 100755 index 79320de6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/std_vector.i b/win64/bin/swig/share/swig/4.1.0/perl5/std_vector.i deleted file mode 100755 index ddf88f04..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/std_vector.i +++ /dev/null @@ -1,592 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/perl5/swigmove.i b/win64/bin/swig/share/swig/4.1.0/perl5/swigmove.i deleted file mode 100755 index 03e87fa2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/perl5/typemaps.i b/win64/bin/swig/share/swig/4.1.0/perl5/typemaps.i deleted file mode 100755 index 13f0c7f6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/perl5/typemaps.i +++ /dev/null @@ -1,371 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/php/argcargv.i b/win64/bin/swig/share/swig/4.1.0/php/argcargv.i deleted file mode 100755 index 95f87b85..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/argcargv.i +++ /dev/null @@ -1,40 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - int len, i; - zval *val; - zend_array *ar; - if (Z_TYPE($input) != IS_ARRAY) { - SWIG_PHP_Error(E_ERROR, "Type error in '$symname'. Expected array"); - goto fail; - } - ar = Z_ARR($input); - len = zend_array_count(ar); - $1 = ($1_ltype) len; - $2 = (char **) malloc((len+1)*sizeof(char *)); - i = 0; - ZEND_HASH_FOREACH_VAL(ar, val) { - if (Z_TYPE(*val) != IS_STRING) { - SWIG_PHP_Error(E_ERROR, "Array must use strings only, in '$symname'."); - goto fail; - } - if (i == len) { - SWIG_PHP_Error(E_ERROR, "Array is bigger than zend report in '$symname'."); - goto fail; - } - $2[i++] = Z_STRVAL(*val); - } ZEND_HASH_FOREACH_END(); - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - $1 = Z_TYPE($input) == IS_ARRAY; -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/win64/bin/swig/share/swig/4.1.0/php/const.i b/win64/bin/swig/share/swig/4.1.0/php/const.i deleted file mode 100755 index 99e59c9d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/const.i +++ /dev/null @@ -1,103 +0,0 @@ -/* ----------------------------------------------------------------------------- - * const.i - * - * Typemaps for constants - * ----------------------------------------------------------------------------- */ -%typemap(classconsttab) int, - unsigned int, - short, - unsigned short, - long, - unsigned long, - unsigned char, - signed char, - enum SWIGTYPE %{ - zend_declare_class_constant_long(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, ($1_type)($value)); -%} - -%typemap(classconsttab) bool %{ - zend_declare_class_constant_bool(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, ($1_type)($value)); -%} - -%typemap(classconsttab) float, - double %{ - zend_declare_class_constant_double(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, $value); -%} - -%typemap(classconsttab) char %{ -{ - char swig_char = $value; - zend_declare_class_constant_stringl(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, &swig_char, 1); -} -%} - -%typemap(classconsttab) char *, - const char *, - char [], - const char [] %{ - zend_declare_class_constant_string(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, $value); -%} - -// This creates a zend_object to wrap the pointer, and we can't do that -// before the Zend runtime has been initialised so we delay it until -// RINIT. The downside is it then happens for every request. -%typemap(classconsttab,rinit=1) SWIGTYPE *, - SWIGTYPE &, - SWIGTYPE &&, - SWIGTYPE [] %{ -{ - zval z; - ZVAL_UNDEF(&z); - SWIG_SetPointerZval(&z, (void*)($value), $1_descriptor, 0); - zval_copy_ctor(&z); - zend_declare_class_constant(SWIG_Php_ce_$class, "$const_name", sizeof("$const_name") - 1, &z); -} -%} - -%typemap(classconsttab) SWIGTYPE (CLASS::*) "" - -%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);"; - -// This creates a zend_object to wrap the pointer, and we can't do that -// before the Zend runtime has been initialised so we delay it until -// RINIT. The downside is it then happens for every request. -%typemap(consttab,rinit=1) SWIGTYPE *, - SWIGTYPE &, - SWIGTYPE &&, - SWIGTYPE [] { - zend_constant c; - ZVAL_UNDEF(&c.value); - 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/win64/bin/swig/share/swig/4.1.0/php/director.swg b/win64/bin/swig/share/swig/4.1.0/php/director.swg deleted file mode 100755 index 048a62b2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/director.swg +++ /dev/null @@ -1,180 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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_ - -#define SWIG_DIRECTOR_CAST(ARG) dynamic_cast(ARG) - -#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 { - private: - /* flag indicating whether the object is owned by PHP or C++ */ - mutable bool swig_disown_flag; - - 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) : swig_disown_flag(false) { - ZVAL_COPY_VALUE(&swig_self, self); - } - - ~Director() { - if (swig_disown_flag) { - Z_DELREF(swig_self); - } - } - - zend_object *swig_get_self() const { return Z_OBJ(swig_self); } - - void swig_disown() const { - if (!swig_disown_flag) { - swig_disown_flag = true; - Z_ADDREF(swig_self); - } - } - - 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); - } - } - }; - - /* 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; - } - // Don't replace an already active PHP exception. - if (!EG(exception)) zend_throw_exception(NULL, swig_msg.c_str(), code); - } - - 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/win64/bin/swig/share/swig/4.1.0/php/factory.i b/win64/bin/swig/share/swig/4.1.0/php/factory.i deleted file mode 100755 index 56688bc1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/factory.i +++ /dev/null @@ -1,109 +0,0 @@ -/* - 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, phptype="?SWIGTYPE") Method { - int dcast = 0; - %formacro(%_factory_dispatch, Types) - if (!dcast) { - SWIG_SetPointerZval(return_value, SWIG_as_voidptr($1), $descriptor, $owner); - } -}%enddef diff --git a/win64/bin/swig/share/swig/4.1.0/php/php.swg b/win64/bin/swig/share/swig/4.1.0/php/php.swg deleted file mode 100755 index 4abb3e93..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/php.swg +++ /dev/null @@ -1,594 +0,0 @@ -/* ----------------------------------------------------------------------------- - * php.swg - * - * PHP configuration file - * ----------------------------------------------------------------------------- */ - -// Default to generating PHP type declarations (for PHP >= 8) except for -// cases which are liable to cause compatibility issues with existing -// bindings. -%feature("php:type", "compat"); - -%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 - -// 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, "bool", CONVERT_BOOL_IN); - -%pass_by_val(size_t, "int", CONVERT_INT_IN); - -%pass_by_val(enum SWIGTYPE, "int", CONVERT_INT_IN); - -%pass_by_val(signed int, "int", CONVERT_INT_IN); -%pass_by_val(int,"int", CONVERT_INT_IN); -%pass_by_val(unsigned int,"int", CONVERT_INT_IN); - -%pass_by_val(signed short, "int", CONVERT_INT_IN); -%pass_by_val(short,"int", CONVERT_INT_IN); -%pass_by_val(unsigned short, "int", CONVERT_INT_IN); - -%pass_by_val(signed long, "int", CONVERT_INT_IN); -%pass_by_val(long, "int", CONVERT_INT_IN); -%pass_by_val(unsigned long, "int", CONVERT_INT_IN); - -%pass_by_val(signed long long, "int|string", CONVERT_LONG_LONG_IN); -%pass_by_val(long long, "int|string", CONVERT_LONG_LONG_IN); -%pass_by_val(unsigned long long, "int|string", CONVERT_UNSIGNED_LONG_LONG_IN); - -%pass_by_val(signed char, "int", CONVERT_INT_IN); -%pass_by_val(char, "string", CONVERT_CHAR_IN); -%pass_by_val(unsigned char, "int", CONVERT_INT_IN); - -%pass_by_val(float, "float", CONVERT_FLOAT_IN); - -%pass_by_val(double, "float", CONVERT_FLOAT_IN); - -%pass_by_val(char *, "string", 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, phptype="string") char[ANY] -%{ - convert_to_string(&$input); - $1 = ($1_ltype) Z_STRVAL($input); -%} - -%typemap(in, phptype="string") (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, phptype="SWIGTYPE") SWIGTYPE ($&1_ltype tmp) -%{ - if (SWIG_ConvertPtr(&$input, (void **) &tmp, $&1_descriptor, 0) < 0 || tmp == NULL) { - zend_type_error("Expected $&1_descriptor for argument $argnum of $symname"); - return; - } - $1 = *tmp; -%} - -%typemap(directorout) SWIGTYPE ($&1_ltype tmp) -%{ - if (SWIG_ConvertPtr($input, (void **) &tmp, $&1_descriptor, 0) < 0 || tmp == NULL) { - zend_type_error("Expected $&1_descriptor for argument $argnum of $symname"); - SWIG_fail; - } - $result = *tmp; -%} - -%typemap(in, phptype="?SWIGTYPE") SWIGTYPE *, - SWIGTYPE [] -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } -%} - -%typemap(directorout) SWIGTYPE * (swig_owntype own), - SWIGTYPE [] (swig_owntype own) -%{ - if (SWIG_ConvertPtrAndOwn($input, (void **)&$result, $1_descriptor, SWIG_POINTER_DISOWN, &own) < 0) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - SWIG_fail; - } - swig_acquire_ownership_obj((void*)$result, own); -%} - -%typemap(in, phptype="SWIGTYPE") SWIGTYPE & -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, 0) < 0 || $1 == NULL) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } -%} -%typemap(in, fragment="") SWIGTYPE && (void *argp = 0, int res = 0, std::unique_ptr<$*1_ltype> rvrdeleter) %{ - res = SWIG_ConvertPtr(&$input, &argp, $descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $1_descriptor of $symname"); - return; - } else { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } - } - if (!argp) { - zend_type_error("Invalid null reference for argument $argnum of $1_descriptor of $symname"); - return; - } - $1 = ($1_ltype)argp; - rvrdeleter.reset($1); -%} - -%typemap(directorout) SWIGTYPE & ($1_ltype tmp), - SWIGTYPE && ($1_ltype tmp) -%{ - if (SWIG_ConvertPtr($input, (void **) &tmp, $1_descriptor, 0) < 0 || tmp == NULL) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - SWIG_fail; - } - $result = tmp; -%} - -%typemap(in, phptype="?SWIGTYPE") SWIGTYPE *const& ($*ltype temp) -%{ - if (SWIG_ConvertPtr(&$input, (void **) &temp, $*1_descriptor, 0) < 0) { - zend_type_error("Expected $*1_descriptor for argument $argnum of $symname"); - return; - } - $1 = ($1_ltype)&temp; -%} - -%typemap(in, phptype="?SWIGTYPE") SWIGTYPE *DISOWN -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, $1_descriptor, SWIG_POINTER_DISOWN) < 0) { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } -%} - -%typemap(argout) SWIGTYPE *, - SWIGTYPE [], - SWIGTYPE &, - SWIGTYPE &&; - -%typemap(in, phptype="?SWIGTYPE") void * -%{ - if (SWIG_ConvertPtr(&$input, (void **) &$1, 0, 0) < 0) { - /* Allow NULL from php for void* */ - if (Z_ISNULL($input)) { - $1=0; - } else { - zend_type_error("Expected $1_descriptor for argument $argnum of $symname"); - return; - } - } -%} - -/* Special case when void* is passed by reference so it can be made to point - to opaque api structs */ -%typemap(in, phptype="?SWIG\\_p_void", byref=1) 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 */ - zend_throw_exception(zend_ce_type_error, "Type error in argument $arg of $symname", 0); - goto fail; - } - } - 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 && Z_ISREF($input)) { - SWIG_SetPointerZval(Z_REFVAL($input), (void*) ptr$argnum, $*1_descriptor, 1); - } -%} - -/* Typemap for output values */ - -%typemap(out, phptype="int") - int, - unsigned int, - short, - unsigned short, - long, - unsigned long, - signed char, - unsigned char, - size_t -%{ - RETVAL_LONG($1); -%} - -%typemap(out, phptype="int") enum SWIGTYPE -%{ - RETVAL_LONG((long)$1); -%} - -%typemap(out, phptype="int|string") long long -%{ - if ((long long)LONG_MIN <= $1 && $1 <= (long long)LONG_MAX) { - RETVAL_LONG((long)($1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%lld", (long long)$1)); - } -%} -%typemap(out, phptype="int|string") unsigned long long -%{ - if ($1 <= (unsigned long long)LONG_MAX) { - RETVAL_LONG((long)($1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%llu", (unsigned long long)$1)); - } -%} - -%typemap(out, phptype="int") - 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, phptype="int") const enum SWIGTYPE & -%{ - RETVAL_LONG((long)*$1); -%} - -%typemap(out, phptype="int") const enum SWIGTYPE && -%{ - RETVAL_LONG((long)*$1); -%} - -%typemap(out, phptype="int|string") const long long & -%{ - if ((long long)LONG_MIN <= *$1 && *$1 <= (long long)LONG_MAX) { - RETVAL_LONG((long)(*$1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%lld", (long long)(*$1))); - } -%} -%typemap(out, phptype="int|string") const unsigned long long & -%{ - if (*$1 <= (unsigned long long)LONG_MAX) { - RETVAL_LONG((long)(*$1)); - } else { - RETVAL_NEW_STR(zend_strpprintf(0, "%llu", (unsigned long long)(*$1))); - } -%} - -%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, phptype="bool") bool -%{ - RETVAL_BOOL(($1) ? 1 : 0); -%} - -%typemap(out, phptype="bool") const bool & -%{ - RETVAL_BOOL((*$1) ? 1 : 0); -%} - -%typemap(directorin) bool -%{ - ZVAL_BOOL($input, ($1) ? 1 : 0); -%} - -%typemap(out, phptype="float") float, - double -%{ - RETVAL_DOUBLE($1); -%} - -%typemap(out, phptype="float") const float &, - const double & -%{ - RETVAL_DOUBLE(*$1); -%} - -%typemap(directorin) float, - double -%{ - ZVAL_DOUBLE($input, $1); -%} - -%typemap(out, phptype="string") char -%{ - RETVAL_STRINGL(&$1, 1); -%} - -%typemap(out, phptype="string") const char & -%{ - RETVAL_STRINGL(&*$1, 1); -%} - -%typemap(out, phptype="string") char [] -%{ - RETVAL_STRING((const char *)$1); -%} - -%typemap(out, phptype="?string") char * -%{ - if (!$1) { - RETVAL_NULL(); - } else { - RETVAL_STRING((const char *)$1); - } -%} - -%typemap(out, phptype="?string") char *& -%{ - if (!*$1) { - RETVAL_NULL(); - } else { - RETVAL_STRING((const char *)*$1); - } -%} - -%typemap(out, phptype="?SWIGTYPE") SWIGTYPE * -%{ - SWIG_SetPointerZval($result, (void *)$1, $1_descriptor, $owner); -%} - -%typemap(out, phptype="SWIGTYPE") - SWIGTYPE [], - SWIGTYPE &, - SWIGTYPE && -%{ - SWIG_SetPointerZval($result, (void *)$1, $1_descriptor, $owner); -%} - -%typemap(out, phptype="?SWIGTYPE") SWIGTYPE *const& -%{ - SWIG_SetPointerZval($result, (void *)*$1, $*1_descriptor, $owner); -%} - -%typemap(directorin) SWIGTYPE *, - SWIGTYPE [], - SWIGTYPE &, - SWIGTYPE && -%{ - ZVAL_UNDEF($input); - SWIG_SetPointerZval($input, (void *)&$1, $1_descriptor, $owner); -%} - -%typemap(out, phptype="SWIGTYPE") SWIGTYPE (CLASS::*) -{ - void * p = emalloc(sizeof($1)); - memcpy(p, &$1, sizeof($1)); - SWIG_SetPointerZval($result, (void *)p, $&1_descriptor, 1); -} - -%typemap(in, phptype="SWIGTYPE") SWIGTYPE (CLASS::*) -{ - void * p = SWIG_Z_FETCH_OBJ_P(&$input)->ptr; - memcpy(&$1, p, sizeof($1)); -} - -%typemap(out, phptype="?SWIGTYPE") SWIGTYPE *DYNAMIC -{ - swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor, (void **) &$1); - SWIG_SetPointerZval($result, (void *)$1, ty, $owner); -} - -%typemap(out, phptype="SWIGTYPE") SWIGTYPE &DYNAMIC -{ - swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor, (void **) &$1); - SWIG_SetPointerZval($result, (void *)$1, ty, $owner); -} - -%typemap(out, phptype="SWIGTYPE") SWIGTYPE -{ -#ifdef __cplusplus - $&1_ltype resultobj = new $1_ltype($1); -#else - $&1_ltype resultobj = ($&1_ltype) malloc(sizeof($1_type)); - memcpy(resultobj, &$1, sizeof($1_type)); -#endif - SWIG_SetPointerZval($result, (void *)resultobj, $&1_descriptor, 1); -} - -%typemap(directorin) SWIGTYPE -%{ - ZVAL_UNDEF($input); - SWIG_SetPointerZval($input, (new $1_ltype(SWIG_STD_MOVE($1))), $&1_descriptor, 1); -%} - -%typemap(out, phptype="void") void "" - -%typemap(out, phptype="string") char [ANY] -{ - size_t 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 *& - " $1 = (Z_TYPE($input) == IS_STRING || Z_TYPE($input) == IS_NULL); " - -%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) 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); - goto fail; -%} - -%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE *, SWIGTYPE [], SWIGTYPE [ANY] %{ - (void)$1; - zend_throw_exception(NULL, "C++ $1_type exception thrown", 0); - goto fail; -%} - -%typemap(throws) char * %{ - zend_throw_exception(NULL, $1, 0); - goto fail; -%} - -/* 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 - -/* PHP known interfaces */ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/php/phpinit.swg b/win64/bin/swig/share/swig/4.1.0/php/phpinit.swg deleted file mode 100755 index 41d84238..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/phpinit.swg +++ /dev/null @@ -1,16 +0,0 @@ - -/* ------------------------------------------------------------ - * The start of the PHP initialization function - * ------------------------------------------------------------ */ - -%insert(init) "swiginit.swg" - -%init %{ -SWIG_php_minit { - zend_class_entry SWIGUNUSED internal_ce; - SWIG_InitializeModule((void*)&module_number); -#if PHP_MAJOR_VERSION == 8 && PHP_MINOR_VERSION == 0 - /* This hack is needed to avoid segfaults. */ - EG(class_table) = CG(class_table); -#endif -%} diff --git a/win64/bin/swig/share/swig/4.1.0/php/phpinterfaces.i b/win64/bin/swig/share/swig/4.1.0/php/phpinterfaces.i deleted file mode 100755 index 7ea1f53c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/phpinterfaces.i +++ /dev/null @@ -1,62 +0,0 @@ -/* ----------------------------------------------------------------------------- - * phpinterfaces.i - * - * Define "known" PHP interfaces. - * - * These can be added at MINIT time (which is when PHP loads the extension - * module). - * - * Any interface can be added via phpinterfaces, but looking up the - * zend_class_entry by name has to wait until RINIT time, which means it - * happens for every request. - * ----------------------------------------------------------------------------- */ - -// Note: Abstract interfaces such as "Traversable" can't be used in -// "implements" so are not relevant here. - -%insert(header) %{ - -#define SWIG_PHP_INTERFACE_Iterator_CE zend_ce_iterator -#define SWIG_PHP_INTERFACE_Iterator_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_IteratorAggregate_CE zend_ce_aggregate -#define SWIG_PHP_INTERFACE_IteratorAggregate_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_ArrayAccess_CE zend_ce_arrayaccess -#define SWIG_PHP_INTERFACE_ArrayAccess_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_Serializable_CE zend_ce_serializable -#define SWIG_PHP_INTERFACE_Serializable_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_Countable_CE zend_ce_countable -#define SWIG_PHP_INTERFACE_Countable_HEADER "zend_interfaces.h" - -#define SWIG_PHP_INTERFACE_OuterIterator_CE spl_ce_OuterIterator -#define SWIG_PHP_INTERFACE_OuterIterator_HEADER "ext/spl/spl_iterators.h" - -#define SWIG_PHP_INTERFACE_RecursiveIterator_CE spl_ce_RecursiveIterator -#define SWIG_PHP_INTERFACE_RecursiveIterator_HEADER "ext/spl/spl_iterators.h" - -#define SWIG_PHP_INTERFACE_SeekableIterator_CE spl_ce_SeekableIterator -#define SWIG_PHP_INTERFACE_SeekableIterator_HEADER "ext/spl/spl_iterators.h" - -#define SWIG_PHP_INTERFACE_SplObserver_CE spl_ce_SplObserver -#define SWIG_PHP_INTERFACE_SplObserver_HEADER "ext/spl/spl_observer.h" - -#define SWIG_PHP_INTERFACE_SplSubject_CE spl_ce_SplSubject -#define SWIG_PHP_INTERFACE_SplSubject_HEADER "ext/spl/spl_observer.h" - -#define SWIG_PHP_INTERFACE_DateTimeInterface_CE php_date_get_interface_ce() -#define SWIG_PHP_INTERFACE_DateTimeInterface_HEADER "ext/date/php_date.h" - -// The "json" extension needs to be loaded earlier that us for this to work. -#define SWIG_PHP_INTERFACE_JsonSerializable_CE php_json_serializable_ce -#define SWIG_PHP_INTERFACE_JsonSerializable_HEADER "ext/json/php_json.h" - -// New in PHP 8.0. -#if PHP_MAJOR_VERSION >= 8 -# define SWIG_PHP_INTERFACE_Stringable_CE zend_ce_stringable -# define SWIG_PHP_INTERFACE_Stringable_HEADER "zend_interfaces.h" -#endif - -%} diff --git a/win64/bin/swig/share/swig/4.1.0/php/phpkw.swg b/win64/bin/swig/share/swig/4.1.0/php/phpkw.swg deleted file mode 100755 index 039e32b0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/phpkw.swg +++ /dev/null @@ -1,888 +0,0 @@ -/* ----------------------------------------------------------------------------- - * phpkw.swg - * ----------------------------------------------------------------------------- */ - -/* Keyword (case insensitive) */ -#define PHPKW(x) %keywordwarn("'" `x` "' is a PHP keyword",sourcefmt="%(lower)s",rename="c_%s") `x` - -/* Keyword, except ok as a function */ -#define PHPKW_ok_as_function(x) %keywordwarn("'" `x` "' is a PHP keyword, renaming to 'c_" `x` "'",%$not %$isfunction,sourcefmt="%(lower)s",rename="c_%s") `x` - -/* Class (case insensitive) */ -#define PHPCN(x) %keywordwarn("'" `x` "' is a PHP reserved class name",%$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",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(fn); // as of PHP 7.4 -PHPKW(for); -PHPKW(foreach); -PHPKW(function); -PHPKW(global); -PHPKW(goto); -PHPKW(if); -PHPKW(implements); -PHPKW(instanceof); -PHPKW(insteadof); -PHPKW(interface); -PHPKW(match); // as of PHP 8.0 -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); - -/* PHP 8.1 made `readonly` a keyword, but (unlike any other keyword it seems) - * it may still be used as a function name. - */ -PHPKW_ok_as_function(readonly); - -// 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(PHP_FLOAT_DIG); // Since 7.2.0 -PHPBN2(PHP_FLOAT_EPSILON); // Since 7.2.0 -PHPBN2(PHP_FLOAT_MIN); // Since 7.2.0 -PHPBN2(PHP_FLOAT_MAX); // Since 7.2.0 -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(PHP_FD_SETSIZE); // Since 7.1.0 -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_RECOVERABLE_ERROR); -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); -/* Since 7.4.0 (Microsoft Windows only) */ -PHPBN2(PHP_WINDOWS_EVENT_CTRL_C); -PHPBN2(PHP_WINDOWS_EVENT_CTRL_BREAK); -/* 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(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. */ -/* Check is case insensitive - these *MUST* be listed in lower case here. */ -PHPCN(directory); -PHPCN(stdclass); -PHPCN(__php_incomplete_class); -PHPCN(exception); -PHPCN(errorexception); -PHPCN(php_user_filter); -PHPCN(closure); -PHPCN(generator); -PHPCN(self); -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 -/* Predefined interfaces and classes, introduced in PHP 7.0.0 */ -PHPCN(arithmeticerror); -PHPCN(assertionerror); -PHPCN(divisionbyzeroerror); -PHPCN(error); -PHPCN(throwable); -PHPCN(parseerror); -PHPCN(typeerror); -/* 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 PHPKW_ok_as_function -#undef PHPBN1a -#undef PHPBN1b -#undef PHPBN1 -#undef PHPBN2a -#undef PHPBN2b -#undef PHPBN2 -#undef PHPCN -#undef PHPFN diff --git a/win64/bin/swig/share/swig/4.1.0/php/phppointers.i b/win64/bin/swig/share/swig/4.1.0/php/phppointers.i deleted file mode 100755 index 70f9586e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/phppointers.i +++ /dev/null @@ -1,42 +0,0 @@ -%define %pass_by_ref( TYPE, PHP_TYPE, CONVERT_IN, CONVERT_OUT ) -%typemap(in,byref=1,phptype=PHP_TYPE) TYPE *REF ($*1_ltype tmp), - TYPE &REF ($*1_ltype tmp) -%{ - if (Z_ISREF($input)) { - CONVERT_IN(tmp, $*1_ltype, $input); - $1 = &tmp; - } else { - zend_type_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, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed int, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( int, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( unsigned int, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed short, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( short, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( unsigned short, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed long, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( long, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( unsigned long, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( signed char, "int", CONVERT_INT_IN, ZVAL_LONG ); -%pass_by_ref( char, "string", CONVERT_CHAR_IN, ZVAL_STRING ); -%pass_by_ref( unsigned char, "int", CONVERT_INT_IN, ZVAL_LONG ); - -%pass_by_ref( float, "float", CONVERT_FLOAT_IN, ZVAL_DOUBLE ); -%pass_by_ref( double, "float", CONVERT_FLOAT_IN, ZVAL_DOUBLE ); - -%pass_by_ref( char *, "string", CONVERT_CHAR_IN, ZVAL_STRING ); diff --git a/win64/bin/swig/share/swig/4.1.0/php/phprun.swg b/win64/bin/swig/share/swig/4.1.0/php/phprun.swg deleted file mode 100755 index 108f0ba0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/phprun.swg +++ /dev/null @@ -1,272 +0,0 @@ -/* ----------------------------------------------------------------------------- - * phprun.swg - * - * PHP runtime library - * ----------------------------------------------------------------------------- */ - -#define swig_owntype int - -#ifdef __cplusplus -extern "C" { -#endif - -#if PHP_MAJOR_VERSION < 7 -# error These bindings need PHP 7 or later - to generate PHP5 bindings use: SWIG < 4.0.0 and swig -php5 -#endif - -#include "zend_inheritance.h" -#include "zend_exceptions.h" -#include "zend_inheritance.h" - -#if PHP_MAJOR_VERSION == 7 -/* These macros were new in PHP 8.0. For PHP 7.x we define them to give the - * same result except without any type declarations. PHP 7.x supports type - * declarations, but not for the return type, and alternate types aren't - * supported, so we don't try to support these. - */ -# define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(name, byref, num_req, classes, types) \ - ZEND_BEGIN_ARG_INFO_EX(name, 0, byref, num_req) -# define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(name, byref, num_req, types) \ - ZEND_BEGIN_ARG_INFO_EX(name, 0, byref, num_req) - -/* NB We can just ignore `default` here we currently always pass NULL for it - * (this mechanism for specifying default parameter values was new in PHP 8.0 - * so it's not useful while we still want to support PHP7 too). - */ -# define ZEND_ARG_OBJ_TYPE_MASK(byref, name, classes, types, default) \ - ZEND_ARG_INFO(byref, name) -# define ZEND_ARG_TYPE_MASK(byref, name, types, default) \ - ZEND_ARG_INFO(byref, name) -#endif - -#include /* for abort(), used in generated code. */ - -#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 was 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 - -/* zend_object_alloc was new in PHP 7.3. */ -#if PHP_MAJOR_VERSION == 7 && PHP_MINOR_VERSION < 3 -static zend_always_inline void *zend_object_alloc(size_t obj_size, zend_class_entry *ce) { - void *obj = emalloc(obj_size + zend_object_properties_size(ce)); - memset(obj, 0, obj_size - sizeof(zval)); - return obj; -} -#endif - -/* ZEND_THIS was new in PHP 7.4. */ -#ifndef ZEND_THIS -# define ZEND_THIS &EX(This) -#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 { zend_throw_exception(NULL, msg, code); SWIG_fail; } while (0) - -#define SWIG_contract_assert(expr,msg) \ - do { if (!(expr)) zend_printf("Contract Assert Failed %s\n", msg); } while (0) - -/* Standard SWIG API */ -#define SWIG_GetModule(clientdata) SWIG_Php_GetModule() -#define SWIG_SetModule(clientdata, pointer) SWIG_Php_SetModule(pointer, *(int*)clientdata) - -static zend_class_entry SWIG_Php_swig_wrapped_interface_ce; - -#if PHP_MAJOR_VERSION == 7 -/* zend_class_implements_interface() was new in PHP 8.0. - * - * We could use instanceof_function_ex(C, I, 1) here for 7.4, but for 7.3 - * and earlier that doesn't work, so instead we just provide a compatibility - * implementation which does what zend_class_implements_interface() does in 8.x - * and use that for all 7.x so there are fewer variants to worry about testing. - */ -static int zend_class_implements_interface(const zend_class_entry *class_ce, const zend_class_entry *interface_ce) { - uint32_t i; - if (class_ce->num_interfaces) { - for (i = 0; i < class_ce->num_interfaces; i++) { - if (class_ce->interfaces[i] == interface_ce) { - return 1; - } - } - } - return 0; -} -#endif - -/* used to wrap returned objects in so we know whether they are newobject - and need freeing, or not */ -typedef struct { - void * ptr; - int newobject; - const swig_type_info * type; - zend_object std; -} swig_object_wrapper; - -#define SWIG_Z_FETCH_OBJ_P(zv) swig_php_fetch_object(Z_OBJ_P(zv)) - -static inline -swig_object_wrapper * swig_php_fetch_object(zend_object *obj) { - return (swig_object_wrapper *)((char *)obj - XtOffsetOf(swig_object_wrapper, std)); -} - -#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) { - // Return PHP NULL for a C/C++ NULL pointer. - if (!ptr) { - ZVAL_NULL(z); - return; - } - - if (!type->clientdata) { - zend_type_error("Type: %s not registered with zend", type->name); - return; - } - - { - zend_object *obj; - swig_object_wrapper *value; - if (Z_TYPE_P(z) == IS_OBJECT) { - /* The PHP object is already initialised - this is the case when wrapping - * the return value from a PHP constructor. */ - obj = Z_OBJ_P(z); - } else { - zend_class_entry *ce = (zend_class_entry*)(type->clientdata); - obj = ce->create_object(ce); - ZVAL_OBJ(z, obj); - } - value = swig_php_fetch_object(obj); - value->ptr = ptr; - value->newobject = (newobject & 1); - value->type = type; - } -} - -/* We wrap C/C++ pointers as PHP objects. */ -static int -SWIG_ConvertPtrAndOwn(zval *z, void **ptr, swig_type_info *ty, int flags, swig_owntype *own) { - if (own) - *own = 0; - - if (z == NULL) { - *ptr = 0; - return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; - } - - switch (Z_TYPE_P(z)) { - case IS_OBJECT: { - zend_object *obj = Z_OBJ_P(z); - swig_object_wrapper *value; - if (ty && ty->clientdata == (void*)obj->ce) { - // Object is exactly the class asked for - this handles common cases cheaply, - // and in particular the PHP classes we use to wrap a pointer to a non-class. - } else if (!zend_class_implements_interface(obj->ce, &SWIG_Php_swig_wrapped_interface_ce)) { - // Not an object we've wrapped. - return -1; - } - - /* convert and cast value->ptr from value->type to ptr as ty. */ - value = swig_php_fetch_object(obj); - if (!ty) { - /* They don't care about the target type, so just pass on the pointer! */ - *ptr = value->ptr; - } else { - swig_cast_info *tc = SWIG_TypeCheck(value->type->name, ty); - if (tc) { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc, value->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 |= SWIG_CAST_NEW_MEMORY; - } - } else { - *ptr = NULL; - } - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !value->newobject) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (*ptr == NULL) - return SWIG_ERROR; /* should be SWIG_NullReferenceError?? */ - if (flags & SWIG_POINTER_DISOWN) { - value->newobject = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - value->ptr = 0; - } - } - - return SWIG_OK; - } - case IS_NULL: - *ptr = 0; - return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; - } - - return -1; -} - -static int -SWIG_ConvertPtr(zval *z, void **ptr, swig_type_info *ty, int flags) { - return SWIG_ConvertPtrAndOwn(z, ptr, ty, flags, 0); -} - -static const char const_name[] = "swig_runtime_data_type_pointer"; -static swig_module_info *SWIG_Php_GetModule(void) { - 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); -} - -/* Common parts of the "create_object" object handler. */ -static zend_object *SWIG_Php_do_create_object(zend_class_entry *ce, zend_object_handlers *handlers) { - swig_object_wrapper *obj = (swig_object_wrapper*)zend_object_alloc(sizeof(swig_object_wrapper), ce); - zend_object_std_init(&obj->std, ce); - object_properties_init(&obj->std, ce); - obj->std.handlers = handlers; - obj->newobject = 1; - return &obj->std; -} - -/* Common parts of the "free_obj" object handler. - Returns void* pointer if the C/C++ object should be destroyed. */ -static void* SWIG_Php_free_obj(zend_object *object) { - if (object) { - swig_object_wrapper *obj = swig_php_fetch_object(object); - zend_object_std_dtor(&obj->std); - if (obj->newobject) return obj->ptr; - } - return NULL; -} diff --git a/win64/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i deleted file mode 100755 index c4d20245..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/std_auto_ptr.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(&$input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $descriptor(TYPE *) of $symname"); - return; - } else { - zend_type_error("Expected $descriptor(TYPE *) for argument $argnum of $symname"); - return; - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - SWIG_SetPointerZval($result, (void *)$1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(&$input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/php/std_common.i b/win64/bin/swig/share/swig/4.1.0/php/std_common.i deleted file mode 100755 index 87ad2322..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/std_common.i +++ /dev/null @@ -1,9 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_common.i - * - * SWIG typemaps for STL - common utilities - * ----------------------------------------------------------------------------- */ - -%include - -%apply size_t { std::size_t }; diff --git a/win64/bin/swig/share/swig/4.1.0/php/std_deque.i b/win64/bin/swig/share/swig/4.1.0/php/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/php/std_map.i b/win64/bin/swig/share/swig/4.1.0/php/std_map.i deleted file mode 100755 index f869f61e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/std_map.i +++ /dev/null @@ -1,82 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/php/std_pair.i b/win64/bin/swig/share/swig/4.1.0/php/std_pair.i deleted file mode 100755 index 539130ff..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/php/std_string.i b/win64/bin/swig/share/swig/4.1.0/php/std_string.i deleted file mode 100755 index 7d812e23..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/std_string.i +++ /dev/null @@ -1,90 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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, phptype="string") string %{ - convert_to_string(&$input); - $1.assign(Z_STRVAL($input), Z_STRLEN($input)); - %} - - %typemap(directorout) string %{ - convert_to_string($input); - $result.assign(Z_STRVAL_P($input), Z_STRLEN_P($input)); - %} - - %typemap(out, phptype="string") string %{ - ZVAL_STRINGL($result, $1.data(), $1.size()); - %} - - %typemap(directorin) string, const string& %{ - ZVAL_STRINGL($input, $1.data(), $1.size()); - %} - - %typemap(out, phptype="string") const string & %{ - ZVAL_STRINGL($result, $1->data(), $1->size()); - %} - - %typemap(throws) string, const string& %{ - zend_throw_exception(NULL, $1.c_str(), 0); - goto fail; - %} - - %typemap(in, phptype="string") 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, phptype="string") 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) %{ - 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/win64/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i deleted file mode 100755 index 8e511301..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/std_unique_ptr.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(&$input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $descriptor(TYPE *) of $symname"); - return; - } else { - zend_type_error("Expected $descriptor(TYPE *) for argument $argnum of $symname"); - return; - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - SWIG_SetPointerZval($result, (void *)$1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr(&$input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/php/std_vector.i b/win64/bin/swig/share/swig/4.1.0/php/std_vector.i deleted file mode 100755 index 664a04a1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/std_vector.i +++ /dev/null @@ -1,114 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/php/swigmove.i b/win64/bin/swig/share/swig/4.1.0/php/swigmove.i deleted file mode 100755 index 44e592fc..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/swigmove.i +++ /dev/null @@ -1,24 +0,0 @@ -/* ----------------------------------------------------------------------------- - * swigmove.i - * - * Input typemaps library for implementing full move semantics when passing - * parameters by value. - * ----------------------------------------------------------------------------- */ - -%typemap(in, noblock=1) SWIGTYPE MOVE (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr(&$input, &argp, $&1_descriptor, SWIG_POINTER_RELEASE); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - zend_type_error("Cannot release ownership as memory is not owned for argument $argnum of $&1_descriptor of $symname"); - return; - } else { - zend_type_error("Expected $&1_descriptor for argument $argnum of $symname"); - return; - } - } - if (!argp) { - zend_type_error("Invalid null reference for argument $argnum of $&1_descriptor of $symname"); - return; - } - SwigValueWrapper< $1_ltype >::reset($1, ($&1_type)argp); -} diff --git a/win64/bin/swig/share/swig/4.1.0/php/typemaps.i b/win64/bin/swig/share/swig/4.1.0/php/typemaps.i deleted file mode 100755 index b281cd0b..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/typemaps.i +++ /dev/null @@ -1,295 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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, phptype="bool") 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, phptype="float") 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, phptype="float") 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, phptype="float") 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, phptype="int") 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, phptype="int") 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 { - ZVAL_NEW_STR(&o, zend_strpprintf(0, "%lld", (long long)temp$argnum)); - } - t_output_helper($result, &o); -} -%typemap(in, phptype="int|string") 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 { - ZVAL_NEW_STR(&$arg, zend_strpprintf(0, "%lld", (long long)lvalue$argnum)); - } -%} -%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 { - ZVAL_NEW_STR($result, zend_strpprintf(0, "%lld", (long long)(*arg$argnum))); - } -%} - -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 { - ZVAL_NEW_STR(&o, zend_strpprintf(0, "%llu", (unsigned long long)temp$argnum)); - } - t_output_helper($result, &o); -} -%typemap(in, phptype="int|string") 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 { - ZVAL_NEW_STR((*$arg), zend_strpprintf(0, "%llu", (unsigned long long)lvalue$argnum)); - } -%} -%typemap(argout) unsigned long long &OUTPUT -%{ - if (*arg$argnum <= (unsigned long long)LONG_MAX) { - ZVAL_LONG($result, (long)(*arg$argnum)); - } else { - ZVAL_NEW_STR($result, zend_strpprintf(0, "%llu", (unsigned long long)(*arg$argnum))); - } -%} - -%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, phptype="string") 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,phptype="?SWIGTYPE") 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 */ - zend_type_error("Expected reference or NULL for argument $arg of $symname"); - return; - } - } - 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/win64/bin/swig/share/swig/4.1.0/php/utils.i b/win64/bin/swig/share/swig/4.1.0/php/utils.i deleted file mode 100755 index f3f66462..00000000 --- a/win64/bin/swig/share/swig/4.1.0/php/utils.i +++ /dev/null @@ -1,115 +0,0 @@ - -%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 == '\0' && !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 == '\0' && !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, PHP_TYPE, CONVERT_IN ) -%typemap(in, phptype=PHP_TYPE) TYPE -%{ - CONVERT_IN($1,$1_ltype,$input); -%} -%typemap(in, phptype=PHP_TYPE) const TYPE & ($*1_ltype temp) -%{ - CONVERT_IN(temp,$*1_ltype,$input); - $1 = &temp; -%} -%typemap(directorout) TYPE -%{ - CONVERT_IN($result, $1_ltype, *$input); -%} -%typemap(directorout) const TYPE & -%{ - $*1_ltype swig_val; - CONVERT_IN(swig_val, $*1_ltype, *$input); - $1_ltype temp = new $*1_ltype(swig_val); - swig_acquire_ownership(temp); - $result = temp; -%} -%typemap(directorfree) const TYPE & -%{ - if (director) { - director->swig_release_ownership(%as_voidptr($input)); - } -%} -%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/win64/bin/swig/share/swig/4.1.0/pointer.i b/win64/bin/swig/share/swig/4.1.0/pointer.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/python/Makefile.in b/win64/bin/swig/share/swig/4.1.0/python/Makefile.in deleted file mode 100755 index 0ef33f29..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/Makefile.in +++ /dev/null @@ -1,119 +0,0 @@ -# --------------------------------------------------------------- -# SWIG Python Makefile -# -# This file can be used to build various Python extensions with SWIG. -# By default this file is set up for dynamic loading, but it can -# be easily customized for static extensions by modifying various -# portions of the file. -# -# SRCS = C source files -# CXXSRCS = C++ source files -# OBJCSRCS = Objective-C source files -# OBJS = Additional .o files (compiled previously) -# INTERFACE = SWIG interface file -# TARGET = Name of target module or executable -# -# Many portions of this file were created by the SWIG configure -# script and should already reflect your machine. -#---------------------------------------------------------------- - -SRCS = -CXXSRCS = -OBJCSRCS = -OBJS = -INTERFACE = -WRAPFILE = $(INTERFACE:.i=_wrap.c) -WRAPOBJ = $(INTERFACE:.i=_wrap.o) -TARGET = module@SO@ # Use this kind of target for dynamic loading -#TARGET = mypython # Use this target for static linking - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -CC = @CC@ -CXX = @CXX@ -OBJC = @CC@ -Wno-import # -Wno-import needed for gcc -CFLAGS = -INCLUDES = -LIBS = - -# SWIG Options -# SWIG = location of the SWIG executable -# SWIGOPT = SWIG compiler options -# SWIGCC = Compiler used to compile the wrapper file - -SWIG = $(exec_prefix)/bin/swig -SWIGOPT = -python -SWIGCC = $(CC) - -# SWIG Library files. Uncomment if rebuilding the Python interpreter -#SWIGLIBS = -lembed.i - -# Rules for creating .o files from source. - -COBJS = $(SRCS:.c=.o) -CXXOBJS = $(CXXSRCS:.cxx=.o) -OBJCOBJS = $(OBJCSRCS:.m=.o) -ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) - -# Command that will be used to build the final extension. -BUILD = $(SWIGCC) - -# Uncomment the following if you are using dynamic loading -CCSHARED = @CCSHARED@ -BUILD = @LDSHARED@ - -# Uncomment the following if you are using dynamic loading with C++ and -# need to provide additional link libraries (this is not always required). - -#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ - -L/usr/local/lib -lg++ -lstdc++ -lgcc - -# Python installation - -PY_INCLUDE = -DHAVE_CONFIG_H @PYINCLUDE@ -PY_LIB = @PYLIB@ - -# Build libraries (needed for static builds) - -LIBM = @LIBM@ -LIBC = @LIBC@ -SYSLIBS = $(LIBM) $(LIBC) @LIBS@ - -# Build options - -BUILD_LIBS = $(LIBS) # Dynamic loading - -# Compilation rules for non-SWIG components - -.SUFFIXES: .c .cxx .m - -.c.o: - $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - -.cxx.o: - $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< - -.m.o: - $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - - -# ---------------------------------------------------------------------- -# Rules for building the extension -# ---------------------------------------------------------------------- - -all: $(TARGET) - -# Convert the wrapper file into an object file - -$(WRAPOBJ) : $(WRAPFILE) - $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDES) $(PY_INCLUDE) - -$(WRAPFILE) : $(INTERFACE) - $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) - -$(TARGET): $(WRAPOBJ) $(ALLOBJS) - $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) - -clean: - rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/win64/bin/swig/share/swig/4.1.0/python/README b/win64/bin/swig/share/swig/4.1.0/python/README deleted file mode 100755 index 28605a16..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/README +++ /dev/null @@ -1,103 +0,0 @@ -/* ----------------------------------------------------------------------------- - * - * User interfaces: include these ones as needed - * - * ----------------------------------------------------------------------------- */ - -/* ----------------------------------------------------------------------------- - * Special types and user helpers - * ----------------------------------------------------------------------------- */ - -argcargv.i Handler for (int argc, char **argv) -attribute.i Convert a pair of set/get methods into a "native" python attribute -ccomplex.i C99 complex type -complex.i C99 or C++ complex type -cstring.i Various forms of C character string handling -cwstring.i Various forms of C wchar_t string handling -embed.i embedding the Python interpreter in something else -file.i FILE C type -implicit.i Allow the use of implicit C++ constructors -wchar.i wchar_t C type - -/* ----------------------------------------------------------------------------- - * C++ STD + STL - * ----------------------------------------------------------------------------- */ - -std_alloc.i allocator -std_basic_string.i basic string -std_char_traits.i char traits -std_complex.i complex -std_deque.i deque -std_except.i exceptions -std_ios.i ios -std_iostream.i istream/ostream -std_list.i list -std_map.i map -std_multimap.i multimap -std_multiset.i multiset -std_pair.i pair -std_set.i set -std_sstream.i string stream -std_streambuf.i streambuf -std_string.i string -std_vector.i vector -std_wios.i wios -std_wiostream.i wistream/wostream -std_wsstream.i wstring stream -std_wstreambuf.i wstreambuf -std_wstring.i wstring - - - -/* ----------------------------------------------------------------------------- -/* - * Implementation files: don't look at them unless you are really drunk - * - * ----------------------------------------------------------------------------- */ - -/* ----------------------------------------------------------------------------- - * Basic files - * ----------------------------------------------------------------------------- */ - -python.swg Main language file, it just includes what is needed. -pyuserdir.swg User visible directives (%pythonnondynamic, etc) -pymacros.swg Internal macros used for typemaps -pyfragments.swg Allow the user to overload the default fragments -pyopers.swg Python operations (+=, *=, etc) -pythonkw.swg Python keywords and special names -pyinit.swg Python Init method - -/* ----------------------------------------------------------------------------- - * The runtime part - * ----------------------------------------------------------------------------- */ - -pyruntime.swg Main runtime file definition -pyapi.swg SWIG/Python API declarations -pyrun.swg Python run-time code - -/* ----------------------------------------------------------------------------- - * Internal typemap specializations - * ----------------------------------------------------------------------------- */ - -pyswigtype.swg SWIGTYPE -pystrings.swg Char strings (char *) -pywstrings.swg Wchar Strings (wchar_t *) -pyprimtypes.swg Primitive types (shot,int,double,etc) -pycomplex.swg PyComplex and helper for C/C++ complex types -pydocs.swg Typemaps documentation - -/* ----------------------------------------------------------------------------- - * C++ STD + STL - * ----------------------------------------------------------------------------- */ - -pycontainer.swg python container iterators -std_common.i general common code for the STD/STL implementation -std_container.i general common code for the STD/STL containers - - -/*----------------------------------------------------------------------------- - * Backward compatibility and deprecated - * ----------------------------------------------------------------------------- */ - -std_vectora.i vector + allocator (allocators are now supported in STD/STL) -typemaps.i old in/out typemaps (doesn't need to be included) diff --git a/win64/bin/swig/share/swig/4.1.0/python/argcargv.i b/win64/bin/swig/share/swig/4.1.0/python/argcargv.i deleted file mode 100755 index c0c65f0a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/argcargv.i +++ /dev/null @@ -1,89 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%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/win64/bin/swig/share/swig/4.1.0/python/attribute.i b/win64/bin/swig/share/swig/4.1.0/python/attribute.i deleted file mode 100755 index b18f9ae8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i deleted file mode 100755 index 2cfaf3ec..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/boost_shared_ptr.i +++ /dev/null @@ -1,411 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/win64/bin/swig/share/swig/4.1.0/python/builtin.swg b/win64/bin/swig/share/swig/4.1.0/python/builtin.swg deleted file mode 100755 index 237417dd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/builtin.swg +++ /dev/null @@ -1,764 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -SWIGINTERN Py_hash_t -SwigPyObject_hash(PyObject *obj) { - SwigPyObject *sobj = (SwigPyObject *)obj; - void *ptr = sobj->ptr; -#if PY_VERSION_HEX < 0x03020000 - return (Py_hash_t)(Py_ssize_t)ptr; -#else - return (Py_hash_t)ptr; -#endif -} - -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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /* tp_print */ -#else - (Py_ssize_t)0, /* tp_vectorcall_offset */ -#endif - 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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /* tp_print */ -#else - (Py_ssize_t)0, /* tp_vectorcall_offset */ -#endif - 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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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 >= 0x030900a4 - Py_SET_TYPE(type, metatype); -#else - Py_TYPE(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/win64/bin/swig/share/swig/4.1.0/python/carrays.i b/win64/bin/swig/share/swig/4.1.0/python/carrays.i deleted file mode 100755 index 24562805..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/carrays.i +++ /dev/null @@ -1,13 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/python/ccomplex.i b/win64/bin/swig/share/swig/4.1.0/python/ccomplex.i deleted file mode 100755 index e8082ae3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/ccomplex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * ccomplex.i - * - * C complex typemaps - * ISO C99: 7.3 Complex arithmetic - * ----------------------------------------------------------------------------- */ - - -%include - -%{ -#include -%} - -#define complex _Complex - -/* 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/win64/bin/swig/share/swig/4.1.0/python/cdata.i b/win64/bin/swig/share/swig/4.1.0/python/cdata.i deleted file mode 100755 index 1c6de446..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/cmalloc.i b/win64/bin/swig/share/swig/4.1.0/python/cmalloc.i deleted file mode 100755 index d3a1222e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/complex.i b/win64/bin/swig/share/swig/4.1.0/python/complex.i deleted file mode 100755 index ee3e1d3c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/complex.i +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef __cplusplus -%include -#else -%include -#endif - diff --git a/win64/bin/swig/share/swig/4.1.0/python/cpointer.i b/win64/bin/swig/share/swig/4.1.0/python/cpointer.i deleted file mode 100755 index 0e75cbcd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/cstring.i b/win64/bin/swig/share/swig/4.1.0/python/cstring.i deleted file mode 100755 index 033677b3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/cwstring.i b/win64/bin/swig/share/swig/4.1.0/python/cwstring.i deleted file mode 100755 index c268d395..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/cwstring.i +++ /dev/null @@ -1,3 +0,0 @@ -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/python/director.swg b/win64/bin/swig/share/swig/4.1.0/python/director.swg deleted file mode 100755 index e8592e58..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/director.swg +++ /dev/null @@ -1,389 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - } - }; - - /* 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/win64/bin/swig/share/swig/4.1.0/python/embed.i b/win64/bin/swig/share/swig/4.1.0/python/embed.i deleted file mode 100755 index 242e55af..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/embed.i +++ /dev/null @@ -1,120 +0,0 @@ -// -// 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 %{ -#if !defined(PY_SSIZE_T_CLEAN) && !defined(SWIG_NO_PY_SSIZE_T_CLEAN) -#define PY_SSIZE_T_CLEAN -#endif - -#if __GNUC__ >= 7 -#pragma GCC diagnostic push -#if defined(__cplusplus) && __cplusplus >=201703L -#pragma GCC diagnostic ignored "-Wregister" /* For python-2.7 headers that use register */ -#endif -#endif - -#include - -#if __GNUC__ >= 7 -#pragma GCC diagnostic pop -#endif - -#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/win64/bin/swig/share/swig/4.1.0/python/exception.i b/win64/bin/swig/share/swig/4.1.0/python/exception.i deleted file mode 100755 index fc96bca5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/exception.i +++ /dev/null @@ -1,6 +0,0 @@ -%include - - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) -} diff --git a/win64/bin/swig/share/swig/4.1.0/python/factory.i b/win64/bin/swig/share/swig/4.1.0/python/factory.i deleted file mode 100755 index 377f0080..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/file.i b/win64/bin/swig/share/swig/4.1.0/python/file.i deleted file mode 100755 index d7e3d2c9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/file.i +++ /dev/null @@ -1,41 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/python/implicit.i b/win64/bin/swig/share/swig/4.1.0/python/implicit.i deleted file mode 100755 index 292f65f1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/implicit.i +++ /dev/null @@ -1,7 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/python/pyabc.i b/win64/bin/swig/share/swig/4.1.0/python/pyabc.i deleted file mode 100755 index 4a3ef5b4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyabc.i +++ /dev/null @@ -1,14 +0,0 @@ -%define %pythonabc(Type, Abc) - %feature("python:abc", Abc) Type; -%enddef -%pythoncode %{if _swig_python_version_info[0:2] >= (3, 3): - import collections.abc -else: - import collections -%} -%pythonabc(std::vector, "collections.abc.MutableSequence if _swig_python_version_info >= (3, 3) else collections.MutableSequence"); -%pythonabc(std::list, "collections.abc.MutableSequence if _swig_python_version_info >= (3, 3) else collections.MutableSequence"); -%pythonabc(std::map, "collections.abc.MutableMapping if _swig_python_version_info >= (3, 3) else collections.MutableMapping"); -%pythonabc(std::multimap, "collections.abc.MutableMapping if _swig_python_version_info >= (3, 3) else collections.MutableMapping"); -%pythonabc(std::set, "collections.abc.MutableSet if _swig_python_version_info >= (3, 3) else collections.MutableSet"); -%pythonabc(std::multiset, "collections.abc.MutableSet if _swig_python_version_info >= (3, 3) else collections.MutableSet"); diff --git a/win64/bin/swig/share/swig/4.1.0/python/pyapi.swg b/win64/bin/swig/share/swig/4.1.0/python/pyapi.swg deleted file mode 100755 index d6ff54b8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyapi.swg +++ /dev/null @@ -1,30 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/python/pybackward.swg b/win64/bin/swig/share/swig/4.1.0/python/pybackward.swg deleted file mode 100755 index f41f2a6f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pybackward.swg +++ /dev/null @@ -1,45 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/pybuffer.i b/win64/bin/swig/share/swig/4.1.0/python/pybuffer.i deleted file mode 100755 index 370483a9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pybuffer.i +++ /dev/null @@ -1,119 +0,0 @@ -/* 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/win64/bin/swig/share/swig/4.1.0/python/pycomplex.swg b/win64/bin/swig/share/swig/4.1.0/python/pycomplex.swg deleted file mode 100755 index 0f2c1d97..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pycomplex.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* - 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.0f); - 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/win64/bin/swig/share/swig/4.1.0/python/pycontainer.swg b/win64/bin/swig/share/swig/4.1.0/python/pycontainer.swg deleted file mode 100755 index b2cac287..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pycontainer.swg +++ /dev/null @@ -1,1082 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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_SLICEOBJECT PyObject -#else -# define SWIGPY_SLICEOBJECT PySliceObject -#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) { - return PyObject_SetAttr(child, container_owner_attribute(), owner) != -1; - } - 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() 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)) - 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__(SWIGPY_SLICEOBJECT *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) SWIGPY_SLICEOBJECT* { - if (!PySlice_Check($input)) { - %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); - } - $1 = (SWIGPY_SLICEOBJECT *) $input; - } - %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) SWIGPY_SLICEOBJECT* { - $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__(SWIGPY_SLICEOBJECT *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(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__(SWIGPY_SLICEOBJECT *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(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__(SWIGPY_SLICEOBJECT *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(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__(SWIGPY_SLICEOBJECT *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(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/win64/bin/swig/share/swig/4.1.0/python/pydocs.swg b/win64/bin/swig/share/swig/4.1.0/python/pydocs.swg deleted file mode 100755 index 0c9197ba..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pydocs.swg +++ /dev/null @@ -1,45 +0,0 @@ - -// 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/win64/bin/swig/share/swig/4.1.0/python/pyerrors.swg b/win64/bin/swig/share/swig/4.1.0/python/pyerrors.swg deleted file mode 100755 index 793bc228..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyerrors.swg +++ /dev/null @@ -1,107 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - 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 - if (newvalue) { - Py_XDECREF(value); - PyErr_Restore(type, newvalue, traceback); - } else { - PyErr_Restore(type, value, traceback); - } - } else { - /* Raise TypeError using given message */ - PyErr_SetString(PyExc_TypeError, message); - } -} diff --git a/win64/bin/swig/share/swig/4.1.0/python/pyfragments.swg b/win64/bin/swig/share/swig/4.1.0/python/pyfragments.swg deleted file mode 100755 index c1e61517..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/win64/bin/swig/share/swig/4.1.0/python/pyhead.swg b/win64/bin/swig/share/swig/4.1.0/python/pyhead.swg deleted file mode 100755 index 3886365a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyhead.swg +++ /dev/null @@ -1,75 +0,0 @@ -/* 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 _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 - - -SWIGINTERN char* -SWIG_Python_str_AsChar(PyObject *str) -{ -#if PY_VERSION_HEX >= 0x03030000 - return (char *)PyUnicode_AsUTF8(str); -#else - return PyString_AsString(str); -#endif -} - -/* Was useful for Python 3.0.x-3.2.x - now provided only for compatibility - * with any uses in user interface files. */ -#define SWIG_Python_str_DelForPy3(x) - - -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 -#ifdef SWIGPYTHON_BUILTIN -# define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule_builtin" SWIG_TYPE_TABLE_NAME -#else -# define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule" SWIG_TYPE_TABLE_NAME -#endif -# define SWIGPY_CAPSULE_NAME ("swig_runtime_data" SWIG_RUNTIME_VERSION "." SWIGPY_CAPSULE_ATTR_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/win64/bin/swig/share/swig/4.1.0/python/pyinit.swg b/win64/bin/swig/share/swig/4.1.0/python/pyinit.swg deleted file mode 100755 index dbb219ef..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyinit.swg +++ /dev/null @@ -1,325 +0,0 @@ -/* ------------------------------------------------------------ - * The start of the Python initialization function - * ------------------------------------------------------------ */ - -%insert(init) "swiginit.swg" - -#if defined(SWIGPYTHON_BUILTIN) -%fragment(""); // For offsetof -#endif - -#if defined SWIGPYTHON_FASTPROXY && !defined SWIGPYTHON_BUILTIN - -%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 -%} - -#endif - -%init %{ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------------------------------------------------------- - * 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); - } - } -} - -/* ----------------------------------------------------------------------------- - * Patch %callback methods' docstrings to hold the callback ptrs - * -----------------------------------------------------------------------------*/ - -SWIGINTERN void -SWIG_Python_FixMethods(PyMethodDef *methods, const 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; - const 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; - } - } - } - } - } -} - -#ifdef __cplusplus -} -#endif - -%} - -#if defined SWIGPYTHON_FASTPROXY && !defined SWIGPYTHON_BUILTIN - -%init %{ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------------------------------------------------------- - * 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 - -%} - -#endif - -%init %{ - -/* -----------------------------------------------------------------------------* - * 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/win64/bin/swig/share/swig/4.1.0/python/pyiterators.swg b/win64/bin/swig/share/swig/4.1.0/python/pyiterators.swg deleted file mode 100755 index 65a12cb2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyiterators.swg +++ /dev/null @@ -1,458 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/python/pymacros.swg b/win64/bin/swig/share/swig/4.1.0/python/pymacros.swg deleted file mode 100755 index c063d360..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pymacros.swg +++ /dev/null @@ -1,4 +0,0 @@ -%include - - - diff --git a/win64/bin/swig/share/swig/4.1.0/python/pyname_compat.i b/win64/bin/swig/share/swig/4.1.0/python/pyname_compat.i deleted file mode 100755 index 544dcb2b..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyname_compat.i +++ /dev/null @@ -1,85 +0,0 @@ -/* -* 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/win64/bin/swig/share/swig/4.1.0/python/pyopers.swg b/win64/bin/swig/share/swig/4.1.0/python/pyopers.swg deleted file mode 100755 index ec6eaafd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyopers.swg +++ /dev/null @@ -1,264 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg b/win64/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg deleted file mode 100755 index 768cd809..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyprimtypes.swg +++ /dev/null @@ -1,353 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/python/pyrun.swg b/win64/bin/swig/share/swig/4.1.0/python/pyrun.swg deleted file mode 100755 index a3839cec..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyrun.swg +++ /dev/null @@ -1,1913 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 < 0x03030000 -# error "This version of SWIG only supports Python 3 >= 3.3" -#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); - if (result) { - PyList_SET_ITEM(result, 0, o2); - } else { - Py_DECREF(obj); - return 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; - } - } -} - -SWIGINTERN int -SWIG_Python_CheckNoKeywords(PyObject *kwargs, const char *name) { - int no_kwargs = 1; - if (kwargs) { - assert(PyDict_Check(kwargs)); - if (PyDict_Size(kwargs) > 0) { - PyErr_Format(PyExc_TypeError, "%s() does not take keyword arguments", name); - no_kwargs = 0; - } - } - return no_kwargs; -} - -/* A functor is a function object with one single object argument */ -#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); - -/* - 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 - -#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(PyObject *SWIGUNUSEDPARM(v)) { -#if PY_VERSION_HEX >= 0x03000000 - return PyUnicode_InternFromString(""); -#else - return PyString_FromString(""); -#endif -} - -SWIGINTERN PyObject * -swig_varlink_str(PyObject *o) { - swig_varlinkobject *v = (swig_varlinkobject *) o; -#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(PyObject *o) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - swig_globalvar *var = v->vars; - while (var) { - swig_globalvar *n = var->next; - free(var->name); - free(var); - var = n; - } -} - -SWIGINTERN PyObject * -swig_varlink_getattr(PyObject *o, char *n) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - 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(PyObject *o, char *n, PyObject *p) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - 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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /*tp_print*/ -#else - (Py_ssize_t)0, /*tp_vectorcall_offset*/ -#endif - (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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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; -} - - -static PyObject *Swig_Globals_global = NULL; - -SWIGINTERN PyObject * -SWIG_globals(void) { - if (Swig_Globals_global == NULL) { - Swig_Globals_global = SWIG_newvarlink(); - } - return Swig_Globals_global; -} - -#ifdef __cplusplus -} -#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; - Py_INCREF(obj); - data->newargs = obj; - } else { - data->newraw = PyObject_GetAttrString(data->klass, "__new__"); - if (data->newraw) { - data->newargs = PyTuple_New(1); - if (data->newargs) { - Py_INCREF(obj); - PyTuple_SET_ITEM(data->newargs, 0, obj); - } else { - Py_DECREF(data->newraw); - Py_DECREF(data->klass); - free(data); - return 0; - } - } else { - Py_INCREF(obj); - data->newargs = obj; - } - } - /* 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) { - data->delargs = !(PyCFunction_GET_FLAGS(data->destroy) & METH_O); - } else { - data->delargs = 0; - } - data->implicitconv = 0; - data->pytype = 0; - return data; - } -} - -SWIGRUNTIME void -SwigPyClientData_Del(SwigPyClientData *data) -{ - Py_XDECREF(data->klass); - Py_XDECREF(data->newraw); - Py_XDECREF(data->newargs); - Py_XDECREF(data->destroy); - free(data); -} - -/* =============== 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_XINCREF(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) { - PyObject *val = SwigPyObject_long(v); - if (val) { - PyObject *ofmt; - PyTuple_SET_ITEM(args, 0, val); - 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 (repr && v->next) { - PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); - if (nrep) { -# 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 - } else { - Py_DecRef(repr); - repr = NULL; - } - } - 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); - -static PyObject* Swig_Capsule_global = NULL; - -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); - if (tmp) { - res = SWIG_Python_CallFunctor(destroy, tmp); - } else { - res = 0; - } - Py_XDECREF(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(Swig_Capsule_global); - } - Py_XDECREF(next); -#ifdef SWIGPYTHON_BUILTIN - Py_XDECREF(sobj->dict); -#endif - 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; - } - ((SwigPyObject *)next)->next = sobj->next; - 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)) { - Py_DECREF(SwigPyObject_acquire(v,args)); - } else { - Py_DECREF(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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /*tp_print*/ -#else - (Py_ssize_t)0, /*tp_vectorcall_offset*/ -#endif - (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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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; -#ifdef SWIGPYTHON_BUILTIN - sobj->dict = 0; -#endif - if (own == SWIG_POINTER_OWN) { - /* Obtain a reference to the Python capsule wrapping the module information, so that the - * module information is correctly destroyed after all SWIG python objects have been freed - * by the GC (and corresponding destructors invoked) */ - Py_XINCREF(Swig_Capsule_global); - } - } - 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 */ -#if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /*tp_print*/ -#else - (Py_ssize_t)0, /*tp_vectorcall_offset*/ -#endif - (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 -#if PY_VERSION_HEX >= 0x03080000 - 0, /* tp_vectorcall */ -#endif -#if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000) - 0, /* tp_print */ -#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 (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !sobj->own) { - res = SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (own) - *own = *own | sobj->own; - if (flags & SWIG_POINTER_DISOWN) { - sobj->own = 0; - } - if (flags & SWIG_POINTER_CLEAR) { - sobj->ptr = 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; - } - if (dict) { - PyDict_SetItem(dict, SWIG_This(), swig_this); - } else{ - Py_DECREF(inst); - inst = 0; - } - } -#else - if (PyObject_SetAttr(inst, SWIG_This(), swig_this) == -1) { - Py_DECREF(inst); - inst = 0; - } -#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) { - if (PyObject_SetAttr(inst, SWIG_This(), swig_this) == -1) { - Py_DECREF(inst); - inst = 0; - } else { - PyType_Modified(Py_TYPE(inst)); - } - } - } - 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 int -SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) -{ -#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; - } - if (dict) { - return PyDict_SetItem(dict, SWIG_This(), swig_this); - } else{ - return -1; - } - } -#endif - return PyObject_SetAttr(inst, SWIG_This(), swig_this); -} - - -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) { - Py_DECREF(SwigPyObject_append((PyObject*) sthis, obj[1])); - } else { - if (SWIG_Python_SetSwigThis(obj[0], obj[1]) != 0) - return NULL; - } - 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 - if (newobj) { - 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 - -static PyObject *Swig_TypeCache_global = NULL; - -/* The python cached type query */ -SWIGRUNTIME PyObject * -SWIG_Python_TypeCache(void) { - if (Swig_TypeCache_global == NULL) { - Swig_TypeCache_global = PyDict_New(); - } - return Swig_TypeCache_global; -} - -SWIGRUNTIME swig_module_info * -SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { -#ifdef SWIG_LINK_RUNTIME - static void *type_pointer = (void *)0; - /* first check if module already created */ - if (!type_pointer) { - type_pointer = SWIG_ReturnGlobalTypeList((void *)0); - } -#else - void *type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); - if (PyErr_Occurred()) { - PyErr_Clear(); - type_pointer = (void *)0; - } -#endif - return (swig_module_info *) type_pointer; -} - - -static int interpreter_counter = 0; // how many (sub-)interpreters are using swig_module's types - -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; - if (--interpreter_counter != 0) // another sub-interpreter may still be using the swig_module's types - return; - for (i =0; i < swig_module->size; ++i) { - swig_type_info *ty = types[i]; - if (ty->owndata) { - SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; - ty->clientdata = 0; - if (data) SwigPyClientData_Del(data); - } - } - Py_DECREF(SWIG_This()); - Swig_This_global = NULL; - Py_DECREF(SWIG_globals()); - Swig_Globals_global = NULL; - Py_DECREF(SWIG_Python_TypeCache()); - Swig_TypeCache_global = NULL; - Swig_Capsule_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) { - if (PyModule_AddObject(module, SWIGPY_CAPSULE_ATTR_NAME, pointer) == 0) { - ++interpreter_counter; - Swig_Capsule_global = pointer; - } else { - Py_DECREF(pointer); - } - } else { - Py_XDECREF(pointer); - } -} - -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); - if (obj) { - 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); - } - 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); - } 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(); - } - 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) - goto done; - } - 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/win64/bin/swig/share/swig/4.1.0/python/pyruntime.swg b/win64/bin/swig/share/swig/4.1.0/python/pyruntime.swg deleted file mode 100755 index 1a6b72c5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyruntime.swg +++ /dev/null @@ -1,49 +0,0 @@ -%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(PY_SSIZE_T_CLEAN) && !defined(SWIG_NO_PY_SSIZE_T_CLEAN) -#define PY_SSIZE_T_CLEAN -#endif - -#if __GNUC__ >= 7 -#pragma GCC diagnostic push -#if defined(__cplusplus) && __cplusplus >=201703L -#pragma GCC diagnostic ignored "-Wregister" /* For python-2.7 headers that use register */ -#endif -#endif - -#if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) -/* Use debug wrappers with the Python release dll */ - -#if defined(_MSC_VER) && _MSC_VER >= 1929 -/* Workaround compilation errors when redefining _DEBUG in MSVC 2019 version 16.10 and later - * See https://github.com/swig/swig/issues/2090 */ -# include -#endif - -# undef _DEBUG -# include -# define _DEBUG 1 -#else -# include -#endif - -#if __GNUC__ >= 7 -#pragma GCC diagnostic pop -#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/win64/bin/swig/share/swig/4.1.0/python/pystdcommon.swg b/win64/bin/swig/share/swig/4.1.0/python/pystdcommon.swg deleted file mode 100755 index 448d92f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pystdcommon.swg +++ /dev/null @@ -1,265 +0,0 @@ -%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) { - int res = SWIG_ERROR; - swig_type_info *descriptor = type_info(); - if (val) { - Type *p = 0; - int newmem = 0; - res = descriptor ? SWIG_ConvertPtrAndOwn(obj, (void **)&p, descriptor, 0, &newmem) : SWIG_ERROR; - if (SWIG_IsOK(res)) { - if (newmem & SWIG_CAST_NEW_MEMORY) { - res |= SWIG_NEWOBJMASK; - } - *val = p; - } - } else { - res = descriptor ? SWIG_ConvertPtr(obj, 0, descriptor, 0) : SWIG_ERROR; - } - 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/win64/bin/swig/share/swig/4.1.0/python/pystrings.swg b/win64/bin/swig/share/swig/4.1.0/python/pystrings.swg deleted file mode 100755 index acf6df70..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pystrings.swg +++ /dev/null @@ -1,139 +0,0 @@ -/* ------------------------------------------------------------ - * 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 - if (PyBytes_AsStringAndSize(obj, &cstr, &len) == -1) - return SWIG_TypeError; -%#else - if (PyString_AsStringAndSize(obj, &cstr, &len) == -1) - return SWIG_TypeError; -%#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/win64/bin/swig/share/swig/4.1.0/python/python.swg b/win64/bin/swig/share/swig/4.1.0/python/python.swg deleted file mode 100755 index a46ea301..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/python.swg +++ /dev/null @@ -1,59 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/python/pythonkw.swg b/win64/bin/swig/share/swig/4.1.0/python/pythonkw.swg deleted file mode 100755 index 7bbf93d5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pythonkw.swg +++ /dev/null @@ -1,140 +0,0 @@ -/* - Warnings for Python keywords, built-in names and bad names. -*/ - -#define PYTHONKW(x) %keywordwarn("'" `x` "' is a python keyword", 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/win64/bin/swig/share/swig/4.1.0/python/pythreads.swg b/win64/bin/swig/share/swig/4.1.0/python/pythreads.swg deleted file mode 100755 index fd837d67..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pythreads.swg +++ /dev/null @@ -1,68 +0,0 @@ -#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 */ -# if !defined(SWIG_PYTHON_INITIALIZE_THREADS) -# if PY_VERSION_HEX < 0x03070000 -# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() -# else -# define SWIG_PYTHON_INITIALIZE_THREADS -# endif -# 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/win64/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg b/win64/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg deleted file mode 100755 index 7666499a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pytuplehlp.swg +++ /dev/null @@ -1,8 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/pytypemaps.swg b/win64/bin/swig/share/swig/4.1.0/python/pytypemaps.swg deleted file mode 100755 index 9c35a41e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pytypemaps.swg +++ /dev/null @@ -1,105 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/python/pyuserdir.swg b/win64/bin/swig/share/swig/4.1.0/python/pyuserdir.swg deleted file mode 100755 index 2cad3a84..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pyuserdir.swg +++ /dev/null @@ -1,242 +0,0 @@ -/* ------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/python/pywstrings.swg b/win64/bin/swig/share/swig/4.1.0/python/pywstrings.swg deleted file mode 100755 index df469f0c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/pywstrings.swg +++ /dev/null @@ -1,85 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/python/std_alloc.i b/win64/bin/swig/share/swig/4.1.0/python/std_alloc.i deleted file mode 100755 index 2b9342fb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_array.i b/win64/bin/swig/share/swig/4.1.0/python/std_array.i deleted file mode 100755 index b25f30e6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_array.i +++ /dev/null @@ -1,91 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i deleted file mode 100755 index 304f1fc9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_basic_string.i b/win64/bin/swig/share/swig/4.1.0/python/std_basic_string.i deleted file mode 100755 index 73ce35ec..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_basic_string.i +++ /dev/null @@ -1,89 +0,0 @@ -#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/win64/bin/swig/share/swig/4.1.0/python/std_carray.i b/win64/bin/swig/share/swig/4.1.0/python/std_carray.i deleted file mode 100755 index 739eda9f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_carray.i +++ /dev/null @@ -1,54 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/python/std_char_traits.i b/win64/bin/swig/share/swig/4.1.0/python/std_char_traits.i deleted file mode 100755 index e60261f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_common.i b/win64/bin/swig/share/swig/4.1.0/python/std_common.i deleted file mode 100755 index 8fc10fcf..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_common.i +++ /dev/null @@ -1,74 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/python/std_complex.i b/win64/bin/swig/share/swig/4.1.0/python/std_complex.i deleted file mode 100755 index dcd33c13..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_complex.i +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/python/std_container.i b/win64/bin/swig/share/swig/4.1.0/python/std_container.i deleted file mode 100755 index 4303bc04..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_deque.i b/win64/bin/swig/share/swig/4.1.0/python/std_deque.i deleted file mode 100755 index 3bb68ae2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_deque.i +++ /dev/null @@ -1,27 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/std_except.i b/win64/bin/swig/share/swig/4.1.0/python/std_except.i deleted file mode 100755 index 3e056e7d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_ios.i b/win64/bin/swig/share/swig/4.1.0/python/std_ios.i deleted file mode 100755 index 41c461b6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_ios.i +++ /dev/null @@ -1,3 +0,0 @@ -%rename(ios_base_in) std::ios_base::in; - -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_iostream.i b/win64/bin/swig/share/swig/4.1.0/python/std_iostream.i deleted file mode 100755 index b5bde321..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_iostream.i +++ /dev/null @@ -1,8 +0,0 @@ -namespace std -{ -%callback(1) endl; -%callback(1) ends; -%callback(1) flush; -} - -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_list.i b/win64/bin/swig/share/swig/4.1.0/python/std_list.i deleted file mode 100755 index 09fe0772..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_list.i +++ /dev/null @@ -1,28 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/std_map.i b/win64/bin/swig/share/swig/4.1.0/python/std_map.i deleted file mode 100755 index 678a7010..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_map.i +++ /dev/null @@ -1,310 +0,0 @@ -/* - 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 = 0; - 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/win64/bin/swig/share/swig/4.1.0/python/std_multimap.i b/win64/bin/swig/share/swig/4.1.0/python/std_multimap.i deleted file mode 100755 index 25dd8637..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_multimap.i +++ /dev/null @@ -1,93 +0,0 @@ -/* - 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 = 0; - 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/win64/bin/swig/share/swig/4.1.0/python/std_multiset.i b/win64/bin/swig/share/swig/4.1.0/python/std_multiset.i deleted file mode 100755 index 3c61c0fb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_multiset.i +++ /dev/null @@ -1,41 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/std_pair.i b/win64/bin/swig/share/swig/4.1.0/python/std_pair.i deleted file mode 100755 index 1adbcf1d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_pair.i +++ /dev/null @@ -1,206 +0,0 @@ -/* - 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 = 0; - 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 = 0; - 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/win64/bin/swig/share/swig/4.1.0/python/std_set.i b/win64/bin/swig/share/swig/4.1.0/python/std_set.i deleted file mode 100755 index 4b4102f8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_set.i +++ /dev/null @@ -1,67 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i deleted file mode 100755 index 01a0e9dd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_sstream.i b/win64/bin/swig/share/swig/4.1.0/python/std_sstream.i deleted file mode 100755 index cf5efe60..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_sstream.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_streambuf.i b/win64/bin/swig/share/swig/4.1.0/python/std_streambuf.i deleted file mode 100755 index 7b3552f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_streambuf.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_string.i b/win64/bin/swig/share/swig/4.1.0/python/std_string.i deleted file mode 100755 index 0afc2468..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i deleted file mode 100755 index 79320de6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_unordered_map.i b/win64/bin/swig/share/swig/4.1.0/python/std_unordered_map.i deleted file mode 100755 index 0759251c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_unordered_map.i +++ /dev/null @@ -1,296 +0,0 @@ -/* - 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 = 0; - 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/win64/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i b/win64/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i deleted file mode 100755 index 1b4545f2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_unordered_multimap.i +++ /dev/null @@ -1,100 +0,0 @@ -/* - 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 = 0; - 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/win64/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i b/win64/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i deleted file mode 100755 index a846be41..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_unordered_multiset.i +++ /dev/null @@ -1,48 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/std_unordered_set.i b/win64/bin/swig/share/swig/4.1.0/python/std_unordered_set.i deleted file mode 100755 index 567ee14e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_unordered_set.i +++ /dev/null @@ -1,67 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/std_vector.i b/win64/bin/swig/share/swig/4.1.0/python/std_vector.i deleted file mode 100755 index 7e866b59..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_vector.i +++ /dev/null @@ -1,34 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/std_vectora.i b/win64/bin/swig/share/swig/4.1.0/python/std_vectora.i deleted file mode 100755 index 5de2b6cb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_vectora.i +++ /dev/null @@ -1,31 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/python/std_wios.i b/win64/bin/swig/share/swig/4.1.0/python/std_wios.i deleted file mode 100755 index a09c4721..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_wios.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_wiostream.i b/win64/bin/swig/share/swig/4.1.0/python/std_wiostream.i deleted file mode 100755 index f81ca4e4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_wiostream.i +++ /dev/null @@ -1,10 +0,0 @@ -namespace std -{ -%callback(1) wendl; -%callback(1) wends; -%callback(1) wflush; -} - -%include -%include -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_wsstream.i b/win64/bin/swig/share/swig/4.1.0/python/std_wsstream.i deleted file mode 100755 index 2edc40ef..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_wsstream.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i b/win64/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i deleted file mode 100755 index 372a83b1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_wstreambuf.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/std_wstring.i b/win64/bin/swig/share/swig/4.1.0/python/std_wstring.i deleted file mode 100755 index 185ee7e6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/std_wstring.i +++ /dev/null @@ -1,3 +0,0 @@ -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/python/stl.i b/win64/bin/swig/share/swig/4.1.0/python/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/python/swigmove.i b/win64/bin/swig/share/swig/4.1.0/python/swigmove.i deleted file mode 100755 index 03e87fa2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/python/typemaps.i b/win64/bin/swig/share/swig/4.1.0/python/typemaps.i deleted file mode 100755 index a1946a01..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/typemaps.i +++ /dev/null @@ -1,148 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/win64/bin/swig/share/swig/4.1.0/python/wchar.i b/win64/bin/swig/share/swig/4.1.0/python/wchar.i deleted file mode 100755 index 09471795..00000000 --- a/win64/bin/swig/share/swig/4.1.0/python/wchar.i +++ /dev/null @@ -1,21 +0,0 @@ -#ifdef __cplusplus - -%{ -#include -%} - -#else - -%{ -#include -%} - -#endif - -%types(wchar_t *); -%include - -/* - Enable swig wchar support. -*/ -#define SWIG_WCHAR diff --git a/win64/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i deleted file mode 100755 index 8942403a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/boost_shared_ptr.i +++ /dev/null @@ -1,420 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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" -%} - -%typemap(rtype) 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(rtype, TYPE)" - -%typemap(scoercein) 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 > *& - %{ if (inherits($input, "ExternalReference")) $input = slot($input,"ref"); %} - -%typemap(scoerceout) 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 > *& - %{ $result <- if (is.null($result)) $result - else new("$typemap(rtype, TYPE)", ref=$result); %} - - -%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; - - -%enddef diff --git a/win64/bin/swig/share/swig/4.1.0/r/cdata.i b/win64/bin/swig/share/swig/4.1.0/r/cdata.i deleted file mode 100755 index 1c6de446..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/r/exception.i b/win64/bin/swig/share/swig/4.1.0/r/exception.i deleted file mode 100755 index 13026e80..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/exception.i +++ /dev/null @@ -1,8 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/r/r.swg b/win64/bin/swig/share/swig/4.1.0/r/r.swg deleted file mode 100755 index c555a7de..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/r.swg +++ /dev/null @@ -1,281 +0,0 @@ -/* */ - - -%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 - -%runtime %{ -SWIGINTERN void SWIG_R_Raise(SEXP obj, const char *msg) { - Rf_error(Rf_isString(obj) ? CHAR(Rf_asChar(obj)) : msg); -} -%} - -#define %raise(OBJ, TYPE, DESC) SWIG_R_Raise(OBJ, "C/C++ exception of type " TYPE); return R_NilValue - -%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/win64/bin/swig/share/swig/4.1.0/r/rcontainer.swg b/win64/bin/swig/share/swig/4.1.0/r/rcontainer.swg deleted file mode 100755 index 81c4f912..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/rcontainer.swg +++ /dev/null @@ -1,198 +0,0 @@ - -// -// 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/win64/bin/swig/share/swig/4.1.0/r/rfragments.swg b/win64/bin/swig/share/swig/4.1.0/r/rfragments.swg deleted file mode 100755 index d6571790..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/rfragments.swg +++ /dev/null @@ -1,191 +0,0 @@ -/* 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/win64/bin/swig/share/swig/4.1.0/r/rkw.swg b/win64/bin/swig/share/swig/4.1.0/r/rkw.swg deleted file mode 100755 index ecaeca14..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/rkw.swg +++ /dev/null @@ -1,36 +0,0 @@ -/* - Warnings for R keywords, built-in names and bad names. -*/ - -#define RKW(x) %keywordwarn("'" `x` "' is a R keyword", rename="_%s") `x` -#define RSWIGKW(x) %keywordwarn("'" `x` "' is a SWIG R reserved parameter name", 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/win64/bin/swig/share/swig/4.1.0/r/ropers.swg b/win64/bin/swig/share/swig/4.1.0/r/ropers.swg deleted file mode 100755 index 0ab9829d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/ropers.swg +++ /dev/null @@ -1,32 +0,0 @@ -#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/win64/bin/swig/share/swig/4.1.0/r/rrun.swg b/win64/bin/swig/share/swig/4.1.0/r/rrun.swg deleted file mode 100755 index 7c86a802..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/rrun.swg +++ /dev/null @@ -1,420 +0,0 @@ -/* 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 -#include - -#if R_VERSION >= R_Version(2,6,0) -#define VMAXTYPE void * -#else -#define VMAXTYPE char * -#endif - -/* Last error */ -static int SWIG_lasterror_code = 0; -static char SWIG_lasterror_msg[1024]; -SWIGRUNTIME void SWIG_Error(int code, const char *format, ...) { - va_list arg; - SWIG_lasterror_code = code; - va_start(arg, format); - vsnprintf(SWIG_lasterror_msg, sizeof(SWIG_lasterror_msg), format, arg); - va_end(arg); -} - -SWIGRUNTIME const char *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:UnknownError"; -} - -#define SWIG_fail goto fail - -/* - 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/win64/bin/swig/share/swig/4.1.0/r/rstdcommon.swg b/win64/bin/swig/share/swig/4.1.0/r/rstdcommon.swg deleted file mode 100755 index 054688b1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/rstdcommon.swg +++ /dev/null @@ -1,205 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/r/rtype.swg b/win64/bin/swig/share/swig/4.1.0/r/rtype.swg deleted file mode 100755 index 021ce043..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/rtype.swg +++ /dev/null @@ -1,328 +0,0 @@ - -/* 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 *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 *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); %} - -%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/win64/bin/swig/share/swig/4.1.0/r/srun.swg b/win64/bin/swig/share/swig/4.1.0/r/srun.swg deleted file mode 100755 index a26f0447..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/srun.swg +++ /dev/null @@ -1,150 +0,0 @@ -# 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/win64/bin/swig/share/swig/4.1.0/r/std_alloc.i b/win64/bin/swig/share/swig/4.1.0/r/std_alloc.i deleted file mode 100755 index 87fa8d4a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include \ No newline at end of file diff --git a/win64/bin/swig/share/swig/4.1.0/r/std_common.i b/win64/bin/swig/share/swig/4.1.0/r/std_common.i deleted file mode 100755 index 2ba43e6e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_common.i +++ /dev/null @@ -1,73 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/r/std_container.i b/win64/bin/swig/share/swig/4.1.0/r/std_container.i deleted file mode 100755 index 7d1dc10c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/win64/bin/swig/share/swig/4.1.0/r/std_deque.i b/win64/bin/swig/share/swig/4.1.0/r/std_deque.i deleted file mode 100755 index 0c757ab0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include \ No newline at end of file diff --git a/win64/bin/swig/share/swig/4.1.0/r/std_except.i b/win64/bin/swig/share/swig/4.1.0/r/std_except.i deleted file mode 100755 index 3e056e7d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/r/std_list.i b/win64/bin/swig/share/swig/4.1.0/r/std_list.i deleted file mode 100755 index e6928eae..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_list.i +++ /dev/null @@ -1,5 +0,0 @@ -#define %swig_list_methods(Type...) %swig_sequence_methods(Type) -#define %swig_list_methods_val(Type...) %swig_sequence_methods_val(Type); - -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/r/std_map.i b/win64/bin/swig/share/swig/4.1.0/r/std_map.i deleted file mode 100755 index aa889d86..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_map.i +++ /dev/null @@ -1,5 +0,0 @@ -%fragment("StdMapTraits","header") -%{ -%} - -%include diff --git a/win64/bin/swig/share/swig/4.1.0/r/std_pair.i b/win64/bin/swig/share/swig/4.1.0/r/std_pair.i deleted file mode 100755 index fa218700..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_pair.i +++ /dev/null @@ -1,5 +0,0 @@ -%fragment("StdPairTraits","header") -%{ -%} - -%include diff --git a/win64/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i deleted file mode 100755 index 01a0e9dd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/win64/bin/swig/share/swig/4.1.0/r/std_string.i b/win64/bin/swig/share/swig/4.1.0/r/std_string.i deleted file mode 100755 index 0afc2468..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_string.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/r/std_vector.i b/win64/bin/swig/share/swig/4.1.0/r/std_vector.i deleted file mode 100755 index 8c11af18..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/std_vector.i +++ /dev/null @@ -1,1105 +0,0 @@ -// 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 > > > { - 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(STRSXP, val->at(pos).size())); - // Fill the R vector - for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) - { - CHARACTER_POINTER(VECTOR_ELT(result, pos))[vpos] = Rf_mkChar(val->at(pos).at(vpos).c_str()); - } - } - 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 > & -%{ %} - -// 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);" - -%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.character)) %} -%typemap("rtype") std::vector > >, std::vector > > *, std::vector > > & "list" -%typemap("scoercein") std::vector< std::vector > >, std::vector > > *, std::vector > > & "$input = lapply($input, as.character);" - -// 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 >&, - 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 - -%apply std::vector< std::basic_string > { std::vector }; -%apply std::vector< std::vector< std::basic_string > > { std::vector< std::vector > }; diff --git a/win64/bin/swig/share/swig/4.1.0/r/stl.i b/win64/bin/swig/share/swig/4.1.0/r/stl.i deleted file mode 100755 index c7eb8368..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/stl.i +++ /dev/null @@ -1,9 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/r/swigmove.i b/win64/bin/swig/share/swig/4.1.0/r/swigmove.i deleted file mode 100755 index 03e87fa2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/r/typemaps.i b/win64/bin/swig/share/swig/4.1.0/r/typemaps.i deleted file mode 100755 index da64f2d0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/r/typemaps.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/Makefile.swig b/win64/bin/swig/share/swig/4.1.0/ruby/Makefile.swig deleted file mode 100755 index 4bd08a1d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/Makefile.swig +++ /dev/null @@ -1,42 +0,0 @@ -# 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/win64/bin/swig/share/swig/4.1.0/ruby/argcargv.i b/win64/bin/swig/share/swig/4.1.0/ruby/argcargv.i deleted file mode 100755 index 32b7f600..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/argcargv.i +++ /dev/null @@ -1,44 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - - Use it as follows: - - %apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) } - - %inline %{ - - int mainApp(size_t argc, const char **argv) { - return argc; - } - - then from ruby: - - $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/win64/bin/swig/share/swig/4.1.0/ruby/attribute.i b/win64/bin/swig/share/swig/4.1.0/ruby/attribute.i deleted file mode 100755 index b18f9ae8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i deleted file mode 100755 index 971a52d4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/boost_shared_ptr.i +++ /dev/null @@ -1,401 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/win64/bin/swig/share/swig/4.1.0/ruby/carrays.i b/win64/bin/swig/share/swig/4.1.0/ruby/carrays.i deleted file mode 100755 index ae694205..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/carrays.i +++ /dev/null @@ -1,6 +0,0 @@ -%define %array_class(TYPE,NAME) - %array_class_wrap(TYPE,NAME,__getitem__,__setitem__) -%enddef - -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/cdata.i b/win64/bin/swig/share/swig/4.1.0/ruby/cdata.i deleted file mode 100755 index 1c6de446..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/cmalloc.i b/win64/bin/swig/share/swig/4.1.0/ruby/cmalloc.i deleted file mode 100755 index d3a1222e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/cpointer.i b/win64/bin/swig/share/swig/4.1.0/ruby/cpointer.i deleted file mode 100755 index 0e75cbcd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/cstring.i b/win64/bin/swig/share/swig/4.1.0/ruby/cstring.i deleted file mode 100755 index 033677b3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/director.swg b/win64/bin/swig/share/swig/4.1.0/ruby/director.swg deleted file mode 100755 index 44dd1aec..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/director.swg +++ /dev/null @@ -1,311 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(); - } - }; - - /* 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/win64/bin/swig/share/swig/4.1.0/ruby/embed.i b/win64/bin/swig/share/swig/4.1.0/ruby/embed.i deleted file mode 100755 index 3c599aa6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/embed.i +++ /dev/null @@ -1,16 +0,0 @@ -%wrapper %{ - -#include - -int -main(argc, argv) - int argc; - char **argv; -{ - ruby_init(); - ruby_options(argc, argv); - ruby_run(); - return 0; -} - -%} diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/exception.i b/win64/bin/swig/share/swig/4.1.0/ruby/exception.i deleted file mode 100755 index 6b07bb10..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/exception.i +++ /dev/null @@ -1,5 +0,0 @@ -%include - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg);)) -} diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/extconf.rb b/win64/bin/swig/share/swig/4.1.0/ruby/extconf.rb deleted file mode 100755 index b51d2f34..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/extconf.rb +++ /dev/null @@ -1,9 +0,0 @@ -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/win64/bin/swig/share/swig/4.1.0/ruby/extra-install.list b/win64/bin/swig/share/swig/4.1.0/ruby/extra-install.list deleted file mode 100755 index 24a1995f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/extra-install.list +++ /dev/null @@ -1,3 +0,0 @@ -# see top-level Makefile.in -Makefile.swig -extconf.rb diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/factory.i b/win64/bin/swig/share/swig/4.1.0/ruby/factory.i deleted file mode 100755 index 377f0080..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/file.i b/win64/bin/swig/share/swig/4.1.0/ruby/file.i deleted file mode 100755 index 0cd20728..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/file.i +++ /dev/null @@ -1,39 +0,0 @@ -// 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/win64/bin/swig/share/swig/4.1.0/ruby/progargcargv.i b/win64/bin/swig/share/swig/4.1.0/ruby/progargcargv.i deleted file mode 100755 index 119853f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/progargcargv.i +++ /dev/null @@ -1,34 +0,0 @@ -/* -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/win64/bin/swig/share/swig/4.1.0/ruby/ruby.swg b/win64/bin/swig/share/swig/4.1.0/ruby/ruby.swg deleted file mode 100755 index 36b40850..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/ruby.swg +++ /dev/null @@ -1,72 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg deleted file mode 100755 index d5b5bb0c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyapi.swg +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg deleted file mode 100755 index 0c0ff6a1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyautodoc.swg +++ /dev/null @@ -1,105 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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-, "Subtraction 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__, "Subtraction 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/win64/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg deleted file mode 100755 index 493d9bbc..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyclasses.swg +++ /dev/null @@ -1,404 +0,0 @@ -#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) - { - /* - 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(VALUEFUNC(swig_rescue_funcall), VALUE(&args), - (VALUEFUNC(swig_rescue_swallow)), Qnil); - } - if (ret == Qnil) { - VALUE a = rb_funcall2( _obj, hash_id, 0, 0 ); - VALUE b = rb_funcall2( VALUE(other), hash_id, 0, 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(VALUEFUNC(swig_rescue_funcall), VALUE(&args), - (VALUEFUNC(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(VALUEFUNC(swig_rescue_funcall), VALUE(&args), - (VALUEFUNC(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/win64/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg deleted file mode 100755 index b79504cc..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubycomplex.swg +++ /dev/null @@ -1,148 +0,0 @@ -/* - 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_funcall2(obj, real_id, 0, 0); -} - -SWIGINTERN VALUE SWIG_Complex_Imaginary(VALUE obj) { - static ID imag_id = rb_intern("imag"); - return rb_funcall2(obj, imag_id, 0, 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.0f); - 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/win64/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg deleted file mode 100755 index f75b059e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubycontainer.swg +++ /dev/null @@ -1,1114 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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() const - { - int s = (int) size(); - for (int i = 0; i < s; ++i) { - VALUE item = rb_ary_entry(_seq, i ); - if (!swig::check(item)) - 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( const 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 (const 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( const 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( const 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( const 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_funcall2( i, id_start, 0, 0 ); - VALUE end = rb_funcall2( i, id_end, 0, 0 ); - bool noend = ( rb_funcall2( i, id_noend, 0, 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 (const 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 (const 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/win64/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg deleted file mode 100755 index 31040a2d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubycontainer_extended.swg +++ /dev/null @@ -1,134 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubydef.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubydef.swg deleted file mode 100755 index b173494c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubydef.swg +++ /dev/null @@ -1 +0,0 @@ -/* empty file added for backward comp. */ diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg deleted file mode 100755 index cf321246..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyerrors.swg +++ /dev/null @@ -1,154 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg deleted file mode 100755 index f8d9751e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyfragments.swg +++ /dev/null @@ -1,23 +0,0 @@ -/* - - 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/win64/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg deleted file mode 100755 index d75d4f41..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyhead.swg +++ /dev/null @@ -1,185 +0,0 @@ -#if __GNUC__ >= 7 -#pragma GCC diagnostic push -#if defined(__cplusplus) -#pragma GCC diagnostic ignored "-Wregister" -#if __GNUC__ >= 10 -#pragma GCC diagnostic ignored "-Wvolatile" -#if __GNUC__ >= 11 -#pragma GCC diagnostic ignored "-Wdeprecated-enum-enum-conversion" -#endif -#endif -#endif -#endif - -#include - -#if __GNUC__ >= 7 -#pragma GCC diagnostic pop -#endif - -/* 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 - - - -/* - * The following macros are used for providing the correct type of a - * function pointer to the Ruby C API. - * Starting with Ruby 2.7 (corresponding to RB_METHOD_DEFINITION_DECL being - * defined) these macros act transparently due to Ruby's moving away from - * ANYARGS and instead employing strict function signatures. - * - * Note: In case of C (not C++) the macros are transparent even before - * Ruby 2.7 due to the fact that the Ruby C API used function declarators - * with empty parentheses, which allows for an unspecified number of - * arguments. - * - * PROTECTFUNC(f) is used for the function pointer argument of the Ruby - * C API function rb_protect(). - * - * VALUEFUNC(f) is used for the function pointer argument(s) of Ruby C API - * functions like rb_define_method() and rb_define_singleton_method(). - * - * VOIDFUNC(f) is 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 Ruby C API functions like Data_Wrap_Struct() - * and Data_Make_Struct(). - * - * SWIG_RUBY_VOID_ANYARGS_FUNC(f) is used for the function pointer - * argument(s) of Ruby C API functions like rb_define_virtual_variable(). - * - * SWIG_RUBY_INT_ANYARGS_FUNC(f) is used for the function pointer - * argument(s) of Ruby C API functions like st_foreach(). - */ -#if defined(__cplusplus) && !defined(RB_METHOD_DEFINITION_DECL) -# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f) -# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f) -# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) -# define SWIG_RUBY_VOID_ANYARGS_FUNC(f) ((void (*)(ANYARGS))(f)) -# define SWIG_RUBY_INT_ANYARGS_FUNC(f) ((int (*)(ANYARGS))(f)) -#else -# define PROTECTFUNC(f) (f) -# define VALUEFUNC(f) (f) -# define VOIDFUNC(f) (f) -# define SWIG_RUBY_VOID_ANYARGS_FUNC(f) (f) -# define SWIG_RUBY_INT_ANYARGS_FUNC(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/win64/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg deleted file mode 100755 index 00b72042..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyinit.swg +++ /dev/null @@ -1 +0,0 @@ -%insert(initbeforefunc) "swiginit.swg" diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg deleted file mode 100755 index 38fd8a44..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyiterators.swg +++ /dev/null @@ -1,932 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubykw.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubykw.swg deleted file mode 100755 index 61f94a0c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubykw.swg +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef RUBY_RUBYKW_SWG_ -#define RUBY_RUBYKW_SWG_ - -/* Warnings for Ruby keywords */ -#define RUBYKW(x) %keywordwarn("'" `x` "' is a ruby keyword",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/win64/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg deleted file mode 100755 index e7af6b6a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubymacros.swg +++ /dev/null @@ -1,13 +0,0 @@ - -// 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/win64/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg deleted file mode 100755 index 080af14d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyopers.swg +++ /dev/null @@ -1,55 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg deleted file mode 100755 index 4931656e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyprimtypes.swg +++ /dev/null @@ -1,228 +0,0 @@ -/* ----------------------------------------------------------------------------- - * rubyprimtypes.swg - * ----------------------------------------------------------------------------- */ -/* ------------------------------------------------------------ - * Primitive Types - * ------------------------------------------------------------ */ - -/* auxiliary ruby fail method */ - -%fragment("SWIG_ruby_failed","header") -{ -SWIGINTERN VALUE -SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2)) -{ - return Qnil; -} -} - -%define %ruby_aux_method(Type, Method, Action) -SWIGINTERN VALUE SWIG_AUX_##Method##(VALUE arg) -{ - VALUE *args = (VALUE *)arg; - 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(VALUEFUNC(SWIG_AUX_NUM2LONG), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2LL), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2ULL), (VALUE)a, VALUEFUNC(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(VALUEFUNC(SWIG_AUX_NUM2DBL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { - if (val) *val = v; - return SWIG_OK; - } - } - return SWIG_TypeError; -} -} - - diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg deleted file mode 100755 index 982b2551..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyrun.swg +++ /dev/null @@ -1,468 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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__"); - if (NIL_P(stype)) - return NULL; - 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; - } - - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE)) { - if (!RDATA(obj)->dfree) - return SWIG_ERROR_RELEASE_NOT_OWNED; - } - - /* 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; - } - } - - if (flags & SWIG_POINTER_CLEAR) { - DATA_PTR(obj) = 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); - rb_undef_alloc_func(cl); - /* 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_funcall2( proc, swig_arity_id, 0, 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/win64/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg deleted file mode 100755 index 94cc1cdb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyruntime.swg +++ /dev/null @@ -1,9 +0,0 @@ - -%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/win64/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg deleted file mode 100755 index be7e3750..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubystdautodoc.swg +++ /dev/null @@ -1,33 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg deleted file mode 100755 index 4514ddfe..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubystdcommon.swg +++ /dev/null @@ -1,199 +0,0 @@ - -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg deleted file mode 100755 index 79393a2e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubystdcommon_forward.swg +++ /dev/null @@ -1,15 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg deleted file mode 100755 index 96ef11f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubystdfunctors.swg +++ /dev/null @@ -1,162 +0,0 @@ -/** - * @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/win64/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg deleted file mode 100755 index 0ac8f3c7..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubystrings.swg +++ /dev/null @@ -1,57 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg deleted file mode 100755 index 7c95afc7..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubytracking.swg +++ /dev/null @@ -1,136 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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(ID id, VALUE *var) { - 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", - VALUEFUNC(swig_ruby_trackings_count), - SWIG_RUBY_VOID_ANYARGS_FUNC((rb_gvar_setter_t*)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(st_data_t ptr, st_data_t obj, st_data_t meth) { - ((void (*) (void *, VALUE))meth)((void *)ptr, (VALUE)obj); - return ST_CONTINUE; -} - -SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) { - st_foreach(swig_ruby_trackings, - SWIG_RUBY_INT_ANYARGS_FUNC(swig_ruby_internal_iterate_callback), - (st_data_t)meth); -} - -#ifdef __cplusplus -} -#endif diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg deleted file mode 100755 index 585495a8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubytypemaps.swg +++ /dev/null @@ -1,62 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg deleted file mode 100755 index a9cf6be3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubyuserdir.swg +++ /dev/null @@ -1,20 +0,0 @@ -#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/win64/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg b/win64/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg deleted file mode 100755 index 93149449..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/rubywstrings.swg +++ /dev/null @@ -1,58 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/ruby/std_alloc.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_alloc.i deleted file mode 100755 index 2b9342fb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_alloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/std_array.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_array.i deleted file mode 100755 index 5ed761b1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_array.i +++ /dev/null @@ -1,102 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i deleted file mode 100755 index 304f1fc9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i deleted file mode 100755 index bcd9c026..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_basic_string.i +++ /dev/null @@ -1,92 +0,0 @@ -#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/win64/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i deleted file mode 100755 index e60261f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/std_common.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_common.i deleted file mode 100755 index fc3bb143..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_common.i +++ /dev/null @@ -1,74 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/ruby/std_complex.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_complex.i deleted file mode 100755 index f330b5c7..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_complex.i +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/ruby/std_container.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_container.i deleted file mode 100755 index 01f1890a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_container.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/std_deque.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_deque.i deleted file mode 100755 index c04de7f0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_deque.i +++ /dev/null @@ -1,30 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_except.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_except.i deleted file mode 100755 index 3e056e7d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/std_functors.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_functors.i deleted file mode 100755 index 0f85e401..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_functors.i +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @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/win64/bin/swig/share/swig/4.1.0/ruby/std_ios.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_ios.i deleted file mode 100755 index a347a9a0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_ios.i +++ /dev/null @@ -1,14 +0,0 @@ - -#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/win64/bin/swig/share/swig/4.1.0/ruby/std_iostream.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_iostream.i deleted file mode 100755 index 19569d43..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_iostream.i +++ /dev/null @@ -1,12 +0,0 @@ -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/win64/bin/swig/share/swig/4.1.0/ruby/std_list.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_list.i deleted file mode 100755 index 2b0bc258..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_list.i +++ /dev/null @@ -1,42 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_map.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_map.i deleted file mode 100755 index 31d835b4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_map.i +++ /dev/null @@ -1,424 +0,0 @@ -// -// 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_funcall2(obj, id_to_a, 0, 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/win64/bin/swig/share/swig/4.1.0/ruby/std_multimap.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_multimap.i deleted file mode 100755 index ed0f1c35..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_multimap.i +++ /dev/null @@ -1,226 +0,0 @@ -/* - 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_funcall2(obj, id_to_a, 0, 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/win64/bin/swig/share/swig/4.1.0/ruby/std_multiset.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_multiset.i deleted file mode 100755 index 3e357136..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_multiset.i +++ /dev/null @@ -1,50 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_pair.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_pair.i deleted file mode 100755 index 3f38a8e5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_pair.i +++ /dev/null @@ -1,212 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_queue.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_queue.i deleted file mode 100755 index 0cca3c41..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_queue.i +++ /dev/null @@ -1,33 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_set.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_set.i deleted file mode 100755 index 1d96a65e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_set.i +++ /dev/null @@ -1,228 +0,0 @@ -/* - 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<$type>($1, 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($1.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/win64/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i deleted file mode 100755 index 3090c44a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_shared_ptr.i +++ /dev/null @@ -1,144 +0,0 @@ -#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) { - int res = SWIG_ERROR; - swig_type_info *descriptor = type_info >(); - if (val) { - std::shared_ptr *p = 0; - swig_ruby_owntype newmem = {0, 0}; - res = descriptor ? SWIG_ConvertPtrAndOwn(obj, (void **)&p, descriptor, 0, &newmem) : SWIG_ERROR; - if (SWIG_IsOK(res)) { - 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; - } - } else { - res = descriptor ? SWIG_ConvertPtr(obj, 0, descriptor, 0) : SWIG_ERROR; - } - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_sstream.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_sstream.i deleted file mode 100755 index c145049e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_sstream.i +++ /dev/null @@ -1,2 +0,0 @@ - -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/std_stack.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_stack.i deleted file mode 100755 index 5d9c205f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_stack.i +++ /dev/null @@ -1,35 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i deleted file mode 100755 index 7b3552f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_streambuf.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/std_string.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_string.i deleted file mode 100755 index 680b6887..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_string.i +++ /dev/null @@ -1,7 +0,0 @@ - -%warnfilter(SWIGWARN_RUBY_WRONG_NAME) std::basic_string; - -AUTODOC(substr, "Return a portion of the String"); - -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i deleted file mode 100755 index 79320de6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i deleted file mode 100755 index 8a74a5c0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_map.i +++ /dev/null @@ -1,83 +0,0 @@ -// -// 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_funcall2(obj, id_to_a, 0, 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/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i deleted file mode 100755 index 3c1071ba..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_multimap.i +++ /dev/null @@ -1,100 +0,0 @@ -/* - 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_funcall2(obj, id_to_a, 0, 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/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i deleted file mode 100755 index 429c5112..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_multiset.i +++ /dev/null @@ -1,50 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i deleted file mode 100755 index 29bf70f6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_unordered_set.i +++ /dev/null @@ -1,50 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_vector.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_vector.i deleted file mode 100755 index 49744314..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_vector.i +++ /dev/null @@ -1,52 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_vectora.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_vectora.i deleted file mode 100755 index 2d18009e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_vectora.i +++ /dev/null @@ -1,36 +0,0 @@ -/* - 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/win64/bin/swig/share/swig/4.1.0/ruby/std_wstring.i b/win64/bin/swig/share/swig/4.1.0/ruby/std_wstring.i deleted file mode 100755 index a7026143..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/std_wstring.i +++ /dev/null @@ -1,63 +0,0 @@ -%{ -#if defined(__linux__) -#include -#if BYTE_ORDER == LITTLE_ENDIAN -#define SWIG_RUBY_ENDIAN "LE" -#elif BYTE_ORDER == BIG_ENDIAN -#define SWIG_RUBY_ENDIAN "BE" -#endif -#else -#define SWIG_RUBY_ENDIAN "LE" -#endif - -#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-16" SWIG_RUBY_ENDIAN -#elif WCHAR_MAX == 0x7fffffff || WCHAR_MAX == 0xffffffff -#define SWIG_RUBY_WSTRING_ENCODING "UTF-32" SWIG_RUBY_ENDIAN -#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/win64/bin/swig/share/swig/4.1.0/ruby/stl.i b/win64/bin/swig/share/swig/4.1.0/ruby/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/swigmove.i b/win64/bin/swig/share/swig/4.1.0/ruby/swigmove.i deleted file mode 100755 index 03e87fa2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/ruby/timeval.i b/win64/bin/swig/share/swig/4.1.0/ruby/timeval.i deleted file mode 100755 index 3df52f34..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/timeval.i +++ /dev/null @@ -1,69 +0,0 @@ -/* - 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_funcall2($input, rb_intern("tv_sec"), 0, 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/win64/bin/swig/share/swig/4.1.0/ruby/typemaps.i b/win64/bin/swig/share/swig/4.1.0/ruby/typemaps.i deleted file mode 100755 index 84090727..00000000 --- a/win64/bin/swig/share/swig/4.1.0/ruby/typemaps.i +++ /dev/null @@ -1,314 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) : - - 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/win64/bin/swig/share/swig/4.1.0/runtime.swg b/win64/bin/swig/share/swig/4.1.0/runtime.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i deleted file mode 100755 index 96cadd42..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/boost_shared_ptr.i +++ /dev/null @@ -1,401 +0,0 @@ -%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)); - %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)); - %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(SWIG_STD_MOVE($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/win64/bin/swig/share/swig/4.1.0/scilab/carrays.i b/win64/bin/swig/share/swig/4.1.0/scilab/carrays.i deleted file mode 100755 index eb4fd683..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/carrays.i +++ /dev/null @@ -1,5 +0,0 @@ -%define %array_class(TYPE,NAME) - %array_class_wrap(TYPE,NAME,__paren__,__paren_asgn__) -%enddef - -%include diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/cmalloc.i b/win64/bin/swig/share/swig/4.1.0/scilab/cmalloc.i deleted file mode 100755 index d3a1222e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/cpointer.i b/win64/bin/swig/share/swig/4.1.0/scilab/cpointer.i deleted file mode 100755 index 0e75cbcd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/exception.i b/win64/bin/swig/share/swig/4.1.0/scilab/exception.i deleted file mode 100755 index 14ec9e4c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/exception.i +++ /dev/null @@ -1,6 +0,0 @@ -%include - - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), SWIG_Scilab_Error(code, msg);) -} diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/matrix.i b/win64/bin/swig/share/swig/4.1.0/scilab/matrix.i deleted file mode 100755 index 63912a1e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/matrix.i +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Matrix typemaps - * - */ - -%include -%include -%include -%include - - diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/sciarray.swg b/win64/bin/swig/share/swig/4.1.0/scilab/sciarray.swg deleted file mode 100755 index 23bf1e67..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/sciarray.swg +++ /dev/null @@ -1,115 +0,0 @@ -/* -------------------------------------------------------------------------- - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scibool.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scibool.swg deleted file mode 100755 index 85d205bd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scibool.swg +++ /dev/null @@ -1,156 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scichar.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scichar.swg deleted file mode 100755 index 16ea2818..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scichar.swg +++ /dev/null @@ -1,292 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg deleted file mode 100755 index 9998c5ab..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scicontainer.swg +++ /dev/null @@ -1,445 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scidouble.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scidouble.swg deleted file mode 100755 index 53ffa8f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scidouble.swg +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scienum.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scienum.swg deleted file mode 100755 index 21707e80..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scienum.swg +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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(), (int)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/win64/bin/swig/share/swig/4.1.0/scilab/sciexception.swg b/win64/bin/swig/share/swig/4.1.0/scilab/sciexception.swg deleted file mode 100755 index 53a439b6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/sciexception.swg +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scifloat.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scifloat.swg deleted file mode 100755 index baa4e1d4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scifloat.swg +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/sciint.swg b/win64/bin/swig/share/swig/4.1.0/scilab/sciint.swg deleted file mode 100755 index 323fa085..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/sciint.swg +++ /dev/null @@ -1,202 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scilab.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scilab.swg deleted file mode 100755 index dfabfb79..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scilab.swg +++ /dev/null @@ -1,6 +0,0 @@ -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/scilist.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scilist.swg deleted file mode 100755 index c689ede9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scilist.swg +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scilong.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scilong.swg deleted file mode 100755 index fbc61f6f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scilong.swg +++ /dev/null @@ -1,123 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg deleted file mode 100755 index 8fbbb8ec..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scimatrixchar.swg +++ /dev/null @@ -1,199 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg deleted file mode 100755 index 701fe8fe..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scimatrixdouble.swg +++ /dev/null @@ -1,170 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg deleted file mode 100755 index 2aec1b72..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scimatrixint.swg +++ /dev/null @@ -1,175 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg deleted file mode 100755 index ec81351c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scimisctypes.swg +++ /dev/null @@ -1,69 +0,0 @@ -// 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/win64/bin/swig/share/swig/4.1.0/scilab/scipointer.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scipointer.swg deleted file mode 100755 index 005f7a5c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scipointer.swg +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg b/win64/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg deleted file mode 100755 index 80b88d20..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/sciprimtypes.swg +++ /dev/null @@ -1,23 +0,0 @@ -%include -%include - -%include - -%include -%include - -%include -%include - -%include -%include - -%include -%include -%include - -%include - -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/scirun.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scirun.swg deleted file mode 100755 index 723b1fab..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scirun.swg +++ /dev/null @@ -1,532 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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) { - 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 -SWIGEXPORT 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 -SWIGEXPORT 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/win64/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg b/win64/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg deleted file mode 100755 index 34e30665..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/sciruntime.swg +++ /dev/null @@ -1,47 +0,0 @@ -%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 -SWIGEXPORT int SWIG__Init(SWIG_GatewayParameters) { - SWIG_InitializeModule(NULL); - SWIG_CreateScilabVariables(pvApiCtx); - swig_module_initialized = 1; -%} diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/scisequence.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scisequence.swg deleted file mode 100755 index 03fb2026..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scisequence.swg +++ /dev/null @@ -1,195 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg deleted file mode 100755 index ad7e8327..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scisequencebool.swg +++ /dev/null @@ -1,98 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg deleted file mode 100755 index 3989bb22..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scisequencedouble.swg +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg deleted file mode 100755 index ec4d55f4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scisequencefloat.swg +++ /dev/null @@ -1,98 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg deleted file mode 100755 index b29d045f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scisequenceint.swg +++ /dev/null @@ -1,104 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg deleted file mode 100755 index e74270d3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scisequencepointer.swg +++ /dev/null @@ -1,123 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scishort.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scishort.swg deleted file mode 100755 index a87ebc79..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scishort.swg +++ /dev/null @@ -1,188 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg b/win64/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg deleted file mode 100755 index bd9906bc..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/scitypemaps.swg +++ /dev/null @@ -1,259 +0,0 @@ -// 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/win64/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg b/win64/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg deleted file mode 100755 index 0eb9cc25..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/sciunsignedchar.swg +++ /dev/null @@ -1,190 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i deleted file mode 100755 index 2cd1bf93..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_basic_string.i +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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/win64/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i deleted file mode 100755 index e60261f9..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_char_traits.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/std_common.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_common.i deleted file mode 100755 index cce7fb40..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_common.i +++ /dev/null @@ -1,72 +0,0 @@ -%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/win64/bin/swig/share/swig/4.1.0/scilab/std_container.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_container.i deleted file mode 100755 index 4ab39feb..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_container.i +++ /dev/null @@ -1,3 +0,0 @@ -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/std_deque.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_deque.i deleted file mode 100755 index bb8a8017..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_deque.i +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/std_except.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_except.i deleted file mode 100755 index 3e056e7d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/std_list.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_list.i deleted file mode 100755 index 17b01f3d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_list.i +++ /dev/null @@ -1,30 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/std_map.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_map.i deleted file mode 100755 index 34f11399..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_map.i +++ /dev/null @@ -1,79 +0,0 @@ -// -// 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/win64/bin/swig/share/swig/4.1.0/scilab/std_multiset.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_multiset.i deleted file mode 100755 index f8c9fa8c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_multiset.i +++ /dev/null @@ -1,30 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/std_pair.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_pair.i deleted file mode 100755 index ee9b16d4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/scilab/std_set.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_set.i deleted file mode 100755 index 44e466bf..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_set.i +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i deleted file mode 100755 index 01a0e9dd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_shared_ptr.i +++ /dev/null @@ -1,2 +0,0 @@ -#define SWIG_SHARED_PTR_NAMESPACE std -%include diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/std_string.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_string.i deleted file mode 100755 index 62a65e9f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_string.i +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 - -%typemap(throws, noblock=1) std::string { - SWIG_Scilab_Raise_Ex($1.c_str(), "$type", $&descriptor); -} - -%typemap(throws, noblock=1) const std::string & { - SWIG_Scilab_Raise_Ex($1.c_str(), "$type", $descriptor); -} diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/std_vector.i b/win64/bin/swig/share/swig/4.1.0/scilab/std_vector.i deleted file mode 100755 index 59fb165b..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/std_vector.i +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * 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/win64/bin/swig/share/swig/4.1.0/scilab/stl.i b/win64/bin/swig/share/swig/4.1.0/scilab/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/swigmove.i b/win64/bin/swig/share/swig/4.1.0/scilab/swigmove.i deleted file mode 100755 index 03e87fa2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/scilab/typemaps.i b/win64/bin/swig/share/swig/4.1.0/scilab/typemaps.i deleted file mode 100755 index 16046d48..00000000 --- a/win64/bin/swig/share/swig/4.1.0/scilab/typemaps.i +++ /dev/null @@ -1,62 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/shared_ptr.i b/win64/bin/swig/share/swig/4.1.0/shared_ptr.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/README b/win64/bin/swig/share/swig/4.1.0/std/README old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/_std_deque.i b/win64/bin/swig/share/swig/4.1.0/std/_std_deque.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_alloc.i b/win64/bin/swig/share/swig/4.1.0/std/std_alloc.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_array.i b/win64/bin/swig/share/swig/4.1.0/std/std_array.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_basic_string.i b/win64/bin/swig/share/swig/4.1.0/std/std_basic_string.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_carray.swg b/win64/bin/swig/share/swig/4.1.0/std/std_carray.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_char_traits.i b/win64/bin/swig/share/swig/4.1.0/std/std_char_traits.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_common.i b/win64/bin/swig/share/swig/4.1.0/std/std_common.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_container.i b/win64/bin/swig/share/swig/4.1.0/std/std_container.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_deque.i b/win64/bin/swig/share/swig/4.1.0/std/std_deque.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_except.i b/win64/bin/swig/share/swig/4.1.0/std/std_except.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_ios.i b/win64/bin/swig/share/swig/4.1.0/std/std_ios.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_iostream.i b/win64/bin/swig/share/swig/4.1.0/std/std_iostream.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_list.i b/win64/bin/swig/share/swig/4.1.0/std/std_list.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_map.i b/win64/bin/swig/share/swig/4.1.0/std/std_map.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_multimap.i b/win64/bin/swig/share/swig/4.1.0/std/std_multimap.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_multiset.i b/win64/bin/swig/share/swig/4.1.0/std/std_multiset.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_pair.i b/win64/bin/swig/share/swig/4.1.0/std/std_pair.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_queue.i b/win64/bin/swig/share/swig/4.1.0/std/std_queue.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_set.i b/win64/bin/swig/share/swig/4.1.0/std/std_set.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_sstream.i b/win64/bin/swig/share/swig/4.1.0/std/std_sstream.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_stack.i b/win64/bin/swig/share/swig/4.1.0/std/std_stack.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_streambuf.i b/win64/bin/swig/share/swig/4.1.0/std/std_streambuf.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_string.i b/win64/bin/swig/share/swig/4.1.0/std/std_string.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_unordered_map.i b/win64/bin/swig/share/swig/4.1.0/std/std_unordered_map.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_unordered_multimap.i b/win64/bin/swig/share/swig/4.1.0/std/std_unordered_multimap.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_unordered_multiset.i b/win64/bin/swig/share/swig/4.1.0/std/std_unordered_multiset.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_unordered_set.i b/win64/bin/swig/share/swig/4.1.0/std/std_unordered_set.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_vector.i b/win64/bin/swig/share/swig/4.1.0/std/std_vector.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_vectora.i b/win64/bin/swig/share/swig/4.1.0/std/std_vectora.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_wios.i b/win64/bin/swig/share/swig/4.1.0/std/std_wios.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_wiostream.i b/win64/bin/swig/share/swig/4.1.0/std/std_wiostream.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_wsstream.i b/win64/bin/swig/share/swig/4.1.0/std/std_wsstream.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_wstreambuf.i b/win64/bin/swig/share/swig/4.1.0/std/std_wstreambuf.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std/std_wstring.i b/win64/bin/swig/share/swig/4.1.0/std/std_wstring.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/std_except.i b/win64/bin/swig/share/swig/4.1.0/std_except.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/stdint.i b/win64/bin/swig/share/swig/4.1.0/stdint.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/stl.i b/win64/bin/swig/share/swig/4.1.0/stl.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swig.swg b/win64/bin/swig/share/swig/4.1.0/swig.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swigarch.i b/win64/bin/swig/share/swig/4.1.0/swigarch.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swigerrors.swg b/win64/bin/swig/share/swig/4.1.0/swigerrors.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swigfragments.swg b/win64/bin/swig/share/swig/4.1.0/swigfragments.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swiginit.swg b/win64/bin/swig/share/swig/4.1.0/swiginit.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swiglabels.swg b/win64/bin/swig/share/swig/4.1.0/swiglabels.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swigrun.i b/win64/bin/swig/share/swig/4.1.0/swigrun.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swigrun.swg b/win64/bin/swig/share/swig/4.1.0/swigrun.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swigwarn.swg b/win64/bin/swig/share/swig/4.1.0/swigwarn.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/swigwarnings.swg b/win64/bin/swig/share/swig/4.1.0/swigwarnings.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/Makefile.in b/win64/bin/swig/share/swig/4.1.0/tcl/Makefile.in deleted file mode 100755 index d1b6468e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/Makefile.in +++ /dev/null @@ -1,122 +0,0 @@ -# --------------------------------------------------------------- -# SWIG Tcl Makefile -# -# This file can be used to build various Tcl extensions with SWIG. -# By default this file is set up for dynamic loading, but it can -# be easily customized for static extensions by modifying various -# portions of the file. -# -# SRCS = C source files -# CXXSRCS = C++ source files -# OBJCSRCS = Objective-C source files -# OBJS = Additional .o files (compiled previously) -# INTERFACE = SWIG interface file -# TARGET = Name of target module or executable -# -# Many portions of this file were created by the SWIG configure -# script and should already reflect your machine. However, you -# may need to modify the Makefile to reflect your specific -# application. -#---------------------------------------------------------------- - -SRCS = -CXXSRCS = -OBJCSRCS = -OBJS = -INTERFACE = -WRAPFILE = $(INTERFACE:.i=_wrap.c) -WRAPOBJ = $(INTERFACE:.i=_wrap.o) -TARGET = module@SO@ # Use this kind of target for dynamic loading -#TARGET = my_tclsh # Use this target for static linking - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -CC = @CC@ -CXX = @CXX@ -OBJC = @CC@ -Wno-import # -Wno-import needed for gcc -CFLAGS = -INCLUDES = -LIBS = - -# SWIG Options -# SWIG = location of the SWIG executable -# SWIGOPT = SWIG compiler options -# SWIGCC = Compiler used to compile the wrapper file - -SWIG = $(exec_prefix)/bin/swig -SWIGOPT = -tcl -SWIGCC = $(CC) - -# SWIG Library files. Uncomment if rebuilding tclsh -#SWIGLIBS = -ltclsh.i - -# Rules for creating .o files from source. - -COBJS = $(SRCS:.c=.o) -CXXOBJS = $(CXXSRCS:.cxx=.o) -OBJCOBJS = $(OBJCSRCS:.m=.o) -ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) - -# Command that will be used to build the final extension. -BUILD = $(SWIGCC) - -# Uncomment the following if you are using dynamic loading -CCSHARED = @CCSHARED@ -BUILD = @LDSHARED@ - -# Uncomment the following if you are using dynamic loading with C++ and -# need to provide additional link libraries (this is not always required). - -#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ - -L/usr/local/lib -lg++ -lstdc++ -lgcc - -# Tcl installation (where is Tcl located) - -TCL_INCLUDE = @TCLINCLUDE@ -TCL_LIB = @TCLLIB@ - -# Build libraries (needed for static builds) - -LIBM = @LIBM@ -LIBC = @LIBC@ -SYSLIBS = $(LIBM) $(LIBC) @LIBS@ - -# Build options (uncomment only one of these) - -BUILD_LIBS = $(LIBS) # Dynamic loading -#BUILD_LIBS = $(TCL_LIB) -ltcl $(LIBS) $(SYSLIBS) # tclsh - -# Compilation rules for non-SWIG components - -.SUFFIXES: .c .cxx .m - -.c.o: - $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - -.cxx.o: - $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< - -.m.o: - $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< - - -# ---------------------------------------------------------------------- -# Rules for building the extension -# ---------------------------------------------------------------------- - -all: $(TARGET) - -# Convert the wrapper file into an object file - -$(WRAPOBJ) : $(WRAPFILE) - $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDES) $(TCL_INCLUDE) - -$(WRAPFILE) : $(INTERFACE) - $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) - -$(TARGET): $(WRAPOBJ) $(ALLOBJS) - $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) - -clean: - rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/argcargv.i b/win64/bin/swig/share/swig/4.1.0/tcl/argcargv.i deleted file mode 100755 index 988c2766..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/argcargv.i +++ /dev/null @@ -1,29 +0,0 @@ -/* ------------------------------------------------------------ - * SWIG library containing argc and argv multi-argument typemaps - * ------------------------------------------------------------ */ - -%typemap(in) (int ARGC, char **ARGV) { - int i, nitems; - Tcl_Obj **listobjv; - if (Tcl_ListObjGetElements(interp, $input, &nitems, &listobjv) == TCL_ERROR) { - SWIG_exception_fail(SWIG_ValueError, "in method '$symname', Expecting list of argv"); - goto fail; - } - $1 = ($1_ltype) nitems; - $2 = (char **) malloc((nitems+1)*sizeof(char *)); - for (i = 0; i < nitems; i++) { - $2[i] = Tcl_GetStringFromObj(listobjv[i], NULL); - } - $2[i] = NULL; -} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { - int len; - $1 = Tcl_ListObjLength(interp, $input, &len) == TCL_OK; -} - -%typemap(freearg) (int ARGC, char **ARGV) { - if ($2 != NULL) { - free((void *)$2); - } -} diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/attribute.i b/win64/bin/swig/share/swig/4.1.0/tcl/attribute.i deleted file mode 100755 index b18f9ae8..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/attribute.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/carrays.i b/win64/bin/swig/share/swig/4.1.0/tcl/carrays.i deleted file mode 100755 index beca74af..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/carrays.i +++ /dev/null @@ -1,4 +0,0 @@ -%include - - - diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/cdata.i b/win64/bin/swig/share/swig/4.1.0/tcl/cdata.i deleted file mode 100755 index 1c6de446..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/cdata.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/cmalloc.i b/win64/bin/swig/share/swig/4.1.0/tcl/cmalloc.i deleted file mode 100755 index d3a1222e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/cmalloc.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/cpointer.i b/win64/bin/swig/share/swig/4.1.0/tcl/cpointer.i deleted file mode 100755 index 0e75cbcd..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/cpointer.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/cstring.i b/win64/bin/swig/share/swig/4.1.0/tcl/cstring.i deleted file mode 100755 index 033677b3..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/cstring.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/cwstring.i b/win64/bin/swig/share/swig/4.1.0/tcl/cwstring.i deleted file mode 100755 index 6a92584e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/cwstring.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/exception.i b/win64/bin/swig/share/swig/4.1.0/tcl/exception.i deleted file mode 100755 index 1ddbb028..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/exception.i +++ /dev/null @@ -1,6 +0,0 @@ -%include - - -%insert("runtime") { - %define_as(SWIG_exception(code, msg), %block(%error(code, msg); return TCL_ERROR;)) -} diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/factory.i b/win64/bin/swig/share/swig/4.1.0/tcl/factory.i deleted file mode 100755 index 377f0080..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/factory.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i deleted file mode 100755 index 77738159..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_auto_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_auto_ptr.i - * - * SWIG library file for handling std::auto_ptr. - * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy - * class when returning a std::auto_ptr from a function. - * Memory ownership is passed from the proxy class to the std::auto_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %auto_ptr(TYPE) -%typemap(in, noblock=1) std::auto_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::auto_ptr< TYPE > %{ - Tcl_SetObjResult(interp, SWIG_NewInstanceObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::auto_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::auto_ptr< TYPE >; -%enddef - -namespace std { - template class auto_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/std_common.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_common.i deleted file mode 100755 index 5710a74c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_common.i +++ /dev/null @@ -1,17 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/tcl/std_deque.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_deque.i deleted file mode 100755 index 30b13946..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_deque.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/std_except.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_except.i deleted file mode 100755 index 3e056e7d..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_except.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/std_map.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_map.i deleted file mode 100755 index 844c3db1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_map.i +++ /dev/null @@ -1,79 +0,0 @@ -// -// 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/win64/bin/swig/share/swig/4.1.0/tcl/std_pair.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_pair.i deleted file mode 100755 index ee9b16d4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_pair.i +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/tcl/std_string.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_string.i deleted file mode 100755 index fcef0362..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_string.i +++ /dev/null @@ -1,2 +0,0 @@ -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i deleted file mode 100755 index 6609012a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_unique_ptr.i +++ /dev/null @@ -1,39 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_unique_ptr.i - * - * SWIG library file for handling std::unique_ptr. - * Memory ownership is passed from the std::unique_ptr C++ layer to the proxy - * class when returning a std::unique_ptr from a function. - * Memory ownership is passed from the proxy class to the std::unique_ptr in the - * C++ layer when passed as a parameter to a wrapped function. - * ----------------------------------------------------------------------------- */ - -%define %unique_ptr(TYPE) -%typemap(in, noblock=1) std::unique_ptr< TYPE > (void *argp = 0, int res = 0) { - res = SWIG_ConvertPtr($input, &argp, $descriptor(TYPE *), SWIG_POINTER_RELEASE | %convertptr_flags); - if (!SWIG_IsOK(res)) { - if (res == SWIG_ERROR_RELEASE_NOT_OWNED) { - %releasenotowned_fail(res, "TYPE *", $symname, $argnum); - } else { - %argument_fail(res, "TYPE *", $symname, $argnum); - } - } - $1.reset((TYPE *)argp); -} - -%typemap (out) std::unique_ptr< TYPE > %{ - Tcl_SetObjResult(interp, SWIG_NewInstanceObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN)); -%} - -%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1) std::unique_ptr< TYPE > { - void *vptr = 0; - int res = SWIG_ConvertPtr($input, &vptr, $descriptor(TYPE *), 0); - $1 = SWIG_CheckState(res); -} - -%template() std::unique_ptr< TYPE >; -%enddef - -namespace std { - template class unique_ptr {}; -} diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/std_vector.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_vector.i deleted file mode 100755 index cbcff732..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_vector.i +++ /dev/null @@ -1,436 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -SWIGINTERN Tcl_Obj* SwigString_FromString(const std::string &s) { - return Tcl_NewStringObj(s.data(), (int)s.length()); -} - -SWIGINTERN 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; -} - -SWIGINTERN int SwigString_AsString(Tcl_Interp *interp, Tcl_Obj *o, std::string *val) { - int len; - const char* temp = Tcl_GetStringFromObj(o, &len); - (void)interp; - 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 - else 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 - else 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/win64/bin/swig/share/swig/4.1.0/tcl/std_wstring.i b/win64/bin/swig/share/swig/4.1.0/tcl/std_wstring.i deleted file mode 100755 index 3e13bdec..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/std_wstring.i +++ /dev/null @@ -1,2 +0,0 @@ -%include -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/stl.i b/win64/bin/swig/share/swig/4.1.0/tcl/stl.i deleted file mode 100755 index 534c6931..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/stl.i +++ /dev/null @@ -1,10 +0,0 @@ -/* ----------------------------------------------------------------------------- - * stl.i - * ----------------------------------------------------------------------------- */ - -%include -%include -%include -%include -%include - diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/swigmove.i b/win64/bin/swig/share/swig/4.1.0/tcl/swigmove.i deleted file mode 100755 index 03e87fa2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/swigmove.i +++ /dev/null @@ -1 +0,0 @@ -%include diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/tcl8.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tcl8.swg deleted file mode 100755 index 79d1f58c..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tcl8.swg +++ /dev/null @@ -1,42 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/tcl/tclapi.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclapi.swg deleted file mode 100755 index 96db7b9e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclapi.swg +++ /dev/null @@ -1,108 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg deleted file mode 100755 index 8604e443..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclerrors.swg +++ /dev/null @@ -1,76 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg deleted file mode 100755 index 6c9b3f9a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclfragments.swg +++ /dev/null @@ -1,22 +0,0 @@ -/* - - 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/win64/bin/swig/share/swig/4.1.0/tcl/tclinit.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclinit.swg deleted file mode 100755 index 7a08c377..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclinit.swg +++ /dev/null @@ -1,140 +0,0 @@ -/* ------------------------------------------------------------ - * 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.4" -#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 - if (Tcl_InitStubs(interp, 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/win64/bin/swig/share/swig/4.1.0/tcl/tclinterp.i b/win64/bin/swig/share/swig/4.1.0/tcl/tclinterp.i deleted file mode 100755 index 7d9c5883..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclinterp.i +++ /dev/null @@ -1,17 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/tcl/tclkw.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclkw.swg deleted file mode 100755 index 39242fd4..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclkw.swg +++ /dev/null @@ -1,10 +0,0 @@ -#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/win64/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg deleted file mode 100755 index c063d360..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclmacros.swg +++ /dev/null @@ -1,4 +0,0 @@ -%include - - - diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/tclopers.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclopers.swg deleted file mode 100755 index f9509475..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclopers.swg +++ /dev/null @@ -1,43 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg deleted file mode 100755 index 615c324f..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclprimtypes.swg +++ /dev/null @@ -1,230 +0,0 @@ -/* ------------------------------------------------------------ - * 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) -{ - Tcl_WideInt v; - if (Tcl_GetWideIntFromObj(0, obj, &v) == TCL_OK) { - if (sizeof(v) > sizeof(*val) && (v < LLONG_MIN || v > LLONG_MAX)) { - return SWIG_OverflowError; - } - 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/win64/bin/swig/share/swig/4.1.0/tcl/tclresult.i b/win64/bin/swig/share/swig/4.1.0/tcl/tclresult.i deleted file mode 100755 index 7bc90cec..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclresult.i +++ /dev/null @@ -1,27 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/tcl/tclrun.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclrun.swg deleted file mode 100755 index 4decfdd1..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclrun.swg +++ /dev/null @@ -1,722 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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_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; - const char *cmd_name; - /* 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); - } - cmd_name = c; - - c++; - c = SWIG_UnpackData(c,ptr,sizeof(void *)); - - if (ty) { - tc = c ? SWIG_TypeCheck(c,ty) : 0; - if (tc) { - Tcl_CmdInfo info; - if (Tcl_GetCommandInfo(interp, cmd_name, &info)) { - swig_instance *inst = (swig_instance *)info.objClientData; - if (!inst->thisvalue) { - *ptr = 0; - } - assert(inst->thisvalue == *ptr); - if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !SWIG_Thisown(inst->thisvalue)) { - return SWIG_ERROR_RELEASE_NOT_OWNED; - } else { - if (flags & SWIG_POINTER_DISOWN) { - SWIG_Disown((void *) *ptr); - } - if (flags & SWIG_POINTER_CLEAR) { - inst->thisvalue = 0; - } - { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc,(void *) *ptr,&newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } - } - } - } else { - return SWIG_ERROR; - } - } - - 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; - int has_command; - char *name; - name = Tcl_GetStringFromObj(robj,NULL); - has_command = Tcl_GetCommandInfo(interp, name, &ci); - if (!has_command || 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); - } - } else { - swig_instance *inst = (swig_instance *)ci.objClientData; - /* Restore thisvalue as SWIG_POINTER_CLEAR may have been used to set it to zero. - Occurs when the C pointer is re-used by the memory allocator and the command has - been created and not destroyed - bug?? - see cpp11_std_unique_ptr_runme.tcl test. */ - if (inst->thisvalue != thisvalue) { - assert(inst->thisvalue == 0); - inst->thisvalue = 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/win64/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg deleted file mode 100755 index 6c46a00a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclruntime.swg +++ /dev/null @@ -1,15 +0,0 @@ -/* 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/win64/bin/swig/share/swig/4.1.0/tcl/tclsh.i b/win64/bin/swig/share/swig/4.1.0/tcl/tclsh.i deleted file mode 100755 index 2de5f814..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclsh.i +++ /dev/null @@ -1,57 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - - -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; - Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); - - return TCL_OK; -} - -int main(int argc, char **argv) { - Tcl_Main(argc, argv, Tcl_AppInit); - return(0); - -} - -%} - diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg deleted file mode 100755 index 78831b1b..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclstrings.swg +++ /dev/null @@ -1,31 +0,0 @@ -/* ------------------------------------------------------------ - * 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/win64/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg deleted file mode 100755 index 5438e731..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tcltypemaps.swg +++ /dev/null @@ -1,86 +0,0 @@ -/* ------------------------------------------------------------ - * 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(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/win64/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg deleted file mode 100755 index 296b2d6a..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tcluserdir.swg +++ /dev/null @@ -1,5 +0,0 @@ -/* ----------------------------------------------------------------------------- - * Special user directives - * ----------------------------------------------------------------------------- */ - - diff --git a/win64/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg b/win64/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg deleted file mode 100755 index b29f456e..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/tclwstrings.swg +++ /dev/null @@ -1,68 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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); - - *cptr = (wchar_t*)dst; - 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/win64/bin/swig/share/swig/4.1.0/tcl/typemaps.i b/win64/bin/swig/share/swig/4.1.0/tcl/typemaps.i deleted file mode 100755 index a88b6ad2..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/typemaps.i +++ /dev/null @@ -1,464 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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/win64/bin/swig/share/swig/4.1.0/tcl/wish.i b/win64/bin/swig/share/swig/4.1.0/tcl/wish.i deleted file mode 100755 index e10a92c5..00000000 --- a/win64/bin/swig/share/swig/4.1.0/tcl/wish.i +++ /dev/null @@ -1,113 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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 - -/* - *---------------------------------------------------------------------- - * - * 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) -{ - Tk_Window main; - main = Tk_MainWindow(interp); - - /* - * 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; - } - - /* - * 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. - */ - - Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); - return TCL_OK; -} - -#if TK_MAJOR_VERSION >= 4 -int main(int argc, char **argv) { - Tk_Main(argc, argv, Tcl_AppInit); - return(0); -} -#else -extern int main(); -#endif - -%} - - - diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/README b/win64/bin/swig/share/swig/4.1.0/typemaps/README old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/attribute.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/attribute.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/carrays.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/carrays.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/cdata.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/cdata.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/cmalloc.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/cmalloc.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/cpointer.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/cpointer.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/cstring.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/cstring.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/cstrings.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/cstrings.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/cwstring.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/cwstring.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/enumint.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/enumint.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/exception.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/exception.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/factory.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/factory.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/fragments.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/fragments.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/implicit.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/implicit.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/inoutlist.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/inoutlist.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/misctypes.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/misctypes.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/primtypes.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/primtypes.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/ptrtypes.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/ptrtypes.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/std_except.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/std_except.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/std_string.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/std_string.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/std_strings.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/std_strings.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/std_wstring.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/std_wstring.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/string.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/string.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/strings.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/strings.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/swigmacros.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/swigmacros.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/swigmove.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/swigmove.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/swigobject.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/swigobject.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/swigtype.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/swigtype.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/swigtypemaps.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/swigtypemaps.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/typemaps.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/typemaps.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/valtypes.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/valtypes.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/void.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/void.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/typemaps/wstring.swg b/win64/bin/swig/share/swig/4.1.0/typemaps/wstring.swg old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/wchar.i b/win64/bin/swig/share/swig/4.1.0/wchar.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/windows.i b/win64/bin/swig/share/swig/4.1.0/windows.i old mode 100755 new mode 100644 diff --git a/win64/bin/swig/share/swig/4.1.0/xml/typemaps.i b/win64/bin/swig/share/swig/4.1.0/xml/typemaps.i deleted file mode 100755 index 3b8ad0a6..00000000 --- a/win64/bin/swig/share/swig/4.1.0/xml/typemaps.i +++ /dev/null @@ -1,3 +0,0 @@ -// -------------------------------------------------------------------- -// Empty file for %include to work -// -------------------------------------------------------------------- diff --git a/win64/bin/swig/share/swig/4.1.0/xml/xml.swg b/win64/bin/swig/share/swig/4.1.0/xml/xml.swg deleted file mode 100755 index c7bdbad0..00000000 --- a/win64/bin/swig/share/swig/4.1.0/xml/xml.swg +++ /dev/null @@ -1 +0,0 @@ -/* nothing special */ \ No newline at end of file

    1CRDvUmjslfQc^zrM7Ja9KU;g5$E?P5B|Ycbvry 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�>pfFSeqC(TufTtC1FY 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

    ;`MB6|gg4rohm_sfKI1RV(xTj_`S_v@F2|FG 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 delta 1392758 zcma&P34Bb~`#(MrLnxiJgb*YpA(m)JVrfMal9~_|yV|PuwYCJc-H=30M+j3(X$eJD zwY9Xiro=j`Evc3&ZK-OV5nHL!7Wu!QbDo*Zo$K@c|MK#hd(ZoMKg)T}a?d^Y&e(cx zyJ;YRi5}}dC}mAs*Yo2 z0=39j(6r3!j?M6t0=vjtAXQ z3ik);1IlDWw|wvf#)S{=c6`wX&+DlipVi?Sf=^X~BAviwiXNo!V?Owx-U=`D!PD5m zZXeto=vE(GW}5tO@)4wIDy8{8xQUx)g%3W6Q<~?4U*sm6?}HchQ5DDpPX0YjP}oZe zruisL;7m;L!NXow{E;?o7FKZFw^gzTgpYi~oa!;RfXP{B-T zlpnsNZ{oY&Wesh9-5a1j;8XtDUAEevPig%y-7LP_8)&lHZi*RuLQHv9`>bed>zUyJ z5bPy^eO92gb(?S$KV;r}5}p|zEdCkg2f~anQiudYvq{nOR1QOVI*O^bE21teTkSK$ z2c@>Y0(c1E6x&aPBv_wUzPhkc*t!Wy0&9xhtf}CJ#IpUY(+rZ>P4UI<5RKw*6P_wf zJldnGwUJFESX*C!%Fwd^8zEbY!q23vcgI_4bxEW!V{)AqGlSb@sJ?m#Y8F z@IY0MlHEu%(&28-ncAYQbBkgu4vZW?C^X#$}V5*!JcuNB=CpH>%G&ZvU zP$M;VI~}Atomq@x6Hl>;LGF%{ak==4>?N?7aklt8oljFUS{&)1h|WeGyFQyZu|owt zEmf0FEgl*o=HC0?r%Dy|y^wLV_)D3g1o8=ERHbuF@UHn$iRo&-gCHcTANwpdaZoJ( z6!|ayoFcTU>d%vGIkR96y_vp4qys75!gaa=zeA)C{ZQ+|7|%ut(#lOCwyS!|flJq? z2EMvl`j?^#z~Y1C!NW88^3vCdYdb(&`X+>*~dmzA`T>CMJ9TWNK5u#k05VL@~b#2t(YbI97)1S zQiL-!sfNi#&EOVtf_B=qP36q0dg%S_s*-4pdl~17`9jLQAmhv8ulc%A+HsDu2HJuW zu#1a<)OEsC*LjaH`0BI`^RG%_ss0-*e3k?0qwGv@n4a>rxDr5A8b>#j}((q)MT&{`ZS>^b<#d7IjoIg)>s?` zQXH;lZTDfBMLr=KOl8t+C9f=Iu|U%3DnP3oOU?{5u!}zQ)`sb=S#r7)k3PJ3mh4CX zqBXd#I=-UHB&xHG=0AU5*=_12{-h>w=4CN`fw;C6b<6R>EZON~>U-d>(Rxcr&KH1* zoKJOZeZi7liOBC0xeSr1{+vonb`z2NN9O3diHjNgD)a~^a};?j$yX9f_Fzg}Pe@&Ta7NDWTXoJY z*(cBdqB&6xQ&YgcthXjB9>RuivEkB+`>_O}%0Al4lJf*yxafoYEcWu_m9mWbRL}5% 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 z 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 z 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�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�UNXrb-zjl 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 d=HV%Z_*A;hwZhvRVJ{ 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 JCJ><(^&1?tpM*c62he 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