fxruby 1.6.41 → 1.6.45

Sign up to get free protection for your applications and to get access to all the features.
Files changed (354) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.travis.yml +2 -2
  4. data/.yardopts +1 -1
  5. data/Gemfile +2 -3
  6. data/History.md +27 -1
  7. data/README.rdoc +10 -5
  8. data/Rakefile +16 -5
  9. data/appveyor.yml +8 -7
  10. data/docs/Fox/Canvas/CanvasError.html +124 -0
  11. data/docs/Fox/Canvas/CircleShape.html +477 -0
  12. data/docs/Fox/Canvas/ImageShape.html +477 -0
  13. data/docs/Fox/Canvas/LineShape.html +1005 -0
  14. data/docs/Fox/Canvas/PolygonShape.html +145 -0
  15. data/docs/Fox/Canvas/RectangleShape.html +439 -0
  16. data/docs/Fox/Canvas/SelectionPolicy.html +352 -0
  17. data/docs/Fox/Canvas/Shape.html +1955 -0
  18. data/docs/Fox/Canvas/ShapeCanvas.html +2031 -0
  19. data/docs/Fox/Canvas/ShapeGroup.html +527 -0
  20. data/docs/Fox/Canvas/SingleSelectionPolicy.html +291 -0
  21. data/docs/Fox/Canvas/TextShape.html +609 -0
  22. data/docs/Fox/Canvas.html +141 -0
  23. data/docs/Fox/FTNonModal.html +550 -0
  24. data/docs/Fox/FX4Splitter.html +1336 -0
  25. data/docs/Fox/FX7Segment.html +1010 -0
  26. data/docs/Fox/FXAccelTable.html +715 -0
  27. data/docs/Fox/FXApp.html +7998 -0
  28. data/docs/Fox/FXArc.html +562 -0
  29. data/docs/Fox/FXArrowButton.html +865 -0
  30. data/docs/Fox/FXBMPIcon.html +450 -0
  31. data/docs/Fox/FXBMPImage.html +434 -0
  32. data/docs/Fox/FXBitmap.html +1362 -0
  33. data/docs/Fox/FXBitmapFrame.html +595 -0
  34. data/docs/Fox/FXBitmapView.html +1451 -0
  35. data/docs/Fox/FXButton.html +534 -0
  36. data/docs/Fox/FXCURCursor.html +261 -0
  37. data/docs/Fox/FXCalendar.html +880 -0
  38. data/docs/Fox/FXCanvas.html +311 -0
  39. data/docs/Fox/FXCheckButton.html +949 -0
  40. data/docs/Fox/FXChoiceBox.html +472 -0
  41. data/docs/Fox/FXColor.html +1519 -0
  42. data/docs/Fox/FXColorBar.html +759 -0
  43. data/docs/Fox/FXColorDialog.html +591 -0
  44. data/docs/Fox/FXColorItem.html +323 -0
  45. data/docs/Fox/FXColorList.html +712 -0
  46. data/docs/Fox/FXColorRing.html +817 -0
  47. data/docs/Fox/FXColorSelector.html +796 -0
  48. data/docs/Fox/FXColorWell.html +850 -0
  49. data/docs/Fox/FXColorWheel.html +770 -0
  50. data/docs/Fox/FXComboBox.html +2939 -0
  51. data/docs/Fox/FXComboTableItem.html +544 -0
  52. data/docs/Fox/FXCommand.html +526 -0
  53. data/docs/Fox/FXComposite.html +433 -0
  54. data/docs/Fox/FXCursor.html +779 -0
  55. data/docs/Fox/FXDC.html +5231 -0
  56. data/docs/Fox/FXDCPrint.html +696 -0
  57. data/docs/Fox/FXDCWindow.html +358 -0
  58. data/docs/Fox/FXDataTarget.html +573 -0
  59. data/docs/Fox/FXDebugTarget.html +305 -0
  60. data/docs/Fox/FXDelegator.html +305 -0
  61. data/docs/Fox/FXDial.html +1133 -0
  62. data/docs/Fox/FXDialogBox.html +413 -0
  63. data/docs/Fox/FXDict.html +1063 -0
  64. data/docs/Fox/FXDirBox.html +752 -0
  65. data/docs/Fox/FXDirDialog.html +914 -0
  66. data/docs/Fox/FXDirItem.html +989 -0
  67. data/docs/Fox/FXDirList.html +1554 -0
  68. data/docs/Fox/FXDirSelector.html +995 -0
  69. data/docs/Fox/FXDockBar.html +1451 -0
  70. data/docs/Fox/FXDockHandler.html +468 -0
  71. data/docs/Fox/FXDockSite.html +678 -0
  72. data/docs/Fox/FXDockTitle.html +606 -0
  73. data/docs/Fox/FXDocument.html +536 -0
  74. data/docs/Fox/FXDragCorner.html +440 -0
  75. data/docs/Fox/FXDrawable.html +478 -0
  76. data/docs/Fox/FXDriveBox.html +746 -0
  77. data/docs/Fox/FXEvent.html +1736 -0
  78. data/docs/Fox/FXExtentd.html +1374 -0
  79. data/docs/Fox/FXExtentf.html +1374 -0
  80. data/docs/Fox/FXFileAssoc.html +850 -0
  81. data/docs/Fox/FXFileDialog.html +2688 -0
  82. data/docs/Fox/FXFileDict.html +1058 -0
  83. data/docs/Fox/FXFileItem.html +1141 -0
  84. data/docs/Fox/FXFileList.html +2259 -0
  85. data/docs/Fox/FXFileSelector.html +2529 -0
  86. data/docs/Fox/FXFileStream.html +503 -0
  87. data/docs/Fox/FXFoldingItem.html +2822 -0
  88. data/docs/Fox/FXFoldingList.html +5189 -0
  89. data/docs/Fox/FXFont.html +2998 -0
  90. data/docs/Fox/FXFontDesc.html +710 -0
  91. data/docs/Fox/FXFontDialog.html +420 -0
  92. data/docs/Fox/FXFontSelector.html +576 -0
  93. data/docs/Fox/FXFrame.html +1012 -0
  94. data/docs/Fox/FXGIFCursor.html +337 -0
  95. data/docs/Fox/FXGIFIcon.html +450 -0
  96. data/docs/Fox/FXGIFImage.html +434 -0
  97. data/docs/Fox/FXGLCanvas.html +700 -0
  98. data/docs/Fox/FXGLCone.html +785 -0
  99. data/docs/Fox/FXGLContext.html +649 -0
  100. data/docs/Fox/FXGLCube.html +703 -0
  101. data/docs/Fox/FXGLCylinder.html +791 -0
  102. data/docs/Fox/FXGLGroup.html +1385 -0
  103. data/docs/Fox/FXGLLine.html +653 -0
  104. data/docs/Fox/FXGLObject.html +759 -0
  105. data/docs/Fox/FXGLPoint.html +561 -0
  106. data/docs/Fox/FXGLShape.html +714 -0
  107. data/docs/Fox/FXGLSphere.html +626 -0
  108. data/docs/Fox/FXGLViewer.html +3506 -0
  109. data/docs/Fox/FXGLVisual.html +2147 -0
  110. data/docs/Fox/FXGradient.html +562 -0
  111. data/docs/Fox/FXGradientBar.html +2479 -0
  112. data/docs/Fox/FXGroupBox.html +688 -0
  113. data/docs/Fox/FXHeader.html +3040 -0
  114. data/docs/Fox/FXHeaderItem.html +1353 -0
  115. data/docs/Fox/FXHiliteStyle.html +804 -0
  116. data/docs/Fox/FXHorizontalFrame.html +359 -0
  117. data/docs/Fox/FXHorizontalSeparator.html +349 -0
  118. data/docs/Fox/FXICOIcon.html +450 -0
  119. data/docs/Fox/FXICOImage.html +434 -0
  120. data/docs/Fox/FXIcon.html +384 -0
  121. data/docs/Fox/FXIconDict.html +752 -0
  122. data/docs/Fox/FXIconItem.html +1518 -0
  123. data/docs/Fox/FXIconList.html +4676 -0
  124. data/docs/Fox/FXIconSource.html +963 -0
  125. data/docs/Fox/FXId.html +712 -0
  126. data/docs/Fox/FXImage.html +2328 -0
  127. data/docs/Fox/FXImageFrame.html +489 -0
  128. data/docs/Fox/FXImageView.html +504 -0
  129. data/docs/Fox/FXInputDialog.html +894 -0
  130. data/docs/Fox/FXIrb.html +942 -0
  131. data/docs/Fox/FXJPGIcon.html +607 -0
  132. data/docs/Fox/FXJPGImage.html +591 -0
  133. data/docs/Fox/FXKnob.html +1048 -0
  134. data/docs/Fox/FXLabel.html +1013 -0
  135. data/docs/Fox/FXLight.html +920 -0
  136. data/docs/Fox/FXList.html +3717 -0
  137. data/docs/Fox/FXListBox.html +2518 -0
  138. data/docs/Fox/FXListItem.html +1459 -0
  139. data/docs/Fox/FXMDIChild.html +2175 -0
  140. data/docs/Fox/FXMDIClient.html +781 -0
  141. data/docs/Fox/FXMDIDeleteButton.html +334 -0
  142. data/docs/Fox/FXMDIMaximizeButton.html +334 -0
  143. data/docs/Fox/FXMDIMenu.html +335 -0
  144. data/docs/Fox/FXMDIMinimizeButton.html +334 -0
  145. data/docs/Fox/FXMDIRestoreButton.html +334 -0
  146. data/docs/Fox/FXMDIWindowButton.html +334 -0
  147. data/docs/Fox/FXMainWindow.html +337 -0
  148. data/docs/Fox/FXMaterial.html +570 -0
  149. data/docs/Fox/FXMatrix.html +734 -0
  150. data/docs/Fox/FXMemoryBuffer.html +472 -0
  151. data/docs/Fox/FXMemoryStream.html +632 -0
  152. data/docs/Fox/FXMenuBar.html +347 -0
  153. data/docs/Fox/FXMenuButton.html +829 -0
  154. data/docs/Fox/FXMenuCaption.html +1080 -0
  155. data/docs/Fox/FXMenuCascade.html +388 -0
  156. data/docs/Fox/FXMenuCheck.html +721 -0
  157. data/docs/Fox/FXMenuCommand.html +400 -0
  158. data/docs/Fox/FXMenuPane.html +333 -0
  159. data/docs/Fox/FXMenuRadio.html +721 -0
  160. data/docs/Fox/FXMenuSeparator.html +440 -0
  161. data/docs/Fox/FXMenuTitle.html +405 -0
  162. data/docs/Fox/FXMessageBox.html +658 -0
  163. data/docs/Fox/FXObject.html +545 -0
  164. data/docs/Fox/FXOption.html +491 -0
  165. data/docs/Fox/FXOptionMenu.html +885 -0
  166. data/docs/Fox/FXPCXIcon.html +450 -0
  167. data/docs/Fox/FXPCXImage.html +434 -0
  168. data/docs/Fox/FXPNGIcon.html +524 -0
  169. data/docs/Fox/FXPNGImage.html +508 -0
  170. data/docs/Fox/FXPPMIcon.html +450 -0
  171. data/docs/Fox/FXPPMImage.html +373 -0
  172. data/docs/Fox/FXPSBounds.html +500 -0
  173. data/docs/Fox/FXPacker.html +1229 -0
  174. data/docs/Fox/FXPicker.html +345 -0
  175. data/docs/Fox/FXPopup.html +1099 -0
  176. data/docs/Fox/FXPrintDialog.html +485 -0
  177. data/docs/Fox/FXPrinter.html +1330 -0
  178. data/docs/Fox/FXProgressBar.html +1150 -0
  179. data/docs/Fox/FXProgressDialog.html +715 -0
  180. data/docs/Fox/FXPseudoKeyboard.html +428 -0
  181. data/docs/Fox/FXPseudoMouse.html +800 -0
  182. data/docs/Fox/FXPseudoTarget.html +472 -0
  183. data/docs/Fox/FXQuatd.html +1377 -0
  184. data/docs/Fox/FXQuatf.html +1392 -0
  185. data/docs/Fox/FXRGBIcon.html +450 -0
  186. data/docs/Fox/FXRGBImage.html +434 -0
  187. data/docs/Fox/FXRadioButton.html +885 -0
  188. data/docs/Fox/FXRanged.html +1522 -0
  189. data/docs/Fox/FXRangef.html +1522 -0
  190. data/docs/Fox/FXRealSlider.html +1187 -0
  191. data/docs/Fox/FXRealSpinner.html +2175 -0
  192. data/docs/Fox/FXRecentFiles.html +841 -0
  193. data/docs/Fox/FXRectangle.html +802 -0
  194. data/docs/Fox/FXRegion.html +841 -0
  195. data/docs/Fox/FXRegistry.html +682 -0
  196. data/docs/Fox/FXReplaceDialog.html +648 -0
  197. data/docs/Fox/FXRootWindow.html +312 -0
  198. data/docs/Fox/FXRuler.html +2000 -0
  199. data/docs/Fox/FXRulerView.html +3997 -0
  200. data/docs/Fox/FXScintilla.html +49117 -0
  201. data/docs/Fox/FXScrollArea.html +1363 -0
  202. data/docs/Fox/FXScrollBar.html +1019 -0
  203. data/docs/Fox/FXScrollCorner.html +290 -0
  204. data/docs/Fox/FXScrollPane.html +499 -0
  205. data/docs/Fox/FXScrollWindow.html +409 -0
  206. data/docs/Fox/FXSearchDialog.html +382 -0
  207. data/docs/Fox/FXSegment.html +422 -0
  208. data/docs/Fox/FXSeparator.html +402 -0
  209. data/docs/Fox/FXSettings.html +1861 -0
  210. data/docs/Fox/FXShell.html +233 -0
  211. data/docs/Fox/FXShutter.html +472 -0
  212. data/docs/Fox/FXShutterItem.html +669 -0
  213. data/docs/Fox/FXSize.html +592 -0
  214. data/docs/Fox/FXSlider.html +1129 -0
  215. data/docs/Fox/FXSphered.html +906 -0
  216. data/docs/Fox/FXSpheref.html +906 -0
  217. data/docs/Fox/FXSpinner.html +2102 -0
  218. data/docs/Fox/FXSplashScreen.html +497 -0
  219. data/docs/Fox/FXSplashWindow.html +494 -0
  220. data/docs/Fox/FXSplitter.html +643 -0
  221. data/docs/Fox/FXSpring.html +517 -0
  222. data/docs/Fox/FXStatusBar.html +593 -0
  223. data/docs/Fox/FXStatusLine.html +754 -0
  224. data/docs/Fox/FXStream.html +1372 -0
  225. data/docs/Fox/FXStreamAllocError.html +148 -0
  226. data/docs/Fox/FXStreamEndError.html +148 -0
  227. data/docs/Fox/FXStreamError.html +259 -0
  228. data/docs/Fox/FXStreamFailureError.html +148 -0
  229. data/docs/Fox/FXStreamFormatError.html +148 -0
  230. data/docs/Fox/FXStreamFullError.html +148 -0
  231. data/docs/Fox/FXStreamNoReadError.html +148 -0
  232. data/docs/Fox/FXStreamNoWriteError.html +148 -0
  233. data/docs/Fox/FXStreamUnknownError.html +148 -0
  234. data/docs/Fox/FXStringDict.html +552 -0
  235. data/docs/Fox/FXSwitcher.html +619 -0
  236. data/docs/Fox/FXTGAIcon.html +450 -0
  237. data/docs/Fox/FXTGAImage.html +434 -0
  238. data/docs/Fox/FXTIFIcon.html +604 -0
  239. data/docs/Fox/FXTIFImage.html +588 -0
  240. data/docs/Fox/FXTabBar.html +644 -0
  241. data/docs/Fox/FXTabBook.html +373 -0
  242. data/docs/Fox/FXTabItem.html +478 -0
  243. data/docs/Fox/FXTable.html +10107 -0
  244. data/docs/Fox/FXTableItem.html +2195 -0
  245. data/docs/Fox/FXTablePos.html +360 -0
  246. data/docs/Fox/FXTableRange.html +360 -0
  247. data/docs/Fox/FXText.html +6870 -0
  248. data/docs/Fox/FXTextChange.html +492 -0
  249. data/docs/Fox/FXTextField.html +2016 -0
  250. data/docs/Fox/FXToggleButton.html +844 -0
  251. data/docs/Fox/FXToolBar.html +452 -0
  252. data/docs/Fox/FXToolBarGrip.html +584 -0
  253. data/docs/Fox/FXToolBarShell.html +788 -0
  254. data/docs/Fox/FXToolBarTab.html +729 -0
  255. data/docs/Fox/FXToolTip.html +761 -0
  256. data/docs/Fox/FXTopWindow.html +1716 -0
  257. data/docs/Fox/FXTranslator.html +481 -0
  258. data/docs/Fox/FXTreeItem.html +2813 -0
  259. data/docs/Fox/FXTreeList.html +5095 -0
  260. data/docs/Fox/FXTreeListBox.html +3080 -0
  261. data/docs/Fox/FXTriStateButton.html +681 -0
  262. data/docs/Fox/FXUndoList.html +2560 -0
  263. data/docs/Fox/FXVec2d.html +1450 -0
  264. data/docs/Fox/FXVec2f.html +1442 -0
  265. data/docs/Fox/FXVec3d.html +1649 -0
  266. data/docs/Fox/FXVec3f.html +1649 -0
  267. data/docs/Fox/FXVec4d.html +1858 -0
  268. data/docs/Fox/FXVec4f.html +1858 -0
  269. data/docs/Fox/FXVerticalFrame.html +359 -0
  270. data/docs/Fox/FXVerticalSeparator.html +349 -0
  271. data/docs/Fox/FXViewport.html +780 -0
  272. data/docs/Fox/FXVisual.html +1023 -0
  273. data/docs/Fox/FXWindow.html +9948 -0
  274. data/docs/Fox/FXWizard.html +1052 -0
  275. data/docs/Fox/FXXBMIcon.html +453 -0
  276. data/docs/Fox/FXXBMImage.html +437 -0
  277. data/docs/Fox/FXXPMIcon.html +450 -0
  278. data/docs/Fox/FXXPMImage.html +434 -0
  279. data/docs/Fox/NotifyHeader.html +286 -0
  280. data/docs/Fox/SCNotification.html +1438 -0
  281. data/docs/Fox/TextRange.html +281 -0
  282. data/docs/Fox.html +11184 -0
  283. data/docs/IRB.html +204 -0
  284. data/docs/Responder.html +693 -0
  285. data/docs/Responder2.html +225 -0
  286. data/docs/_index.html +2101 -0
  287. data/docs/class_list.html +51 -0
  288. data/docs/css/common.css +1 -0
  289. data/docs/css/full_list.css +58 -0
  290. data/docs/css/style.css +496 -0
  291. data/docs/file.History.html +869 -0
  292. data/docs/file.README.html +104 -0
  293. data/docs/file_list.html +66 -0
  294. data/docs/frames.html +17 -0
  295. data/docs/index.html +614 -0
  296. data/docs/js/app.js +314 -0
  297. data/docs/js/full_list.js +216 -0
  298. data/docs/js/jquery.js +4 -0
  299. data/docs/method_list.html +31043 -0
  300. data/docs/top-level-namespace.html +214 -0
  301. data/examples/canvasdemo.rb +5 -1
  302. data/examples/gltest.rb +162 -106
  303. data/examples/glviewer.rb +12 -8
  304. data/ext/fox16_c/core_wrap.cpp +117 -115
  305. data/ext/fox16_c/dc_wrap.cpp +82 -60
  306. data/ext/fox16_c/dialogs_wrap.cpp +87 -67
  307. data/ext/fox16_c/extconf.rb +12 -12
  308. data/ext/fox16_c/frames_wrap.cpp +101 -75
  309. data/ext/fox16_c/fx3d_wrap.cpp +258 -302
  310. data/ext/fox16_c/iconlist_wrap.cpp +70 -52
  311. data/ext/fox16_c/icons_wrap.cpp +75 -55
  312. data/ext/fox16_c/image_wrap.cpp +75 -57
  313. data/ext/fox16_c/label_wrap.cpp +78 -60
  314. data/ext/fox16_c/layout_wrap.cpp +83 -65
  315. data/ext/fox16_c/list_wrap.cpp +70 -52
  316. data/ext/fox16_c/mdi_wrap.cpp +76 -58
  317. data/ext/fox16_c/menu_wrap.cpp +78 -60
  318. data/ext/fox16_c/scintilla_wrap.cpp +85 -61
  319. data/ext/fox16_c/swigruby.h +64 -46
  320. data/ext/fox16_c/table_wrap.cpp +80 -58
  321. data/ext/fox16_c/text_wrap.cpp +75 -55
  322. data/ext/fox16_c/treelist_wrap.cpp +71 -53
  323. data/ext/fox16_c/ui_wrap.cpp +101 -81
  324. data/fxruby.gemspec +1 -1
  325. data/lib/fox16/aliases.rb +0 -0
  326. data/lib/fox16/bitmapview.rb +0 -0
  327. data/lib/fox16/calendar.rb +0 -0
  328. data/lib/fox16/canvas.rb +76 -45
  329. data/lib/fox16/chore.rb +0 -0
  330. data/lib/fox16/colors.rb +0 -0
  331. data/lib/fox16/core.rb +0 -0
  332. data/lib/fox16/dict.rb +0 -0
  333. data/lib/fox16/glgroup.rb +5 -5
  334. data/lib/fox16/glshapes.rb +111 -99
  335. data/lib/fox16/input.rb +0 -0
  336. data/lib/fox16/irb.rb +0 -0
  337. data/lib/fox16/iterators.rb +0 -0
  338. data/lib/fox16/keys.rb +0 -0
  339. data/lib/fox16/missingdep.rb +0 -0
  340. data/lib/fox16/pseudokeyboard.rb +0 -0
  341. data/lib/fox16/pseudomouse.rb +0 -0
  342. data/lib/fox16/responder.rb +0 -0
  343. data/lib/fox16/responder2.rb +0 -0
  344. data/lib/fox16/scintilla.rb +0 -0
  345. data/lib/fox16/settings.rb +0 -0
  346. data/lib/fox16/signal.rb +0 -0
  347. data/lib/fox16/timeout.rb +0 -0
  348. data/lib/fox16/tkcompat.rb +0 -0
  349. data/lib/fox16/undolist.rb +0 -0
  350. data/lib/fox16/version.rb +1 -1
  351. data/lib/fox16.rb +2 -4
  352. data.tar.gz.sig +2 -0
  353. metadata +327 -6
  354. metadata.gz.sig +0 -0
@@ -1,7 +1,7 @@
1
1
  #ifdef WITH_FXSCINTILLA
2
2
  /* ----------------------------------------------------------------------------
3
3
  * This file was automatically generated by SWIG (http://www.swig.org).
4
- * Version 3.0.12
4
+ * Version 4.0.2
5
5
  *
6
6
  * This file is not intended to be easily readable and contains a number of
7
7
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -332,6 +332,7 @@ template <typename T> T SwigValueInit() {
332
332
  /* Flags for pointer conversions */
333
333
  #define SWIG_POINTER_DISOWN 0x1
334
334
  #define SWIG_CAST_NEW_MEMORY 0x2
335
+ #define SWIG_POINTER_NO_NULL 0x4
335
336
 
336
337
  /* Flags for new pointer objects */
337
338
  #define SWIG_POINTER_OWN 0x1
@@ -983,42 +984,53 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
983
984
  #ifndef RSTRUCT_PTR
984
985
  # define RSTRUCT_PTR(x) RSTRUCT(x)->ptr
985
986
  #endif
987
+ #ifndef RTYPEDDATA_P
988
+ # define RTYPEDDATA_P(x) (TYPE(x) != T_DATA)
989
+ #endif
986
990
 
987
991
 
988
992
 
989
993
  /*
990
- * Need to be very careful about how these macros are defined, especially
991
- * when compiling C++ code or C code with an ANSI C compiler.
994
+ * The following macros are used for providing the correct type of a
995
+ * function pointer to the Ruby C API.
996
+ * Starting with Ruby 2.7 (corresponding to RB_METHOD_DEFINITION_DECL being
997
+ * defined) these macros act transparently due to Ruby's moving away from
998
+ * ANYARGS and instead employing strict function signatures.
999
+ *
1000
+ * Note: In case of C (not C++) the macros are transparent even before
1001
+ * Ruby 2.7 due to the fact that the Ruby C API used function declarators
1002
+ * with empty parentheses, which allows for an unspecified number of
1003
+ * arguments.
1004
+ *
1005
+ * PROTECTFUNC(f) is used for the function pointer argument of the Ruby
1006
+ * C API function rb_protect().
992
1007
  *
993
- * VALUEFUNC(f) is a macro used to typecast a C function that implements
994
- * a Ruby method so that it can be passed as an argument to API functions
995
- * like rb_define_method() and rb_define_singleton_method().
1008
+ * VALUEFUNC(f) is used for the function pointer argument(s) of Ruby C API
1009
+ * functions like rb_define_method() and rb_define_singleton_method().
996
1010
  *
997
- * VOIDFUNC(f) is a macro used to typecast a C function that implements
998
- * either the "mark" or "free" stuff for a Ruby Data object, so that it
999
- * can be passed as an argument to API functions like Data_Wrap_Struct()
1011
+ * VOIDFUNC(f) is used to typecast a C function that implements either
1012
+ * the "mark" or "free" stuff for a Ruby Data object, so that it can be
1013
+ * passed as an argument to Ruby C API functions like Data_Wrap_Struct()
1000
1014
  * and Data_Make_Struct().
1015
+ *
1016
+ * SWIG_RUBY_VOID_ANYARGS_FUNC(f) is used for the function pointer
1017
+ * argument(s) of Ruby C API functions like rb_define_virtual_variable().
1018
+ *
1019
+ * SWIG_RUBY_INT_ANYARGS_FUNC(f) is used for the function pointer
1020
+ * argument(s) of Ruby C API functions like st_foreach().
1001
1021
  */
1002
-
1003
- #ifdef __cplusplus
1004
- # ifndef RUBY_METHOD_FUNC /* These definitions should work for Ruby 1.4.6 */
1005
- # define PROTECTFUNC(f) ((VALUE (*)()) f)
1006
- # define VALUEFUNC(f) ((VALUE (*)()) f)
1007
- # define VOIDFUNC(f) ((void (*)()) f)
1008
- # else
1009
- # ifndef ANYARGS /* These definitions should work for Ruby 1.6 */
1010
- # define PROTECTFUNC(f) ((VALUE (*)()) f)
1011
- # define VALUEFUNC(f) ((VALUE (*)()) f)
1012
- # define VOIDFUNC(f) ((RUBY_DATA_FUNC) f)
1013
- # else /* These definitions should work for Ruby 1.7+ */
1014
- # define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f)
1015
- # define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f)
1016
- # define VOIDFUNC(f) ((RUBY_DATA_FUNC) f)
1017
- # endif
1018
- # endif
1022
+ #if defined(__cplusplus) && !defined(RB_METHOD_DEFINITION_DECL)
1023
+ # define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f)
1024
+ # define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f)
1025
+ # define VOIDFUNC(f) ((RUBY_DATA_FUNC) f)
1026
+ # define SWIG_RUBY_VOID_ANYARGS_FUNC(f) ((void (*)(ANYARGS))(f))
1027
+ # define SWIG_RUBY_INT_ANYARGS_FUNC(f) ((int (*)(ANYARGS))(f))
1019
1028
  #else
1029
+ # define PROTECTFUNC(f) (f)
1020
1030
  # define VALUEFUNC(f) (f)
1021
1031
  # define VOIDFUNC(f) (f)
1032
+ # define SWIG_RUBY_VOID_ANYARGS_FUNC(f) (f)
1033
+ # define SWIG_RUBY_INT_ANYARGS_FUNC(f) (f)
1022
1034
  #endif
1023
1035
 
1024
1036
  /* Don't use for expressions have side effect */
@@ -1206,7 +1218,7 @@ void Ruby_Format_OverloadedError(
1206
1218
  /* -----------------------------------------------------------------------------
1207
1219
  * rubytracking.swg
1208
1220
  *
1209
- * This file contains support for tracking mappings from
1221
+ * This file contains support for tracking mappings from
1210
1222
  * Ruby objects to C++ objects. This functionality is needed
1211
1223
  * to implement mark functions for Ruby's mark and sweep
1212
1224
  * garbage collector.
@@ -1233,7 +1245,7 @@ extern "C" {
1233
1245
  #endif
1234
1246
 
1235
1247
  /* Global hash table to store Trackings from C/C++
1236
- structs to Ruby Objects.
1248
+ structs to Ruby Objects.
1237
1249
  */
1238
1250
  static st_table* swig_ruby_trackings = NULL;
1239
1251
 
@@ -1247,7 +1259,7 @@ SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
1247
1259
  /* Create a hash table to store Trackings from C++
1248
1260
  objects to Ruby objects. */
1249
1261
 
1250
- /* Try to see if some other .so has already created a
1262
+ /* Try to see if some other .so has already created a
1251
1263
  tracking hash table, which we keep hidden in an instance var
1252
1264
  in the SWIG module.
1253
1265
  This is done to allow multiple DSOs to share the same
@@ -1274,8 +1286,9 @@ SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
1274
1286
  swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value);
1275
1287
  }
1276
1288
 
1277
- rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", RUBY_VALUE_METHOD_FUNC(swig_ruby_trackings_count), RUBY_VOID_METHOD_FUNC((rb_gvar_setter_t*)NULL))
1278
- ;
1289
+ rb_define_virtual_variable("SWIG_TRACKINGS_COUNT",
1290
+ VALUEFUNC(swig_ruby_trackings_count),
1291
+ SWIG_RUBY_VOID_ANYARGS_FUNC((rb_gvar_setter_t*)NULL));
1279
1292
  }
1280
1293
 
1281
1294
  /* Add a Tracking from a C/C++ struct to a Ruby object */
@@ -1307,13 +1320,14 @@ SWIGRUNTIME void SWIG_RubyRemoveTracking(void* ptr) {
1307
1320
 
1308
1321
  /* This is a helper method that unlinks a Ruby object from its
1309
1322
  underlying C++ object. This is needed if the lifetime of the
1310
- Ruby object is longer than the C++ object */
1323
+ Ruby object is longer than the C++ object. */
1311
1324
  SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) {
1312
1325
  VALUE object = SWIG_RubyInstanceFor(ptr);
1313
1326
 
1314
1327
  if (object != Qnil) {
1315
- if (TYPE(object) != T_DATA)
1316
- abort();
1328
+ // object might have the T_ZOMBIE type, but that's just
1329
+ // because the GC has flagged it as such for a deferred
1330
+ // destruction. Until then, it's still a T_DATA object.
1317
1331
  DATA_PTR(object) = 0;
1318
1332
  }
1319
1333
  }
@@ -1323,14 +1337,15 @@ SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) {
1323
1337
  to the passed callback function. */
1324
1338
 
1325
1339
  /* Proxy method to abstract the internal trackings datatype */
1326
- static int swig_ruby_internal_iterate_callback(st_data_t ptr, st_data_t obj, st_data_t meth) {
1327
- ((void(*)(void*, VALUE))meth)((void*)ptr, (VALUE)obj);
1328
-
1340
+ static int swig_ruby_internal_iterate_callback(st_data_t ptr, st_data_t obj, st_data_t meth) {
1341
+ ((void (*) (void *, VALUE))meth)((void *)ptr, (VALUE)obj);
1329
1342
  return ST_CONTINUE;
1330
1343
  }
1331
1344
 
1332
1345
  SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) {
1333
- st_foreach(swig_ruby_trackings, RUBY_INT_METHOD_FUNC(swig_ruby_internal_iterate_callback), (st_data_t)meth);
1346
+ st_foreach(swig_ruby_trackings,
1347
+ SWIG_RUBY_INT_ANYARGS_FUNC(swig_ruby_internal_iterate_callback),
1348
+ (st_data_t)meth);
1334
1349
  }
1335
1350
 
1336
1351
  #ifdef __cplusplus
@@ -1547,10 +1562,11 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
1547
1562
  swig_class *sklass;
1548
1563
  VALUE klass;
1549
1564
  VALUE obj;
1550
-
1565
+
1551
1566
  if (!ptr)
1552
1567
  return Qnil;
1553
-
1568
+
1569
+ assert(type);
1554
1570
  if (type->clientdata) {
1555
1571
  sklass = (swig_class *) type->clientdata;
1556
1572
 
@@ -1558,7 +1574,7 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
1558
1574
  track = sklass->trackObjects;
1559
1575
  if (track) {
1560
1576
  obj = SWIG_RubyInstanceFor(ptr);
1561
-
1577
+
1562
1578
  /* Check the object's type and make sure it has the correct type.
1563
1579
  It might not in cases where methods do things like
1564
1580
  downcast methods. */
@@ -1590,7 +1606,7 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
1590
1606
  obj = Data_Wrap_Struct(klass, 0, 0, ptr);
1591
1607
  }
1592
1608
  rb_iv_set(obj, "@__swigtype__", rb_str_new2(type->name));
1593
-
1609
+
1594
1610
  return obj;
1595
1611
  }
1596
1612
 
@@ -1610,6 +1626,8 @@ SWIGRUNTIMEINLINE char *
1610
1626
  SWIG_Ruby_MangleStr(VALUE obj)
1611
1627
  {
1612
1628
  VALUE stype = rb_iv_get(obj, "@__swigtype__");
1629
+ if (NIL_P(stype))
1630
+ return NULL;
1613
1631
  return StringValuePtr(stype);
1614
1632
  }
1615
1633
 
@@ -1622,7 +1640,7 @@ typedef struct {
1622
1640
  SWIGRUNTIME swig_ruby_owntype
1623
1641
  SWIG_Ruby_AcquirePtr(VALUE obj, swig_ruby_owntype own) {
1624
1642
  swig_ruby_owntype oldown = {0, 0};
1625
- if (obj) {
1643
+ if (TYPE(obj) == T_DATA && !RTYPEDDATA_P(obj)) {
1626
1644
  oldown.datafree = RDATA(obj)->dfree;
1627
1645
  RDATA(obj)->dfree = own.datafree;
1628
1646
  }
@@ -1641,9 +1659,9 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
1641
1659
  if (NIL_P(obj)) {
1642
1660
  if (ptr)
1643
1661
  *ptr = 0;
1644
- return SWIG_OK;
1662
+ return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
1645
1663
  } else {
1646
- if (TYPE(obj) != T_DATA) {
1664
+ if (TYPE(obj) != T_DATA || (TYPE(obj) == T_DATA && RTYPEDDATA_P(obj))) {
1647
1665
  return SWIG_ERROR;
1648
1666
  }
1649
1667
  Data_Get_Struct(obj, void, vptr);
@@ -1738,7 +1756,7 @@ SWIG_Ruby_NewPackedObj(void *ptr, int sz, swig_type_info *type) {
1738
1756
  return rb_str_new2(result);
1739
1757
  }
1740
1758
 
1741
- /* Convert a packed value value */
1759
+ /* Convert a packed pointer value */
1742
1760
  SWIGRUNTIME int
1743
1761
  SWIG_Ruby_ConvertPacked(VALUE obj, void *ptr, int sz, swig_type_info *ty) {
1744
1762
  swig_cast_info *tc;
@@ -1974,7 +1992,7 @@ static swig_module_info swig_module = {swig_types, 115, 0, 0, 0, 0};
1974
1992
  #define SWIG_RUBY_THREAD_END_BLOCK
1975
1993
 
1976
1994
 
1977
- #define SWIGVERSION 0x030012
1995
+ #define SWIGVERSION 0x040002
1978
1996
  #define SWIG_VERSION SWIGVERSION
1979
1997
 
1980
1998
 
@@ -2123,14 +2141,16 @@ SWIG_FromCharPtr(const char *cptr)
2123
2141
 
2124
2142
 
2125
2143
  SWIGINTERN VALUE
2126
- SWIG_ruby_failed(VALUE, VALUE)
2144
+ SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2))
2127
2145
  {
2128
2146
  return Qnil;
2129
2147
  }
2130
2148
 
2131
2149
 
2132
- /*@SWIG:/usr/share/swig3.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2133
- SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE pargs){VALUE *args=(VALUE *)pargs;
2150
+ /*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2151
+ SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE arg)
2152
+ {
2153
+ VALUE *args = (VALUE *)arg;
2134
2154
  VALUE obj = args[0];
2135
2155
  VALUE type = TYPE(obj);
2136
2156
  long *res = (long *)(args[1]);
@@ -2148,7 +2168,7 @@ SWIG_AsVal_long (VALUE obj, long* val)
2148
2168
  VALUE a[2];
2149
2169
  a[0] = obj;
2150
2170
  a[1] = (VALUE)(&v);
2151
- if (rb_rescue(RUBY_VALUE_METHOD_FUNC(SWIG_AUX_NUM2LONG), (VALUE)a, RUBY_VALUE_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) {
2171
+ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2LONG), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) {
2152
2172
  if (val) *val = v;
2153
2173
  return SWIG_OK;
2154
2174
  }
@@ -2173,8 +2193,10 @@ SWIG_AsVal_int (VALUE obj, int *val)
2173
2193
  }
2174
2194
 
2175
2195
 
2176
- /*@SWIG:/usr/share/swig3.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2177
- SWIGINTERN VALUE SWIG_AUX_NUM2ULONG(VALUE pargs){VALUE *args=(VALUE *)pargs;
2196
+ /*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2197
+ SWIGINTERN VALUE SWIG_AUX_NUM2ULONG(VALUE arg)
2198
+ {
2199
+ VALUE *args = (VALUE *)arg;
2178
2200
  VALUE obj = args[0];
2179
2201
  VALUE type = TYPE(obj);
2180
2202
  unsigned long *res = (unsigned long *)(args[1]);
@@ -2192,7 +2214,7 @@ SWIG_AsVal_unsigned_SS_long (VALUE obj, unsigned long *val)
2192
2214
  VALUE a[2];
2193
2215
  a[0] = obj;
2194
2216
  a[1] = (VALUE)(&v);
2195
- if (rb_rescue(RUBY_VALUE_METHOD_FUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, RUBY_VALUE_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) {
2217
+ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) {
2196
2218
  if (val) *val = v;
2197
2219
  return SWIG_OK;
2198
2220
  }
@@ -2207,8 +2229,10 @@ SWIG_AsVal_unsigned_SS_long (VALUE obj, unsigned long *val)
2207
2229
 
2208
2230
 
2209
2231
  #ifdef SWIG_LONG_LONG_AVAILABLE
2210
- /*@SWIG:/usr/share/swig3.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2211
- SWIGINTERN VALUE SWIG_AUX_NUM2ULL(VALUE pargs){VALUE *args=(VALUE *)pargs;
2232
+ /*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2233
+ SWIGINTERN VALUE SWIG_AUX_NUM2ULL(VALUE arg)
2234
+ {
2235
+ VALUE *args = (VALUE *)arg;
2212
2236
  VALUE obj = args[0];
2213
2237
  VALUE type = TYPE(obj);
2214
2238
  long long *res = (long long *)(args[1]);
@@ -2226,7 +2250,7 @@ SWIG_AsVal_unsigned_SS_long_SS_long (VALUE obj, unsigned long long *val)
2226
2250
  VALUE a[2];
2227
2251
  a[0] = obj;
2228
2252
  a[1] = (VALUE)(&v);
2229
- if (rb_rescue(RUBY_VALUE_METHOD_FUNC(SWIG_AUX_NUM2ULL), (VALUE)a, RUBY_VALUE_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) {
2253
+ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2ULL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) {
2230
2254
  if (val) *val = v;
2231
2255
  return SWIG_OK;
2232
2256
  }
@@ -4879,7 +4903,7 @@ SWIGINTERN VALUE _wrap_FXScintilla_setShape(int nargs, VALUE *args, VALUE self)
4879
4903
  _v = SWIG_CheckState(res);
4880
4904
  if (_v) {
4881
4905
  void *vptr = 0;
4882
- int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FXRegion, 0);
4906
+ int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FXRegion, SWIG_POINTER_NO_NULL);
4883
4907
  _v = SWIG_CheckState(res);
4884
4908
  if (_v) {
4885
4909
  return _wrap_FXScintilla_setShape__SWIG_0(nargs, args, self);
@@ -6797,7 +6821,7 @@ SWIG_InitializeModule(void *clientdata) {
6797
6821
 
6798
6822
  /* Now work on filling in swig_module.types */
6799
6823
  #ifdef SWIGRUNTIME_DEBUG
6800
- printf("SWIG_InitializeModule: size %d\n", swig_module.size);
6824
+ printf("SWIG_InitializeModule: size %lu\n", (unsigned long)swig_module.size);
6801
6825
  #endif
6802
6826
  for (i = 0; i < swig_module.size; ++i) {
6803
6827
  swig_type_info *type = 0;
@@ -6805,7 +6829,7 @@ SWIG_InitializeModule(void *clientdata) {
6805
6829
  swig_cast_info *cast;
6806
6830
 
6807
6831
  #ifdef SWIGRUNTIME_DEBUG
6808
- printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
6832
+ printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
6809
6833
  #endif
6810
6834
 
6811
6835
  /* if there is another module already loaded */
@@ -6881,7 +6905,7 @@ SWIG_InitializeModule(void *clientdata) {
6881
6905
  for (i = 0; i < swig_module.size; ++i) {
6882
6906
  int j = 0;
6883
6907
  swig_cast_info *cast = swig_module.cast_initial[i];
6884
- printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
6908
+ printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
6885
6909
  while (cast->type) {
6886
6910
  printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
6887
6911
  cast++;
@@ -1,6 +1,6 @@
1
1
  /* ----------------------------------------------------------------------------
2
2
  * This file was automatically generated by SWIG (http://www.swig.org).
3
- * Version 3.0.12
3
+ * Version 4.0.2
4
4
  *
5
5
  * This file is not intended to be easily readable and contains a number of
6
6
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -192,6 +192,7 @@
192
192
  /* Flags for pointer conversions */
193
193
  #define SWIG_POINTER_DISOWN 0x1
194
194
  #define SWIG_CAST_NEW_MEMORY 0x2
195
+ #define SWIG_POINTER_NO_NULL 0x4
195
196
 
196
197
  /* Flags for new pointer objects */
197
198
  #define SWIG_POINTER_OWN 0x1
@@ -825,42 +826,53 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
825
826
  #ifndef RSTRUCT_PTR
826
827
  # define RSTRUCT_PTR(x) RSTRUCT(x)->ptr
827
828
  #endif
829
+ #ifndef RTYPEDDATA_P
830
+ # define RTYPEDDATA_P(x) (TYPE(x) != T_DATA)
831
+ #endif
828
832
 
829
833
 
830
834
 
831
835
  /*
832
- * Need to be very careful about how these macros are defined, especially
833
- * when compiling C++ code or C code with an ANSI C compiler.
836
+ * The following macros are used for providing the correct type of a
837
+ * function pointer to the Ruby C API.
838
+ * Starting with Ruby 2.7 (corresponding to RB_METHOD_DEFINITION_DECL being
839
+ * defined) these macros act transparently due to Ruby's moving away from
840
+ * ANYARGS and instead employing strict function signatures.
841
+ *
842
+ * Note: In case of C (not C++) the macros are transparent even before
843
+ * Ruby 2.7 due to the fact that the Ruby C API used function declarators
844
+ * with empty parentheses, which allows for an unspecified number of
845
+ * arguments.
846
+ *
847
+ * PROTECTFUNC(f) is used for the function pointer argument of the Ruby
848
+ * C API function rb_protect().
834
849
  *
835
- * VALUEFUNC(f) is a macro used to typecast a C function that implements
836
- * a Ruby method so that it can be passed as an argument to API functions
837
- * like rb_define_method() and rb_define_singleton_method().
850
+ * VALUEFUNC(f) is used for the function pointer argument(s) of Ruby C API
851
+ * functions like rb_define_method() and rb_define_singleton_method().
838
852
  *
839
- * VOIDFUNC(f) is a macro used to typecast a C function that implements
840
- * either the "mark" or "free" stuff for a Ruby Data object, so that it
841
- * can be passed as an argument to API functions like Data_Wrap_Struct()
853
+ * VOIDFUNC(f) is used to typecast a C function that implements either
854
+ * the "mark" or "free" stuff for a Ruby Data object, so that it can be
855
+ * passed as an argument to Ruby C API functions like Data_Wrap_Struct()
842
856
  * and Data_Make_Struct().
857
+ *
858
+ * SWIG_RUBY_VOID_ANYARGS_FUNC(f) is used for the function pointer
859
+ * argument(s) of Ruby C API functions like rb_define_virtual_variable().
860
+ *
861
+ * SWIG_RUBY_INT_ANYARGS_FUNC(f) is used for the function pointer
862
+ * argument(s) of Ruby C API functions like st_foreach().
843
863
  */
844
-
845
- #ifdef __cplusplus
846
- # ifndef RUBY_METHOD_FUNC /* These definitions should work for Ruby 1.4.6 */
847
- # define PROTECTFUNC(f) ((VALUE (*)()) f)
848
- # define VALUEFUNC(f) ((VALUE (*)()) f)
849
- # define VOIDFUNC(f) ((void (*)()) f)
850
- # else
851
- # ifndef ANYARGS /* These definitions should work for Ruby 1.6 */
852
- # define PROTECTFUNC(f) ((VALUE (*)()) f)
853
- # define VALUEFUNC(f) ((VALUE (*)()) f)
854
- # define VOIDFUNC(f) ((RUBY_DATA_FUNC) f)
855
- # else /* These definitions should work for Ruby 1.7+ */
856
- # define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f)
857
- # define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f)
858
- # define VOIDFUNC(f) ((RUBY_DATA_FUNC) f)
859
- # endif
860
- # endif
864
+ #if defined(__cplusplus) && !defined(RB_METHOD_DEFINITION_DECL)
865
+ # define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f)
866
+ # define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f)
867
+ # define VOIDFUNC(f) ((RUBY_DATA_FUNC) f)
868
+ # define SWIG_RUBY_VOID_ANYARGS_FUNC(f) ((void (*)(ANYARGS))(f))
869
+ # define SWIG_RUBY_INT_ANYARGS_FUNC(f) ((int (*)(ANYARGS))(f))
861
870
  #else
871
+ # define PROTECTFUNC(f) (f)
862
872
  # define VALUEFUNC(f) (f)
863
873
  # define VOIDFUNC(f) (f)
874
+ # define SWIG_RUBY_VOID_ANYARGS_FUNC(f) (f)
875
+ # define SWIG_RUBY_INT_ANYARGS_FUNC(f) (f)
864
876
  #endif
865
877
 
866
878
  /* Don't use for expressions have side effect */
@@ -1046,7 +1058,7 @@ void Ruby_Format_OverloadedError(
1046
1058
  /* -----------------------------------------------------------------------------
1047
1059
  * rubytracking.swg
1048
1060
  *
1049
- * This file contains support for tracking mappings from
1061
+ * This file contains support for tracking mappings from
1050
1062
  * Ruby objects to C++ objects. This functionality is needed
1051
1063
  * to implement mark functions for Ruby's mark and sweep
1052
1064
  * garbage collector.
@@ -1073,7 +1085,7 @@ extern "C" {
1073
1085
  #endif
1074
1086
 
1075
1087
  /* Global hash table to store Trackings from C/C++
1076
- structs to Ruby Objects.
1088
+ structs to Ruby Objects.
1077
1089
  */
1078
1090
  static st_table* swig_ruby_trackings = NULL;
1079
1091
 
@@ -1087,7 +1099,7 @@ SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
1087
1099
  /* Create a hash table to store Trackings from C++
1088
1100
  objects to Ruby objects. */
1089
1101
 
1090
- /* Try to see if some other .so has already created a
1102
+ /* Try to see if some other .so has already created a
1091
1103
  tracking hash table, which we keep hidden in an instance var
1092
1104
  in the SWIG module.
1093
1105
  This is done to allow multiple DSOs to share the same
@@ -1114,8 +1126,9 @@ SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
1114
1126
  swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value);
1115
1127
  }
1116
1128
 
1117
- rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", RUBY_VALUE_METHOD_FUNC(swig_ruby_trackings_count), RUBY_VOID_METHOD_FUNC((rb_gvar_setter_t*)NULL))
1118
- ;
1129
+ rb_define_virtual_variable("SWIG_TRACKINGS_COUNT",
1130
+ VALUEFUNC(swig_ruby_trackings_count),
1131
+ SWIG_RUBY_VOID_ANYARGS_FUNC((rb_gvar_setter_t*)NULL));
1119
1132
  }
1120
1133
 
1121
1134
  /* Add a Tracking from a C/C++ struct to a Ruby object */
@@ -1147,13 +1160,14 @@ SWIGRUNTIME void SWIG_RubyRemoveTracking(void* ptr) {
1147
1160
 
1148
1161
  /* This is a helper method that unlinks a Ruby object from its
1149
1162
  underlying C++ object. This is needed if the lifetime of the
1150
- Ruby object is longer than the C++ object */
1163
+ Ruby object is longer than the C++ object. */
1151
1164
  SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) {
1152
1165
  VALUE object = SWIG_RubyInstanceFor(ptr);
1153
1166
 
1154
1167
  if (object != Qnil) {
1155
- if (TYPE(object) != T_DATA)
1156
- abort();
1168
+ // object might have the T_ZOMBIE type, but that's just
1169
+ // because the GC has flagged it as such for a deferred
1170
+ // destruction. Until then, it's still a T_DATA object.
1157
1171
  DATA_PTR(object) = 0;
1158
1172
  }
1159
1173
  }
@@ -1163,14 +1177,15 @@ SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) {
1163
1177
  to the passed callback function. */
1164
1178
 
1165
1179
  /* Proxy method to abstract the internal trackings datatype */
1166
- static int swig_ruby_internal_iterate_callback(st_data_t ptr, st_data_t obj, st_data_t meth) {
1167
- ((void(*)(void*, VALUE))meth)((void*)ptr, (VALUE)obj);
1168
-
1180
+ static int swig_ruby_internal_iterate_callback(st_data_t ptr, st_data_t obj, st_data_t meth) {
1181
+ ((void (*) (void *, VALUE))meth)((void *)ptr, (VALUE)obj);
1169
1182
  return ST_CONTINUE;
1170
1183
  }
1171
1184
 
1172
1185
  SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) {
1173
- st_foreach(swig_ruby_trackings, RUBY_INT_METHOD_FUNC(swig_ruby_internal_iterate_callback), (st_data_t)meth);
1186
+ st_foreach(swig_ruby_trackings,
1187
+ SWIG_RUBY_INT_ANYARGS_FUNC(swig_ruby_internal_iterate_callback),
1188
+ (st_data_t)meth);
1174
1189
  }
1175
1190
 
1176
1191
  #ifdef __cplusplus
@@ -1385,10 +1400,11 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
1385
1400
  swig_class *sklass;
1386
1401
  VALUE klass;
1387
1402
  VALUE obj;
1388
-
1403
+
1389
1404
  if (!ptr)
1390
1405
  return Qnil;
1391
-
1406
+
1407
+ assert(type);
1392
1408
  if (type->clientdata) {
1393
1409
  sklass = (swig_class *) type->clientdata;
1394
1410
 
@@ -1396,7 +1412,7 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
1396
1412
  track = sklass->trackObjects;
1397
1413
  if (track) {
1398
1414
  obj = SWIG_RubyInstanceFor(ptr);
1399
-
1415
+
1400
1416
  /* Check the object's type and make sure it has the correct type.
1401
1417
  It might not in cases where methods do things like
1402
1418
  downcast methods. */
@@ -1428,7 +1444,7 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
1428
1444
  obj = Data_Wrap_Struct(klass, 0, 0, ptr);
1429
1445
  }
1430
1446
  rb_iv_set(obj, "@__swigtype__", rb_str_new2(type->name));
1431
-
1447
+
1432
1448
  return obj;
1433
1449
  }
1434
1450
 
@@ -1448,6 +1464,8 @@ SWIGRUNTIMEINLINE char *
1448
1464
  SWIG_Ruby_MangleStr(VALUE obj)
1449
1465
  {
1450
1466
  VALUE stype = rb_iv_get(obj, "@__swigtype__");
1467
+ if (NIL_P(stype))
1468
+ return NULL;
1451
1469
  return StringValuePtr(stype);
1452
1470
  }
1453
1471
 
@@ -1460,7 +1478,7 @@ typedef struct {
1460
1478
  SWIGRUNTIME swig_ruby_owntype
1461
1479
  SWIG_Ruby_AcquirePtr(VALUE obj, swig_ruby_owntype own) {
1462
1480
  swig_ruby_owntype oldown = {0, 0};
1463
- if (obj) {
1481
+ if (TYPE(obj) == T_DATA && !RTYPEDDATA_P(obj)) {
1464
1482
  oldown.datafree = RDATA(obj)->dfree;
1465
1483
  RDATA(obj)->dfree = own.datafree;
1466
1484
  }
@@ -1479,9 +1497,9 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
1479
1497
  if (NIL_P(obj)) {
1480
1498
  if (ptr)
1481
1499
  *ptr = 0;
1482
- return SWIG_OK;
1500
+ return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
1483
1501
  } else {
1484
- if (TYPE(obj) != T_DATA) {
1502
+ if (TYPE(obj) != T_DATA || (TYPE(obj) == T_DATA && RTYPEDDATA_P(obj))) {
1485
1503
  return SWIG_ERROR;
1486
1504
  }
1487
1505
  Data_Get_Struct(obj, void, vptr);
@@ -1576,7 +1594,7 @@ SWIG_Ruby_NewPackedObj(void *ptr, int sz, swig_type_info *type) {
1576
1594
  return rb_str_new2(result);
1577
1595
  }
1578
1596
 
1579
- /* Convert a packed value value */
1597
+ /* Convert a packed pointer value */
1580
1598
  SWIGRUNTIME int
1581
1599
  SWIG_Ruby_ConvertPacked(VALUE obj, void *ptr, int sz, swig_type_info *ty) {
1582
1600
  swig_cast_info *tc;