wxruby3 1.7.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +27 -2
  3. data/README.md +15 -15
  4. data/ext/wxruby3/include/wxRubyApp.h +145 -46
  5. data/ext/wxruby3/include/wxruby-ComboPopup.h +25 -8
  6. data/ext/wxruby3/include/wxruby-GCTracking.h +262 -0
  7. data/ext/wxruby3/include/wxruby-MBConv.h +190 -0
  8. data/ext/wxruby3/include/wxruby-SharedEventHandler.h +183 -0
  9. data/ext/wxruby3/include/wxruby-SharedPtr.h +104 -0
  10. data/ext/wxruby3/include/wxruby-runtime.h +29 -0
  11. data/ext/wxruby3/swig/custom/rubytracking.swg +8 -22
  12. data/ext/wxruby3/swig/custom/wx_ruby_shared_ptr.i +434 -0
  13. data/ext/wxruby3/swig/custom/wx_shared_ptr.i +431 -0
  14. data/ext/wxruby3/swig/mark_free_impl.i +7 -132
  15. data/ext/wxruby3/swig/memory_management.i +8 -44
  16. data/ext/wxruby3/swig/wx.i +46 -73
  17. data/lib/wx/core/const.rb +0 -1
  18. data/lib/wx/core/context_help.rb +17 -0
  19. data/lib/wx/core/cursor.rb +1 -0
  20. data/lib/wx/core/helpcontrollerhelpprovider.rb +10 -2
  21. data/lib/wx/core/mbconv.rb +11 -0
  22. data/lib/wx/core/media_ctrl.rb +31 -0
  23. data/lib/wx/core/top_level_window.rb +7 -0
  24. data/lib/wx/core.rb +6 -0
  25. data/lib/wx/doc/art_provider.rb +17 -0
  26. data/lib/wx/doc/context_help.rb +42 -0
  27. data/lib/wx/doc/core.rb +0 -5
  28. data/lib/wx/doc/functions.rb +10 -0
  29. data/lib/wx/doc/html/html_help_controller.rb +23 -1
  30. data/lib/wx/doc/mbconv.rb +108 -0
  31. data/lib/wx/doc/rt/shared_event_handler.rb +49 -0
  32. data/lib/wx/doc/rt/thread_event.rb +28 -0
  33. data/lib/wx/doc/stream.rb +7 -3
  34. data/lib/wx/doc/webview.rb +40 -0
  35. data/lib/wx/helpers.rb +1 -1
  36. data/lib/wx/html/htmlhelpcontroller.rb +10 -0
  37. data/lib/wx/keyword_defs.rb +11 -0
  38. data/lib/wx/rt/require.rb +8 -0
  39. data/lib/wx/rt/thread_event.rb +14 -0
  40. data/lib/wx/rt.rb +16 -0
  41. data/lib/wx/version.rb +1 -1
  42. data/lib/wx/web/require.rb +8 -0
  43. data/lib/wx/web/webview.rb +106 -0
  44. data/lib/wx/web.rb +17 -0
  45. data/lib/wx/wxruby/cmd/setup.rb +15 -0
  46. data/lib/wx/wxruby/cmd/test.rb +8 -2
  47. data/lib/wx.rb +2 -0
  48. data/rakelib/configure.rb +24 -0
  49. data/rakelib/gem.rb +3 -2
  50. data/rakelib/install.rb +54 -27
  51. data/rakelib/lib/config/macosx.rb +7 -5
  52. data/rakelib/lib/config/mingw.rb +66 -5
  53. data/rakelib/lib/config/pkgman/linux.rb +4 -2
  54. data/rakelib/lib/config/pkgman/mingw.rb +1 -1
  55. data/rakelib/lib/config/unixish.rb +4 -2
  56. data/rakelib/lib/config.rb +37 -3
  57. data/rakelib/lib/core/include/client_data.inc +38 -17
  58. data/rakelib/lib/core/include/funcall.inc +1 -1
  59. data/rakelib/lib/core/include/swigdirector.inc +3 -3
  60. data/rakelib/lib/core/include/swigrubyrun.inc +14 -26
  61. data/rakelib/lib/core/package.rb +0 -2
  62. data/rakelib/lib/director/app.rb +1 -8
  63. data/rakelib/lib/director/art_provider.rb +7 -3
  64. data/rakelib/lib/director/comboctrl.rb +0 -7
  65. data/rakelib/lib/director/context_help_button.rb +35 -2
  66. data/rakelib/lib/director/derived_dc.rb +41 -32
  67. data/rakelib/lib/director/editable_listbox.rb +10 -8
  68. data/rakelib/lib/director/event_handler.rb +32 -28
  69. data/rakelib/lib/director/fs_file.rb +38 -10
  70. data/rakelib/lib/director/functions.rb +8 -0
  71. data/rakelib/lib/director/grid_cell_attr.rb +1 -3
  72. data/rakelib/lib/director/grid_cell_editor.rb +14 -12
  73. data/rakelib/lib/director/grid_cell_renderer.rb +11 -8
  74. data/rakelib/lib/director/grid_ctrl.rb +140 -121
  75. data/rakelib/lib/director/help_controller.rb +70 -2
  76. data/rakelib/lib/director/mb_conv.rb +30 -0
  77. data/rakelib/lib/director/menu.rb +92 -42
  78. data/rakelib/lib/director/menu_bar.rb +84 -45
  79. data/rakelib/lib/director/menu_item.rb +2 -2
  80. data/rakelib/lib/director/persistence_manager.rb +3 -2
  81. data/rakelib/lib/director/preview_frame.rb +2 -2
  82. data/rakelib/lib/director/ribbon_page.rb +11 -0
  83. data/rakelib/lib/director/richtext_buffer.rb +5 -2
  84. data/rakelib/lib/director/shared_evt_handler.rb +30 -0
  85. data/rakelib/lib/director/sizer.rb +8 -17
  86. data/rakelib/lib/director/sizer_item.rb +3 -4
  87. data/rakelib/lib/director/task_bar_icon.rb +7 -7
  88. data/rakelib/lib/director/thread_event.rb +33 -0
  89. data/rakelib/lib/director/top_level_window.rb +12 -4
  90. data/rakelib/lib/director/validator.rb +3 -1
  91. data/rakelib/lib/director/variant.rb +16 -12
  92. data/rakelib/lib/director/webview.rb +166 -0
  93. data/rakelib/lib/director/webview_event.rb +37 -0
  94. data/rakelib/lib/director/webview_handler.rb +63 -0
  95. data/rakelib/lib/generate/doc/thread_event.yaml +20 -0
  96. data/rakelib/lib/generate/doc/web_view.yaml +135 -0
  97. data/rakelib/lib/generate/doc/web_view_event.yaml +38 -0
  98. data/rakelib/lib/generate/doc/web_view_handler.yaml +58 -0
  99. data/rakelib/lib/specs/interfaces.rb +14 -2
  100. data/rakelib/lib/typemap/common.rb +34 -1
  101. data/rakelib/lib/typemap/mb_conv.rb +58 -0
  102. data/rakelib/prepost.rake +23 -31
  103. data/rakelib/prepost.rb +20 -0
  104. data/samples/event/threaded.rb +295 -42
  105. data/samples/event/tn_threaded.png +0 -0
  106. data/samples/help/doc/back.gif +0 -0
  107. data/samples/help/doc/contents.gif +0 -0
  108. data/samples/help/doc/cshelp.txt +9 -0
  109. data/samples/help/doc/doc.chm +0 -0
  110. data/samples/help/doc/doc.cnt +8 -0
  111. data/samples/help/doc/doc.h +7 -0
  112. data/samples/help/doc/doc.hhc +40 -0
  113. data/samples/help/doc/doc.hhk +31 -0
  114. data/samples/help/doc/doc.hhp +33 -0
  115. data/samples/help/doc/doc.hpj +21 -0
  116. data/samples/help/doc/doc.htm +27 -0
  117. data/samples/help/doc/doc1.htm +24 -0
  118. data/samples/help/doc/doc2.htm +12 -0
  119. data/samples/help/doc/doc3.htm +12 -0
  120. data/samples/help/doc/doc4.htm +12 -0
  121. data/samples/help/doc/doc5.htm +14 -0
  122. data/samples/help/doc/forward.gif +0 -0
  123. data/samples/help/doc/up.gif +0 -0
  124. data/samples/help/doc.chm +0 -0
  125. data/samples/help/doc.chw +0 -0
  126. data/samples/help/doc.zip +0 -0
  127. data/samples/help/help.rb +352 -0
  128. data/samples/help/tn_help.png +0 -0
  129. data/samples/webview/handler_advanced.html +55 -0
  130. data/samples/webview/tn_webview.png +0 -0
  131. data/samples/webview/webview.rb +1264 -0
  132. data/tests/assets/handler_advanced.html +55 -0
  133. data/tests/assets/test.zip +0 -0
  134. data/tests/lib/text_entry_tests.rb +2 -2
  135. data/tests/lib/wxapp_runner.rb +40 -0
  136. data/tests/lib/wxframe_runner.rb +17 -2
  137. data/tests/test_art.rb +8 -8
  138. data/tests/test_clipboard.rb +4 -4
  139. data/tests/test_config.rb +6 -6
  140. data/tests/test_exceptions.rb +8 -6
  141. data/tests/test_ext_controls.rb +3 -3
  142. data/tests/test_file_dialog.rb +5 -5
  143. data/tests/test_font.rb +7 -7
  144. data/tests/test_grid_ctrl.rb +133 -0
  145. data/tests/test_help.rb +88 -0
  146. data/tests/test_intl.rb +1 -1
  147. data/tests/test_media_ctrl.rb +14 -6
  148. data/tests/test_menu.rb +94 -86
  149. data/tests/test_persistence.rb +1 -1
  150. data/tests/test_proof_check.rb +5 -5
  151. data/tests/test_propgrid.rb +1 -1
  152. data/tests/test_shared_event_handler.rb +141 -0
  153. data/tests/test_std_controls.rb +5 -5
  154. data/tests/test_webview.rb +492 -0
  155. data/tests/test_window.rb +3 -3
  156. metadata +66 -368
  157. data/assets/repo-social-preview.odg +0 -0
  158. data/assets/repo-social-preview.xcf +0 -0
  159. data/lib/wx/aui/events/evt_list.rb +0 -148
  160. data/lib/wx/core/events/evt_list.rb +0 -1458
  161. data/lib/wx/core/font/encoding.rb +0 -113
  162. data/lib/wx/doc/gen/about_dialog_info.rb +0 -330
  163. data/lib/wx/doc/gen/accelerator.rb +0 -178
  164. data/lib/wx/doc/gen/activity_indicator.rb +0 -83
  165. data/lib/wx/doc/gen/affine_matrix2d.rb +0 -284
  166. data/lib/wx/doc/gen/animation.rb +0 -275
  167. data/lib/wx/doc/gen/animation_ctrl.rb +0 -300
  168. data/lib/wx/doc/gen/any_button.rb +0 -191
  169. data/lib/wx/doc/gen/app.rb +0 -463
  170. data/lib/wx/doc/gen/app_traits.rb +0 -396
  171. data/lib/wx/doc/gen/art_provider.rb +0 -605
  172. data/lib/wx/doc/gen/aui/aui_dock_art.rb +0 -455
  173. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +0 -54
  174. data/lib/wx/doc/gen/aui/aui_manager.rb +0 -847
  175. data/lib/wx/doc/gen/aui/aui_manager_event.rb +0 -131
  176. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +0 -180
  177. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +0 -59
  178. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +0 -130
  179. data/lib/wx/doc/gen/aui/aui_notebook.rb +0 -631
  180. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +0 -233
  181. data/lib/wx/doc/gen/aui/aui_pane_info.rb +0 -769
  182. data/lib/wx/doc/gen/aui/aui_tab_art.rb +0 -352
  183. data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +0 -14
  184. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +0 -510
  185. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +0 -340
  186. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +0 -244
  187. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +0 -257
  188. data/lib/wx/doc/gen/aui/event_list.rb +0 -179
  189. data/lib/wx/doc/gen/banner_window.rb +0 -124
  190. data/lib/wx/doc/gen/bitmap.rb +0 -731
  191. data/lib/wx/doc/gen/bitmap_button.rb +0 -123
  192. data/lib/wx/doc/gen/bitmap_combo_box.rb +0 -221
  193. data/lib/wx/doc/gen/book_ctrl_base.rb +0 -273
  194. data/lib/wx/doc/gen/book_ctrl_event.rb +0 -66
  195. data/lib/wx/doc/gen/box_sizer.rb +0 -85
  196. data/lib/wx/doc/gen/brush.rb +0 -251
  197. data/lib/wx/doc/gen/busy_info.rb +0 -157
  198. data/lib/wx/doc/gen/button.rb +0 -182
  199. data/lib/wx/doc/gen/calculate_layout_event.rb +0 -62
  200. data/lib/wx/doc/gen/calendar_ctrl.rb +0 -505
  201. data/lib/wx/doc/gen/calendar_date_attr.rb +0 -138
  202. data/lib/wx/doc/gen/calendar_event.rb +0 -147
  203. data/lib/wx/doc/gen/caret.rb +0 -97
  204. data/lib/wx/doc/gen/check_box.rb +0 -175
  205. data/lib/wx/doc/gen/check_list_box.rb +0 -121
  206. data/lib/wx/doc/gen/choice.rb +0 -175
  207. data/lib/wx/doc/gen/choicebook.rb +0 -116
  208. data/lib/wx/doc/gen/client_dc.rb +0 -43
  209. data/lib/wx/doc/gen/clipboard.rb +0 -144
  210. data/lib/wx/doc/gen/collapsible_pane.rb +0 -138
  211. data/lib/wx/doc/gen/collapsible_pane_event.rb +0 -46
  212. data/lib/wx/doc/gen/colour.rb +0 -333
  213. data/lib/wx/doc/gen/colour_dialog.rb +0 -190
  214. data/lib/wx/doc/gen/colour_picker_ctrl.rb +0 -110
  215. data/lib/wx/doc/gen/colour_picker_event.rb +0 -77
  216. data/lib/wx/doc/gen/combo_box.rb +0 -292
  217. data/lib/wx/doc/gen/combo_ctrl.rb +0 -662
  218. data/lib/wx/doc/gen/command_link_button.rb +0 -134
  219. data/lib/wx/doc/gen/config_base.rb +0 -10
  220. data/lib/wx/doc/gen/context_help_button.rb +0 -109
  221. data/lib/wx/doc/gen/control.rb +0 -277
  222. data/lib/wx/doc/gen/control_with_items.rb +0 -253
  223. data/lib/wx/doc/gen/core.rb +0 -45
  224. data/lib/wx/doc/gen/credential_entry_dialog.rb +0 -137
  225. data/lib/wx/doc/gen/cursor.rb +0 -193
  226. data/lib/wx/doc/gen/data_format.rb +0 -85
  227. data/lib/wx/doc/gen/data_object.rb +0 -436
  228. data/lib/wx/doc/gen/data_object_simple_base.rb +0 -10
  229. data/lib/wx/doc/gen/date_event.rb +0 -49
  230. data/lib/wx/doc/gen/date_picker_ctrl.rb +0 -161
  231. data/lib/wx/doc/gen/dc.rb +0 -1631
  232. data/lib/wx/doc/gen/dc_overlay.rb +0 -102
  233. data/lib/wx/doc/gen/defs.rb +0 -2802
  234. data/lib/wx/doc/gen/dial_up_event.rb +0 -45
  235. data/lib/wx/doc/gen/dial_up_manager.rb +0 -149
  236. data/lib/wx/doc/gen/dialog.rb +0 -541
  237. data/lib/wx/doc/gen/dir_dialog.rb +0 -164
  238. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +0 -90
  239. data/lib/wx/doc/gen/dir_picker_ctrl.rb +0 -125
  240. data/lib/wx/doc/gen/display.rb +0 -238
  241. data/lib/wx/doc/gen/drag_drop.rb +0 -299
  242. data/lib/wx/doc/gen/drag_image.rb +0 -116
  243. data/lib/wx/doc/gen/editable_list_box.rb +0 -109
  244. data/lib/wx/doc/gen/event.rb +0 -990
  245. data/lib/wx/doc/gen/event_blocker.rb +0 -50
  246. data/lib/wx/doc/gen/event_filter.rb +0 -92
  247. data/lib/wx/doc/gen/event_list.rb +0 -1644
  248. data/lib/wx/doc/gen/events.rb +0 -2809
  249. data/lib/wx/doc/gen/evt_handler.rb +0 -229
  250. data/lib/wx/doc/gen/ext_help_controller.rb +0 -109
  251. data/lib/wx/doc/gen/file_ctrl.rb +0 -231
  252. data/lib/wx/doc/gen/file_ctrl_event.rb +0 -83
  253. data/lib/wx/doc/gen/file_dialog.rb +0 -353
  254. data/lib/wx/doc/gen/file_dialog_custom_control.rb +0 -165
  255. data/lib/wx/doc/gen/file_dialog_customize_hook.rb +0 -158
  256. data/lib/wx/doc/gen/file_dir_picker_event.rb +0 -100
  257. data/lib/wx/doc/gen/file_picker_ctrl.rb +0 -132
  258. data/lib/wx/doc/gen/file_system.rb +0 -232
  259. data/lib/wx/doc/gen/find_dialog_event.rb +0 -126
  260. data/lib/wx/doc/gen/find_replace_data.rb +0 -60
  261. data/lib/wx/doc/gen/find_replace_dialog.rb +0 -58
  262. data/lib/wx/doc/gen/flex_grid_sizer.rb +0 -199
  263. data/lib/wx/doc/gen/font.rb +0 -1379
  264. data/lib/wx/doc/gen/font_data.rb +0 -151
  265. data/lib/wx/doc/gen/font_dialog.rb +0 -88
  266. data/lib/wx/doc/gen/font_picker_ctrl.rb +0 -143
  267. data/lib/wx/doc/gen/font_picker_event.rb +0 -65
  268. data/lib/wx/doc/gen/frame.rb +0 -352
  269. data/lib/wx/doc/gen/fs_file.rb +0 -337
  270. data/lib/wx/doc/gen/functions.rb +0 -10
  271. data/lib/wx/doc/gen/gauge.rb +0 -157
  272. data/lib/wx/doc/gen/gb_sizer_item.rb +0 -68
  273. data/lib/wx/doc/gen/gcdc.rb +0 -46
  274. data/lib/wx/doc/gen/gdi_common.rb +0 -1271
  275. data/lib/wx/doc/gen/gdi_object.rb +0 -31
  276. data/lib/wx/doc/gen/generic_about_dialog.rb +0 -140
  277. data/lib/wx/doc/gen/generic_dir_ctrl.rb +0 -223
  278. data/lib/wx/doc/gen/geometry.rb +0 -661
  279. data/lib/wx/doc/gen/graphics_context.rb +0 -1184
  280. data/lib/wx/doc/gen/graphics_object.rb +0 -750
  281. data/lib/wx/doc/gen/grid/event_list.rb +0 -191
  282. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +0 -40
  283. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +0 -280
  284. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +0 -35
  285. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +0 -37
  286. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +0 -49
  287. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +0 -35
  288. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +0 -46
  289. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +0 -38
  290. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +0 -45
  291. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +0 -40
  292. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +0 -197
  293. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +0 -39
  294. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +0 -44
  295. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +0 -45
  296. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +0 -79
  297. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +0 -46
  298. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +0 -35
  299. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +0 -108
  300. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +0 -35
  301. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +0 -49
  302. data/lib/wx/doc/gen/grid/grid_ctrl.rb +0 -3002
  303. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +0 -95
  304. data/lib/wx/doc/gen/grid/grid_event.rb +0 -129
  305. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +0 -104
  306. data/lib/wx/doc/gen/grid/grid_size_event.rb +0 -85
  307. data/lib/wx/doc/gen/grid/grid_string_table.rb +0 -142
  308. data/lib/wx/doc/gen/grid/grid_table_base.rb +0 -317
  309. data/lib/wx/doc/gen/grid/grid_table_message.rb +0 -81
  310. data/lib/wx/doc/gen/grid_bag_sizer.rb +0 -323
  311. data/lib/wx/doc/gen/grid_sizer.rb +0 -195
  312. data/lib/wx/doc/gen/gui_event_loop.rb +0 -159
  313. data/lib/wx/doc/gen/h_scrolled_window.rb +0 -562
  314. data/lib/wx/doc/gen/header_ctrl.rb +0 -880
  315. data/lib/wx/doc/gen/header_ctrl_event.rb +0 -133
  316. data/lib/wx/doc/gen/help_controller.rb +0 -195
  317. data/lib/wx/doc/gen/help_provider.rb +0 -98
  318. data/lib/wx/doc/gen/html/event_list.rb +0 -38
  319. data/lib/wx/doc/gen/html/html_cell.rb +0 -536
  320. data/lib/wx/doc/gen/html/html_cell_event.rb +0 -69
  321. data/lib/wx/doc/gen/html/html_data_object.rb +0 -42
  322. data/lib/wx/doc/gen/html/html_easy_printing.rb +0 -203
  323. data/lib/wx/doc/gen/html/html_help_controller.rb +0 -340
  324. data/lib/wx/doc/gen/html/html_help_data.rb +0 -159
  325. data/lib/wx/doc/gen/html/html_help_window.rb +0 -258
  326. data/lib/wx/doc/gen/html/html_link_event.rb +0 -41
  327. data/lib/wx/doc/gen/html/html_list_box.rb +0 -346
  328. data/lib/wx/doc/gen/html/html_printout.rb +0 -109
  329. data/lib/wx/doc/gen/html/html_window.rb +0 -461
  330. data/lib/wx/doc/gen/hyperlink_ctrl.rb +0 -311
  331. data/lib/wx/doc/gen/hyperlink_event.rb +0 -44
  332. data/lib/wx/doc/gen/icon.rb +0 -267
  333. data/lib/wx/doc/gen/icon_location.rb +0 -40
  334. data/lib/wx/doc/gen/image.rb +0 -1371
  335. data/lib/wx/doc/gen/image_list.rb +0 -168
  336. data/lib/wx/doc/gen/info_bar.rb +0 -195
  337. data/lib/wx/doc/gen/keyboard_state.rb +0 -140
  338. data/lib/wx/doc/gen/list_box.rb +0 -304
  339. data/lib/wx/doc/gen/list_ctrl.rb +0 -1774
  340. data/lib/wx/doc/gen/list_event.rb +0 -208
  341. data/lib/wx/doc/gen/listbook.rb +0 -116
  342. data/lib/wx/doc/gen/locale.rb +0 -4293
  343. data/lib/wx/doc/gen/log.rb +0 -603
  344. data/lib/wx/doc/gen/mdi_client_window.rb +0 -47
  345. data/lib/wx/doc/gen/mdi_frame.rb +0 -324
  346. data/lib/wx/doc/gen/media_ctrl.rb +0 -269
  347. data/lib/wx/doc/gen/media_event.rb +0 -117
  348. data/lib/wx/doc/gen/memory_dc.rb +0 -174
  349. data/lib/wx/doc/gen/menu.rb +0 -509
  350. data/lib/wx/doc/gen/menu_bar.rb +0 -287
  351. data/lib/wx/doc/gen/menu_item.rb +0 -362
  352. data/lib/wx/doc/gen/message_dialog.rb +0 -238
  353. data/lib/wx/doc/gen/mini_frame.rb +0 -108
  354. data/lib/wx/doc/gen/mirror_dc.rb +0 -22
  355. data/lib/wx/doc/gen/mouse_state.rb +0 -150
  356. data/lib/wx/doc/gen/multi_choice_dialog.rb +0 -80
  357. data/lib/wx/doc/gen/non_owned_window.rb +0 -49
  358. data/lib/wx/doc/gen/notebook.rb +0 -278
  359. data/lib/wx/doc/gen/num_validator.rb +0 -37
  360. data/lib/wx/doc/gen/number_entry_dialog.rb +0 -93
  361. data/lib/wx/doc/gen/object.rb +0 -59
  362. data/lib/wx/doc/gen/owner_drawn_combo_box.rb +0 -395
  363. data/lib/wx/doc/gen/paint_dc.rb +0 -27
  364. data/lib/wx/doc/gen/palette.rb +0 -92
  365. data/lib/wx/doc/gen/panel.rb +0 -127
  366. data/lib/wx/doc/gen/pen.rb +0 -511
  367. data/lib/wx/doc/gen/persistence_manager.rb +0 -135
  368. data/lib/wx/doc/gen/persistent_object.rb +0 -52
  369. data/lib/wx/doc/gen/persistent_window.rb +0 -241
  370. data/lib/wx/doc/gen/pg/event_list.rb +0 -106
  371. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +0 -54
  372. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +0 -292
  373. data/lib/wx/doc/gen/pg/pg_cell.rb +0 -177
  374. data/lib/wx/doc/gen/pg/pg_editor.rb +0 -721
  375. data/lib/wx/doc/gen/pg/pg_multi_button.rb +0 -152
  376. data/lib/wx/doc/gen/pg/pg_properties.rb +0 -2829
  377. data/lib/wx/doc/gen/pg/pg_property.rb +0 -2078
  378. data/lib/wx/doc/gen/pg/pg_validation_info.rb +0 -344
  379. data/lib/wx/doc/gen/pg/property_grid.rb +0 -740
  380. data/lib/wx/doc/gen/pg/property_grid_event.rb +0 -184
  381. data/lib/wx/doc/gen/pg/property_grid_interface.rb +0 -1098
  382. data/lib/wx/doc/gen/pg/property_grid_manager.rb +0 -415
  383. data/lib/wx/doc/gen/pg/property_grid_page.rb +0 -354
  384. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +0 -165
  385. data/lib/wx/doc/gen/picker_base.rb +0 -152
  386. data/lib/wx/doc/gen/platform_info.rb +0 -622
  387. data/lib/wx/doc/gen/popup_window.rb +0 -107
  388. data/lib/wx/doc/gen/progress_dialog.rb +0 -100
  389. data/lib/wx/doc/gen/property_sheet_dialog.rb +0 -216
  390. data/lib/wx/doc/gen/prt/event_list.rb +0 -17
  391. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +0 -44
  392. data/lib/wx/doc/gen/prt/post_script_dc.rb +0 -30
  393. data/lib/wx/doc/gen/prt/preview_frame.rb +0 -78
  394. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +0 -151
  395. data/lib/wx/doc/gen/prt/print_data.rb +0 -804
  396. data/lib/wx/doc/gen/prt/print_dialog.rb +0 -55
  397. data/lib/wx/doc/gen/prt/printer.rb +0 -518
  398. data/lib/wx/doc/gen/prt/printer_dc.rb +0 -37
  399. data/lib/wx/doc/gen/query_layout_info_event.rb +0 -106
  400. data/lib/wx/doc/gen/radio_box.rb +0 -306
  401. data/lib/wx/doc/gen/radio_button.rb +0 -159
  402. data/lib/wx/doc/gen/rbn/event_list.rb +0 -136
  403. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +0 -1132
  404. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +0 -308
  405. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +0 -45
  406. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +0 -458
  407. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +0 -63
  408. data/lib/wx/doc/gen/rbn/ribbon_control.rb +0 -143
  409. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +0 -229
  410. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +0 -55
  411. data/lib/wx/doc/gen/rbn/ribbon_page.rb +0 -174
  412. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +0 -270
  413. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +0 -45
  414. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +0 -360
  415. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +0 -42
  416. data/lib/wx/doc/gen/rearrange_ctrl.rb +0 -78
  417. data/lib/wx/doc/gen/rearrange_list.rb +0 -123
  418. data/lib/wx/doc/gen/region.rb +0 -380
  419. data/lib/wx/doc/gen/region_iterator.rb +0 -76
  420. data/lib/wx/doc/gen/rich_tool_tip.rb +0 -154
  421. data/lib/wx/doc/gen/rtc/event_list.rb +0 -125
  422. data/lib/wx/doc/gen/rtc/rich_text_box.rb +0 -445
  423. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +0 -1188
  424. data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +0 -41
  425. data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +0 -538
  426. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +0 -2103
  427. data/lib/wx/doc/gen/rtc/rich_text_event.rb +0 -173
  428. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +0 -181
  429. data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +0 -319
  430. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +0 -193
  431. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +0 -102
  432. data/lib/wx/doc/gen/rtc/rich_text_image.rb +0 -337
  433. data/lib/wx/doc/gen/rtc/rich_text_object.rb +0 -2922
  434. data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +0 -1240
  435. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +0 -258
  436. data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +0 -344
  437. data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +0 -227
  438. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +0 -59
  439. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +0 -169
  440. data/lib/wx/doc/gen/sash_event.rb +0 -147
  441. data/lib/wx/doc/gen/sash_layout_window.rb +0 -232
  442. data/lib/wx/doc/gen/sash_window.rb +0 -171
  443. data/lib/wx/doc/gen/scaled_dc.rb +0 -10
  444. data/lib/wx/doc/gen/screen_dc.rb +0 -30
  445. data/lib/wx/doc/gen/scroll_bar.rb +0 -204
  446. data/lib/wx/doc/gen/scrolled_canvas.rb +0 -410
  447. data/lib/wx/doc/gen/scrolled_control.rb +0 -410
  448. data/lib/wx/doc/gen/scrolled_window.rb +0 -430
  449. data/lib/wx/doc/gen/search_ctrl.rb +0 -159
  450. data/lib/wx/doc/gen/secret_store.rb +0 -116
  451. data/lib/wx/doc/gen/simplebook.rb +0 -110
  452. data/lib/wx/doc/gen/single_choice_dialog.rb +0 -89
  453. data/lib/wx/doc/gen/sizer.rb +0 -945
  454. data/lib/wx/doc/gen/sizer_item.rb +0 -244
  455. data/lib/wx/doc/gen/slider.rb +0 -342
  456. data/lib/wx/doc/gen/spin_button.rb +0 -157
  457. data/lib/wx/doc/gen/spin_ctrl.rb +0 -231
  458. data/lib/wx/doc/gen/spin_ctrl_double.rb +0 -192
  459. data/lib/wx/doc/gen/spin_double_event.rb +0 -55
  460. data/lib/wx/doc/gen/spin_event.rb +0 -51
  461. data/lib/wx/doc/gen/splash_screen.rb +0 -113
  462. data/lib/wx/doc/gen/splitter_event.rb +0 -99
  463. data/lib/wx/doc/gen/splitter_window.rb +0 -498
  464. data/lib/wx/doc/gen/static_bitmap.rb +0 -256
  465. data/lib/wx/doc/gen/static_box.rb +0 -180
  466. data/lib/wx/doc/gen/static_box_sizer.rb +0 -85
  467. data/lib/wx/doc/gen/static_line.rb +0 -83
  468. data/lib/wx/doc/gen/static_text.rb +0 -127
  469. data/lib/wx/doc/gen/status_bar.rb +0 -290
  470. data/lib/wx/doc/gen/stc/event_list.rb +0 -221
  471. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +0 -4474
  472. data/lib/wx/doc/gen/stc/styled_text_event.rb +0 -8762
  473. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +0 -129
  474. data/lib/wx/doc/gen/svg_file_dc.rb +0 -164
  475. data/lib/wx/doc/gen/system_options.rb +0 -129
  476. data/lib/wx/doc/gen/system_settings.rb +0 -507
  477. data/lib/wx/doc/gen/task_bar_icon.rb +0 -127
  478. data/lib/wx/doc/gen/task_bar_icon_event.rb +0 -88
  479. data/lib/wx/doc/gen/text_attr.rb +0 -756
  480. data/lib/wx/doc/gen/text_ctrl.rb +0 -1033
  481. data/lib/wx/doc/gen/text_entry.rb +0 -441
  482. data/lib/wx/doc/gen/text_entry_dialog.rb +0 -220
  483. data/lib/wx/doc/gen/text_validator.rb +0 -245
  484. data/lib/wx/doc/gen/time_picker_ctrl.rb +0 -128
  485. data/lib/wx/doc/gen/timer.rb +0 -119
  486. data/lib/wx/doc/gen/timer_event.rb +0 -68
  487. data/lib/wx/doc/gen/tip_provider.rb +0 -63
  488. data/lib/wx/doc/gen/tip_window.rb +0 -51
  489. data/lib/wx/doc/gen/toggle_button.rb +0 -182
  490. data/lib/wx/doc/gen/tool_bar.rb +0 -890
  491. data/lib/wx/doc/gen/tool_tip.rb +0 -86
  492. data/lib/wx/doc/gen/toolbook.rb +0 -118
  493. data/lib/wx/doc/gen/top_level_window.rb +0 -497
  494. data/lib/wx/doc/gen/tree_ctrl.rb +0 -1052
  495. data/lib/wx/doc/gen/tree_event.rb +0 -127
  496. data/lib/wx/doc/gen/treebook.rb +0 -180
  497. data/lib/wx/doc/gen/ui_action_simulator.rb +0 -109
  498. data/lib/wx/doc/gen/utils.rb +0 -273
  499. data/lib/wx/doc/gen/v_list_box.rb +0 -272
  500. data/lib/wx/doc/gen/v_scrolled_canvas.rb +0 -195
  501. data/lib/wx/doc/gen/v_scrolled_window.rb +0 -191
  502. data/lib/wx/doc/gen/validator.rb +0 -68
  503. data/lib/wx/doc/gen/variant.rb +0 -294
  504. data/lib/wx/doc/gen/window.rb +0 -2917
  505. data/lib/wx/doc/gen/window_dc.rb +0 -38
  506. data/lib/wx/doc/gen/window_disabler.rb +0 -30
  507. data/lib/wx/doc/gen/with_images.rb +0 -84
  508. data/lib/wx/doc/gen/wizard.rb +0 -257
  509. data/lib/wx/doc/gen/wizard_event.rb +0 -113
  510. data/lib/wx/doc/gen/wizard_page.rb +0 -65
  511. data/lib/wx/doc/gen/wizard_page_simple.rb +0 -88
  512. data/lib/wx/doc/gen/wrap_sizer.rb +0 -79
  513. data/lib/wx/doc/gen/xml_node.rb +0 -316
  514. data/lib/wx/doc/gen/xml_resource.rb +0 -320
  515. data/lib/wx/grid/events/evt_list.rb +0 -166
  516. data/lib/wx/html/events/evt_list.rb +0 -27
  517. data/lib/wx/pg/events/evt_list.rb +0 -73
  518. data/lib/wx/rbn/events/evt_list.rb +0 -102
  519. data/lib/wx/rtc/events/evt_list.rb +0 -98
  520. data/lib/wx/rtc/ext/rich_text_ctrl.rb +0 -24
  521. data/lib/wx/stc/events/evt_list.rb +0 -178
  522. data/samples/art/wxruby-512x512.png +0 -0
@@ -0,0 +1,104 @@
1
+ // Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ //
3
+ // This software is released under the MIT license.
4
+
5
+ #ifndef _WXRUBY_SHAREDPTR_H_
6
+ #define _WXRUBY_SHAREDPTR_H_
7
+
8
+ /*
9
+ A shared pointer class to wrap wxSharedPtr for derived classes and allowing implicit
10
+ conversion to wxSharedPtr without loosing reference counting and implicit down casting.
11
+ */
12
+ #include <wx/sharedptr.h>
13
+
14
+ template <class T, class Base = T>
15
+ class WxRubySharedPtr
16
+ {
17
+ public:
18
+ typedef T* ptr_t;
19
+ typedef wxSharedPtr<Base> shared_ptr_t;
20
+
21
+ explicit WxRubySharedPtr( T* ptr = nullptr )
22
+ : shared_ptr_(ptr)
23
+ {
24
+ }
25
+
26
+ WxRubySharedPtr(const WxRubySharedPtr& other)
27
+ : shared_ptr_(other.get_shared())
28
+ {}
29
+
30
+ WxRubySharedPtr(WxRubySharedPtr&& other)
31
+ : shared_ptr_(std::move (other.get_shared()))
32
+ {}
33
+
34
+ #if !defined(SWIG)
35
+ template<typename _Tp1, typename = typename
36
+ std::enable_if<std::is_convertible<typename _Tp1::ptr_t, T*>::value>::type>
37
+ WxRubySharedPtr(const _Tp1& other)
38
+ : shared_ptr_(other.get_shared())
39
+ {}
40
+
41
+ template<typename _Tp1, typename = typename
42
+ std::enable_if<std::is_convertible<typename _Tp1::ptr_t, T*>::value>::type>
43
+ WxRubySharedPtr(_Tp1&& other)
44
+ : shared_ptr_(std::move(other.get_shared()))
45
+ {}
46
+ #endif
47
+
48
+ WxRubySharedPtr& operator=(const WxRubySharedPtr& other)
49
+ {
50
+ this->shared_ptr_ = other.get_shared();
51
+ return *this;
52
+ }
53
+
54
+ WxRubySharedPtr& operator=( T* ptr )
55
+ {
56
+ this->shared_ptr_ = ptr;
57
+ return *this;
58
+ }
59
+
60
+ #if !defined(SWIG)
61
+ template<typename _Tp1, typename = typename
62
+ std::enable_if<std::is_convertible<typename _Tp1::ptr_t, T*>::value>::type>
63
+ WxRubySharedPtr& operator=(const _Tp1& other)
64
+ {
65
+ this->shared_ptr_ = other.get_shared();
66
+ return *this;
67
+ }
68
+ #endif
69
+
70
+ T* operator->()
71
+ {
72
+ return const_cast<T*> (this->_get());
73
+ }
74
+
75
+ const T* operator->() const
76
+ {
77
+ return this->_get();
78
+ }
79
+
80
+ const T* get() const
81
+ {
82
+ return this->_get();
83
+ }
84
+
85
+ void reset( T* ptr = nullptr )
86
+ {
87
+ this->shared_ptr_.reset(ptr);
88
+ }
89
+
90
+ shared_ptr_t get_shared() const { return this->shared_ptr_; }
91
+
92
+ operator shared_ptr_t() const { return this->get_shared(); }
93
+
94
+ private:
95
+
96
+ const T* _get() const
97
+ {
98
+ return dynamic_cast<const T*> (this->shared_ptr_.get());
99
+ }
100
+
101
+ shared_ptr_t shared_ptr_;
102
+ };
103
+
104
+ #endif
@@ -134,6 +134,35 @@ WXRUBY_EXPORT void wxRuby_AppendMarker(WXRBMarkFunction marker);
134
134
  WXRUBY_EXPORT VALUE wxRuby_GetTopLevelWindowClass(); // used for wxWindow typemap in typemap.i
135
135
  WXRUBY_EXPORT bool GC_IsWindowDeleted(void *ptr);
136
136
 
137
+ WXRUBY_EXPORT bool GC_IsObjectOwned(VALUE object);
138
+
139
+ #ifdef __cplusplus
140
+ extern "C" {
141
+ #endif
142
+
143
+ WXRUBY_EXPORT void wxRuby_InitializeTracking();
144
+ WXRUBY_EXPORT void wxRuby_AddTracking(void* ptr, VALUE object);
145
+ WXRUBY_EXPORT VALUE wxRuby_FindTracking(void* ptr);
146
+ WXRUBY_EXPORT void wxRuby_RemoveTracking(void* ptr);
147
+ WXRUBY_EXPORT void wxRuby_UnlinkObject(void* ptr);
148
+
149
+ #ifdef __cplusplus
150
+ }
151
+ #endif
152
+
153
+ #include <unordered_map>
154
+
155
+ typedef std::unordered_map<void*, VALUE> TGCTrackingValueMap;
156
+ typedef void (* TGCMarkerFunction)(const TGCTrackingValueMap&);
157
+
158
+ WXRUBY_EXPORT void wxRuby_RegisterTrackingCategory(std::string category, TGCMarkerFunction marker, bool has_data = false);
159
+ WXRUBY_EXPORT void wxRuby_RegisterCategoryValue(const std::string &category, void *ptr, VALUE object);
160
+ WXRUBY_EXPORT void wxRuby_UnregisterCategoryValue(const std::string &category, void *ptr);
161
+ WXRUBY_EXPORT VALUE wxRuby_FindCategoryValue(const std::string &category, void *ptr);
162
+ WXRUBY_EXPORT void wxRuby_UnlinkCategoryValue(const std::string &category, void* ptr);
163
+
164
+ WXRUBY_EXPORT void wxRuby_MarkTracked();
165
+
137
166
  // Defined in wx.i; getting, setting and using swig_type <-> ruby class
138
167
  // mappings
139
168
  WXRUBY_EXPORT swig_type_info* wxRuby_GetSwigTypeForClass(VALUE cls);
@@ -15,47 +15,33 @@ extern "C" {
15
15
  #endif
16
16
 
17
17
  // Shared custom swig tracking functions
18
+ WXRUBY_EXPORT void wxRuby_InitializeTracking();
18
19
  WXRUBY_EXPORT void wxRuby_AddTracking(void* ptr, VALUE object);
19
20
  WXRUBY_EXPORT VALUE wxRuby_FindTracking(void* ptr);
20
21
  WXRUBY_EXPORT void wxRuby_RemoveTracking(void* ptr);
21
- WXRUBY_EXPORT void wxRuby_IterateTracking( void(*meth)(void* ptr, VALUE obj) );
22
22
 
23
- /* Setup a Ruby hash table to store Trackings - mostly done in wx.i */
24
- SWIGRUNTIMEINLINE void SWIG_RubyInitializeTrackings(void) {
25
- // no-op
26
- }
23
+ /* Setup a Ruby hash table to store Trackings */
24
+ #define SWIG_RubyInitializeTrackings()
27
25
 
28
26
  /* Add a Tracking from a C/C++ struct to a Ruby object */
29
- SWIGRUNTIMEINLINE void SWIG_RubyAddTracking(void* ptr, VALUE object) {
30
- wxRuby_AddTracking(ptr, object);
31
- }
27
+ #define SWIG_RubyAddTracking wxRuby_AddTracking
32
28
 
33
29
  /* Get the Ruby object that owns the specified C/C++ struct */
34
- SWIGRUNTIMEINLINE VALUE SWIG_RubyInstanceFor(void* ptr) {
35
- return wxRuby_FindTracking(ptr);
36
- }
30
+ #define SWIG_RubyInstanceFor wxRuby_FindTracking
37
31
 
38
32
  /* Remove a Tracking from a C/C++ struct to a Ruby object. It
39
33
  is very important to remove objects once they are destroyed
40
34
  since the same memory address may be reused later to create
41
35
  a new object. */
42
- SWIGRUNTIMEINLINE void SWIG_RubyRemoveTracking(void* ptr) {
43
- wxRuby_RemoveTracking(ptr);
44
- }
36
+ #define SWIG_RubyRemoveTracking wxRuby_RemoveTracking
45
37
 
46
38
  /* This is a helper method that unlinks a Ruby object from its
47
39
  underlying C++ object. This is needed if the lifetime of the
48
40
  Ruby object is longer than the C++ object */
49
- SWIGRUNTIMEINLINE void SWIG_RubyUnlinkObjects(void* ptr) {
50
- VALUE object = SWIG_RubyInstanceFor(ptr);
51
-
52
- if (object != Qnil) {
53
- DATA_PTR(object) = 0;
54
- }
55
- }
41
+ #define SWIG_RubyUnlinkObjects wxRuby_UnlinkObject
56
42
 
57
43
  SWIGRUNTIMEINLINE void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) {
58
- wxRuby_IterateTracking(meth);
44
+ // noop
59
45
  }
60
46
 
61
47
 
@@ -0,0 +1,434 @@
1
+ //Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ //
3
+ // This software is released under the MIT license.
4
+
5
+ #ifndef _WXRUBY_SHAREDPTR_H_
6
+ #define _WXRUBY_SHAREDPTR_H_
7
+ template <class T, class Base = T>
8
+ class WxRubySharedPtr;
9
+ #endif
10
+
11
+ %header %{
12
+ #include <wxruby-SharedPtr.h>
13
+ %}
14
+
15
+ // Main user macro for defining shared_ptr typemaps for both const and non-const pointer types
16
+ %define %wx_ruby_shared_ptr(TYPE, BASE)
17
+ %feature("smartptr", noblock=1) TYPE { WxRubySharedPtr< TYPE, BASE > }
18
+ SWIG_WXRUBY_SHARED_PTR_TYPEMAPS(, TYPE, BASE)
19
+ SWIG_WXRUBY_SHARED_PTR_TYPEMAPS(const, TYPE, BASE)
20
+ %enddef
21
+
22
+ %{
23
+ #ifdef __cplusplus
24
+ #ifndef SWIG_STD_MOVE
25
+ #if __cplusplus >=201103L
26
+ # define SWIG_STD_MOVE(OBJ) std::move(OBJ)
27
+ #else
28
+ # define SWIG_STD_MOVE(OBJ) OBJ
29
+ #endif
30
+ #endif
31
+ #endif
32
+ %}
33
+
34
+ %{
35
+ // Set WXSHARED_PTR_DISOWN to $disown if required, for example
36
+ // #define WXSHARED_PTR_DISOWN $disown
37
+ #if !defined(WXSHARED_PTR_DISOWN)
38
+ #define WXSHARED_PTR_DISOWN 0
39
+ #endif
40
+ %}
41
+
42
+ // Macro implementing all the customisations for handling the smart pointer
43
+ %define SWIG_WXRUBY_SHARED_PTR_TYPEMAPS(CONST, TYPE, BASE)
44
+
45
+ // %naturalvar is as documented for member variables
46
+ %naturalvar TYPE;
47
+ %naturalvar WxRubySharedPtr< CONST TYPE, CONST BASE >;
48
+
49
+ // destructor wrapper customisation
50
+ %feature("unref") TYPE
51
+ %{(void)arg1;
52
+ delete reinterpret_cast< WxRubySharedPtr< TYPE, BASE > * >(self);%}
53
+
54
+ // Typemap customisations...
55
+
56
+ // plain value
57
+ %typemap(in) CONST TYPE (void *argp, int res = 0) {
58
+ swig_ruby_owntype newmem = {0, 0};
59
+ res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
60
+ if (!SWIG_IsOK(res)) {
61
+ %argument_fail(res, "$type", $symname, $argnum);
62
+ }
63
+ if (!argp) {
64
+ %argument_nullref("$type", $symname, $argnum);
65
+ } else {
66
+ $1 = *(%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *)->get());
67
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
68
+ }
69
+ }
70
+ %typemap(out) CONST TYPE {
71
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = new WxRubySharedPtr< CONST TYPE, CONST BASE >(new $1_ltype($1));
72
+ %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
73
+ }
74
+
75
+ %typemap(varin) CONST TYPE {
76
+ void *argp = 0;
77
+ swig_ruby_owntype newmem = {0, 0};
78
+ int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
79
+ if (!SWIG_IsOK(res)) {
80
+ %variable_fail(res, "$type", "$name");
81
+ }
82
+ if (!argp) {
83
+ %variable_nullref("$type", "$name");
84
+ } else {
85
+ $1 = *(%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *)->get());
86
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
87
+ }
88
+ }
89
+ %typemap(varout) CONST TYPE {
90
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = new WxRubySharedPtr< CONST TYPE, CONST BASE >(new $1_ltype($1));
91
+ %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
92
+ }
93
+
94
+ %typemap(directorin,noblock=1) CONST TYPE (WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0) %{
95
+ smartarg = new WxRubySharedPtr< CONST TYPE, CONST BASE >(new $1_ltype(SWIG_STD_MOVE($1)));
96
+ $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN | %newpointer_flags);
97
+ %}
98
+ %typemap(directorout,noblock=1) CONST TYPE (void *swig_argp, int swig_res = 0) {
99
+ swig_ruby_owntype newmem = {0, 0};
100
+ swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
101
+ if (!SWIG_IsOK(swig_res)) {
102
+ %dirout_fail(swig_res, "$type");
103
+ }
104
+ if (!swig_argp) {
105
+ %dirout_nullref("$type");
106
+ } else {
107
+ $result = *(%reinterpret_cast(swig_argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *)->get());
108
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
109
+ }
110
+ }
111
+
112
+ // plain pointer
113
+ // Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance
114
+ %typemap(in) CONST TYPE * (void *argp = 0, int res = 0, WxRubySharedPtr< CONST TYPE, CONST BASE > tempshared, WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0) {
115
+ swig_ruby_owntype newmem = {0, 0};
116
+ res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), WXSHARED_PTR_DISOWN | %convertptr_flags, &newmem);
117
+ if (!SWIG_IsOK(res)) {
118
+ %argument_fail(res, "$type", $symname, $argnum);
119
+ }
120
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) {
121
+ tempshared = *%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
122
+ delete %reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
123
+ $1 = %const_cast(tempshared.get(), $1_ltype);
124
+ } else {
125
+ smartarg = %reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
126
+ $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype);
127
+ }
128
+ }
129
+
130
+ %typemap(out, fragment="SWIG_null_deleter") CONST TYPE * {
131
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = $1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >($1 SWIG_NO_NULL_DELETER_$owner) : 0;
132
+ %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), $owner | SWIG_POINTER_OWN));
133
+ }
134
+
135
+ %typemap(varin) CONST TYPE * {
136
+ void *argp = 0;
137
+ swig_ruby_owntype newmem = {0, 0};
138
+ int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
139
+ if (!SWIG_IsOK(res)) {
140
+ %variable_fail(res, "$type", "$name");
141
+ }
142
+ WxRubySharedPtr< CONST TYPE, CONST BASE > tempshared;
143
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0;
144
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) {
145
+ tempshared = *%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
146
+ delete %reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
147
+ $1 = %const_cast(tempshared.get(), $1_ltype);
148
+ } else {
149
+ smartarg = %reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
150
+ $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype);
151
+ }
152
+ }
153
+ %typemap(varout, fragment="SWIG_null_deleter") CONST TYPE * {
154
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = $1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >($1 SWIG_NO_NULL_DELETER_0) : 0;
155
+ %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
156
+ }
157
+
158
+ %typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE * (WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0) %{
159
+ smartarg = $1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >($1 SWIG_NO_NULL_DELETER_0) : 0;
160
+ $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN | %newpointer_flags);
161
+ %}
162
+ %typemap(directorout,noblock=1) CONST TYPE * %{
163
+ #error "directorout typemap for plain pointer not implemented"
164
+ %}
165
+
166
+ // plain reference
167
+ %typemap(in) CONST TYPE & (void *argp = 0, int res = 0, WxRubySharedPtr< CONST TYPE, CONST BASE > tempshared) {
168
+ swig_ruby_owntype newmem = {0, 0};
169
+ res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
170
+ if (!SWIG_IsOK(res)) {
171
+ %argument_fail(res, "$type", $symname, $argnum);
172
+ }
173
+ if (!argp) { %argument_nullref("$type", $symname, $argnum); }
174
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) {
175
+ tempshared = *%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
176
+ delete %reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
177
+ $1 = %const_cast(tempshared.get(), $1_ltype);
178
+ } else {
179
+ $1 = %const_cast(%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *)->get(), $1_ltype);
180
+ }
181
+ }
182
+ %typemap(out, fragment="SWIG_null_deleter") CONST TYPE & {
183
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = new WxRubySharedPtr< CONST TYPE, CONST BASE >($1 SWIG_NO_NULL_DELETER_$owner);
184
+ %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
185
+ }
186
+
187
+ %typemap(varin) CONST TYPE & {
188
+ void *argp = 0;
189
+ swig_ruby_owntype newmem = {0, 0};
190
+ int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
191
+ if (!SWIG_IsOK(res)) {
192
+ %variable_fail(res, "$type", "$name");
193
+ }
194
+ WxRubySharedPtr< CONST TYPE, CONST BASE > tempshared;
195
+ if (!argp) {
196
+ %variable_nullref("$type", "$name");
197
+ }
198
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) {
199
+ tempshared = *%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
200
+ delete %reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
201
+ $1 = *%const_cast(tempshared.get(), $1_ltype);
202
+ } else {
203
+ $1 = *%const_cast(%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *)->get(), $1_ltype);
204
+ }
205
+ }
206
+ %typemap(varout, fragment="SWIG_null_deleter") CONST TYPE & {
207
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = new WxRubySharedPtr< CONST TYPE, CONST BASE >(&$1 SWIG_NO_NULL_DELETER_0);
208
+ %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
209
+ }
210
+
211
+ %typemap(directorin,noblock=1, fragment="SWIG_null_deleter") CONST TYPE & (WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0) %{
212
+ smartarg = new WxRubySharedPtr< CONST TYPE, CONST BASE >(&$1 SWIG_NO_NULL_DELETER_0);
213
+ $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN | %newpointer_flags);
214
+ %}
215
+ %typemap(directorout,noblock=1) CONST TYPE & %{
216
+ #error "directorout typemap for plain reference not implemented"
217
+ %}
218
+
219
+ // plain pointer by reference
220
+ // Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance
221
+ %typemap(in) TYPE *CONST& (void *argp = 0, int res = 0, $*1_ltype temp = 0, WxRubySharedPtr< CONST TYPE, CONST BASE > tempshared) {
222
+ swig_ruby_owntype newmem = {0, 0};
223
+ res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), WXSHARED_PTR_DISOWN | %convertptr_flags, &newmem);
224
+ if (!SWIG_IsOK(res)) {
225
+ %argument_fail(res, "$type", $symname, $argnum);
226
+ }
227
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) {
228
+ tempshared = *%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
229
+ delete %reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *);
230
+ temp = %const_cast(tempshared.get(), $*1_ltype);
231
+ } else {
232
+ temp = %const_cast(%reinterpret_cast(argp, WxRubySharedPtr< CONST TYPE, CONST BASE > *)->get(), $*1_ltype);
233
+ }
234
+ $1 = &temp;
235
+ }
236
+ %typemap(out, fragment="SWIG_null_deleter") TYPE *CONST& {
237
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = *$1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >(*$1 SWIG_NO_NULL_DELETER_$owner) : 0;
238
+ %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
239
+ }
240
+
241
+ %typemap(varin) TYPE *CONST& %{
242
+ #error "varin typemap not implemented"
243
+ %}
244
+ %typemap(varout) TYPE *CONST& %{
245
+ #error "varout typemap not implemented"
246
+ %}
247
+
248
+ %typemap(directorin,noblock=1, fragment="SWIG_null_deleter") TYPE *CONST& (WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0) %{
249
+ smartarg = $1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >($1 SWIG_NO_NULL_DELETER_0) : 0;
250
+ $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN | %newpointer_flags);
251
+ %}
252
+ %typemap(directorout,noblock=1) TYPE *CONST& %{
253
+ #error "directorout typemap for plain pointer by reference not implemented"
254
+ %}
255
+
256
+ // shared_ptr by value
257
+ %typemap(in) WxRubySharedPtr< CONST TYPE, CONST BASE > (void *argp, int res = 0) {
258
+ swig_ruby_owntype newmem = {0, 0};
259
+ res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
260
+ if (!SWIG_IsOK(res)) {
261
+ %argument_fail(res, "$type", $symname, $argnum);
262
+ }
263
+ if (argp) $1 = *(%reinterpret_cast(argp, $&ltype));
264
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $&ltype);
265
+ }
266
+ %typemap(out) WxRubySharedPtr< CONST TYPE, CONST BASE > {
267
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = $1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >($1) : 0;
268
+ %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
269
+ }
270
+
271
+ %typemap(varin) WxRubySharedPtr< CONST TYPE, CONST BASE > {
272
+ swig_ruby_owntype newmem = {0, 0};
273
+ void *argp = 0;
274
+ int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
275
+ if (!SWIG_IsOK(res)) {
276
+ %variable_fail(res, "$type", "$name");
277
+ }
278
+ $1 = argp ? *(%reinterpret_cast(argp, $&ltype)) : WxRubySharedPtr< TYPE, BASE >();
279
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $&ltype);
280
+ }
281
+ %typemap(varout) WxRubySharedPtr< CONST TYPE, CONST BASE > {
282
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = $1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >($1) : 0;
283
+ %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
284
+ }
285
+
286
+ %typemap(directorin,noblock=1) WxRubySharedPtr< CONST TYPE, CONST BASE > (WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0) %{
287
+ smartarg = $1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >($1) : 0;
288
+ $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN | %newpointer_flags);
289
+ %}
290
+ %typemap(directorout,noblock=1) WxRubySharedPtr< CONST TYPE, CONST BASE > (void *swig_argp, int swig_res = 0) {
291
+ swig_ruby_owntype newmem = {0, 0};
292
+ swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
293
+ if (!SWIG_IsOK(swig_res)) {
294
+ %dirout_fail(swig_res, "$type");
295
+ }
296
+ if (swig_argp) {
297
+ $result = *(%reinterpret_cast(swig_argp, $&ltype));
298
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(swig_argp, $&ltype);
299
+ }
300
+ }
301
+
302
+ // shared_ptr by reference
303
+ %typemap(in) WxRubySharedPtr< CONST TYPE, CONST BASE > & (void *argp, int res = 0, $*1_ltype tempshared) {
304
+ swig_ruby_owntype newmem = {0, 0};
305
+ res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
306
+ if (!SWIG_IsOK(res)) {
307
+ %argument_fail(res, "$type", $symname, $argnum);
308
+ }
309
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) {
310
+ if (argp) tempshared = *%reinterpret_cast(argp, $ltype);
311
+ delete %reinterpret_cast(argp, $ltype);
312
+ $1 = &tempshared;
313
+ } else {
314
+ $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared;
315
+ }
316
+ }
317
+ %typemap(out) WxRubySharedPtr< CONST TYPE, CONST BASE > & {
318
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = *$1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >(*$1) : 0;
319
+ %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
320
+ }
321
+
322
+ %typemap(varin) WxRubySharedPtr< CONST TYPE, CONST BASE > & %{
323
+ #error "varin typemap not implemented"
324
+ %}
325
+ %typemap(varout) WxRubySharedPtr< CONST TYPE, CONST BASE > & %{
326
+ #error "varout typemap not implemented"
327
+ %}
328
+
329
+ %typemap(directorin,noblock=1) WxRubySharedPtr< CONST TYPE, CONST BASE > & (WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0) %{
330
+ smartarg = $1 ? new WxRubySharedPtr< CONST TYPE, CONST BASE >($1) : 0;
331
+ $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN | %newpointer_flags);
332
+ %}
333
+ %typemap(directorout,noblock=1) WxRubySharedPtr< CONST TYPE, CONST BASE > & %{
334
+ #error "directorout typemap for shared_ptr ref not implemented"
335
+ %}
336
+
337
+ // shared_ptr by pointer
338
+ %typemap(in) WxRubySharedPtr< CONST TYPE, CONST BASE > * (void *argp, int res = 0, $*1_ltype tempshared) {
339
+ swig_ruby_owntype newmem = {0, 0};
340
+ res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
341
+ if (!SWIG_IsOK(res)) {
342
+ %argument_fail(res, "$type", $symname, $argnum);
343
+ }
344
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) {
345
+ if (argp) tempshared = *%reinterpret_cast(argp, $ltype);
346
+ delete %reinterpret_cast(argp, $ltype);
347
+ $1 = &tempshared;
348
+ } else {
349
+ $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared;
350
+ }
351
+ }
352
+ %typemap(out) WxRubySharedPtr< CONST TYPE, CONST BASE > * {
353
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = ($1 && *$1) ? new WxRubySharedPtr< CONST TYPE, CONST BASE >(*$1) : 0;
354
+ %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
355
+ if ($owner) delete $1;
356
+ }
357
+
358
+ %typemap(varin) WxRubySharedPtr< CONST TYPE, CONST BASE > * %{
359
+ #error "varin typemap not implemented"
360
+ %}
361
+ %typemap(varout) WxRubySharedPtr< CONST TYPE, CONST BASE > * %{
362
+ #error "varout typemap not implemented"
363
+ %}
364
+
365
+ %typemap(directorin,noblock=1) WxRubySharedPtr< CONST TYPE, CONST BASE > * (WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0) %{
366
+ smartarg = ($1 && *$1) ? new WxRubySharedPtr< CONST TYPE, CONST BASE >(*$1) : 0;
367
+ $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN | %newpointer_flags);
368
+ %}
369
+ %typemap(directorout,noblock=1) WxRubySharedPtr< CONST TYPE, CONST BASE > * %{
370
+ #error "directorout typemap for pointer to shared_ptr not implemented"
371
+ %}
372
+
373
+ // shared_ptr by pointer reference
374
+ %typemap(in) WxRubySharedPtr< CONST TYPE, CONST BASE > *& (void *argp, int res = 0, WxRubySharedPtr< CONST TYPE, CONST BASE > tempshared, $*1_ltype temp = 0) {
375
+ swig_ruby_owntype newmem = {0, 0};
376
+ res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(WxRubySharedPtr< TYPE, BASE > *), %convertptr_flags, &newmem);
377
+ if (!SWIG_IsOK(res)) {
378
+ %argument_fail(res, "$type", $symname, $argnum);
379
+ }
380
+ if (argp) tempshared = *%reinterpret_cast(argp, $*ltype);
381
+ if (newmem.own & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $*ltype);
382
+ temp = &tempshared;
383
+ $1 = &temp;
384
+ }
385
+ %typemap(out) WxRubySharedPtr< CONST TYPE, CONST BASE > *& {
386
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *smartresult = (*$1 && **$1) ? new WxRubySharedPtr< CONST TYPE, CONST BASE >(**$1) : 0;
387
+ %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN));
388
+ }
389
+
390
+ %typemap(varin) WxRubySharedPtr< CONST TYPE, CONST BASE > *& %{
391
+ #error "varin typemap not implemented"
392
+ %}
393
+ %typemap(varout) WxRubySharedPtr< CONST TYPE, CONST BASE > *& %{
394
+ #error "varout typemap not implemented"
395
+ %}
396
+
397
+ %typemap(directorin,noblock=1) WxRubySharedPtr< CONST TYPE, CONST BASE > *& (WxRubySharedPtr< CONST TYPE, CONST BASE > *smartarg = 0) %{
398
+ smartarg = ($1 && *$1) ? new WxRubySharedPtr< CONST TYPE, CONST BASE >(*$1) : 0;
399
+ $input = SWIG_NewPointerObj(%as_voidptr(smartarg), $descriptor(WxRubySharedPtr< TYPE, BASE > *), SWIG_POINTER_OWN | %newpointer_flags);
400
+ %}
401
+ %typemap(directorout,noblock=1) WxRubySharedPtr< CONST TYPE, CONST BASE > *& %{
402
+ #error "directorout typemap for pointer ref to shared_ptr not implemented"
403
+ %}
404
+
405
+ // Typecheck typemaps
406
+ // Note: SWIG_ConvertPtr with void ** parameter set to 0 instead of using SWIG_ConvertPtrAndOwn, so that the casting
407
+ // function is not called thereby avoiding a possible smart pointer copy constructor call when casting up the inheritance chain.
408
+ %typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *", noblock=1)
409
+ TYPE CONST,
410
+ TYPE CONST &,
411
+ TYPE CONST *,
412
+ TYPE *CONST&,
413
+ WxRubySharedPtr< CONST TYPE, CONST BASE >,
414
+ WxRubySharedPtr< CONST TYPE, CONST BASE > &,
415
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *,
416
+ WxRubySharedPtr< CONST TYPE, CONST BASE > *& {
417
+ int res = SWIG_ConvertPtr($input, 0, $descriptor(WxRubySharedPtr< TYPE, BASE > *), 0);
418
+ $1 = SWIG_CheckState(res);
419
+ }
420
+
421
+
422
+ // various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug
423
+ %typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{
424
+ #error "typemaps for $1_type not available"
425
+ %}
426
+ %typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{
427
+ #error "typemaps for $1_type not available"
428
+ %}
429
+
430
+
431
+ %template() WxRubySharedPtr< CONST TYPE, CONST BASE >;
432
+
433
+
434
+ %enddef